Zugangskontrolle mit RFID

In Arbeit ....


Mit RFID (Radio Frequency Identification) habe ich mich mit einem, für mich gänzlich neuem, Thema beschäftigt. Ein RFID-System besteht aus einem Transponder (RFID-Tag), der sich z.B. an oder in einem Gegenstand befindet und eine einzigartige Kennung (UID) enthält, sowie einem Schreib-/Lesegerät zum Auslesen der Kennung und von Daten und zum Beschreiben mit Daten.

(Erläuterungen zu RFID siehe z.B. de.wikipedia.org/wiki/RFID)


Aufgabenstellung:

Als Anwendung möchte ich eine Zugangskontrolle mit Überprüfung auf eine gültige UID-Nummer und eine gültige - über eine Tastatur einzugebende - persönliche Identifikationsnummer (PIN), die verschlüsselt im Transponder (RFID-Tag) gespeichert ist, durchführen. Sind beide Bedingungen erfüllt, wird z.B. ein Mechanismus zur Öffnung einer Tür oder einem Tor betätigt. Ein Zählwert, der im RFID-Tag gespeichert ist, soll die Anzahl der Betätigungen registrieren. Auch soll die PIN durch den Benutzer veränderbar sein.


                                 

             

Abbildung 1-1: RFID-Schreib-/Lesemodul mit RFID-Tag als Schlüsselanhänger

Projektstart:

Am Anfang stand natürlich der Kauf eines RFID-Sets, bestehend aus einem RFID-Reader/Writer RC522 mit MRFC522-Chip, S50-RFID-Schlüsselanhänger (IC Key Tags) und S50-RFID-Karte (Thin Smart Card), wie es z.B. bei Ebay um ein paar Euro erhältlich ist und zusätzlich noch als "Verbrauchsmaterial" eine 10er-Packung RFID-Schlüsselanhänger.

Der nächste Schritt war die Installation einer Library (MFRC522), die die Kommunikation mit dem RFID-Reader/Writer und mit den RFID-Tags ermöglichen soll. Einen Link zu MFRC522-Library findet ihr hier: Fremd-Libraries

Dann ging es richtig los. Eine Beschreibung der einzelnen Funktionen für die MFRC522-Library habe ich nicht gefunden. Also blieb mir nichts anderes übrig, als vorhandene Beispiele nachzuvollziehen, die Lib-Dateien MFRC522.h und MFRC522.cpp zu studieren und auch in den Datenblättern des MFRC522-Chips und des "MIFARE Classic - Chips", also dem Innenleben der RFID-Tags, nachzulesen. Manchmal entstanden dabei mehr neue Fragen als ich Antworten erhielt.

Datenblatt MFRC522: www.nxp.com/docs/en/data-sheet/MFRC522.pdf

Datenblatt MIFARE Classic: www.nxp.com/docs/en/data-sheet/MF1S50YYX_V1.pdf


Weitere Vorgangsweise:

Da ich noch mitten im Projekt bin, kann und möchte ich nicht, hier nur ein fertiges Projekt zeigen. Wie auch schon bei anderen Projekten auf meiner Homepage, möchte ich meinen Arbeitsfortschritt nachvollziehbar, auf mehrere Schritte aufgeteilt, mit Hilfe von Programmbeispielen und Erklärung der verwendeten Library-Funktionen vorstellen. Am Ende sollte dann aber doch ein fertiges lauffähiges Programm entstehen, dass die oben beschriebene Aufgabenstellung erfüllt.

Testaufbau:

Den nachfolgenden Testaufbau verwende ich für einige Programme, mit denen ich die Funktionalitäten der RFID-Hardware und der von mir eingesetzten Library MFRC522 teste.


Verwendete Bauteile:

  • 1 Arduino Nano (oder Uno)
  • 1 RFID-RC522 Modul
  • 1 Logic-Level-Converter (8-Kanal, bidirektional)
  • 1 LED
  • 1 Widerstand 220 Ohm


RC522-PinOut:

Nachfolgende Abbildung 1-2 zeigt die Anschlussmöglichkeiten des RC522-Moduls an die SPI-, I2C- oder UART-Schnittstelle des Arduino. Die von mir verwendete Library MFRC522 benutzt nur die SPI-Schnittstelle.

Abbildung 1-2: Anschlussmöglichkeiten des RC522 Moduls an den Arduino


Verbindung des RC522-Moduls mit dem Arduino Nano/Uno:

RFID-Modul        Arduino Nano/Uno

   3,3 V        ->       3,3 V

   RST          ->       D9   (= Reset: im Programm konfigurierbar)

   GND         ->       GND

   IRQ          ->       Keine Verwendung

   MISO        ->       D12 (nicht konfigurierbar - SPI-Schnittstelle des Arduino) 

   MOSI        ->       D11 (nicht konfigurierbar - SPI-Schnittstelle des Arduino)

   SCK          ->       D13 (nicht konfigurierbar - SPI-Schnittstelle des Arduino)

   SDA          ->       D10 (= Slave Select (SS): im Programm konfigurierbar)


Da die Versorgungsspannung des MRFC522 3,3 V beträgt und ich aus dem Datenblatt des Chips (www.nxp.com/docs/en/data-sheet/MFRC522.pdf) nicht entnehmen konnte, dass dieser mit 5 V - toleranten Ein-/Ausgängen ausgestattet ist, habe ich die 5 Datenleitungen zwischen Arduino und RFID-Modul über einen 8-fach Logic-Level-Converter geführt.

Abbildung 1-3: Schaltungsaufbau zum Testen der Funktionalitäten der RFID-Hardware mit der Library MFRC522


Hier geht es weiter zu: UID, SAK, Type