5Euro RFID/NFC Modul RC522 zum Auslesen von Mifare Tags

rfid-rc522-module

Das RFID-RC522 Modul stellt wohl den günstigsten Einstieg in die RFID/NFC-Welt dar. Ab ~5 EUR (inkl. Versand) kann man es bei verschiedenen (chinesischen) eBay Verkäufern erwerben. Herz der Platine ist der Reader-Chip MFRC522 von NXP zum Auslesen von ISO/IEC 14443 A/MIFARE Karten. Der Chip kann per I2C, SPI oder UART kommunizieren, das hier beschriebene Modul wird per SPI angesprochen.
Das Modul wird meisstens mit zwei Stiftleisten (gerade und gewinkelt), einem Mifare-Schlüsselanhänger und einer Mifare-Karte geliefert. Hat man eine der Stiftleisten eingelötet kann man es zB mit Dupont Kabelverbindern (male – female) mit einem Arduino verbinden. 7 Verbindungen (SDA an Pin10, SCK an Pin13, MOSI an Pin11, MISO an Pin12, IRQ n.v., GND an GND, RST an Pin5, 3.3V an 3V3) sind erforderlich:
rc522_mf522_arduino_spi

Gegenüber dem etwas teureren PN532 Arduino NFC Shield unterstützt dieses Modul allerdings kein Card-Emulation Mode, d.h. es kann keine NFC-Tags emulieren bzw es kann nicht mit einem NFC-Smartphone kommunizieren.

Source Code/Library

Source Code zum Ansprechen des Boards via Arduino findet man im Netz an verschiedenen Stellen:

Scheinbar basiert der Großteil des Codes auf den Sourcen von WWW.B2CQSHOP.COM / COOQRobot, teils in einer Klasse verpackt, teils einfach nur als C-Funktionen. So mal eben runterladen, Arduino Beispiel Sketch ausführen und Mifare Tag auslesen geht leider nicht auf Anhieb. Das einzige was man mit dem unveränderten Source Code (zB cardRead.ino) anzeigt kann ist die 4-Byte UID einiger Mifare Tags:
cardread_rc522_mifare_uid
Einige Teile des oben verlinkten Source Codes sind schlichtweg fehlerhaft implementiert, beispielweise kann angeblich die Größe des Mifare-Speichers ausgegeben werden („read card storage volume“). Ausserdem funktioniert die Bibliothek nur mit 4-Byte UID Karten; 7-Byte UID Karten können nicht ausgelesen werden, da das ISO14443 Antikollisionsverfahren nicht korrekt genutzt wird.

Mifare Classic Tags auslesen

Einen einfachen Mifare Classic Memory Dump kann aber relativ einfach codiert werden, wenn man weiss wie der Mifare Speicher unterteilt ist und wenn man die korrekten Keys benutzt:

mifare_dump_rc522

Zu Beginn werden die üblichen ISO14443 Parameter (ATQA, SAK, UID) angezeigt, danach erfolgt der Hex-Dump des Speicherinhaltes.

Den Source Code RC522DumpMifare.ino dazu gibt es in meinem Repository bei Github. Einige TODOs sind im Code noch zu implementieren, zB das Selektieren von Karten mit 7Byte-UID.

UPDATE 2013-08-08: 7-byte-UID Anzeige und RATS-Handling ansatzweise ergänzt

RC522-RFID-Modul am Raspberry Pi betreiben

Das RC522-Modul kann natürlich auch mit anderen Evalboards verbunden werden, zB mit dem Raspberry Pi. Dann kann man es sogar mit Python programmieren und muss nicht erst umständlich einen Microcontroller flashen.

Evtl werde ich das Board auch demnächst einmal am Raspberry Pi anschliessen und einen entsprechenden Artikel dazu schreiben.

Kompatibilität

Einige Mifare Karten liessen sich allerdings nicht dazu bewegen mit dem Modul zu sprechen (Karten wurden im Feld nicht einmal erkannt), zB:

  • Mifare Ultralight C (MF0ICU2), 7byte-UID
  • Mifare Classic 1K ‚MF1 IC S5009‘ alias Mifare Plus S (MF1SPLUS60)
  • Mifare DESFire EV1 (MF3ICD21) HW v1.0
  • Mifare DESFire (MF3ICD40) HW v0.2
  • Mifare DESFire EV1 (MF3ICD81) HW v1.0
  • Mifare Classic 1K (emulated)

Evtl ist das Modul nicht korrekt konfiguriert, die Hardware unterstützt die Karten (wieso auch immer) nicht oder die Antenne des Moduls ist nicht korrekt abgestimmt.

Bei folgenden Tags konnte zumindest die UID gelesen werden:

  • Mifare Classic
  • Mifare Classic (MF1S70)
  • NTAG203 (NT2H0301)
  • NTAG215 (NT2H1511) alias amiibo cards
  • NTAG216 (NT2H1611G0DUx)
  • Mifare Classic Futan FM11RF08
  • Mifare Classic Clonable China Card
  • Miafre Ultralight (MF0ICU1) alias GVB card
  • Infineon ??? Chip alias Geldkarte

