Probleme mit der seriellen Verbindung über GPIO

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich bin seit gestern stolzer Besitzer eines Raspberry PI Version B Rev.2.
    Heute habe ich mich mit der seriellen Verbindung beschäftigt. Eigentlich wollte ich mit meinen RFID Reader ausprobieren. Dieser läuft unter Windows ohne Probleme, dort betreibe ich diesen mittels eines USB-Seriell Adapters. Wenn ich den Reader jetzt an den Raspberry anschließe habe ich das Problem das etwas ausgelesen wird, dies aber nicht stimmt. Angeschlossen ist der Reader über 3,3 V Pin1, GND Pin 6 und Data über Pin 10.
    Um zu testen woran dies liegt habe ich den USB Seriell Adapter an den Raspberry angeschlossen (Stromversorgung über externes Netzteil, GND am Adapter mit Netzteil und Reader verbunden, Data auf Rx Pin und Vc an Netzteil). Siehe da, es kommen die selben Daten wie auch am Windows Rechner an. Kann es sein, dass ein defekt vorliegt am Raspberry vorliegt?

    Desweiteren hatte ich gelesen das der Raspberry beim Start auch die Ausgabe über den GPIO 14 (TX) sendet. Also habe ich den USB-Seriell-Adapter am PC angeschlossen und mit dem Raspberry verbunden (nur GND und TX am Raspberry zu RX am Adapter). Ich startete den Raspberry neu und siehe da... nur kriptische Symbole. Anzeigen lasse ich mir das ganze über Putty, kann es sein, dass ich noch die Translation in Putty anpassen mus? (hatte nen bisschen durchprobiert allerdings ohne Erfolg)

    Im Anhang mal ein Screenshot vom der seriellen Ausgabe beim starten vom Raspberry.

  • wenn der rfid am USB Adapter läuft dann eben nicht an den GPIO TxD und RxD da gehört ein MAX 232 oder 3232 zwischen, der die Pegel invertiert und konvertiert.

    siehe:
    https://www.forum-raspberrypi.de/Thread-uart-fu…&highlight=3232

    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)

    Einmal editiert, zuletzt von jar (14. September 2013 um 00:00)

  • Moin christoph,

    also ich checke jetzt ehrlich gesagt nicht so ganz, worauf Du hinaus willst.
    Die GPIOs 14 und 15 (Pins #8 und #10) bilden eine ganz normale rs232 Schnittstelle. Die zugehörige Gerätedatei ist /dev/ttyAMA0.
    Wenn Du sie auf dem RPi verwenden willst, musst Du natürlich die Schnittstellen-Parameter anpassen (Baudrate, Stoppbits, Databits, Parity, Handshake).

    Zudem musst Du die /boot/config.txt und die /etc/inittab ändern, weil der serielle Port per Default als Konsole für das System verwendet wird (siehe auch hier).

    Ansonsten ist es nur wichtig darauf zu achten keine 5V auf die RPi-Pins zu bekommen.

    cu,
    -ds-

  • Ok dann sage ich mal, dass ich einfach einen Text über die GPIO Ports senden will. Dazu habe ich am PC den besagten USB Seriell Adapter. Verbunden ist GND mit GND (Pin 6), GPIO 14 mit RxD. Am PC habe ich Putty aufgemacht und die Serielle Schnittstelle geöffnet. Am RPi habe ich mir folgendes Script geschrieben:

    import serial

    port = serial.Serial('/dev/ttyAMA0',
    baudrate=9600,
    bytesize=serial.SEVENBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    timeout=1,
    xonxoff=0,
    rtscts=0,
    )
    port.write("ABCD")

    Wenn ich das als root aufrufe, kommt leider am PC nur das an:
    ▒O▒

    irgendwo muss ich doch einen Denkfehler haben ^^

    Habe schon mit Bytesize rumprobiert 7 und mal 8 bit. Bei 8 Bit kam am PC folgendes an:
    _▒▒

    Habe die Bitzahl natürlich im Script und in Putty geändert.

    Das komische ist ja das alles funktioniert wenn ich den USB-Adapter anschließe und die ausgaben über den veranlasse. (Selbes Skript nur device angepasst)

    Einmal editiert, zuletzt von christoph5180 (14. September 2013 um 01:06)


  • ... Verbunden ist GND mit GND (Pin 6), GPIO 14 mit RxD.
    ...

    Hi christoph,

    da sollte am PC gar nichts ankommen, wenn Du nur die Empfangsleitung des RPi verbindest ;)

    Ich frage mich eh, warum Du nur einen Pin der beiden verwendest. Die meines Wissens verbreitete Vorgehensweise ist zunächst mal Rx und Tx auf den Adapter, den Adapter an 3V3 und GND und dann mit einem SUBD9 auf den PC.
    Kommt nichts an, dann Rx und Tx vertauschen (das spart das Nullmodem-Kabel).

    Auf dem RPi würde ich zum Testen der Verbindung minicom verwenden. Da kannst Du dann on the fly die Parameter ändern.

    cu,
    -ds-

  • Sorry für meinen Einwurf aber bei meinem RFID-Reader ist nur GND, V+ (3,3-6V),und die TxD Leitung!
    denn schlieslich sendet der Reader nur die daten die er vom Chip liest...
    Ergo braucht er auch "nur" den RxD Port zu empfangen.:D

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

  • Ich hatte nur GPIO 14 mit RxD verbunden um meinen RPi nicht zu beschädigen da ich ja nicht weiß wieviel V der USB->Seriell Adapter auf die TxD Leitung bringt. Und da GND am Adapter mit GND am RPi verbunden ist, empfange ich ja auch was am Rechner. Ich kann halt nur nichts zurück senden.
    Aber ich denke das jar recht hat und die Pegel invertiert und konvertiert werden müssen. Leider habe ich keinen [font="Tahoma, Verdana, Arial, sans-serif"]MAX 232 oder 3232 da um es auszuprobieren. Schade ich dachte ich könnte die Geräte (kleines Display und RFID-Reader) genauso ansteuern wie mit einer "normalen" PC-RS232 Schnittstelle.[/font]

Jetzt mitmachen!

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