Zur einfachen Identifikation von autorisierten Personen werden zunehmend RFID-Chips eingesetzt. Diese ermöglichen eine unkomplizierte und berührungslose Autorisierung. Um RFID-Chips in eigenen Projekten (z.B. am Arduino) verwenden zu können, reicht ein einfaches, günstiges RFID-Lesegerät mit SPI-Anschluss bereits aus. Diese sind in Sets mit RFID-Karte und Schlüsselanhänger in China schon ab ca. 2€ erhältlich.
Im nachfolgenden Artikel wird der Anschluss des RFID-Moduls an den Arduino (Leonardo) sowie dessen Nutzung im Sketch mit Hilfe einer bestehenden Bibliothek zur Ansteuerung beschrieben. Für den Anschluss an andere Arduino-Modelle empfehle ich die Tabelle in der Readme-Datei der entsprechenden Bibliothek auf GitHub.
1. Anschluss an Arduino Leonardo
Der Anschluss an den Arduino Leonardo erfolgt über 7 Jumper Kabel, von denen 3 female-female und 4 male-female sind. Alternativ lässt sich natürlich auch ein Breadboard oder eine andere Art der Verkabelung (Löten etc.) einsetzen.
Hinweis: Bei meinem RFID-Modul waren die Pins noch nicht angelötet, 2 entsprechende Stifleisten waren aber im Lieferumfang. Solltet ihr das Modul nicht irgendwo fest einbauen wollen, wo die Pins stören, empfehle ich in einem ersten Schritt eine der beiliegenden Stiftleisten anzulöten.
Der Anschluss des Moduls ist nachfolgender Abbildung zu entnehmen:
Im Gegensatz zu vielen anderen Modulen wird hier auch die ICSP-Schnittstelle des Arduino Leonardo verwendet. Das ist notwendig für die SPI-Schnittstelle des RFID-Moduls (siehe hier). Des Weiteren ist darauf zu achten, das Modul mit 3.3V zu betreiben und nicht an 5V anzuschließen.
2. Sketch zum Auslesen
Um RFID-Tags auslesen zu können, verwende ich diese Bibliothek. Ladet sie euch herunter und installiert sie (für Informationen zur Installation zusätzlicher Bibliotheken in der Arduino IDE empfehle ich den entsprechenden Artikel auf der Arduino-Website).
Habt ihr sie installiert, findet ihr unter „Sketchbook“ → „libraries“ → „MFRC522“ das Beispiel „DumpInfo“, welches die RFID-Tags ausliest und die ausgelesenen Informationen über die serielle Schnittstelle anzeigt. Wählt dieses aus und übertragt es auf euren Arduino Leonardo. Öffnet ihr nun den seriellen Monitor und haltet ein RFID-Tag an das Modul, werden euch die entsprechenden Informationen ausgegeben.
3. Nutzung des RFID-Moduls
In Verbindung mit dem Arduino Leonardo, der HID-Funktionalitäten wie Maus und Tastatur bereitstellt, lässt sich das RFID-Modul auch z.B. zur Autorisierung an eurem Rechner verwenden. Eine entsprechende Umsetzung könnt ihr im folgenden YouTube-Video sehen:
Auch Schlösser lassen sich damit umsetzen, wie folgendes YouTube-Video zeigt:
Mit dem RFID-Modul könnt ihr eine anwenderfreundliche Autorisierung in eure Projekte integrieren. Die Möglichkeiten damit sind weitreichend und gerade mit dem Arduino Leonardo mit seinem HID-Interface noch größer. Ich habe eine kleine Linksammlung zu Projekten und allgemeinen Informationen zum Thema RFID und Arduino unten an den Artikel angehängt.
Bei Fragen, Problemen oder Anregungen könnt ihr natürlich wie immer das Kommentarfeld unten verwenden.
Hallo Alex,
danke für den Artikel. Leider funktioniert das erste Video nicht. Da mich das Thema Autorisierung am PC interessieren würde, wollte ich mal nachfragen, ob du dazu eine einfache Umsetzung veröffentlichen (oder auch verlinken) könntest?
Hi Vic,
danke für die Info! Habe da Video soeben ersetzt. Die Umsetzung sollte recht simpel sein, da zusätzlich zum RFID-Teil nur noch die Arduino-Tastatur-Funktion eingebaut werden muss.
Wenn ich mal die Lust und Zeit dazu finde, kann ich gerne einen entsprechenden Beitrag dazu verfassen.
Arduino: 1.8.3 (Windows 7), Board: „Arduino/Genuino Uno“
C:\Users\andy\Desktop\rfid-master\rfid-master\examples\DumpInfo\DumpInfo.ino: In function ‚void setup()‘:
DumpInfo:48: error: ‚class MFRC522‘ has no member named ‚PCD_Init‘
mfrc522.PCD_Init(); // Init MFRC522
^
DumpInfo:49: error: ‚class MFRC522‘ has no member named ‚PCD_DumpVersionToSerial‘
mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD – MFRC522 Card Reader details
^
C:\Users\andy\Desktop\rfid-master\rfid-master\examples\DumpInfo\DumpInfo.ino: In function ‚void loop()‘:
DumpInfo:55: error: ‚class MFRC522‘ has no member named ‚PICC_IsNewCardPresent‘
if ( ! mfrc522.PICC_IsNewCardPresent()) {
^
DumpInfo:60: error: ‚class MFRC522‘ has no member named ‚PICC_ReadCardSerial‘
if ( ! mfrc522.PICC_ReadCardSerial()) {
^
DumpInfo:65: error: ‚class MFRC522‘ has no member named ‚PICC_DumpToSerial‘
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
^
DumpInfo:65: error: ‚class MFRC522‘ has no member named ‚uid‘
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
^
exit status 1
‚class MFRC522‘ has no member named ‚PCD_Init‘
This report would have more information with
„Show verbose output during compilation“
option enabled in File -> Preferences.
…help? :)
Hi,
kann es sein, dass du keinen Leonardo benutzt oder ein falsches Board eingestellt ist?