Raspberry + Arduino + UART

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Leute,

    ich bin ziemlich neu auf dem Gebiet und kenne mich noch überhaupt nicht aus, weswegen ich jetzt vermute, dass ich das Raspberry & Arduino falsch angeschlossen habe und damit mein Raspberry geschrotttet habe. Ich wäre dankbar, wenn ich ihr mir sagen könntet, ob es nun kaputt ist oder ob der fehler vllt an einer anderen Stelle liegt.

    Ich habe diesen Sketch auf das Arduino gespielt und die Anpassungen für UART auf dem Raspberry vorgenommen

    Code
    sudo nano /etc/inittab
    #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
    
    sudo nano /boot/cmdline.txt
    dwc_otg.lpm_enable=0 [s]console=ttyAMA0,115200 kgdboc=ttyAMA0,115200[/s] console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

    Ich habe alles wie in dem Bild im Attachment angeschlossen und anschließend das die Netzstecker von beiden Platinen angeschlossen und gestartet.

    Nun gehe ich davon aus, dass ich folgende Dinge falsch gemacht habe, da ich per Minicom keine Rückmeldung erhalte. Könnt ihr mir sagen, ob ich soweit richtig liege?

    - Den GND auf dem Raspberry von Pin 20 an den GND vom Spannungswandler. Ich habe gelesen, dass der Pin 20 ein DNC Pin wäre, also dürfte man auch keine Masse daran anschließen?

    - Vom Spannungswandler RX an den RX1 19 Pin vom Arduino
    - Vom Spannungswandler TX zu TX1 18 auf dem Arduino.
    Ich habe nun gelesen, dass ich RX an den TX1 18 und TX an den RX1 19 Pin anschließen muss, also direkt umgekehrt.

    Danke für eure Hilfe.
    Ghorki

  • Servus ghorki,


    ...
    Ich habe diesen Sketch ...

    ...


    Du musst den sketch abändern.
    Serial. bezieht sich auf UART 0 ... Du hast aber RX1/TX1 verdrahtet, also müsstest Du aus Serial einfach Serial1 machen:



    ...
    Ich habe nun gelesen, dass ich RX an den TX1 18 und TX an den RX1 19 Pin anschließen muss, also direkt umgekehrt.
    ...

    genau ... Du musst die Leitungen "kreuzen", weil: die Empfangsdaten des einen die Sendedaten des anderen sind.
    Sonst sollte das passen,

    btw: vielleicht noch über den Link "Beitrag melden" (unten rechts bei Deinem ersten Post) einen Mod bitten geben, den Beitrag ins Mikrocontroller-Subforum zuu verschieben.


    cheers,
    -ds-

  • Hey Dreamshader,

    danke für die schnelle Antwort.
    Ich habe den Sketch mal so abgeändert und es erneut per Minicom versucht, jedoch ohne Erfolg.

    Code
    minicom -b 9600 -o -D /dev/ttyAMA0

    An was könnte das liegen? Ist das Raspberry nun durch den anfänglichen falschen Anschlussversuch kaputt oder steckt da noch etwas anderes dahinter?

    Grüße
    Ghorki

  • Hallo Ghorki,


    ...
    An was könnte das liegen? Ist das Raspberry nun durch den anfänglichen falschen Anschlussversuch kaputt oder steckt da noch etwas anderes dahinter?


    Verbinde statt des Arduino mal Rx und Tx des Raspi miteinander und ruf' dann minicom auf.
    Wenn Du jetzt was eintippst ... was passiert dann?

    cu,
    -ds-

  • Hallo Ghorki,

    in den letzten Wochen habe ich mich mit RPi, Arduino und UART beschäftigt.

    Dazu habe ich einen Pegelwandler gebastelt, der aus den 3V3-Signalen des TX des RPI 5V für Arduinos RX macht - und umgekehrt aus Arduinos 5V-Signale des TXD 3V3-Signale für RPi's RX macht.

    Du musst auf beiden Seiten nur die gleichen Parameter einstellen (Baudrate, Startbit, Stopbits, Parität), Anpassungen an zwei RPi-Dateien vornehmen, auf beiden Seiten Test-Programmen zum Empfangen und Senden. Und dann läuft es.

    Als Test-Programm kannst Du für den RPi auch ein Programm wie CuteCom oder minicom einsetzen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hi danke für eure Hilfe, ich wollte mir sowieso noch das Rapsberry 2 zulegen. Falls ich das Raspi wirklich durch meine ersten Versuche kaputt gemacht habe, dann teste ich das ganze mal mit dem neuen - diesmal alles richtig machen.

    Andreas inwiefern bzw wo muss ich die Parameter einstellen? Wie Dreamshader ja schon vorgeschlagen hatte, habe ich es mit dem Brücken der Kontakte auf dem Raspi versucht und da ging auch nichts.

  • Hallo Ghorki,

    schau mal hier rein. Dort habe ich in #5 alles Wissenswerte zum Thema RPi und UART zusammengefasst. Genauso habe ich eine UART-Verbindung zwischen RPi und Arduino hinbekommen. Und das Zeug funktioniert seit ca. drei Wochen fehlerlos.

    Was dort nicht drin steht, ist ein Pegelwandler, den ich mir aus fünf Widerständen und zwei Transistoren selber gebaut habe. Dieser Pegelwandler erzeugt in beide Richtungen entweder aus einem RPi 3,3V-Signal ein/boot/cmdline.txt solches von knapp 5V und aus einem 5V-Arduino-Signal ein knapp 3,3-Signal für den RPi.

    Wenn Du Zweifel hast, ob Du Dir die GPIO14 (P1-8) bzw. GIPIO15 (P1-10) zrschossen hast, dann klemme doch mal eine LED und einen ca. 680 Ohm-Widerstand zwischen GPIO14 (P1-8) und einem GND (z.B. P1-6). Richtige Polung vorausgesetzt würde die LED beim Booten flackern (bei unveränderten Dateien in [font="Courier New"]/etc/inittab[/font] und in [font="Courier New"]/boot/cmdline.txt[/font]).

    Flackert nichts (auch bei Umpolung nicht), dann ist da was zerschossen.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    3 Mal editiert, zuletzt von Andreas (14. Oktober 2017 um 15:00)

  • Ich habe es immer noch nicht hinbekommen... Habe mir das neue Raspberry 2 zugelegt, da ja eventuell vermutet wurde, dass die GPIOs kaputt sind.
    Habe alles ganz genau nach eurer Beschreibung und die von gefühlten 100 Tutorials ausgeführt. Die Verbindungen vorher mehrmals gecheckt und trotzdem funktioniert es wieder nicht... Ziemlich frustrierend das ganze.
    Ich weiß nun echt nicht mehr weiter.

    raspi update+upgrade
    minicom install
    /etc/inittab geändert
    /boot/cmdline.txt geändert

    und habe auch am Arduino an RX1/TX1 angeschlossen (deswegen Serial1)

    Einmal editiert, zuletzt von ghorki (11. Februar 2016 um 02:54)

  • Servus,

    auf dem PI 2 kannst Du dir afaik das Ändern der /etc/inittab und /boot/cmdline.txt schenken. Das geht das über raspi-config ( Advanced options -> A8 Serial ).

    Ausserdem: warum hast Du denn die Serial1 auf dem Arduino nicht initialisiert? Da musst Du logischerweise auch einen Serial1.begin() machen ;)

    Und dann halt dran denken, dass Du Rx des Arduino mit Tx des PI und vice versa verbinden musst (kreuzen).
    cu,
    -ds-

  • Danke für die schnelle Antwort! Sorry, hab den ganzen Abend schon versucht es zum laufen zu bringen, habe den falschen Code hochgeladen. Er ist wie folgt:

    Hab in der raspi-config A8 Serials auf disable gesetzt. Angeschlossen habe ich auch alles richtig soweit ich das sehe, habe jetzt mal Bilder davon hochgeladen.
    Wenn ich minicom -b 9600 -o -D /dev/ttyAMA0 aufrufe, dann sollte ich z.B. eine Ziffer eingeben und diese sollte mir dann direkt wieder ausgegeben werden oder habe ich minicom falsch verstanden?
    Danke für deine Hilfe! :danke_ATDE:

  • Tach auch ....
    also ... ich würde da jetzt mal folgendermassen vorgehen:
    minicom aufrufen: minicom -D /dev/ttyAMA0
    Arduino IDE aufrufen
    Im sketch in loop: die Serial1.print() gegen Serial.print() tauschen damit Du erst mal siehst ob was ankommt
    Den seriellen Monitor der IDE aktivieren
    In minicom jetzt mal ein paar Tasten drücken und schauen, ob was kommt
    Wenn nicht, dann in minicom mit den Tasten <CTRL>+<A> und anschliessend <P> das Parameter-Menü aufrufen und jetzt einfach mal eine Baudrate nach der anderen ausprobieren
    Wenn immer noch nix beim Arduino ankommt die Leitungen Rx und Tx vertauschen (am besten die beiden Strippen vom Arduino umstecken)
    Das ganze Spiel noch mal von vorne ... also minicom aufrufen, Parameter ändern ...

    Und dann wieder melden ;)

    cu,
    -ds-

  • lexarom
    31. Januar 2016 um 15:47

    immer dieselben Fragen und keiner denkt an 5V zu 3,3V

    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)

  • Hey Dreamshader ,

    hab alles getestet, es kommt nichts an. Eig sollten bei einer Übertragung auch die TX/RX Lämpchen auf dem Arduino leuchten oder? Da tut sich jedenfalls auch nichts. Ich habe gleichzeitig das Arduino mit dem USB an meinem Laptop hängen, das sollte ja kein Problem sein nehme ich an.

    jar ich habe doch den Spannungswandler dazwischen, dachte das wäre soweit in Ordnung
    http://www.ebay.de/itm/3317444315…K%3AMEBIDX%3AIT

    Einmal editiert, zuletzt von ghorki (11. Februar 2016 um 12:04)


  • jar ich habe doch den Spannungswandler dazwischen, dachte das wäre soweit in Ordnung

    ja das meint der Verkäufer dieser Teile, Teufelszeug, wäre mir zu unsicher sich auf FET zu verlassen, ne ne ne, ein R und eine Ableitdiode ist was reelles, FETs gehen nun mal öfter kaputt und gerade wer sich mit Bauteilen und deren Umgang nicht auskennt sollte FETs meiden.

    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)

  • Danke für den Hinweis, ich werde mir mal das nötige bestellen für die Zukunft. Ich habe allerdings 3 verschiedene Spannungswandler hier und an allen funktioniert es nicht, wäre doch schon ein komischer Zufall.


  • Danke für den Hinweis, ich werde mir mal das nötige bestellen für die Zukunft. Ich habe allerdings 3 verschiedene Spannungswandler hier und an allen funktioniert es nicht, wäre doch schon ein komischer Zufall.

    nun ja, Trockentest

    je Seite

    RX und TX brücken
    auf der Atmelseite muss was rausgeht auch genauso wieder reinkommen

    ARDUINO
    Serial.print ->
    if (Serial.available() > 0)
    {

    AVR siehe UART

    PI, nehme ich cutecom unter wheezy oder raspbian

    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)

Jetzt mitmachen!

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