Spis treści:
Die Plattformen Arduino und Raspberry Pi sind zwei äußerst beliebte Ökosysteme für Elektronikingenieure weltweit. Sie werden sowohl von Amateuren und Studenten als auch von Fachleuten verwendet, die eine schnelle und bequeme Plattform benötigen, um Prototypen zu bauen oder bestimmte Schaltungs- und/oder Softwarekonzepte zu testen.
Wie sich herausstellt, können beide Boards zusammen in einem Projekt arbeiten. Ein gut durchdachtes Konzept ermöglicht es außerdem, ein gegebenes System in High-Level-Funktionen, die vom Raspberry Pi ausgeführt werden, und Low-Level-Funktionen, die für die Steuerung von Ausführungsgeräten und das Auslesen von Sensordaten verantwortlich sind, aufzuteilen, wofür der Arduino zuständig ist. In diesem Artikel werden wir uns diese Art von Lösungen genauer ansehen.
Master-Slave, ein hierarchisches Projekt mit Arduino und Raspberry Pi
Die wichtigste Frage, die es zu berücksichtigen gilt, ist die Konfiguration, in der die beiden Karten betrieben werden sollen. Die häufigste Lösung scheint eine hierarchische Version zu sein, die oft als Master-Slave bezeichnet wird. Das Master-Gerät bzw das übergeordnete Gerät ist für die Erzeugung von Befehlen zuständig, die dem Slave-Gerät bzw. dem untergeordneten Gerät die Durchführung bestimmter Operationen vorgeben. Dabei kann es sich um das Lesen von Daten von einem Analogeingang, die einfache Kommunikation mit einem Sensor über SPI, I2C oder ein anderes Protokoll oder die Ansteuerung einer Komponente handeln, z. B. die Aktivierung eines Relais oder die Einstellung der Geschwindigkeit und Richtung eines Motors. In Master-Slave-Systemen ist es wichtig, sorgfältig zu überlegen, welche Komponente (Platine) für eine bestimmte Art von Aufgabe besser geeignet ist.
Als Einplatinencomputer mit relativ hoher Rechenleistung ist der Raspberry Pi in der Lage, selbst fortgeschrittene Grafiken, hochwertige Audioaufnahmen und -wiedergaben oder Kameraaufnahmen in Echtzeit zu bewältigen. Er eignet sich jedoch nicht sehr gut für Hochgeschwindigkeitsoperationen, die eine so genannte hohe Verfügbarkeit erfordern, d. h. für Arbeiten in Echtzeit. Zum Beispiel die Positionierung von Motoren, die einen Roboterarm antreiben: Es ist schwer vorstellbar, dass der Controller eines solchen Arms, während er einige Operationen durchführt, darauf warten muss, dass das System andere Operationen durchführt und erst dann die Encoderdaten oder Endschalter abliest. Daher ist das Arduino-Board für Low-Level-Operationen am besten geeignet, da es ähnliche Aufgaben sehr schnell ausführen kann, ohne die unnötigen Verzögerungen, die für Betriebssysteme auf höherer Ebene typisch sind.
Technische Details, oder wie man einen Arduino an einen Raspberry Pi anschließt
Der beste Weg, einen Arduino an einen Raspberry Pi Minicomputer anzuschließen, ist die Verwendung der seriellen UART-Verbindung. Sie ermöglicht die Kommunikation im seriellen Port-Modus, der von den nativen Treibern beider Plattformen problemlos unterstützt wird. Auf der Hardwareseite ist es möglich, die virtuellen Treiber für die serielle Schnittstelle zu verwenden, die bereits im Betriebssystem des Raspberry Pi vorhanden sind und die mit einem über einen der USB-Ports angeschlossenen Gerät kommunizieren. Das Arduino-Board unterstützt jedoch einen eingebauten UART ↔ USB-Konverter als eine … einfache asynchrone Verbindung. Dieser Ansatz bietet eine sehr effiziente Nutzung der GPIO-Ports sowohl auf dem einen als auch auf dem anderen Board, da er keine zusätzlichen Raspberry-Ports erfordert – so bleibt der gesamte 40-polige Goldpin für andere Zwecke frei. Der Arduino hingegen verwendet ohnehin nur die 2 Leitungen, die physisch mit dem USB-Port-Konverter verbunden sind.
Raspberry Pi Übertragungs-Software ↔ Arduino
Als Einplatinencomputer mit relativ hoher Rechenleistung ist der Raspberry Pi in der Lage, selbst fortgeschrittene Grafiken, hochwertige Audioaufnahmen und -wiedergaben oder Kameraaufnahmen in Echtzeit zu bewältigen. Er eignet sich jedoch nicht sehr gut für Hochgeschwindigkeitsoperationen, die eine so genannte hohe Verfügbarkeit erfordern, d. h. für Arbeiten in Echtzeit. Zum Beispiel die Positionierung von Motoren, die einen Roboterarm antreiben: Es ist schwer vorstellbar, dass der Controller eines solchen Arms, während er einige Operationen durchführt, darauf warten muss, dass das System andere Operationen durchführt und erst dann die Encoderdaten oder Endschalter abliest. Daher ist das Arduino-Board für Low-Level-Operationen am besten geeignet, da es ähnliche Aufgaben sehr schnell ausführen kann, ohne die unnötigen Verzögerungen, die für Betriebssysteme auf höherer Ebene typisch sind.
Es lohnt sich, den ersten Weg in Betracht zu ziehen, da die Firmata-Bibliothek, die standardmäßig in der Arduino IDE-Umgebung implementiert ist, speziell für diesen Zweck erstellt wurde. Sie finden sie in den Programmierbeispielen, indem Sie das Menü Datei → Beispiele → Firmata aufklappen und einen der dort vorgestellten Skizzen auswählen, wie z.B.. StandardFirmata. Darüber hinaus wird eine Bibliothek für die Sprache Python mit dem Namen pyFirmata zur Unterstützung des Protokolls bereitgestellt (die genau für die Verbindung von Mikrocontroller-basierten Geräten mit auf dem Computer installierter Software gedacht ist). Dies ist eine weitere Lösung, die für die Verwendung “von der Stange” entwickelt wurde, d.h. ohne die Notwendigkeit, das Protokoll auf der Seite des Minicomputers zu implementieren.
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 4.7 / 5. Stimmenzahl: 7
Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.