Arduino mit MFRC522-Reader

Arduino mit MFRC522-Reader

Versionsregister mit MFRC-Bibliothek

Im Tutorial über den Mifare S50-Chip haben wir die Abfolge bei der Kommunikation beleuchtet und gesehen, dass es sich um eine Vielzahl von Schritten handelt. Um die einzelnen Abläufe zu programmieren, sind wiederum zahlreiche umfangreiche Konfigurationen erforderlich. Dabei geht es weniger um das Wissen bezüglich RFID, sondern lediglich um die Eigenarten der Reader- und Tag-Chips. Da wir uns aber damit nicht aufhalten wollen, nutzen wir eine sehr gute freie Klassen-Bibliothek von Miguel Balboa, die Sie auch im "libraries"-Ordner des beliegenden Arduino-Pakets finden.

Um uns damit vertraut zu machen, werden wir als erstes noch einmal das Versionsregister auslesen, aber dieses Mal mithilfe der Bibliothek.



Wichtig ist, dass wir unsere Bibliothek mit der include-Anweisung oben einbinden. In der 5. Zeile erzeugen wir ein Objekt der Klasse "MFRC522" mit dem Namen "mfrc522", der Namen kann beliebig gewählt werden. Es handelt sich also um eine objektorientierte C++-Klassenbibliothek. Im Konstruktor übergeben wir die beiden Pins. Sollte Ihr Chip-Select-Pin also auf einem anderen Anschluss liegen, können Sie dies einfach über einen geänderten Konstruktoraufruf angeben.

Nun können wir alle Instanzmethoden der MFRC-Bibliothek nutzen und die erste wäre "PCD_Init". Die Bibliothek ist sehr durchdacht aufgebaut, so beginnen alle Befehle, die sich auf den Reader selbst beziehen mit PCD. Das steht für "Proximity Coupling Device" also für das Lesegerät. Befehle, die eine Akton am Tag-Chip hervorrufen haben den Präfix PICC, die Abkürzung für "Proximity Integrated Circuit Card".

Die Methode mfrc522.PCD_Init() erklärt sich praktisch von selbst, damit führen wir die Initialisierung des Readers durch.

Die 2. Methode, die wir in diesem kleinen Programm nutzen, liest -- wie der Name schon verrät -- ein Register des Readers. Dazu gibt es in der Klasse eine sogenannte Enumeration, das ist eine Art Aufzählung, in der den einzelnen Namen Werte zugeordnet sind. Da diese Enumeration innerhalb der Klasse definiert wird, müssen wir auch den Instanznamen mit einem Punkt vor dem Namen schreiben.

Der Rest sollte eindeutig sein, es wird dieses Mal lediglich die Chip-Version ein wenig sauberer ausgegeben.