Links/mehr Info

Am Ende – wie immer – zum Vertiefen ein paar Links bzw Webseiten von anderen Nutzern, die bereits mit dem RC522 herumgespielt haben und was nicht fehlen darf – der Link zum Datenblatt:

36 thoughts on “5Euro RFID/NFC Modul RC522 zum Auslesen von Mifare Tags”

  1. Great stuff !
    I hope to see more updates on this Mifare reader around this blog. I will try to get it work with my Raspberry Pi.
    Regards

      1. Yes Python. But for the moment, I have to way to receive my new toy from China🙂

  2. Hi ReNa,
    Still waiting my reader here … did you managed to do something else than reading the ID of the card ?

  3. Hallo,

    ich habe das Modul auch bei eBay erworben. Bei mir sind allerdings zwei 7polige Kontaktreihen enthalten. Laut Bedruckung der Boards bleibt SDA unbelegt (die anderen 7 sind in der Bedruckung eingerahmt). Ich gehe davon aus, dass dies falsch ist und die die Kontaktreihe teilen muss? Ist das richtig? Gibt es ein Foto Deiner lauffähigen Platine?

    Gruss Daniel

    1. Hi Daniel, ja, Du hast Recht – mein Board kam mit 2 8-poligen Stiftleisten, d.h. der n(ot)c(onnected) Pin in der Mitte ist unnötig verbunden. Wobei es scheinbar 2 unterschiedlich beschriftete Boards zu geben scheint: Fotos mit NC bzw IRQ kann man im Web finden

  4. Pingback: boards | Annotary
  5. Hi!
    Thanks for Great stuff!!
    Help me pls to understand one thing : the rc522 module must be powered 3.3v and arduino have 5v power source. is it neccesary to convert the different levels or i do need to power arduino from 3.3v too ?

  6. Hallo,

    vielen Dank für das Beispiel. Mein RC522 lief damit auf Anhieb und ich habe eine schöne Basis für meine RFID-Experimente.

  7. Wie komme ich an die Datei ? Rechtsklick und Speichern macht daraus
    Ich habe mir schon github installiert aber da kriege ich nur ein diff zu sehen.

  8. Ich hab’s gefunden. Spielt aber leider nicht.
    MFRC522 Version: 0x91
    no card select
    no card select
    no card select

    Weder die Karte, noch der Plastik Tag liefern etwas. Tja, debuggen wird schwierig mit Energia.

  9. Ich komme der Sache naeher.
    Card detected.
    ATQA:ðMFRC522 Version: 0x91
    no card select
    Card detected.
    ATQA:ðMFRC522 Version: 0x91
    no card select

    MSP430 Launchpad 1.4 mit MSP430G2452

  10. HA – Ich hab’s mal mit einem 2553 versucht und damit spielt es.
    Card detected.

    ATQA: 04 00

    UID: 83 41 EB A4

    SAK: 8

    Sector 0:

    83 41 EB A4 8D 08 04 00 62 63 64 65 66 67 68 69

    15 Sektoren werden aufgelistet.

  11. Yup, genau der. Die 2 Typen werden mit dem MSP430G2 Launchpad ausgeliefert. Der 2452 hat wohl kein Hardware UART Modul.

    Dann schaue ich mal ob ich das zu nativ-Tiva (Cortex-M4 von TI) portiert bekomme.

    Danke,
    Stephan

  12. Hallo,
    ich hab mir auch so ein RFID-Reader bestellt – allerdings habe ich zwei Probleme:
    1. Mein Reader hat keinen SDA-Pin, sondern nur
    VCC RST GND MISO MOSI SCK IRQ
    Wie sieht denn dann die Belegung aus?
    2. Ich habe einen Arduino nano (Billigversion aus China), dort ist auf Pin 13 die LED geschaltet. Ansonsten sollte das Pinout vergleichbar sein. Oder?
    Ich habe jetzt also nochmal alles aufgebaut und den ICPS-Anschluss genutzt, leider auch hier nur Starten der Verbindung zum Reader, aber keine Reaktion auf die Tokens.
    Hat jemand eine Idee, was das Problem ist?
    Vielen Dank! curt

  13. Did you discover why it cannot talk to DESFIRE cards? I am having the same problem at the moment: I can read all the contents of an NTAG203 properly but cannot even get ATQA from a MF3ICD81. I have the same $5 eBay board.
    I suspect it is a modulation issue but don’t know enough to debug it yet.

  14. You mean like these red square ones: http://www.ebay.com.au/itm/191736193023
    Or the cheap rectangular blue ones? http://www.ebay.com.au/itm/161765235786
    Or maybe this one that usually seems to be priced a bit higher?
    http://www.ebay.com.au/itm/251544049022

    After the RC522 issues, I’m obviously concerned now about the quality of the antenna matching-filter and want to buy a board that I know others have had success with.

    I wrote my own RC522 driver so I’ll just blithely assume that the PN532 can’t be too much harder…

    thanks,

      1. thanks, I’ll give it a try. Pity it doesn’t break out the SPI pins though.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s