In meinem letzten Blogpost habe ich schon etwas über NFC und RFID geschrieben. In diesem Blog erstellen wir einen Leser, mit dem man beispielsweise auch NFC-fähige Karten oder Chips auslesen kann.
Was brauchen wir?
- Einen Raspberry Pi
- Female-Female Jumperkabel
- RFID-Reader MFRC522 Modul
Hier benutze ich das zurzeit das aktuellste Modell des Raspberrys, den 3 B+.
Natürlich sind auch ältere Pi Modelle für dieses Projekt ausreichend.
Die Jumperkabel sowie das Modul können sehr leicht und kostengünstig auf Plattformen wie Amazon oder Ebay gefunden werden.
Verkabelung
Als Erstes nehmen wir uns sieben Jumperkabel her. Am besten verschiedenfarbige Kabel, zur besseren Übersicht.
GND -> Pin 6, IRQ -> bleibt frei,
MISO -> Pin 21, MOSI -> 19,
SCK -> 23, SDA -> Pin 24
Software
Wenn die Verkabelung abgeschlossen ist, können wir mit der Software beginnen.
Zunächst muss das SPI Interface aktiviert werden. Das kann unter „Einstellungen“ -> „Raspberry-Pi-Konfiguration“ ->
„Schnittstellen“ gemacht werden.
Nach einem Neustart kann per Befehl überprüft werden, ob SPI aktiviert ist.
Konsolenbefehl: lsmod | grep spi
Es sollte so eine ähnliche Ausgabe kommen:
Den Code findet ihr hier: SPI Py als Zip Datei, der Ordner kann heruntergeladen und entpackt werden.
Nun wechselt ihr in das /SPI-Py/MFRC522-python Verzeichnis und führt dort die Read.py Datei aus.
Dies kann man mit dem Befehl python Read.py machen.
Zum Schluss den Chip auf den Reader legen.
Wenn alles richtig ist, solltet ihr diese oder ähnliche Ausgabe bekommen:
Habe es genau so versucht und bekomme folgenden Fehler:
python Read.py
/home/pi/SPI-Py/SPI-Py/MFRC522-python/MFRC522.py:113: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(22, GPIO.OUT)
Traceback (most recent call last):
File „Read.py“, line 22, in
MIFAREReader = MFRC522.MFRC522()
File „/home/pi/SPI-Py/SPI-Py/MFRC522-python/MFRC522.py“, line 115, in __init__
self.MFRC522_Init()
File „/home/pi/SPI-Py/SPI-Py/MFRC522-python/MFRC522.py“, line 386, in MFRC522_Init
self.MFRC522_Reset();
File „/home/pi/SPI-Py/SPI-Py/MFRC522-python/MFRC522.py“, line 118, in MFRC522_Reset
self.Write_MFRC522(self.CommandReg, self.PCD_RESETPHASE)
File „/home/pi/SPI-Py/SPI-Py/MFRC522-python/MFRC522.py“, line 121, in Write_MFRC522
spi.transfer(((addr<<1)&0x7E,val))
TypeError: function takes exactly 2 arguments (1 given)
Woran könnte das liegen?
Der Funktion wurde nur ein Parameter übergeben. Diese verlangt jedoch zwei. Siehe unten (TypeError).
Wann findet man endlich mal ein funktionierendes Tutorial für den RC522 und PI? Mann, was’ne Kagge…
Hi, könnte ich eine auf dem Raspberry Pi gespeicherte Textdatei mit dem Handy über den MFRC522 auslesen?