Moin beinander,
noch eine Kurzanleitung ... diesmal geht's darum einen Arduino Pro Mini mit einem Raspberry Pi über die serielle Schnittstelle sprechen zu lassen.
Ich habe in diesem Beispiel den Pro Mini mit 5V betrieben und musste demzufolge einen Levelshifter einsetzen ( wir erinnern uns: der RPi darf auf seinen I/Os niemals 5V sehen ).
Alternativ bestünde auch die Möglichkeit, den Arduino mit 3.3V zu betreiben ... dann kann man sich den Levelshifter schenken.
Als Spannungskonverter habe ich ein -> solches <- Teil verwendet. Das ist zwar ein wenig oversized, weil wir ja nur einen Pin in eine Richtung konvertieren müssen (Rx - also die Empfangsdaten RPi seitig).
Diese kleinen Konverter-Boards sind allerdings mittlerweile extrem preiswert, so dass es sich imho lohnt, sich mal eine Handvoll zuzulegen.
Ein Spannungsteiler täte es da genau so.
Ihr benötigt:
einen Arduino Pro Mini
einen Raspberry Pi
ein Breadboard zur leichteren Verdrahtung
einen Spannungs-Konverter (oder Spannungsteiler)
einen FTDI Flash-Adapter zum Programmieren des Arduino
14 Kabel
Überprüft zunächst durch Aufruf, ob ihr auf dem RPi das Programm "minicom" installiert habt.
Wenn nicht, dann bitte mit:
installieren.
Bevor es jetzt ans Verbinden geht, macht ihr Euren Arduino und den RPi erst mal stromlos.
Die Verdrahtung selbst ist jetzt "watschneinfach".
Verbindet
Pin #1 des RPi mit der "unteren" Plusleiste des Breadboards
Pin #2 des RPi mit der "oberen" Plusleiste des Breadboards
Pin #6 des RPi mit der "unteren" Minusleiste des Breadboards
die "untere" Minusleiste des Breadboards mit der "oberen" Minusleiste
Pin #8 (TxD) des RPi mit dem ersten I/O des Levelshifters auf der 3V Seite
Pin #10 (RxD) des RPi mit dem zweiten I/O des Levelshifters auf der 3V Seite
den "unteren" GND Anschluss des Levelshifters mit der "unteren" Minusleiste
den 3V Anschluss des Levelshifters mit der "unteren" Plusleiste
den 5V Anschluss des Levelshifters mit der "oberen" Plusleiste
den "oberen" GND Anschluss des Levelshifters mit der "oberen" Minusleiste
Pin RxD des Arduino mit dem ersten I/O des Levelshifters auf der 5V Seite
Pin TxD des Arduino mit dem zweiten I/O des Levelshifters auf der 5V Seite
Vcc des Arduino mit der "oberen" Plusleiste des Breadboards
GND des Arduino mit der "oberen" Minusleiste des Breadboards
Wie unschwer zu erkennen ist, müssen Rx und Tx über Kreuz miteinander verbunden werden. So werden die Ausgangsdaten des RPi (Tx) zu Eingangsdaten des Arduino (Rx) und umgekehrt.
Jetzt die Verkabelung noch ein- (zwei-, drei-, ...) mal überprüfen und das ganze unter Strom setzen.
Den Flash-Adapter auf den Arduino stecken und die IDE starten.
Ich habe den sketch ASCIITable unter "Beispiele -> 04. Communication" geringfügig geändert (siehe Anhang). Er setzt jetzt in der Endlosschleife nach einer kurzen Wartezeit immer wieder neu auf und sendet die Tabelle von vorne.
Den sketch auf den Arduino flashen und mit dem seriellen Monitor überprüfen, ob er tut was er soll.
Der Flash-Adapter kann jetzt abgesteckt werden.
Per ssh oder Terminal am RPi anmelden. Der sollte mittlerweile gebootet haben.
Jetzt die /etc/inittab überprüfen, ob der getty-Prozess für die rs232 des RPi deaktiviert ist.
Zitat
#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Ist in der Zeile mit "ttyAMA0" am Anfang kein Kommentarzeichen (#), dieses bitte einfügen, die inittab speichern und den RPi rebooten.
Jetzt rufen wir minicom auf
Bei einer Fehlermeldung wie "permission denied" ein sudo vor den Aufruf setzen.
Mit Strg+A P das Menü für die Kommunikationsparameter aufrufen und mit C Q <Enter> die Schnittstelle auf 9600 8N1 einstellen.
Jetzt sollte immer wieder die ASCII-Tabelle ausgegeben werden.
Mit Strg+A Q minicom verlassen.
Weitere Info zu minicom im Manual ...
Und das war es dann auch schon.
Bei Problemen einfach melden ...
Viele Grüsse und viel Spass damit,
-ds-
//EDIT: Link auf Levelshifter fehlte: danke eBiBy ... ist nachgetragen