PN532 NFC Modul am UART eines Raspberry Pi anschliessen

Veröffenticht am 20.08.2016    von     in der Kategorie Raspberry Pi     bisher 10 Reaktionen


PN532 NFC Modul

In diesem Beitrag geht es um die Einrichtung eines PN532 NFC Moduls an der UART-Schnittstelle eines Raspberry Pi. Ich selbst verwende dieses Modul von Sunfounder und habe es bisher mit verschiedenen NFC Tags ausprobiert. In dem folgenden Video, welches den Funktionstest zeigt, verwende ich eines dieser Magnet Tags.

Hardware Überprüfung

Am verwendeten Board befinden sich zwei L / H SET-Schalter, diese müssen für die Verwendung an der UART-Schnittstelle beide auf L stehen. Auf dem Raspberry Pi muss die UART-Schnittstelle freigeschaltet sein. Am einfachsten kannst du dies im Terminal mit folgendem Befehl überprüfen.

Sollte eine Fehlermeldung erscheinen, musst du diese erst freigeben. In meinem Beitrag “Raspberry Pi 3 – aus ttyAMA0 wird ttyS0 und sonstige kleine Änderungen” kannst du die notwendigen Schritte nochmals nachlesen.

Die Einrichtung über das Terminal

Als Erstes laden und installieren wir die notwendigen Softwarepakete.

Danach laden und installieren wir die libnfc Bibliothek.

Nun bereiten wir die Konfigurationsdatei vor.

Im Gegensatz zur Vorgehensweise auf der Herstellerseite konnte ich die Installation nur über folgende direkte Eingabe über den Texteditor erfolgreich durchführen. Daher rufen wir die config-Datei mit dem Texteditor auf

und ergänzen diese durch einfaches Eintragen am Ende der Datei.

Danach führen wir die notwendige Konfigurierung durch. In diesem Beispiel binde ich nur den UART-Treiber ein. Eine Erweiterung der with-drivers Angabe mit den Angaben with-drivers=pn532_uart,pn532_spi,pn532_i2c würde die Treiber für die weiteren unterstützten Schnittstellen SPI und I2C mit einbinden.

Um die Installation nun durchzuführen, benötigen wir noch folgende Befehle.

 

Funktionstest des PN532 NFC Modul

Um einen kurzen Funktionstest wie im Video durchführen zu können, gibst du folgende Befehle im Terminal ein. Bitte beachte, du bist eigentlich nach der Installation noch immer im Verzeichnis libnfc. Sollte dies nicht der Fall sein, musst du den cd Befehl entsprechend erweitern.

Nachdem du das Beispielprogramm aufgerufen hast, wartet dieses solange bist du einen NFC Tag an die entsprechende NFC-Markierung hältst und somit ausliest.

 

Die vorgestellten Einrichtungsschritte habe ich von der entsprechenden Sunfounder Seite entnommen und an entsprechender Stelle geändert.

 

In diesem Beitrag verwende ich Affiliate Links zum Amazon Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten.

Share on Facebook3Share on Google+0Tweet about this on Twitter0Pin on Pinterest0Share on LinkedIn0



Servus, ich bin Wolfgang.

Blogger – Maker – web & mobile Developer – Dobermann Besitzer.

Mit meinem über die Jahre gesammelten Wissen als Webworker möchte ich dir Hilfestellungen und Anregungen zur Nutzung der sich aus dem digital Lifestyle ergebenden Möglichkeiten und Notwendigkeiten geben.

Einen aktuellen Schwerpunkt auf meinem Blog bildet das Thema IoT im Zusammenspiel mit dem Raspberry Pi.


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Notwendige Felder sind mit * markiert.

