RDM6300 RFID auf einem RPi 3 -> Serial ttyS0

  • Hallo zusammen,


    ich habe gerade herrausgefunden das der GPIO UART der RPI3 auf dem ttyS0 liegt. Meine kennisse reichen aber nicht aus um das im Code zu ändern.


    Kann mir jemand sagen wie ich das ändern kann? UART.open() ausgeführt wird kommt "serial.serialutil.SerialException: Port is already open."


    Um Kampis Skript an laufen zu bringen, war folgende Änderungen notwendig.


    # UART oeffnen
    UART = serial.Serial("/dev/ttyS0", 9600)
    #UART.open()


    Wie kann ich das bei DoorPi ändern?

  • Hast Du (zb. mittels raspi-config) das serielle Terminal deaktiviert? Das hört sich so an, als ob das noch aktiv wäre und den Port blockieren würde.


    Du musst KEINE Änderungen im Code vornehmen, sondern nur in der doorpi.ini
    In der Section von dem rdm6300:

    Code
    port = /dev/ttyS0

    Da ich grade nicht in der Nähe vom Doorpi bin ist das ungetestet, aber im Quelltext vom rdm6300-Code wird der Port aus der ini ausgelesen, mit default auf /dev/ttyAMA0

  • Ja das habe ich gestern Nacht noch gefunden. Geht aber nicht.


    Ja der UART ist frei. Kampis Code funktioniert wenn ich das UART.open() raus nehme und den Port anpasse.


    Den Fehler bekomme ich:


    Code
    2016-05-06 10:16:55,086 [ERROR]  	[doorpi.keyboard.KeyboardInterface] keyboard port not found @ keyboard.from_/dev/ttys0 (msg: Import by filename is not supported.)
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/KeyboardInterface.py", line 42, in load_single_keyboard
        keyboard = importlib.import_module('doorpi.keyboard.from_'+keyboard_type).get(
      File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
    ImportError: Import by filename is not supported.
    2016-05-06 10:16:55,088 [ERROR]  	[doorpi.keyboard.KeyboardInterface] couldn't load keyboard port
  • Klar siehe Anhang


    Also ich Spreche von dem Code der Funktioniert ohne das UART.open()


    http://kampis-elektroecke.de/?page_id=3248


    Fehler mit UART.open()


    Code
    root@raspberrypi:~# python rfid.py                                              Traceback (most recent call last):
      File "rfid.py", line 19, in <module>
        UART.open()
      File "/usr/local/lib/python2.7/dist-packages/serial/serialposix.py", line 287, in open
        raise SerialException("Port is already open.")
    serial.serialutil.SerialException: Port is already open.
    root@raspberrypi:~#


    Ohne UART.open() mit vorgehalten RFID gehts!

  • Versuch mal das:


    Code
    [rfidreader]
    port = /dev/ttyS0

    Nach Deiner ini versucht doorpi immer noch den Standard-Port für rdm6300 zu öffnen und nicht ttyS0...

  • Das geht leider auch nicht. In der Log steht:


    Code
    2016-05-06 19:11:47,545 [TRACE]  	[doorpi.action.handler] register Event OnFoundKnownTag from doorpi.keyboard.from_rdm6300 
    2016-05-06 19:11:47,545 [TRACE]  	[doorpi.action.handler] added event_name OnFoundKnownTag and registered source doorpi.keyboard.from_rdm6300
    2016-05-06 19:11:47,545 [DEBUG]  	[doorpi.conf.config_object] create new key port in section rfidreader_keyboard with value '/dev/ttyAMA0'
    2016-05-06 19:11:47,545 [TRACE]  	[doorpi.conf.config_object] get_string for key port in section rfidreader_keyboard (default: /dev/ttyAMA0) returns /dev/ttyAMA0
    2016-05-06 19:11:47,546 [TRACE]  	[doorpi.conf.config_object] get_integer for key baudrate in section rfidreader_keyboard (default: 9600) returns 9600
    2016-05-06 19:11:47,546 [TRACE]  	[doorpi.conf.config_object] get_integer for key dismisstime in section rfidreader_keyboard (default: 5) returns 5
    2016-05-06 19:11:47,546 [TRACE]  	[doorpi.action.handler] register Event OnKeyPressed from doorpi.keyboard.from_rdm6300


    Meine Ini sieht jetzt so aus:


  • Hänge gerade an einem ähnlichem Thema mit dem RPi 3, allerdings mit dem PN532 Reader, hatte ursprünglich die Anbindung via SPI getestet. Nachdem SPI nicht unterstützt wird (am RPI funktioniert die Verbindung) habe ich auf den UART umgebaut und erst einmal völlig unbedarft, Pins herausgesucht angeklemmt und die Port Einstellung wie am RPi 2 vorgenommen. Konnte nach jedem reboot einmalig einen Tag auslesen und bekam dann immer die Meldung kein Reader gefunden.


    Google gefragt:
    "My GPIO-connected UART device is broken on Pi 3, why?


    The mini-uart is now routed to GPIO14/15 as the PL011 UART is now
    used for bluetooth communications. The mini-uart doesn't have a separate
    clock divisor and uses the core clock frequency. Changes in core clock
    (e.g. through throttling or idle/load frequency changes) will result in
    arbitrary modification of the effective baud rate. There's no easy way
    around this, but as a workaround there is a pi3-disable-bt devicetree
    overlay in latest rpi-update firmware which reverts this change."


    Link: https://www.raspberrypi.org/fo…ewtopic.php?f=63&t=137932


    Ich kann das gerade nicht testen, habe vermutlich meinen Reader und evtl. Raspi gekillt, oder er funktioniert mit UART nicht (Das Oszi zeigt am Reader / Raspi an RX/TX nichts an.. liegen dauerhaft ~3V an)



    Evtl. bringt dich das auf die richtige Spur:


    Firmware checken / bei mir war 4.1.19 drauf, nach dem update 4.4.9


    uname -a



    sollte die Firmware nicht aktuell sein, Update auf neue Version durchführen
    sudo apt-get update
    sudo apt-get install git
    sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-updatesudo rpi-update
    sudo reboot


    danach dann folgendes eingeben um Bluetooth davon abzuhalten sich an den Port zu binden (Betriebssystem muss aktuell sein, sonst fehlt evtl. der Befehl Zeile 605: https://github.com/raspberrypi…ster/boot/overlays/README)


    sudo systemctl disable hciuart


    zudem noch in der config.txt den "alten" UART wiederherstellen


    sudo nano /boot/config.txt [und die beiden Zeilen als letztes eintragen]
    dtoverlay=pi3-disable-bt
    force_turbo=1



    Folgendes in Datei hciuart.services ändern: ttyAMA0 in ttyS0
    sudo nano /lib/systemd/system/hciuart.service



    Neu starten