PN532 NFC Modul am UART eines Raspberry Pi anschliessen
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.
1 |
ls /dev/ttyAMA0 |
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.
1 |
sudo apt-get install autoconf libtool libpcsclite-dev libusb-dev |
Danach laden und installieren wir die libnfc Bibliothek.
1 |
git clone https://github.com/nfc-tools/libnfc.git |
Nun bereiten wir die Konfigurationsdatei vor.
1 2 3 4 5 |
cd libnfc autoreconf -vis 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 |
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
1 |
sudo nano /etc/nfc/devices.d/pn532_uart_on_rpi.conf |
und ergänzen diese durch einfaches Eintragen am Ende der Datei.
1 |
allow_intrusive_scan=true |
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.
1 |
./configure --with-drivers=pn532_uart --sysconfdir=/etc --prefix=/usr |
Um die Installation nun durchzuführen, benötigen wir noch folgende Befehle.
1 2 |
sudo make clean sudo make install all |
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.
1 2 |
cd examples sudo ./nfc-poll |
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.
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?
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
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?
Hello,
is the UART interface enabled?
What happens to the command “ls / dev / ttyAMA0” reported?
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
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
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?
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
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
Hallo Peter,
vielen Dank für Deinen Kommentar und den Hinweis zum Anschluss an den USB-Port. 🙂
Viele Grüße
Wolfgang
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
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
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
Hallo Matthias, auf Disable setzen, dananch reboot
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
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
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.
Neuste Beiträge
Kleinen Spickzettel für Raspbian OS Befehle
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.Kategorien
KATEGORIEN
Aktuelles Video auf YouTube
Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.
Die aktuell 6 derzeit meistbesuchten Beiträge
Beiträge mit den meisten Kommentaren
Funktional Immer aktiv
Vorlieben
Statistiken
Marketing