Installation des PN532 RFID Readers.

  • RFID Reader PN532 für DoorPi den Raspberry Pi 2 und 3


    Vielen dank an @pula für die Erstellung des PN532 Keyboards!



    a.) Für den Pi2 und für den Pi3 (siehe unten)


    Quelle:


    https://learn.adafruit.com/ada…pberry-pi/building-libnfc



    Als erstes kopieren wir die library von github auf unseren Pi.

    Code
    cd /home/pi
    
    
    sudo git clone https://github.com/nfc-tools/libnfc.git /libnfc


    Dann erstellen wir noch 2 Verzeichnisse die benötigt werden und kopieren noch eine Datei.

    Code
    cd libnfc
    
    
    sudo mkdir /etc/nfc
    
    
    sudo mkdir /etc/nfc/devices.d
    
    
    sudo cp contrib/libnfc/pn532_uart_on_rpi.conf.sample /etc/nfc/devices.d/pn532_uart_on_rpi.conf


    Wir öffnen die Datei mit dem Editor nano.

    Code
    sudo nano /etc/nfc/devices.d/pn532_uart_on_rpi.conf


    Hier hängt man den untenstehenden Eintrag einfach an das Ende der Datei an und speichert diese.


    allow_intrusive_scan = true




    Es müssen hier noch weitere Programme installiert werde.



    Ab hier wird dann zwingend die Installation von pip vorausgesetzt, falls nicht schon von der DoorPi Installation vorhanden.

    Code
    sudo pip install libusb1 pyserial
    
    
    sudo apt-get install bzr
    
    
    sudo bzr branch lp:nfcpy trunk



    Hier hängt man den untenstehenden Eintrag einfach an das Ende der Datei an und speichert diese.

    Code
    sudo nano /boot/config.txt


    enable_uart=1



    Danach abspeichern und einen Neustart machen.

    Code
    sudo reboot


    Zum testen ob der Reader gefunden wird einfach folgenden Befehl in die Konsole eingeben.

    Code
    python /home/pi/libnfc/trunk/examples/tagtool.py --device tty:AMA0:pn532


    und/oder

    Code
    /home/pi/libnfc/utils/nfc-list



    Den Ordner nfc kopieren mit folgendem Befehl nach: (Wird benötigt für das DoorPi Keyboard):

    Code
    sudo cp -r /home/pi/libnfc/trunk/nfc /usr/local/lib/python2.7/dist-packages


    Das Keyboard PN532 ist ab DoorPi Version 2.4.0.4 enthalten und muss somit nicht mehr manuell eingefügt werden!
    ____________________________________________________________________________________________________________________________
    Diese Datei ist das DoorPi Keyboard. Diese wird benötigt damit eine Kommunikation zwischen dem Reader und DoorPi funktioniert.


    Die Datei im Anhang downloaden, entpacken und in folgendes Verzeichnis verschieben oder kopieren.


    /usr/local/lib/python2.7/dist-packages/doorpi/keyboard/
    ____________________________________________________________________________________________________________________________



    Achtung dies ist wichtig da sonst die UART Schnittstelle nicht funktioniert!!



    Wir öffnen zuerst die Datei mit nano:

    Code
    sudo nano /boot/cmdline.txt


    und überprüfen ob folgendes nicht in der cmdline.txt steht:


    console=serial1,115200



    Sollte dies oder ähnliches da drin stehen bitte entfernen da ansonsten die Serielle Konsole Antwortet und nicht der reader!


    So sollte die cmdline.txt aussehen:

    Code
    dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


    Nun können wir das erste mal überprüfen ob der reader vom Pi erreichbar ist, hier geben wir folgenden Befehl ein:

    Code
    /home/pi/libnfc/utils/nfc-list


    Es sollte nun folgende Ausgabe auf der Konsole zu sehen sein:

    Code
    pi@DoorPi:~ $ /home/pi/libnfc/utils/nfc-list
    /home/pi/libnfc/utils/.libs/lt-nfc-list uses libnfc 1.7.1
    NFC device: PN532 board via UART opened


    Nach diesem Aufruf ist der reader bereit für das Auslesen einer ID.

    Code
    python /home/pi/libnfc/trunk/examples/tagtool.py --device tty:AMA0:pn532


    Nun einen tag button oder andere RFID Key´s an den reader heben. Nun sollte die ID des tag angezeigt werden in der Konsole.


    Das sollte dann so aussehen:

    Code
    pi@DoorPi:~ $ python /home/pi/libnfc/trunk/examples/tagtool.py --device tty:AMA0:pn532
    [nfc.clf] searching for reader on path tty:AMA0:pn532
    [nfc.clf] using PN532v1.6 at /dev/ttyAMA0
    ** waiting for a tag **
    Type2Tag ID=12345678


    Nun nur noch dieses in die doorpi.ini eintragen damit DoorPi auch weiß das hier ein neues keyboard vorhanden ist und was damit gemacht werden soll wenn eine ID oder "tag" ausgelesen wird.


    Eintrag in die doorpi.ini

    Code: doorpi.ini
    [keyboards]
    nfcreader = pn532
    [nfcreader_keyboard]
    device = tty:AMA0:pn532
    [nfcreader_InputPins]
    12345678 = call:**622
    [EVENT_OnKeyPressed_nfcreader.12345678]
    10 = call:**622


    Die ID 12345678 ersetzen mit der ID aus dem ausgelesenem tag. Natürlich könnt ihr hier andere Befehle wie einen call eintragen zb. 10 = out:oeffner,1,0,3 oder auch ein os-execute.



    b.) Für den Pi3 noch zusätzlich:


    Leider gibt es hier aktuell noch Probleme mit dem RaspberryPi3 und der UART Schnittstelle. Grundsätzlich funktioniert DoorPi mit dem Reader doch bei einem Reboot oder neustart von DoorPi hängt sich der PN532 anscheinend auf und kann erst wieder zur Arbeit überredet werden wenn man das Modul kurz Spannungslos macht.
    Sollten sich hier bezüglich der UART Problematik noch neue Erkenntnisse ergeben werde ich diese hier/Euch mitteilen.


    Aktuell sind die Probleme gelöst worden durch eine kleine Modifikation des keyboards. Danke hier wieder einmal an @pula



    Im Anhang ist das leicht modifizierte keyboard von pula zu finden das ab der Version 2.4.0.4 von DoorPi nicht mehr manuell eingefügt werden muss.

    Folgenden Befehl eingeben:

    Code
    sudo systemctl disable hciuart


    Wir öffnen mit nano die config.txt:

    Code
    sudo nano /boot/config.txt



    Und tragen ganz unten folgendes ein und speichern die Datei, danach, wieder ab.


    dtoverlay=pi3-miniuart-bt


    force_turbo=1



    Hier wird die Adresse des Bluetooth Module mit der Seriellen Schnittstelle getauscht:

    Code
    sudo nano /lib/systemd/system/hciuart.service


    Ersetze ttyAMA0 mit ttyS0
    bzw.
    Ersetze serial1 mit ttyS0


    Damit ist die Bluetooth die Adresse ttyS0 und die des UART ttyAMA0


    Quelle: http://www.briandorey.com/post…3-UART-Overlay-Workaround

  • Hallo Gemeinde.
    Habe mir nun auch einen NXP PN532 NFC RFID Module V3 bestellt.


    http://www.ebay.de/itm/NXP-PN5…ee1187:g:6twAAOSwOVpXVYvo


    Bin mir jetzt nur nicht ganz sicher wie ich das Teil verdrahten soll.
    Wenn ich das richtig verstanden habe wird das Modul via UART so an den PI angeschlossen:



    Wie kann ich das jetzt bewerkstelligen wenn ich ein PIFACE DIGITAL 2 verbaut habe?
    Dann sind die GPIO´s ja alle vom PIFace belegt. Wie habt ihr das gelöst?
    Muss ich sonst noch etwas beachten?
    Oder hat jemand noch eine andere Idee oder vorschlag.


    Mit freundlichen Grüßen


    Jürgen

  • Hey Jürgen,
    das Piface wird über SPI gesteuert, UART ist somit noch frei. Du müsstest oben auf dem Piface eine Steckerleiste dran löten.


    Alternativ gibt es so Zwischenstecker für die GPIO Pins aber mir fällt nicht ein wo ich diese gesehen habe.

  • Danke für deinen Tip Nea.
    Das hatte ich mir schon gedacht. Werde erst mal schauen ob ich einen geeigneten Adapter finde.
    Am PIFACE löten wollte ich erst mal vermeiden.
    Wenn nicht würde ich mir selber einen Adapter löten. (Lochrasterplatine usw.)


    Aber schon mal gut zu wissen das ich die UART Schnittstelle frei nutzen kann.
    Nochmal Danke für deinen Tip...


    l.g.
    Jürgen

  • Hallo


    Habe gestern das RFID Modul bekommen und angeschlossen.


    Habe mich doch dazu entschlossen die Pins auf das PIFACE zu löten.


    Hat soweit alles super geklappt.


    Bin dann nach der Anleitung von Nea im ersten Beitag vorgegangen.


    Jetzt habe ich aber ein Problem im Abschnitt:



    Ab hier wird dann zwingend die Installation von pip vorausgesetzt, falls nicht schon von der DoorPi Installation vorhanden.



    Wenn ich folgenden Befehl eingebe:


    sudo pip install libusb1 pyserial sudo apt-get install bzr


    bekomme ich folgende Fehlermeldung:


    Collecting libusb1
    Using cached libusb1-1.5.0.tar.gz
    Requirement already satisfied (use --upgrade to upgrade): pyserial in /usr/local/lib/python2.7/dist-packages
    Collecting sudo


    Could not find a version that satisfies the requirement sudo (from versions: )
    No matching distribution found for sudo


    Die Meldung kommt als Benutzer pi als auch bei root.


    Ich habe Doorpi nach dieser Anleitung installiert.


    Anleitung Pi2 + Jessie (Release 2016-05-10) mittels PyPi


    Was mache ich falsch?


    l.g.


    Jürgen

  • Hey,
    das hört sich nach einem Fehler an wo pip nicht weiß welche der Python Versionen es nehmen soll. Versuch mal folgendes:

    Code
    sudo python -m pip install libusb1 pyserial


    danach:

    Code
    sudo apt-get install bzr
  • Hallo Andreas.
    Hat leider nicht funktioniert.
    Habe danach nochmal eine Sichreheitskopie auf die SD-Karte kopiert.
    Vorinstalliert nur Jessi und Doorpi.
    Danach deine Anleitung abgearbeitet.


    Als erstes kopieren wir die library von github auf unseren Pi.


    Dann erstellen wir noch 2 Verzeichnisse die benötigt werden und kopieren noch eine Datei.


    Wir öffnen die Datei mit dem Editor nano.


    Hier hängt man den untenstehenden Eintrag einfach an das Ende der Datei an und speichert diese.


    Es müssen hier noch weitere Programme installiert werde.



    Nach Eingabe von

    Code
    sudo python -m pip install libusb1 pyserial






    Hatte ich folgende Ausgabe bei der Erstinstallation.

    Code
    Downloading libusb1-1.5.0.tar.gz (45kB)
        100% |████████████████████████████████| 51kB 442kB/s
    Requirement already satisfied (use --upgrade to upgrade): pyserial in /usr/local/lib/python2.7/dist-packages
    Building wheels for collected packages: libusb1
      Running setup.py bdist_wheel for libusb1 ... done
      Stored in directory: /root/.cache/pip/wheels/ab/e1/f9/a5054d948945a65fc837f325daa55d8db9fae73fc289fa3f38
    Successfully built libusb1
    Installing collected packages: libusb1
    Successfully installed libusb1-1.5.0

    und nach

    Code
    sudo apt-get install bzr

    wurden einige Sachen von Python installiert.
    Danach bin an nach deiner Anleitung weiter gegangen.


    Hier hängt man den untenstehenden Eintrag einfach an das Ende der Datei an und speichert diese.

    Danach abspeichern und einen Neustart machen.


    Zum testen ob der Reader gefunden wird einfach folgenden Befehl in die Konsole eingeben.



    Nach Eingabe von


    Code
    python /home/pi/libnfc/trunk/examples/tagtool.py --device tty:AMA0:pn532

    folgende Ausgabe



    Code
    python: can't open file '/home/pi/libnfc/trunk/examples/tagtool.py': [Errno 2] No such file or directory

    und/oder




    Code
    /home/pi/libnfc/utils/nfc-list
    Code
    -bash: /home/pi/libnfc/utils/nfc-list: Datei oder Verzeichnis nicht gefunden

    Im Ordner /home/pi/libnfc existiert kein Ordner "trunk"



    Und im Ordner /home/pi/libnfc/utils sind nur die Dateien "nfc-list.1 und nfc-list.c



    Wo ist mein Problem ?
    :D

  • Also die Anleitung funktioniert, ich habe gestern alles nochmal neu installiert. Du musst Punkt für Punkt die Anleitung durchgehen und nichts aus lassen.


    Der trunk wird erst erstellt durch:

    Code
    sudo bzr branch lp:nfcpy trunk

    Das steht so aber auch in der Anleitung.


    Du hast die Abhängikeit schon installiert:

    Zitat

    Requirement already satisfied (use --upgrade to upgrade): pyserial in /usr/local/lib/python2.7/dist-packages

  • Hey Andreas.
    Vielen Dank für deine Hilfe.
    Nach langem hin und her habe ich den PN532 zum laufen gebracht.
    Das ist ja der Wahnsin...
    Jetzt hätte ich noch eine kleine Frage.
    Wenn ich meinen Transponder-Chip auslese bekomme ich ja die ID in form von


    Type2Tag ID=E51BD665
    Wenn ich die so in die doorpi.ini schreibe funktioniert alles wie gewollt.
    Jetzt wollte ich dies auch mal mit meinem Smartphon testen.
    Hier bekomme ich aber eine ID in form von


    Type4ATag MIU=255 FWT=0.038664
    Wie müsste ich das jetzt in der doorpi.ini eintragen?


    l.g.
    Jürgen

  • Benutze eigendlich keine App.
    Dachte das dies ohne zusätzliche App funktioniert.
    Habe ein Galaxy Note 3 wo ich die NFC Funktion einschalten kann.
    Der PN532 liest ja etwas aus wenn ich das Smartphne in die Nähe bringe.
    Aber vieleicht ein guter Tip.
    Werde mich mal im Play-Store umschauen was mann da noch machen kann.

  • Hallo,
    sollte es eine Lösung für das Lesen von Smartphone Tags geben, wäre ich auch stark daran interessiert.
    Mit meinem Smartphone (Galaxy S6) bekomme ich auch nur die von Jürgen beschriebene Ausgabe. Auch ohne zusätzliche App.


    Gruss


    Volker

  • Hey Volker.



    Nachdem ich das mit einem anderen NFC-fähigen Smartphone getestet habe,


    bemerkte ich auch das die Ausgabe immer die gleiche ist.



    Type4ATag MIU=255 FWT=0.038664



    Somit hat die wohl nichts mit einer ID zu tun.


    Dann habe ich in einem anderen Forum gelesen das die App „NFC TagWriter von NXP“ NFC-Tags emulieren können soll.


    Das einzige was ich dazu gefunden habe ist folgende Aussage:



    installier dir das Tool NFC TagWriter by NXP


    Starte die App, öffne die Einstellungen und änder dort unter "Switch UI Mode" zu der "Professional Edition"... jetzt haste im Hauptscreen den Punkt "Share". Hier kannst du den Tag erstellen (oder bestehende auswählen). NFC Geräte können dein Handy jetzt als NFC Tag lesen.


    Klonen geht mit der App auch:


    wähle zuerst im Hauptscreen "View" aus... App wartet jetzt auf nen Tag. Gib ihr eins zum Lesen :). Falls was ausgelesen wurde wird es als Content angezeigt. Jetzt den Eintrag länger gedrückt halten und im popup den Punkt "Backup" auswählen.


    Sowohl im "Sharen", als auch im "Write" Dialog kannst du diesen gebackupten Tag auch auswählen.



    Nun habe ich aber in den Einstellungen der App den Punkt "Switch UI Mode" nicht gefunden.


    Muss aber dazu auch sagen das der Forenbeitrag von 09.2012 war.


    Evtl. wurde diese Funktion „Share“ in der App entfernt.



    Habe mir jetzt mal so ein paar NFC-Sticker zum aufkleben bestellt die ich mit einer ID beschreiben kann.


    Zur Not klebe ich mir das Teil in meine Handyhülle und gut ist. :D



    l.g.


    Jürgen