RFID

In diesem How-To möchte ich zeigen, wie man recht simpel die RFID-Technik für sich nutzen kann. Hierzu verwende ich das RC522-RFID-Modul.

.

RFID Alone

.

Doch zuerst ein paar Worte zu der Technik selbst. RFID steht für Radio Frequency Identification. Das gesamte System besteht aus einem Lesegerät, und einem Informationsträger, welcher eine eindeutige ID hat. Die Informationsträger sind oft in Schlüsselkarten oder Chip-Anhänger verbaut, sie können aber auch wesentlich kleiner sein, etwa um entlaufene Haustiere damit identifizieren zu können, welche den Chip unter der Haut tragen.

Die Stromversorgung der Chips erfolgt in vielen Fällen ebenfalls über das Lesegerät. Dazu erzeugt dieses ein elektromagnetisches Wechselfeld, welches als Energie von der Antenne des Informationsträgers aufgenommen wird. Zusätzlich sendet das Lesegerät dabei Befehle mit, die vom Chip aufgenommen werden. Entsprechend des Befehls moduliert der Chip das magnetische Feld derartig, dass das Lesegerät auf diese Feldänderung reagieren kann. Diese Änderung wird letztendlich ausgewertet und kann so als Daten interpretiert werden. Meistens sind diese Daten die ID des Chips.

Der elektrische Aufbau

.

RFID With Arduino

.

Für das spätere Programm benötigt man eine Hand voll Bauteile:

  • Arduino Uno/Nano
  • RC522-RFID Modul
  • LED
  • Vorwiderstand für die LED (220Ω)
  • Ein paar Drahtbrücken

Die Verkabelung des Moduls sieht wie folgt aus:

  • Pin 9: RST
  • Pin 10: SDA
  • Pin 11: MOSI
  • Pin 12:MISO
  • Pin 13: SCK
  • 3V3: 3V3
  • GND: GND

Bei dem Modul ist darauf zu achten, dass es mit 3.3V versorgt werden muss, und nicht wie so oft mit 5V.

.

RFID Sketch_Schaltplan.jpg

.

Der oben gezeigte Schaltplan soll alle Unstimmigkeiten ausräumen.

Das Programm

Das Programm befindet sich auf GitHub und soll in ein paar Zeilen Programmcode zeigen, wie einfach man auf das Modul zugreifen kann.

Die Kommunikation zwischen Arduino und RC522 erfolgt über den SPI-BUS.

Voraussetzung ist eine zusätzliche Programmbibliothek, welche sich ebenfalls auf GitHub (hier oder hier) befindet. Der gesamte „MRFC522“-Ordner muss dann in das Standard-Bibliothekenverzeichnis von Arduino kopiert werden (…/Arduino/libraries/).

Ist das erledigt, so kann das eigentliche Programm geöffnet und auf das Arduino geladen werden. Stellt zu Beginn sicher, dass folgende Zeile am Anfang des Sketches nicht auskommentiert ist:

#define SERIAL

Diese Zeile sorgt dafür, dass die ID der Karte auf dem seriellen Monitor dargestellt wird. Ist das Arduino mitsamt dem RFID-Modul in Betrieb, so kann man einen RFID-Tag (Karte, Chip, etc.) in seine Nähe halten. Der serielle Monitor am PC sollte dann die ID der Karte anzeigen.

.

Serial_Denied.JPG

.

Ihr solltet nun ein ähnliches Bild sehen, wie das obere. Die Karte wird erkannt, die LED blinkt schnell und der serielle Monitor gibt euch die ID zurück. Allerdings habt ihr noch keinen Zugriff, da die ID der Karte noch nicht registriert ist.

Geht nun im Programm zur Zeile 45, welche die erlaubten Zugriffe gespeichert hat.

byte Access_UID_Array[2][7] = {{115, 130, 10, 1, 0, 0, 0}, {128, 60, 2, 1, 0, 0, 0}};

Tragt nun die ID eurer Karten und Chips in das Array ein. Achtet darauf, falls ihr einen neuen Block von 7 Zahlenblöcken erstellt, dass ihr auch die Größe des Arrays ändert. (Im Moment ist die Größe [2], da 2 Tags registriert sind). Falls euer Tag, so wie meiner, nur 4 Zahlenblöcke hat, dann lasst die letzten 3 Zahlenblöcke einfach als Nullen stehen. Dies muss so gemacht werden, da manche RFID-Tags 7 Zahlenblöcke als ID besitzen.

Wollt ihr beispielsweise eine Karte mit der ID 100 89 34 12 hunzufügen, dann erweitert die Zeile 45 einfach dementsprechend:

byte Access_UID_Array[3][7] = {{115, 130, 10, 1, 0, 0, 0}, {128, 60, 2, 1, 0, 0, 0}, {100, 89, 34, 12, 0, 0, 0}};

Habt ihr die ID eurer RFID-Tags eingetragen und das Programm auf das Arduino geladen, so solltet ihr beim nächsten Mal im seriellen Monitor die folgende Nachricht bekommen:

.

Serial_Granted.JPG

.

Zusätzlich zu positiven Nachricht sollte die LED nun für 2 Sekunden lang leuchten, ehe sie wieder dunkel wird.

Anstatt der LED ließe sich hier ein Zugmagnet verbauen, welcher eine Klappe oder ein Fach am Öffnen hindert. Hält man die registrierte Karte zum RFID-Empfänger, wird der Magnet aktiviert, der Bolzen fährt zurück und die Klappe ist zum Öfnnen freigegeben. Wie man solche Zugmagneten (oder andere Geräte über 5V) mit dem Arduino verbindet findet man hier.

Man muss darauf achten, dass diese Art von RFID-Kommunikation keineswegs sicher für sensible Anwendungen ist. Die Programmbibliothek unterstützt zwar Crypto1, jedoch gilt dies als unsicher.

Das war’s.

.

Anmerkung

Ursprünglich hatte ich vor, die berechtigten User aus einer Datei auf einer SD-Karte auszulesen. Dies hätte ich mit der SD-Bibliothek von Arduino und dem SD-Karten Modul von Catalex (v1.0) erreichen wollen.

Das Modul würde ebenfalls über den SPI-BUS mit dem Arduino kommunizieren. Es nutzt das SN74LVC125A als Level-Shifter. Leider wurden die nötigen Pins, um anderen Geräten die Kommunikation auf dem BUS zu ermöglichen, alle auf Ground gelötet. Deshalb blockiert das SD-Karten-Modul den BUS.

Die einzige Möglichkeit, das Modul von Catalex in Verbindung mit anderen SPI-Geräten auf dem Arduino zu nutzen ist, dass man einen virtuellen SPI-BUS (SoftSPI) erstellt, und so das Modul an getrennten Pins anschließt.

Dazu (vielleicht) ein anderes Mal mehr.

.

.

Advertisements

2 Gedanken zu “RFID

Kommentar verfassen

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