Raspberry + Arduino + UART

  • Erstmal Danke für deine Hilfe jar. Leider kann ich nicht viel damit anfangen, da ich nicht genau weiß, was du mir sagen möchtest. Bin noch nicht so tief in der Materie drin. Soll ich jetzt testen, ob Arduino ein Signal rausschickt und sein eigenes selbst wieder empfängt? Wie sieht dafür der Code aus und wie muss ich schalten? Bin mir unsicher, da ich nichts kaputt machen möchte.

    Einmal editiert, zuletzt von ghorki (11. Februar 2016 um 13:29)


  • Erstmal Danke für deine Hilfe jar.

    gerne


    Leider kann ich nicht viel damit anfangen, da ich nicht genau weiß, was du mir sagen möchtest. Bin noch nicht so tief in der Materie drin.

    aber einen AVR mit dem PI verbinden wollen? wie soll das gehen wenn du bei den basics schon schwächelst?

    Soll ich jetzt testen, ob Arduino ein Signal rausschickt und sein eigenes selbst wieder empfängt?

    ja genau das sollst du machen, am Atmel und am PI


    Wie sieht dafür der Code aus

    Beispiele gibts genug im Netz und mal ehrlich wenn du das auf einer Seite Atmel oder PI nicht hinbekommst, wie soll es dann vom PI zum Atmel klappen?


    und wie muss ich schalten? Bin mir unsicher, da ich nichts kaputt machen möchte.

    deswegen schrieb ich ja,

    erst mal am Atmel RX und TX brücken, da hat der nur seine eigene Spannung und kann nix kaputt machen, wenn die Übertragung klappt ist der erste Schritt getan.

    dann am PI RX und TX brücken, da hat der nur seine eigene Spannung und kann nix kaputt machen, wenn die Übertragung klappt ist der zweite Schritt getan.

    Wenn dann noch beide Baudraten 8N1 gleich eingestellt sind und erst mal langsam mit 9600 Baud anfangen, dann mit "meiner "Schutzschaltung die beiden verbinden

    Rx->Tx
    Tx->Rx
    GND -> GND

    dann sollte das klappen

    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)

  • Hallo Ghorky,

    in einem früheren Beitrag hast Du über raspi-config Serial auf [font="Courier New"]disable[/font] gestellt. Das halte ich für weniger sinnvoll, weil kontraproduktiv. Es gibt da bestimmt etwas wie [font="Courier New"]enable[/font]...

    Bei meinem Arduino ist es so, dass ich bei angeschlossenem RX/TX-Kabel kein Sketch übertragen kann. Vermutlich ist das bei Dir auch so. Mir stellt sich dann die Frage, WAS auf Deinem Arduino überhaupt laufen soll.

    Als erstes würde ich mal versuchen herauszufinden, ob überhaupt irgendwer senden / empfangen kan.
    1. Verbinden TX auf dem Raspberry Pi mit RX auf dem Raspberry Pi.
    2. Über irgendeines der hier schon empfohlenen Serial-Terminal-Programme (mein Favorit ist [font="Courier New"]cuteCom[/font]) das Device /dev/ttyAMA0 und Baudrate auf 9600 einstellen
    3. Das so eingestellte Device öffnest Du (für Senden und Empfangen, Auschalten von Echo, Sonderfunktionen)
    4. Dann sendest Du etwas über die Eingabemöglichkeit des Programms
    5. Was Du sendest, musst Du empfangen

    Das gleiche machst Du auf dem Arduino, wobei ein Sketch läuft, dass einfach nur sendet und das gesendete anzeigt. Auch hier gilt: Was Du sendest, musst Du empfangen.

    Aus Deinen Photos und textlichen Ausführungen geht für mich nicht eindeutig hervor, ob
    - TX des RPi über einen Pegelwandler mit RX des Arduino verbunden ist
    - RX des RPi über einen Pegelwandler mit TX des Arduino verbunden ist
    - ob der Pegelwandler überhaupt Pegel wandelt.
    - ob Arduino und Raspberry Pi bzgl serieller Kommunikation auf kompatible Parameter eingestellt sind.

    Ob der Pegelwandler Pegel wandelt, bekommst Du so heraus:
    1. Anschließen von GND des RPi auf GND des Pegelwandlers
    2. Anschließen von 3V3 des RPi auf TX der 3V3-Seite des Pegelwandlers
    3. Auf der 5V-Seite des Pegelwandlers solltest Du zwischen GND und TX-Pin knapp 5V messen

    4. Strippen abziehen (GND zuletzt)

    5. Anschließen von GND des RPi auf GND des Pegelwandlers
    6. Anschließen von 5V des RPi auf TX der 5V-Seite des Pegelwandlers
    7. Auf der 3V3-Seite des Pegelwandlers solltest Du zwischen GND und TX-Pin knapp 3,3 V messen

    Und jetzt bist Du dran...

    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.

    Einmal editiert, zuletzt von Andreas (11. Februar 2016 um 14:12)


  • 6. Anschließen von 5V des RPi auf TX der 5V-Seite des Pegelwandlers
    7. Auf der 3V3-Seite des Pegelwandlers solltst Du zwischen GND und TX-Pin knapp 3,3 V messen
    Und jetzt bist Du dran...

    falls der Pegelwandler nicht schon einen Schuss weg hat, wie gesagt ich traue denen nicht, FETs sind so sensibel! Ein R ist was reelles als Strombegrenzer 5V -> 3,3V und mit den Ableitdioden ist sichergestellt das der PI nur maximal 3,3V + Vf sieht!

    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)

  • Hallo Raspberry,


    falls der Pegelwandler nicht schon einen Schuss weg hat, wie gesagt ich traue denen nicht, FETs sind so sensibel! Ein R ist was reelles als Strombegrenzer 5V -> 3,3V und mit den Ableitdioden ist sichergestellt das der PI nur maximal 3,3V + Vf sieht!

    Jo, Jar! Bei mir hängt ein Spannungsteiler auf der einen Seite und zwei Transistoren und drei Widerstände auf der anderen Seite. Das funzt seit rund einem halben Jahr.

    Ich setze auch keine unbekannte Hardware ein, ohne irgendwelche Tests angestellt zu haben, dass das Teil plausibel funktioniert.

    Aber jetzt muss Ghorky mal etwas an Daten liefern, sonst eiern wir alle noch wochenlang herum.

    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.

    Einmal editiert, zuletzt von Andreas (15. Oktober 2017 um 10:26)

  • Hi Andreas,


    ... in einem früheren Beitrag hast Du über raspi-config Serial auf [font="Courier New"]disable[/font] gestellt. Das halte ich für weniger sinnvoll, weil kontraproduktiv. Es gibt da bestimmt etwas wie [font="Courier New"]enable[/font]...

    nun mach mir doch die Leute nicht ganz kirre - das ist schon ok so ( siehe Anhang ) ;)
    cu,
    -ds-

  • Hallo Dreamshader,

    ach, das meinst Du... Das passt schon.

    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.

  • Danke euch für die ganzen Antworten!

    1.) Hab RX und TX auf dem Raspberry gekreutzt und mit cutecom getestet. Funktioniert einwandfrei.

    2.) Arduino hab ich auch getestet und funktioniert

    3. Ich hab nochmal die Schaltung mit Fritzing gemacht und hier hinzugefügt
    4. Den Spannungswandler kann ich wohl erst am Wochenende messen, da ich gerade kein Messgerät zur Hand habe
    5. Zur Frage was auf dem Arduino laufen soll: Er soll erstmal nur Daten vom Raspberry empfangen und Daten an das Raspberry schicken können

  • Hallo Ghorki,

    dann sind wir schon mal einen großen Schritt weiter... Raspberry Pi und Arduino funkionieren.

    Ich kenne jetzt die Bedienungsanleitung des von Dir eingesetzten Pegelwandlers nicht. Ich könnte mir vorstellen, dass bereits dort schon RX/TX gekruzt werden.
    Du hast so verbunden
    - TX(RPi) - TX(Pegelwandler rein) ... TX(Pegelwandler raus) - RX(Arduino)
    - TX(Arduino) - RX(Pegelwandler rein) ... RX(Pegelwandler raus) - RX(Arduino)

    Kommt meinem Symmetriebedürfnis nicht entgegen...

    Wenn Du ein Messgerät hättest, dann könntest Du prüfen, welcher Eingang wo hinausgeht.

    Ich könnte mir vorstellen, dass es so erfolgreicher ist:
    - TX(RPi) - TX(Pegelwandler rein) ... RX(Pegelwandler raus) - RX(Arduino)
    - TX(Arduino) - TX(Pegelwandler rein) ... RX(Pegelwandler raus) - RX(Arduino)

    oder auch
    - TX(RPi) - RX(Pegelwandler rein) ... TX(Pegelwandler raus) - RX(Arduino)
    - TX(Arduino) - RX(Pegelwandler rein) ... TX(Pegelwandler raus) - RX(Arduino)

    Aber wie gesagt, was in der Bedienungsanleitung zum Pegelwandler steht, solltest Du schalten.

    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.


  • Danke euch für die ganzen Antworten!

    1.) Hab RX und TX auf dem Raspberry gekreutzt und mit cutecom getestet. Funktioniert einwandfrei.

    2.) Arduino hab ich auch getestet und funktioniert

    gratuliere, kaum macht mans richtig gehts auch meist :)

    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)


  • gratuliere, kaum macht mans richtig gehts auch meist :)

    Die Verbindung von Raspi und Arduino funktioniert leider trotzdem noch nicht, aber ich messe morgen erstmal den Wandler.

    Zitat


    Ich könnte mir vorstellen, dass es so erfolgreicher ist:
    - TX(RPi) - TX(Pegelwandler rein) ... RX(Pegelwandler raus) - RX(Arduino)
    - TX(Arduino) - TX(Pegelwandler rein) ... RX(Pegelwandler raus) - RX(Arduino)

    oder auch
    - TX(RPi) - RX(Pegelwandler rein) ... TX(Pegelwandler raus) - RX(Arduino)
    - TX(Arduino) - RX(Pegelwandler rein) ... TX(Pegelwandler raus) - RX(Arduino)

    Hat leider auch nicht funktioniert. Mal sehen was morgen die Messungen zeigen.

    Zitat


    Wenn Du ein Messgerät hättest, dann könntest Du prüfen, welcher Eingang wo hinausgeht.

    Wie kann ich das machen? Wie ich die Spannung auf beiden Seiten messen kann habt ihr mir ja schon erklärt.
    Automatisch zusammengefügt:


    ttl USB Wandler bringt keine Verbindung

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

    Muss ich etwas bei den Ableitdioden, gehen da einfache Dioden?

    Für die Widerstände 470 Ohm, wieviel W Belastbarkeit?

    Einmal editiert, zuletzt von ghorki (11. Februar 2016 um 20:28)


  • Muss ich etwas bei den Ableitdioden, gehen da einfache Dioden?

    ja hebt die Spannung aber etwas höher als Schottky von 3,6V auf bis zu 4V, ist aber lt. SoC Datenblatt auch noch im Limit.


    Für die Widerstände 470 Ohm, wieviel W Belastbarkeit?

    da hilft das ohmsche Gesetz wieder mal:

    Angenommen der höchste Pegel ist 5V und angenommen hinter dem 470 Ohm ist 0V,
    dann wäre die höchstmögliche Leistung U² / R = 25 / 470 , wer mag darf selber rechnen.

    LG jar

    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)

  • Also ich hab mal die Spannungswandler gemessen und an denen geht wohl gar nichts, da scheint also das Problem zu liegen.
    Dann baue ich mir die Schaltung wie jar beschrieben nach, jedoch bin ich wie gesagt ein totaler Elektronik Newbie (weswegen ich ja jetzt damit anfangen möchte um zu lernen), deswegen noch ein paar Fragen.

    Zitat von jar


    ja hebt die Spannung aber etwas höher als Schottky von 3,6V auf bis zu 4V, ist aber lt. SoC Datenblatt auch noch im Limit.


    Noch zum Verständnis: Die Dioden erhöhen die Spannung?
    Wenn ich mir folgende bestelle klappt dann alles?http://www.ebay.de/itm/Schottky-D…xQAAOSwLN5WkkNJ

    Zitat von jar


    Angenommen der höchste Pegel ist 5V und angenommen hinter dem 470 Ohm ist 0V, dann wäre die höchstmögliche Leistung U² / R = 25 / 470 , wer mag darf selber rechnen.


    Hab ich noch nicht ganz verstanden, funktioniert das dann trotzdem mit z.B. 0,25W? Oder muss das 0,05W sein?

    Und ich habe noch eine Frage zu deiner Schaltung aus dem anderen Thread. Ich verstehe das mit dem Ground noch nicht so ganz. Da ist ja das Nullpotential, aber ich versteh nicht, wo man das anschließen muss. Gnd vom Raspi an Gnd von Arduino?


  • Also ich hab mal die Spannungswandler gemessen und an denen geht wohl gar nichts, da scheint also das Problem zu liegen.

    eben


    Dann baue ich mir die Schaltung wie jar beschrieben nach, jedoch bin ich wie gesagt ein totaler Elektronik Newbie (weswegen ich ja jetzt damit anfangen möchte um zu lernen), deswegen noch ein paar Fragen.

    gute Idee


    Noch zum Verständnis: Die Dioden erhöhen die Spannung?

    ja die Diode schaltet erst ab 3,3V + Vf deswegen BAT42 da liegt die Vf niedriger als bei Silizium 1N4148, das bedeutet bie Schottky für den PI 3,6V statt 4V wie bei Silizium am GPIO.


    Wenn ich mir folgende bestelle klappt dann alles?http://www.ebay.de/itm/Schottky-D…xQAAOSwLN5WkkNJ

    ja wie ich schon schrieb, oft klappt es auch mit StiNo 1N4148 aber BAT42 sind schonender.


    Hab ich noch nicht ganz verstanden, funktioniert das dann trotzdem mit z.B. 0,25W? Oder muss das 0,05W sein?

    rechnerisch bekommst du eine Verlustleistung im Widerstand von 0,05W, deswegen geht ein 0,25W Widerstand ja nicht kaputt weil der mehr aushält.

    Man muss immer mehr aushalten als einem zugemutet wird, E-Technik Anfänger hin oder her, das Prinzip ist in der Natur immer das selbe.


    Und ich habe noch eine Frage zu deiner Schaltung aus dem anderen Thread. Ich verstehe das mit dem Ground noch nicht so ganz. Da ist ja das Nullpotential, aber ich versteh nicht, wo man das anschließen muss. Gnd vom Raspi an Gnd von Arduino?

    ja nur dann wissen beide vovon sie "reden" ohne gemeinsame Basis gehts nicht.
    Ist auch immer so, Kommunikation braucht immer eine gemeinsame Basis, sei es GND oder Sprache.

    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 Leute,
    ich habe mal wieder etwas rumgewerkelt und die Schaltung soweit aufgebaut und angeschlossen, da ich endlich Zeit und alle Komponenten zusammen hatte.
    Von der Stromversorgung klappt alles. Habe die Kommunikation nun mit Cutecom versucht, jedoch funktioniert es immernoch nicht :(
    Ich weiß wirklich nicht mehr, was ich machen soll.


  • Habe die Kommunikation nun mit Cutecom versucht, jedoch funktioniert es immernoch nicht :(
    Ich weiß wirklich nicht mehr, was ich machen soll.

    na erst mal Rx und Tx brücken und sehen obe überhaupt Daten kommen, bevor was mit anderen verbunden wird.

    Diesen Test doppelt

    Der andere Rx und TX brücken muss laufen
    Der PI Rx und TX brücken muss laufen

    erst dann kann man an eine Kommuniktaion denken mit Rx an Tx und Tx an Rx sons wird das nix.

    Ich meine wir flüstern uns ja auch in die Ohren und nicht in den Mund.

    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)


  • Ich hab beides getestet und sowohl auf dem Pi als auch auf dem Arduino funktionieren die brücken.

    na denn stell die Baudrate richtig ein und die anderen Parameter, mache die Spannungsanpassung und fertig.

    wo ist dann dein Problem?

    solange du es nicht benennen kannst kann dir keiner helfen.

    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)

  • Hallo Ghorki,

    dann sollte die Kommunikation zwischen RPi und Arduino auch funktionieren, wenn Du
    - TX des Arduino über einen Spannungsteiler / Pegelwandler) an den RX des RPi anschließt (der Spannungsteiler / Pegelwandler macht aus den 5V-Pegeln des Arduino 3,3 V-Pegel für den RPi)
    - TX des RPi über eine Verstärkerschaltung / Pegelwandler an den RX des Arduino anschließt (wandelt 3,3 V-Pegel des RPi auf 5V-Pegel für den Arduino)

    Ersteres ist unumgänglich, um den RPi nicht zu zerstören - letzteres kann man sich schenken.

    Ich setze eine solche Schaltung (Spannungsteiler und Verstärkerschaltung) seit rund 9 Monaten störungsfrei in einem Entwicklungsprojekt ein.


    Dann brauchst Du nur noch mit dem Programm

    Code
    stty


    die ca. 53 Parameter der seriellen Schnittstelle einzustellen und auf Sender und Empfänger abzugleichen.

    Baudrate, Parität und Anzahl der Stoppbits, Anzahl der Datenbits müssen übereinstimmen, damit Du eine Chance auf eine Datenübertragung hast. Ach, und die Schnittstelle muss natürlich auf dem RPi aktiviert worden sein (wie das geht, ist Gegensatnd vieler Threads in diesem Forum) - und Du musst die richtige Schnittstelle abfragen... ;)

    Und die restliche Konfigurierung erledigst Du mit stty, damit auch die Zeichen durchkommen bzw. auf Wunsch bestimmte Funktionen von Sonderzeichen beibehalten oder abgeschaltet werden.


    Beste Grüße

    Andreas

Jetzt mitmachen!

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