Rasperry Pi mit Arduino

Aus m-wiki
Version vom 3. September 2021, 13:25 Uhr von Snoopy78 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Einführung == Es ist möglich, (mehrere) Arduinos mit einem Rasperry Pi zu koppeln. Es gibt dafür mehrere Wege, die hier vor…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Einführung

Es ist möglich, (mehrere) Arduinos mit einem Rasperry Pi zu koppeln. Es gibt dafür mehrere Wege, die hier vorgestellt werden.

Arduino über Raspberry Pi programmieren

Man kann die Arduino IDE auch auf dem Raspi installieren. Je nach Version der unterstützten IDE und/oder Arduino-Board muss die Programmierung auch über einen externen Rechner geschehen.

$ sudo apt-get update
$ sudo apt-get install arduino

Damit der Raspi über das USB-Kabel mit dem Arduino "sprechen" kann, muss die serielle Konsole deaktiviert werden. Wenn man die serielle Konsole für andere Zwecke brauchen möchte, muss der Arduino extern programmiert werden. Die Kommunikation mit dem Arduino ist aber auch über I2C möglich.

Kommunikation zwischen Arduino und Raspi

serieller Monitor

In der Arduino-IDE kann man Nachrichten der seriellen Schnittstelle anzeigen. Dies geschieht über die Lupe auf der rechten Seite der Werkzeugleiste.

void setup() {
  Serial.begin(9600);
} // end setup

void loop() {
  Serial.println("Hallo Welt");
  delay(1000);
} // end loop

PyFirmata

Diese Bibliothek erlaubt die Verbindung ohne eigenen Code für den Arduino zu entwickeln, sondern man sendet einfach den Code vom Raspi auf den Arduino. Dazu wird zuerst über die IDE des Arduino der entsprechende Sketch geladen (File -> Examples -> Firmata -> StandardFirmata). Anschliessend wartet der Arduino auf Befehle vom Raspi.

Auf dem Raspi muss zuerst die PySerial-Bibliothek installiert werden. Danach kann PiFirmata von Git installiert werden.

$ sudo agt-get install git # Falls Git noch nicht installiert wurde
$ git clone https://github.com/tino/pyFirmata.git
$ cd pyFirmata
$ sudo python setup.py install

Anschliessend kann man testen, ob das Programm auf dem Arduino die eingebaute LED aufblinken lässt:

import pyfirmata, time
board = pyfirmata.Arduino('dev/ttyACMo')  # Kommunikation über diese serielle Schnittstelle
pin13 = board.get_pin('d:13:o')           # Den digitalen Pin 13 als Output schalten
pin13.write(1)
sleep(2)
pin13.write(0)
board.exit()