Raspberry Pi serielle Datenübertragung

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten Morgen zusammen.
    Ich bräuchte mal Hilfe :D
    Ich habe mit Tkinter und Python ein GUI programmiert. So jetzt möchte ich die Daten seriell an ein Arduino senden.

    Mein GUI soll ein Roboter mit einem Arm ansteuern.Kann mir wer Tips geben

  • Hallo Locke32,


    Kann mir wer Tips geben

    Zu was?
    - Läuft Dein Programm nicht?
    - Macht der Roboter nichts?
    - Klappt die serielle Übertragung nicht?
    - Werden einzelne Zeichen nicht übertragen?
    - Erwartet der Roboter eine definierte Sequenz?
    - Ist ein Kommunikationsprotokoll einzuhalten? Wenn ja, welches?
    - Werden Kommandos an den Roboter von letzterem bestätigt?
    - Hast Du die serielle Schnittstelle korrekt eingerichtet?
    - Wie hast Du die Baudrate abgeglichen? Hast Du?
    - Dito für Anzahl der Stopbits, Parität...
    - Sagt Dir cuteCom etwas? Hast Du das mal eingesetzt?
    - Hast Du die 53 Parameter der seriellen Schnittstelle, die man feintunen kann, falls Baudrate, Parität, Stopbits nichts gebracht haben, mit stty eingestellt? Welche Parametersätze hast Du schon probiert? Was war das Ergebnis?

    - Wie hast Du die serielle Schnittstelle geschaltet? TX-TX und RX-RX oder RPi-RX->Arduino-TX und RPi-TX->Arduino-RX?
    - Hast Du unterschiedliche Spannungspegel beachtet? Anmerkung: Der RPi mag nur max. 3,3V sehen. Mehr bekommt ihm nicht so.
    - Wie sieht Deine Schaltung aus? Hast Du ggf. einen Pegelwandler verbaut bzw. einen Spannungsteiler für den Weg 5V auf 3V3? Wenn Pegelwandler: Welchen? Hast Du den mal getestet, ob er wirklich pegelwandelt? Wenn Spannungsteiler: Welche Widerstände und wo greifst Du am Spannungsteiler ab? Mit welcher Schaltung wandelst Du von 3V3 auf 5V? (oft nicht erforderlich, aber sicher ist sicher)

    - Ach, fast vergessen: Wie sieht eigentlich Dein Programm aus?
    - Wenn der RPi mit dem Arduino kommunizieren soll, dann brauchst Du auch einen Sketch auf dem Arduino, der vom RPi empfängt und irgendwie den Roboter ansteuert? Hast Du das "irgendwie" in Form von Datenblättern?


    Um Dir überhaupt nur ansatzweise helfen zu können, sollten Antworten auf alle Fragen vorliegen...

    Beste Grüße

    Andreas

    P.S.:

    Kunde zum Kundendienst-Mitarbeiter: "Mein Auto funktioniert nicht! Wer kann mir helfen?"
    Kundendienst-Mitarbeiter:
    "- Batterie leer?
    - Tank leer?
    - Bremse angezogen?
    ...
    ...
    ...
    "

    Kunde: "Nee, alles das wohl nicht. Ich komme nicht rein. Ich finde den Schlüssel nicht..."

    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 (9. März 2016 um 09:31)

  • Hallo andreas
    Ich bin ein Neueinsteiger in programmieren und RaspberryPi und Python. Dann erstmal ein fettes sorry das ich meine Frage so dumm gestellt habe.
    Der Arduino kommunieziert mit dem RaspberryPi über ein USB-Kabel. Meine idee ist, das programmierte Interface auf meinen Laptop uber ein Netzwerkkabel den Pi anzusteuern.
    Jetzt wollte ich nur wissen wie ich die steuerbefehle umsetzen kann.
    zb. def vorwaerts():
    serial.write
    kann ich das so machen? Wie gesagt bin ein Neueinsteiger.

    Die Kommunikation zwischen Arduino und dem Pi habe ich glaube ich hinbekommen.
    Gruss Locke


  • Der Arduino kommunieziert mit dem RaspberryPi über ein USB-Kabel.

    ach was?

    sind ja 2 Geräte Pi und Arduino


    Die Kommunikation zwischen Arduino und dem Pi habe ich glaube ich hinbekommen.
    Gruss Locke

    wieso glaubst du das?

    empfängt der Arduino was er selber abschickt? Rx und Tx mal gebrückt!
    empfängt der PI was er selber abschickt? Rx und Tx mal gebrückt!

    Das muss man nicht glauben das muss man sehen!


    Meine idee ist, das programmierte Interface auf meinen Laptop uber ein Netzwerkkabel den Pi anzusteuern.
    Jetzt wollte ich nur wissen wie ich die steuerbefehle umsetzen kann.
    zb. def vorwaerts():
    serial.write
    kann ich das so machen? Wie gesagt bin ein Neueinsteiger.

    kann man machen aber erst wenn beide senden und empfangen können.

    Der 2te Schritt sollte nie vor dem Ersten kommen.

    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 Locke,

    in Beitrag #1 war davon die Rede, dass Du vom Rasberry Pi aus über eine GUI Zugriff auf einen Arduino hanben möchtest, der einen Roboter steuern soll.

    In Beitrag #4 kommt jetzt noch ein Laptop dazu, der über einen Netzwerkanschluss einen Raspberry Pi steuern soll. Z.B. ist für die Komunikation Laptop mit Raspberry Pi eine Socket-Verbindung ganz reizvoll.

    Für mein Verständnis sind das etwas arg viele offene Baustellen.

    Dir sollte erst einmal klar sein, dass Du für jeden Computer ein Programm brauchst:
    - PC: GUI-Anwendung mit integriertem Socket-Client/Server, die Kommandos an den RPi schickt
    - RPi: lauscht, ob über Socket ein Kommando eintrifft - wenn ja, wird über die serielle Schnittstelle dieses Kommando an den Aruino geschickt
    - Arduino: lauscht, ob über die serielle Schnittstelle ein Kommando eingetrudelt ist - wenn ja wird dieses ausgeführt - bzw. (sinnvoller) angestoßen und nach Ablauf der Zeit wieder angehalten (damit nach dem Anstoßen weiter gelauscht werden kann).

    Die Tatsache


    Ich bin ein Neueinsteiger in programmieren und RaspberryPi und Python.


    macht die ganze Sache nicht einfacher.
    Die Idee ist ja ganz nett - aber ein solches Projekt ist für einen Einsteiger meines Erachtens nicht lösbar.

    Und niemand verlangt, dass das in Python programmiert werden muss. Es gibt Dutzende anderer geeigneter Programmiersprachen.


    Jetzt wollte ich nur wissen wie ich die steuerbefehle umsetzen kann.
    zb. def vorwaerts():
    serial.write
    kann ich das so machen? Wie gesagt bin ein Neueinsteiger.

    Gelten die zwei Zeilen für PC, RPi oder Arduino? PC und RPi kannst Du in beliebig vielen Programmiersprachen füttern - aber der Arduino versteht nur einen C++-Dialekt.
    Auf dem PC werden Kommandos übertragen, z.B. V für "Vorwärts" oder V200 für "Vorwärts für 200 ms" - oder was auch immer Du definieren möchtest.

    Der RPi schickt dann nichts anderes an den Arduino. Und der Arduino untersucht das Eingetroffene und wenn er sieht, dass da ein V steht, dann wird der Digitale Output-Pin auf 1 gesetzt - und wenn z.B. die 200 ms vorbei sind, wieder auf 0 setzt.


    Mach doch mal Zeichnungen /Abbildungen zu:
    - Verbindungen der 4 Komponenten miteinander
    - Screenshot der Oberflächen, die da miteinander kommunizieren sollen

    Beschreibungen in der Art, was passieren soll, wenn dieses oder jenes Bedienelement angeklickt wird, sind auch hilfreich. Und Ideen über die Übertragung welcher Informationen.
    Sender sendet olihzsnfiluger - Empfänger empfängt und quittiert. Empfänger leitet weiter. Arduino empfängt, quittiert und agiert.


    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 (9. März 2016 um 16:39)


  • Und niemand verlangt, dass das in Python programmiert werden muss. Es gibt Dutzende anderer geeigneter Programmiersprachen.

    eben

    ich würde ja C wählen


    - aber der Arduino versteht nur einen C++-Dialekt.

    ???
    http://hackaday.com/2011/08/28/bas…-on-an-arduino/
    http://forum.arduino.cc/index.php?topic=240933.0
    http://free-pascal-general.1045716.n5.nabble.com/pascal-compile…-td5713138.html

    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 Jar,

    Ach, stimmt (schon verdrängt - obwohl ich im Lazarus-Forum unterwegs bin. Ja, auch in Lazarus kann man den Arduino programmieren). Das verlängert die Frageliste:
    In welcher Programmiersprache hast Du das Sketch für den Arduino geschrieben?

    Aber bevor ich mich hier weiter engagiere, sollte erst mal etwas mehr Licht ins Dunkel kommen.

    Locke, magst Du mal das Licht einschalten? Sonst stoßen die, die früher gehen, mit denen zusammen, die später kommen.


    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.

    2 Mal editiert, zuletzt von Andreas (15. Oktober 2017 um 11:17)

Jetzt mitmachen!

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