PN532 NFC Modul am UART eines Raspberry Pi anschliessen

Veröffenticht am 20.08.2016    von     in der Kategorie Raspberry Pi     bisher 14 Reaktionen    Zuletzt überarbeitet am 16.08.2023


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.



Transparenz-Hinweis:

Die auf dieser Seite verwendeten Produktlinks sind sogenannte Affiliate-Links zu einem Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten, ich erhalte durch deinen Kauf über den Link eine kleine Provision.


Wolfgang Raab – Betreiber von webnist.de

Mein Name ist Wolfgang, ich beschäftige mich nun schon seit 1985 mit der EDV und im Besonderen mit der Software- und Webentwicklung.

Auf diesem Blog schreibe ich über Dinge, die mich begeistern, beschäftigen und ich der Meinung bin, es könnte für andere interessant und hilfreich sein.

Als großer Fan des Raspberry Pi finde ich es spannend, wie man den kleinen Computer in Verbindung mit dem IoT und Smart Home nutzen kann. Deshalb behandeln viele Beiträge auch genau dieses Thema.

Ich bin ein leidenschaftlicher Leser und Fotograf. Wenn ich nicht gerade in einem spannenden Roman versinke, bin ich oft unterwegs, um die Schönheit der Welt mit meiner Kamera einzufangen und zu teilen.

Weitere Infos und Fotos findest du auf einem der folgenden Plattformen.






Mehr erfahren?

Besuche die "About"-Seite meines Blogs und finde heraus, wie du mit mir in den Bereichen Web- und Mobile-Programmierung und Raspberry Pi zusammenarbeiten kannst. Hier beginnt deine digitale Reise.


Unterstützen

Dieser Beitrag hat dir gefallen und konnte dir bei deinem Projekt oder Problem behilflich sein? Dann würde ich mich sehr freuen, wenn du dich mit einer noch so kleinen Spende erkenntlich zeigen möchtest.




  • Pratyush Kaushal schrieb am 23. März 2018:

    I wish to edit the output to display only the UID instead of all the rest of the data, and for that, after some research online, I edited the printf() functions in the quick_start_example1.c file in ~/libnfc/examples/doc. However, when I run sudo ./nfc-poll again the output remains absolutely unchanged. Please help! What am I doing wrong? How do I achieve my desired output?

    • Wolfgang schrieb am 24. März 2018:

      Hello, since you run the nfc-poll file, you must also make the desired changes in this. Take a look at the examples on the corresponding Github page.
      Best regards

  • Question Asker schrieb am 28. November 2017:

    Hello,
    I have followed all of the steps and when I run the program I get the error Unable to open NFC device. WOuld you happen to know any possible reasons why?

    • Wolfgang schrieb am 4. Dezember 2017:

      Hello,
      is the UART interface enabled?
      What happens to the command “ls / dev / ttyAMA0” reported?

  • 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


Schreibe einen Kommentar

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

 

Kleiner Hinweis, alle Kommentare werden moderiert.

Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.

Entdecke die Welt von Webnist.de

Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.

Aktuelles Video auf YouTube

Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.