RS232 Kommunikation Arduino Pro Mini < - > Raspberry Pi

  • 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:

    Code
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo apt-get install minicom


    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.

    Code
    $ sudo vi /etc/inittab
    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

    Code
    $ minicom -D /dev/ttyAMA0


    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

  • RS232 Kommunikation Arduino Pro Mini < - > Raspberry Pi? Schau mal ob du hier fündig wirst!

    • Offizieller Beitrag

    Das hier noch keiner geantwortet hat...

    Sehr gute und ausführliche Anleitung von dir ds - dafür schon mal vielen danke! :)
    Eine bzw 2 Fragen hätte ich da noch:

    Wie entwickelst du eine Anwendung für den Arduino? Hast du diese IDE auf dem Pi laufen?
    Wenn ja, kann man damit arbeiten oder ist der Pi dafür zu schwach?
    Wenn nein, kann man die IDE auch auf dem eigenen PC laufen lassen und dann den Code auf den Pi uploaden und danach auf den kleinen?

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

    Einmal editiert, zuletzt von Turael (25. September 2014 um 22:42)

  • Ja hey Turael, alter Flattermann :angel: ...
    danke für die Blumen ... :)
    Anwendungen für den Arduino baue ich mit der zugehörigen IDE ... unter Ubuntu auf meinem Laptop.
    Die gibt es afaik auch für Rechner mit Fenstern :fies:
    Auf dem RPi hab' ich die noch nicht ausprobiert ... ist aber mal eine Idee ;) ...
    Einen Zwischenschritt brauchst Du nicht einlegen, das ist ja der Clou beim Arduino, dass Du die USB-Verbindung auch zum Flashen nutzen kannst.
    Rein theoretisch könntest Du die Anwendungen für den Arduino auch z.B. mit LunaAVR erstellen und dann über die ISP-Schnittstelle flashen. Das hab' ich persönlich aber noch nicht ausprobiert ... diese IDE mit den sketches finde ich echt komfortabel. Warum dann was anderes, aufwändigeres nehmen.
    Wie gesagt ... das mit dem IDE auf dem RPi - das probier ich bei Gelegenheit mal aus.

    cheers,
    -ds-

  • echt interessant, mein PI Atmel Kommunikation liegt ja seit 1 Jahr nur so rum, es klemmt wie immer an der Software.
    Vielleicht setze ich mich dann da noch mal ran.

    Die Pegelanpassung hat sich bewährt, beide leben noch mit einem 470 Ohm und einer BAT42 auf jeder seriell Leitung, Plan ist hier eingestellt.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    • Offizieller Beitrag

    Unglaublich wie lange es braucht ein simples Raspbian Image zu saugen... des war auch schon mal schneller...

    Meine ersten Versuche mit dem Pi und dem Arduino pro mini sind eher bescheiden ausgefallen...
    Leider kann ich nichtmal genau sagen woran es liegt.
    Ich besitze keinen FTDI Flash-Adapter so wie du ihn in der Anleitung beschreiben hast aber ich hab einen umweg gefunden - welcher wahrscheinlich nicht ganz funktioniert.
    Auf dieser Seite wird der DTR Pin vom Arduino via einem zusatz tool automatisch resettet. Scheinbar passiert da nicht viel - zumindest beendet sich dieses Tool nicht und hängt dann als Prozess Leiche im System rum...
    Als Fehlermeldung gibt mir avrdude folgendes aus: "avrdude-original: stk500_recv(): programmer is not responding"

    Aber ich bleibe dran ;)

  • Hey Turael,
    Du kannst also den Pro Mini nicht flashen?
    Bei dem kommst Du vermutlich um so etwas wie ein FTDI-Kabel nicht drumherum ...
    Zwei Alternativen hätte ich allerdings noch im Hinterkopf:
    Ein "altes" Handy-USB-Datenkabel mit einem PL2302/2303 oder OTI6858 Chip. Einfach den Stecker abzwicken und die Kabel mit dem Arduino Pro Mini verbinden (sind nur drei: Rx, Tx und DTR ... und Masse, ist oft auf dem Schirm oder seperat)
    oder: -> hier <- hatte ich mal beschrieben, wie man den RPi als Programmier-Gerät für einen Atmel µController verwenden kann. Da der Arduino auch nix anderes ist sollte das auch gehen.

    Das mit dem "schnell den Resetknopf drücken" habe ich ziemlich schnell aufgegeben. Das klappte gar nicht ;)

    cheers,
    -ds-

    • Offizieller Beitrag

    Ich hab zwar noch viel probiert... aber alles doof gewesen ;)
    Nun hab ich mir (leider) einen FTDI Adapter gekauft... Funktioniert nun einwandfrei... allerdings ist so ein Adapter quatsch wie ich von unserem lieben DBV erfahren hab :D
    Alles was der Adapter macht könnte auch ein Arduino Uno machen - und noch viel viel mehr...
    Naja dafür hab ich nun ein Werkzeug was wirklich nur dafür ausgelegt ist :D

    Edit:
    Kleiner Nachtrag: Ich habe nun keinen Raspberry mehr dazwischen geschaltet ;)

  • >allerdings ist so ein Adapter quatsch
    Finde ich nicht.
    Bin selber stolzer Besitzer eines solchen Dings.
    Auch eines Unos und eines USBasp.

    Je nach Anforderung nehme ich eins der Dinge zum Programmieren.
    Zuerst habe ich auch nur den UNO als Programmiergerät verwendet, das machte aber keinen Spass, das ewige umsteckern.
    Jetzt geht das alles "Ruck Zuck Pupp". Ohne Wackler und ohne Uno dauernd umprogrammieren.

    Den UNO (+ Steckbrett) verwende ich zum entwickeln und testen neuer Schaltungen.
    Die endgültigen System laufen dann meist mit "Pro Mini".

    spruch.png


  • Die endgültigen System laufen dann meist mit "Pro Mini".

    verstehe ich, ist sinnvoll mache ich auch, je nach dem


    ....Den UNO (+ Steckbrett) verwende ich zum entwickeln und testen neuer Schaltungen.

    aber warum den, ein Nano mini tuts auch ist auf dem Steckbrett kleiner und auch billiger, beide haben den m328p

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Zitat

    aber warum denn


    Gute Frage, habe ich noch nicht drüber nachgedacht......


    Was mir so einfällt:
    Der liegt halt in meiner Bastelkiste, mit den ganzen Dupont Strippen.
    Die Beschriftung der Pins ist ohne Lupe zu lesen.
    Der Uno liefert mir 3,3V ohne Zusatzschaltung.
    Ich komme mit dem USBasp an die Fuses, ohne erst einen ISP Stecker dran zu basteln.
    Auch einen "Standalone" ATMega328P kann ich im UNO Programmieren und die Schaltung testen.

    Wirklich wichtig ist das ganze nicht, aber bequem.

    spruch.png

    Einmal editiert, zuletzt von combie (30. September 2014 um 16:36)

    • Offizieller Beitrag

    Naja ein Arduino Uno hätte ich noch für andere Sachen benutzen können - auch wenn ich momentan kein Einsatz dafür hätte...

    Aber ich glaube bei beiden Varianten kommt man nicht drum herum ein Breadboard und ein paar Drahtbrücken zwischen PC und Pro mini zu packen oder?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!