10 Reaktionen (10 Kommentare)

  • Marvin schrieb am 25. Oktober 2017:

    Hallo Wolfgang,
    ich hätte eine frage:
    Ich habe jetzt soweit alles installiert und mit dem befehl sudo ./nfc-poll bekomme ich auch eine korrekte rückmeldung beim drauf halten eines Nfc chips.
    Nun möchte ich aber folgendes damit machen:
    Die Chip Id soll ausgelesen werden und soll mit einer Datenbank verglichen werden, die wir selber anlegen wollen, um damit ein Relai vom Raspberry zu steuern. Nun aber die frage wo finde ich die UID (NFCID1) bzw wie kann ich sie abspeichern oder in eine temporäre Datei schieben.

    MfG Marvin

    • Wolfgang schrieb am 11. November 2017:

      Hallo Marvin,
      den UID Code, wie auch die Abspeicherung muss in dem von euch erstellten Programm erfolgen. Im Gegensatz zu vielen Bus-Werten am Raspberry Pi ( z.B. 1-Wire usw.) werden die Daten des NFC-Moduls nicht in einer temporären Datei vom System gespeichert, sondern müssen vom Programm selbst erfasst werden. Auf der github Bibliothek befindlichen Beispielen werdet ihr bestimmt fündig.
      Viele Grüße
      Wolfgang

      • Marvin schrieb am 20. November 2017:

        ok das Problem konnten wir lösen.

        Nun aber folgendes:
        Nach 3000ms stellt das stellt der Nfc-poll die arbeit ein.
        Es wird: No target found
        angezeigt. Kann man diese Zeit auf undelich stellen bzw wo kann man diese Zeit ändern?

        Kann man zusätlich über spi mit dem gleichem Programm eine weitere NFC-Platine anschließen? Muss dann noch etwas zusätlich installiert werden?

        • Wolfgang schrieb am 20. November 2017:

          Hallo Marvin,
          da ich mich nur zum Test mit dem zur Verfügung gestellten Beispiel nfc-poll beschäftigt habe, kann ich dir nicht die entsprechende Zeile im Code sagen. Ansehen würde ich mir die Zeilen 146 bis 155 im Quellcode von nfc-poll.c. Oder du kontaktierst einmal den Autor der Software Library über GitHub: https://github.com/nfc-tools/libnfc

          Das von euch verwendete Demoprogamm wird wahrscheinlich nur ein NFC-Board auslesen können. Daher solltet ihr euch über die Erstellung eines eigenen Programmcodes Gedanken machen, dann könnte ihr mehrere einzelne Boards an verschiedenen UARTS oder anderen unterstützten Schnittstellen auslesen. Damit ihr es an SPI verwenden könnt, müsst ihr die Schnittstelle bzw. das Kernel-Modul aktivieren.
          Viele Grüße
          Wolfgang

  • Peter schrieb am 13. Oktober 2016:

    Perfekte Anleitung – vielen Dank.
    Funktionierte mit dem RFID-Board von Elechouse (PN532 NFC RFID module V3) auf Anhieb. Das Board habe ich per seriell/USB-Wandler an de USB-Port des Raspberries angeschlossen (/dev/ttyUSB0).

    Gruß
    Peter

    • Wolfgang Raab schrieb am 13. Oktober 2016:

      Hallo Peter,
      vielen Dank für Deinen Kommentar und den Hinweis zum Anschluss an den USB-Port. 🙂
      Viele Grüße
      Wolfgang

      • Peter schrieb am 14. Oktober 2016:

        Wie sind denn Eure Erfahrungen mit der Reichweite? Bei mir:

        Elechouse PN532 NFC RFID module V3 (evt. ein Clone):
        – RFID Karte: 5 cm
        – Blauer Tag: 3 cm

        RFID RC-522:
        – RFID-Karte: 4 cm
        – Blauer Tag: 2 cm

        – bei dem Adafruit PN532-Board wird ja sogar von 10cm Reichweite gesprochen (?).

        jeweils mit Mifare Classic, in Luft. Gelesen habe ich, dass man je nach Board die SMD-Induktivitäten gegen solche mit gleichem nH-Wert, aber höherer Stromstärke ausstauschen kann, um ein stärkeres Feld zu erzielen, was insbesondere bei Desfire-Karten sinnvoll ist. Da werde ich vielleicht als nächstes mal versuchen.

        Gruß
        Peter

        • Wolfgang Raab schrieb am 18. Oktober 2016:

          Bei dem im Beitrag verwendeten Modul von Sunfounder liegen die maximalen Abstände zum Board unter den von dir gemessenen Werten.
          – RFID Karte: 4cm
          – Blauer Tag: 2cm
          und der Magnettag: 1cm

          Bei einem RFID RC-522 Modul bekomme ich die gleichen Werte wie du, den Magnettag muss ich fast schon auflegen.

          Viele Grüße
          Wolfgang

  • Matthias Mahrhover schrieb am 7. Oktober 2016:

    Servus Wolfgang,
    vielen Dank für Deinen Artikel!
    Ich möchte mein erstes Raspberry Pi (2B) Projekt mit einem PN532 NFC starten. Allerdings nicht mit dem von SunFounder sondern einem von elechouse, das aber angeblich einfach eine andere Platine mit denselben Anschlüssen ist.
    http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_93&products_id=2242
    Leider hatte ich allerdings keinen Erfolg. Zur Sicherheit habe ich letzte Woche extra nochmal ein komplett frisches Raspbian aufgesetzt und mit dist-upgrade auf den neuesten Stand gebracht.
    Ich habe die obige Anleitung exakt durchgeführt – obwohl ich noch einen Pi2B habe, musste ich enable_uart=1 in /boot/config.txt eintragen, um /dev/ttyAMA0 zu erhalten.
    Ich erhalte dennoch jedesmal genauso wie schon letzten Monat bei Befolgung der Sunfounder Anleitung selbst denselben Fehler beim nfc-poll:
    pi@raspberrypi:~/libnfc/examples $ sudo ./nfc-poll
    /home/pi/libnfc/examples/.libs/lt-nfc-poll uses libnfc libnfc-1.7.1-91-g659f5f4
    error libnfc.driver.pn532_uart pn53x_check_communication error
    lt-nfc-poll: ERROR: Unable to open NFC device.

    Ich habe das Modul sowohl an die 3,3V Versorgung angeschlossen als auch mit Spannungsteilern bei dem eingehenden Signal an die 5V Versorgung – kein Unterschied. – Das LED auf dem Modul leuchtet aber brav rot auf.
    Kann es sein, dass ich beim Verlöten der Beinchen das NFC-Modul überhitzt habe, oder tippst Du auf einen Konfigurationsfehler? Kann ich irgendwie überprüfen, ob überhaupt eine Verbindung zustande kommt? Soll ich einfach zur Sicherheit das Sunfounder-Modul kaufen, oder erst noch weiter suchen?
    Viele Grüße,
    Matthias

    • Wolfgang Raab schrieb am 8. Oktober 2016:

      Hallo Matthias,
      der Eintrag in der config.txt ist ab Raspbian Jessie notwendig und hat nichts mit dem Model des RasPi zu tun.
      Die Fehlermeldung “Unable to open NFC device” lässt eher auf Probleme mit den Zugriffsrechten auf die UART Schnittstelle schließen.
      Daher würde ich folgende Schritte vorschlagen.
      1. über das Terminal und den Befehl “sudo raspi-config” in der Konfiguration (über Punkt 9 – Advanced Options) die Login-Shell der seriellen Schnittstelle (A7) mit auf Disable setzen, dananch reboot
      2. den Eintrag in der /boot/config.txt nochmals überprüfen und bei Änderung einen reboot durchführen
      3. über Terminal die Zugriffsrechte von ttyAMA0 mit “sudo chmod 0777 /dev/ttyAMA0” ändern
      Danach sollte es eigentlich funktionieren.

      Viele Grüße
      Wolfgang