Serielle Kommunikation über GPIO nur in eine Richtung möglich...?

  • Hallo,

    ich versuche jetzt schon länger, mit meinem Zero W eine serielle Kommunikation hinzubekommen. Auf dem Raspberry läuft eine "frische" Jessie Installation. Ich habe die Konfiguration nach dieser Anleitung abgeändert - jetzt ist mein Serial0 ttyAMA0.

    Zum Testen habe ich einen USB-FTDI an meinen PC angeschlossen und mit dem Raspberry verbunden (TX, RX und GND). Dann habe ich ein Python-Programm erstellt, welches Daten vom PC empfängt:

    Code
    import serial
    ser = serial.Serial('/dev/serial0', 9600, 8, 'N', 1, timeout=2)
    Eingang = ""
    while True:
      Eingang = ser.readline()
      print "Eingang '%s'" % (Eingang)

    Ich habe vom PC aus mit HTerm ein paar Daten gesendet, und diese kommen auf dem Raspberry an.

    Nun kommt der für mich relevante Teil, der leider nicht funktioniert. Ich sende vom Raspberry aus Daten über die serielle Schnittstelle, aber der PC empfängt nichts:

    Ich habe versuchsweise die RX- und TX-Leitung vertauscht, ohne Erfolg. Dann habe ich mit einem Logic-Analyzer geprüft, ob Daten übertragen werden. Leider nur, wenn sie vom PC aus gesendet werden. Ich verstehe das ganze nicht - sollte Senden und Empfangen nicht gleichermaßen funktionieren?

    Hat noch jemand eine Idee, was ich sonst noch tun könnte?

    Danke und Grüße

  • Serielle Kommunikation über GPIO nur in eine Richtung möglich...?? Schau mal ob du hier fündig wirst!

  • Klar, unter Windows habe ich die entsprechenden Einstellungen für den COM-Port gesetzt.
    Die geposteten Programme laufen jedoch beide auf dem Raspberry.

    Edited once, last by ernschd (June 27, 2019 at 12:57 PM).

  • Wie dbv schon für den PC angemerkt hat, würde ich auch vermuten, das dein Device vom RPi eher ttyUSB1 o.ä. lauten müsste. Zum Testen des Comport könntest Du auch ein Tool wie z.B. minicom verwenden. Verbinde TX mit RX, trage das richtige Comport Device ein und schalte das lokale Echo und die Hardwareflußsteuerung aus. Wenn Du dann siehst was Du eingibst, ist dein RPi Comport in Ordnung. Das Ganze kann man dann mit dem PC wiederholen und kann somit den Fehler auf ein Hard- o. Softwareproblem eingrenzen.

  • Am Comport liegt es nicht wenn er damit was empfängt.

    Setz mal den Timeout auf None.

    Code
    delay = 0.5
    comunicacion = serial.Serial('/dev/serial0', 9600, 8, 'N', 1, timeout=None)

    Dann noch das Bytearray

    Code
      comunicacion.write('1\r\n'.encode())

    oder

    Code
      comunicacion.write(byte(b'1\r\n'))

    Hat mir Google verraten ;)

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

    Edited once, last by Der_Imperator (June 27, 2019 at 12:54 PM).

  • Danke für die Antworten - ändert aber leider auch nichts.

    In der Zwischenzeit habe ich die Ports RX und TX miteinander verbunden, um mit minicom die Verbindung zu prüfen.

    Ich habe das Programm mit "minicom -D /dev/serial0" gestartet, mit CTRL+A E den lokalen Echomode eingeschaltet, dann einen Text eingegeben und mit Enter abgeschickt. Passiert ist aber nichts.

    Ich ziehe mir jetzt mal eine leere Jessie Installation auf die SD-Karte und versuche mein Glück erneut.

  • Warum Raspbian Jessie und nicht Stretch (bzw. seit vorgestern Buster)?

  • Dann versuche am Minicom einmal /dev/ttyAMA0, oder /dev/ttyS0.

    Wenn der Pi (am richtigen Device) nichts sendet, kann der User "ich" möglicherweise nicht berechtigt sein, auf das Device zu schreiben. Das wird üblicherweise in der Gruppenverwaltung geregelt.

    Oder Dein ConVerter ist ein USB to RS232 Gerät und kein USB to TTL, das auf 3,3 V umgestellt ist.

    Oder Du hast Bluetooth nicht deaktiviert.


    Servus !

    RTFM = Read The Factory Manual, oder so

    Edited once, last by RTFM (June 27, 2019 at 5:20 PM).

  • Quote

    Warum Raspbian Jessie und nicht Stretch (bzw. seit vorgestern Buster)?

    Weil ich einen USBDM damit ansprechen muss, und die Software nur unter Jessie funktioniert.

    RTFM: habe ich jetzt in der frischen Installation versucht. Bluetooth ist deaktiviert. ttyS0 und ttyAMA0 bringt auch kein Ergebnis.
    Ich verwende keinen Konverter, ich habe die Ports RX und TX verbunden.

    Hat die Geschichte schon mal jemand zum Laufen gebracht? Das kann doch eigentlich nicht so schwer sein...!

  • Nur noch mal zur Sicherheit, hast du die Serielle Konsole deaktiviert ?

    Der alte Dreamshader hatte mal was zu Serieller Kommunikation geschrieben : Link

    Offizieller Schmier und Schmutzfink des Forum.
    Meine PI:

    Display Spoiler

    #1 : Pi1 - Packet Radio Digi mit TNC-PI
    #2 : Pi2 - ADSB Feeder
    #3 : Pi3 - DHCP/DNS Server für 4 VLAN
    #4 : Pi3 - Wireguard Gateway
    #5 : Pi3 - FM Funknetz Gateway mit Shari SA818
    #6 : PI Zero W mit DMR Hotspot
    #7 : Pi4 4GB - Kiosk Browser
    #8 : Pi4 4GB - Kiosk Browser
    #9 : Pi4 8GB - Test Pi

    Dazu noch ein paar Zero und Pi1/2 die noch auf einen sinnvollen Einsatz warten.

  • Das ist mir schon klar, dass der USB Anschluss Deines FTDI Konverters nicht zum Pi, sondern zum PC bzw. USBDM zeigt und Du über RX/TX des FTDI mit TX/RX des Pi zu kommunizieren versuchst. FTDI Converter (aka Adapter) können auf der RX/TX Seite RS232, oder TTL. Der Pi kann/darf aber nur3,3 V an seinen (UART) RX/TX Pins. [TTL=5V, RS232= +12V bis -12V]. https://de.wikipedia.org/wiki/FTDI

    Wenn Dein Pi auf /dev/serial0, oder /dev/ttyAMA0 Daten empfängt, aber nicht sendet,

    a.) hast "Du" kein Schreibrecht auf das Device ( ls -l /dev/Dein_Device, id),

    b.) Ist der TX Pegel des Pi (3,3 V) zu niedrig, um vom Converter/Adapter erkannt zu werden,

    c.) hast Du Durch Deine Basteleien den UART möglicherweise schon geschrottet.

    Theoretisch ist es auch möglich, dass beim Anstecken des FTDI an einen Windows Rechner der FTDI unbrauchbar wird, wenn kein Originalchip verbaut ist. https://www.golem.de/news/ftdi-wind…410-110039.html

    Servus !

    RTFM = Read The Factory Manual, oder so

  • Wir reden aneinander vorbei - um auf Nummer sicher zu gehen, habe ich den FTDI erst einmal zur Seite gelegt und NUR die beiden PINS auf dem GPIO-Port des Raspberry verbunden (Loopback). Damit wollte ich evtl. Fehlerquellen ausschließen.

    Ich verwende jetzt einen neuen Raspberry, damit scheint alles zu funktionieren. :)
    Vielen Dank an alle!

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!