Getestet mit:Raspberry Pi 2 and B+; Arduino Nano v3.1; Raspbian Jessie
Voraussetzungen:Raspberry Pi mit Raspbian Jessie und Internetverbindung (siehe Schritte 1-7 in der Einfuehrung)
Bauteile:Arduino (nano)
Kabel zur Verbindung von Arduino und RPi (USB)
Steckplatine und LED mit passendem Widerstand(Vin ~= 3.0V)
Bildschirm, Tastatur und Maus
0

Raspi + Ardi = Big Love: PyFirmata Tutorial

PyFirmata von Tino de Bruijn ist ein grossartiges Programm, um die Fertigkeiten des Raspberry Pi (vollwertiges Betriebssystem, Python, …) und des Arduino (hohe Zeitpraezision, …) zu verbinden. Einen Arduino mit einem Raspberry Pi kontrollieren ist ziemlich einfach mit PyFirmata.
In diesem Tutorial controlliert ein Python Script auf einem Raspberry Pi die Helligkeit einer LED ueber einen Hardware-Pulsweitenmodulations-Pin des Arduino.

PyFirmata einrichten
Zuerst muessen die Arduino Software und PyFirmata installiert werden. Verbinde den Raspberry Pi mit dem Internet und den Peripheriegeraeten (oder verwende ein VPN) und gib dann im Terminal ein

Verbinde jetzt den Arduino mit dem laufenden Raspberry Pi, starte die Arduino IDE durch die Eingabe von arduino im Terminal und waehle den seriellen Port und den Board-Typ wie im Arduino Tutorial (notiere den dabei gefundenen USB-Port!). Lade jetzt die Standart-PyFirmata-Firmware auf den Arduino durch einen Klick auf File, dann Examples, dann Firmata und zuletzt Standard Firmata (siehe Screenshot).

PyFirmata

PyFirmata

Klicke dann auf den upload-Button.

PyFirmata Hello World
Downloade das Beispielscript von Github mit

Stelle sicher, dass der USB-Port in der folgenden Zeile des Skriptes dem USB-Port des letzten Abschnitts entspricht:

Verbinde dann Pin D3 des Arduino mit einer LED und einem passenden Widerstand auf einer Steckplatine wie hier abgebildet:

PyFirmata test circuit

Arduino nano mit LED

Starte jetzt das Script durch die Eingabe von
Das Leuchten der LED steigt langsam an, bis die volle Leistung erreicht ist, wie in diesem Video:

Code Erklaerung
Nach dem einrichten von board muss fuer die Pulsweitenmodulation (pwm) ein Iterator Thread auf dem Arduino gestarted werden:

Der Ausgangspin wird ausgewaehlt mit

fuer digitaler Pin 3 mit pwm.
Danach wird ueber 10000 STEPS iteriert mit Werten zwischen 0.0 (Minimum) und 1.0 (Maximum) fuer ein pwm write:

Klicke auf Ganzes Script, um den ganzen Code anzuzeigen.

PyFirmata schliessen
PyFirmata hat derzeit noch einen Bug und beendet das Programm manchmal nicht. Um PyFirmata trotzdem zu schliessen, druecke Ctrl+z um es in den Hintergrund zu schieben. Gib dann ein

um die Prozess-ID auszugeben:

Kill PyFirmata

PyFirmata schliessen

Anhand der gefundenen Prozess-ID kann PyFirmata geschlossen werden mit
sudo kill -9 ID

Einfache Arduino-Boardauswahl
Tino de Bruijn hat mich auf util.get_the_board hingewiesen, mit dem der Arduino erreicht werden kann, ohne den USB-Port manuell einzugeben. Ersetze die Zeile

im Script mit

Dies verzichtet auf den manuellen USB-Port-Bezeichner ttyUSBX und ist stabil beim entfernen und wiederanschliessen des Arduino.

Besuche die PyFirmata Dokumentation fuer weitere Informationen!

Links
PyFirmata auf GitHub: https://github.com/tino/pyFirmata
Arduino Tutorial: http://www.knight-of-pi.org/de/arduino-mini-tutorial-linux/
PyFirmata DoKumentation WIP (PDF): https://media.readthedocs.org/pdf/pyfirmata/latest/pyfirmata.pdf

Knight of Pi

Johannes Bergs aka Knight of Pi. Diploma in Bioinformatics, some Webdesign and Python coding then. Living in the beautiful city of Vienna.

Kommentar

Time limit is exhausted. Please reload CAPTCHA.