RFID/NFC - Sammlung

Als Elektronik-Bastler bleibt der Kontakt mit RFID nicht aus. Diese kleinen passiven Tags können ähnlich wie NFC sehr einfach gelesen und teilweise geschrieben werden. Ideal also für Zugangskontrollen, Warenkontrollen etc.

Achtung:
Eine Entscheidung anhand der RFID-Serienummer ist nicht sicher. Entsprechender "Reader/Writer" samt beschreibbare Karten gibt es für unter 20€ und dauert Sekunden

Für eine effektive Zugangskontrolle ist die RFID-Seriennummer nicht zu gebrauchen und selbst Hersteller, die Frequenzen und Codes verändern, sind nicht sicher. Passive "ReadOnly"-Techniken sind daher ein Kompromiss zwischen Preis und Leistung. Besser sind Lösungen, bei denen der Leser erst einen Einmalcode sendet und die Karte diesen signiert zurücksendet.

Funktionsweise

RFID steht für "Radio Frequency IDentification", also per Funk z.B. eine Seriennummer auszulesen. Wenn die Träger der Information nur ein paar Cent kosten, dann lohnt es sich sogar Waren zu kennzeichnen. So kennzeichnet Gerry Weber seine Waren entsprechend um die Logistik zu verbessern. Der RFID-Chip ist im Etikett vernäht und kann auch verstört werden. Dadurch, das jedes Teil aber eine individuelle Nummer hat, kann die Warenwirtschaft den Weg besser verstehen. Und wenn der spätere Träger den Chip nicht unbrauchbar macht, könnte man die Person auch wieder identifizieren.

Technisch ist der "Leser" eigentlich ein Sender, denn erst durch die Nähe des RFID-Chips zu einem Leser wird genug Spannung induziert, dass das batterielose RFID-Tag arbeiten kann. Aus der abgestrahlten Radiowellen bezieht das TAG aber nicht nur Strom, sondern auch die Information. Dazu moduliert der Leser das abgestrahlte Signal. Das TAG bekommt die Informationen und sendet seinerseits die Antwort zurück. Ohne Batterie ist ein aktives Senden natürlich schwer. Daher schließt es die Antenne einfach entsprechend kurz, was der Leser dann an seinem weiter ausgesendeten Signal erkennt. Erstaunlich, dass das alles funktioniert. Der folgende Vortrag macht das sehr gut deutlich

Tutorial:Using a RFID Card Reader with the Arduino (Update)
https://www.youtube.com/watch?v=yUtFinIsPWw

Da es sich um Funkwellen handelt, ist natürlich die Frequenz interessant. Da gibt es durchaus verschiedene Bänder, daher kann ein RFID-Leser nicht immer auch alle RFID-Tags lesen.

Frequenzband Reichweite Anwendung

125kHz

<1m

Einfachste günstige RFID Systeme, die eigentlich nur mit der ID-Nummer des RFID-Chips.

13,56 MHz

<1m

NFC, Eintrittskarten, EC-Karte, ePerso (ISO 14443), Zugriffssysteme, Kantinenkarten,

UHF 433MHz
UHF 868MHz

>1m aber "Mensch" schirmt ab

Gerry Weber Kleidungskennzeichnung (EPC)

Selbst wenn die Frequenz stimmt, ist das immer noch kein Garant für die Funktion, denn es gibt noch unterschiedliche Karten.

Karte  Beschreibung 

EM4100 

Sehr einfache Karten, die eigentlich nur eine UID, eine lange weltweit eindeutige Seriennummer haben. Ein Leser bekommt einfach diese Nummer und kann so das RFID-Token identifizieren. Allerdings ist das nicht sicher, denn es gibt für unter 30€ schon Geräte, die eine UID lesen und auf eine besondere "leere" Karte schreiben. Und schon haben Sie einen identischen Clon.

Allerdings gibt es genau für diese "einfachen" Karten sehr viele Bauteile, Token, Bastelboards im Bereich von 1-20€ bis zu kompletten Zugangssystemen, deren Schwächer aber nicht einmal die Karten sind, sondern oft Leser und Auswerteeinheit in einem Gehäuse und damit im "unsicheren Bereich" sind. Da ist es einfach den Leser zu zertrümmern und die beiden beiden Drähte zur Türöffnung zu verbinden.

Mifare Classic

Diese Karten sind schon etwas besser aber mittlerweile auch kopierbar: Sie nutzen 13,56MHz und kommen in sehr vielen Umgebungen zum Einsatz, z.B.: als Fahrkarten, Städtekarten etc.

Interessanterweise erkennt mein Leser auch den ePerso

Miface Desfire

Diese Karten haben einen aktuell wohl nicht mit vertretbarem Aufwand zu knackenden Verschlüsselungsverfahren. Angeblich sind diese Chips auch in folgenden Karten verbaut

  • ePerso
  • Visa-Karten
  • EC-Karten

Leider sind die Leser auch entsprechend aufwändiger und damit etwas teurer. Das Auslesen der Seriennummer wohl noch einfach und angeblich könnte die auch noch nicht auf eine andere Karte kopiert werden (Stichwort Nachschlüssel). Aber interessant ist hier vor allem die Funktion, eigene Applikationen quasi auf die Karte zu installieren oder Informationen entsprechend sicher zu speichern.

Ob das aber alles technisch korrekt ist, kann ich nicht verifizieren.

Insofern kann man heute schon sagen, dass es eine absolute Sicherheit auch hier kaum geben wird. Die einfachen Karten lassen sich relativ einfach kopieren und die "guten" Karten sind zwar kaum teurer, aber die Lesegeräte und deren Ansteuerung sind natürlich aufwändiger.

Für all das gibt es natürlich Normen und Standards

#223 RFID How-To: Not only for Arduino (only legal Stuff!)
https://www.youtube.com/watch?v=vEkfa3OMvec

Basisleser

Es gibt verschiedene Leser, um RFID-Karten zu nutzen. Einige sind natürlich für die Montage im Außenbereich gedacht, um damit eine Zugangskontrolle zu realisieren. Wichtig bei solchen Aufgaben ist natürlich, dass "draußen" nur der Leser sitzt während die Auswerteeinheit innen gesichert montiert ist. für den Einsatz am PC gibt es in der Regel drei Klassen, was insbesondere bei der Nutzung in Verbindung mit dem ePerso oder EC/Geldkarten von Interesse ist

  1. Einfache Leser
    Sie haben keine Anzeigen und keine Tasten. Eigentlich ist es nur die Spule und eine kleine Leseeinheit, die per USB oder seriell angeschlossen Ein und angesteuert wird. Einige dieser Leser senden einfach nur die erkannte ChipID als Zahlenfolge zum Host. Andere geben sich als Tastatur aus und geben die Zahlen quasi als Tastatureingabe an den PC. Das ist natürlich eine ganz einfach Lösung für die Erfassung.
  2. Basis-Leser
    Diese Leser haben ein eigenes Display um Ausgaben der Karte dort wiederzugeben. Diese Daten sind dann nicht auf dem PC sichtbar und können damit auch nicht von einem Virus abgerufen oder verändert werden. Das ist bei Überweisungen wichtig, um so die Zielkontonummer und den Betrag zur Kontrolle anzuzeigen. Sie können das vielleicht schon vom eTan-Generator. Wenn die Karte aber eine Pin braucht, dann wird dieser am Computer eingegeben und übermittelt. Sie könnte entsprechend abgefangen und von einem Schadcode auch ausgeleitet werden.
  3. Erweiterte Leser
    Die Schwäche der PIN-Eingabe auf dem PC lösen die erweiterten Leser, welche neben dem Display auch eine eigene Tastatur haben. Oft können diese Leser dann auch verschiedene Kartentypen unterstützen oder haben auch eine zusätzliche Kontakteinheit. Damit können Sie dann auch kontaktbehaftete Funktionen wie die Geldkarten-Funktion nutzen oder den Leser auch als Smartcard-Leser nutzen. Dies erlaubt dann z.B.: die Anmeldung an Windows mit einer Smartcard oder die Ablage von SMIME-Zertifikaten, die Nutzung von HBCI oder Elster-Zertifikaten..

Ob sie sich einen PC-gestützten Leser zulegen und welche Stufe es sein soll, hängt von ihren Einsatzbereich ab. Ich kann ihnen da keine direkte Empfehlung geben. Manchmal gibt es über die Sparkassen und Banken entsprechende Aktionsangebote. Sogar die BILD-Zeitung hat einmal einen Kartenleser im Rahmen einer Aktion mit verkauft.

Wiegand26

Wer auch immer mit RFID und Lesern zu tun hat, wird früher oder später über die Wiegand26-Schnittstelle stolpern. In der Regel montieren Sie die Leseeinheit und die Auswerte-Logik räumlich getrennt. Wäre ja blöde an der Tür die erlaubten Zugangskarten zu hinterlegen und den Türöffner mit anzuschließen. Damit würden Sie Manipulationen sehr einfach machen. Die Leser haben dabei mindestens vier Kabel.

  • GND
    Die Masseleitung als gemeinsames Referenzpotential
  • Vcc
    Die Stromversorgung der Einheit. Meist kommen hier 6-12V zum Einsatz. Das ist leider nicht direkt mit einem TTL- oder 3,3V System kompatibel
  • D0 und D1 - Data0 und Data 1
    Die beiden Leitungen sind normalerweise Spannungsführend (Betriebsspannung) und werden vom Leser auf GND gezogen, wenn ein Bit zu übertragen ist.

Weitere Kabel können dazu kommen, um z.B. einen Summer oder eine LEDS zu steuern. z.B. ein Wiegand-Leser für unter 10 Euro bei Amazon

Wasserdicht Security Door Black ID Wiegand 26 RFID Card Reader Leser Codeschloss
https://www.amazon.de/dp/B00EI69FZI 10€

Die Wiegand-Schnittstelle ist aber nicht nur auf RFID beschränkt. Auch Fingerabdruckleser u.a. können eine ID senden. Allerdings ist es eben nur ein "Lesen" einer ID in der Karte. Speziell Karten, die "kopierbar" sind, zeigen schnell die Einschränkungen bezüglich der Sicherheit auf. Bessere Leser mit fälschungssicheren Karten könnte hier helfen. Es ist nur bedingt eine Einschränkung des Wiegand-Protokolls.

Die Datenübertragung erfolgt zwar seriell aber nicht über eine Leitung sondern zwei Adern. Im Ruhezustand kann die Auswerteeinheit also sofort erkennen, wenn eine Leitung unterbrochen ist. Auch die serielle Übertragung orientiert sich nicht an der PC-Technik mit 8 Bit sondern es werden 26 Bits übertragen. Das erste Bit ist dabei die Parität für Bit 2-13 und über BIT 14-25 wird dann das Bit 26 als Paritätsinformation genutzt. Die 24 Datenbits bestehen aus 8 Bit.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

P1

SiteCode 8 Bit = 0-255

ID, 16 Bit  = 0-65535

P2

Parity Bit 2-13 in Bit 1

Parity Bit 14-25 in Bit 26

Die nachgeschaltete Auswerteeinheit bekommt also einfach diese 24bit-Zahl, um den Nutzer zu identifizieren.

Keine Sicherheit

Ehe Sie nun begeistert daran gehen ein Türschloss per RFID zu bauen, sollten Sie die Grenzen der Sicherheit kennen.

  • Mechanischer Schutz
    Sehr viele "Bausätze" kombinieren Leser und Auswertelogik in einem Gehäuse, welches außen montiert wird. Ein Einbrecher muss dann nur das Gehäuse von der Want schlagen um die beiden Kontakten zur Türöffnung zu verbinden. So bitte nicht
  • Kopierbare Karten Systeme, die einfach nur die Seriennummer der Karte lesen
    Jede einfache RFID-Karte sollte eine eigene Seriennummer haben. Leider gibt es natürlich programmierbare Karten, denen man eine Seriennummer nachträglich eintragen kann

Hid duplicate rfid clone
https://www.youtube.com/watch?v=7_4GOJpFXyw

  • Einfacher RFID-Leser mit Wiegand-Protokoll
    Aber selbst wenn Sie den Leser draußen und die Auswertung intern montieren, ist das Verbindungskabel einfach zu kapern. Meist sind es 4 Leitungen, die neben GND und Vcc auch die Daten übertragen. Es gibt schon fertige ESP8266-Module, um per Vampirklemme die Seriennummern zu lesen und sogar zu simulieren.

[1052] Defeating a RFID System With The ESPKey
https://www.youtube.com/watch?v=0SEHUqkbIjU
Zeit ebenfalls, wie einfach triviale RFID-Leser zu knacken sind.
https://redteamtools.com/espkey

RFID ist nett aber allein das Lesen einer Seriennummer ist es nicht wirklich sicher genug für eine Außentür.

Anders ist es, wenn der RFID-Chip etwas anspruchsvoller ist und man ihm z.B. einen Wert senden kann, der dann signiert zurück kommt. RFID in Kreditkarten und EC-Karten als auch im Personalausweis und Reisepass basieren nicht auf dem plumpen Lesen von Daten.

Basteln und Bauen mit Arduino und Co

Interessant wird die RFID-Technik natürlich mit kleinen Computern. Es muss ja nicht immer gleiche die Türöffnung mittels RFID sein. Vielleicht sollte es das auch erst mal gar nicht sein. Aber NFC basiert auch auf der RFID-Technik und damit lassen sich dann vielleicht doch das ein oder andere Experiment gestalten. Ich habe hier einige Links zur Technik gefunden, die solche Bastelarbeiten beschreiben.

Tutorial:Using a RFID Card Reader with the Arduino (Update)
https://www.youtube.com/watch?v=yUtFinIsPWw

Tutorial: Using the SPI Bus on the Arduino
https://www.youtube.com/watch?v=2Kr8eHHwcws

How to build an Animal RFID reader with Arduino, ESP8266, or ESP32
https://www.youtube.com/watch?v=y89yJ1Fq-hQ

RC522 (13,56 MHz)

Einen RFID-Leser kann man nicht wirklich selbst bauen. Da ist sehr viel Analogtechnik mit Funk, Schwingkreisen etc. dabei, denn der Leser sendet dauerhaft ein Feld, welches im RFID-Tag eine Spannung induziert. Das Tag nutzt die Energie zur Eigenversorgung und kann aber nicht selbst aktiv senden sondern schließt den eigenen Schwingkreis entsprechend kurz, was der Sender dann indirekt erkennt. Ein bekannter Leser ist der RFID-RC522, welcher 13,56 MHz-Tags liest und schreibt. Er liest allerdings keine 125kHz-Tags Auf 13,56MHz befinden sich mittlerweile aber die meisten Karten und höherwertigen Tags und insbesondere auch der ePerso und Smartphones (NFC).

Sie sehen hier links acht Anschlüsse, die mehr oder minder lesbar sind. Von oben nach untern sind das:

Name Bedeutung

SOA

SS - Wählt den Chip aus

SCK

Clock

MOSI

Eingang vom Master

MISO

Senderichtung zum Master

IRQ

Interrupt

GND

Masse

RST

Reset

3,3

Energieversorgung. Achtung, keine 5V anlegen

Je nachdem, ob Sie nun einen ESP8266, ESP32, Arduino oder Raspberry einsetzen, werden die Anschlüsse zu den Ports am Controller geführt und in der Library definiert.

Es gibt sogar einen Support für die ESP8266/ESP32 3rd Party Firmware Tasmota die aber nicht per Default eingebunden ist. Sie müssen sich die Firmware dann selbst kompilieren. Das is nicht sonderlich schwer aber für Anfänger schon eine Hürde. Daher ist der PN532 vielleicht besser, der in der "tasmota-sensors.bin" enthalten ist.

PN532 (13,56 Mhz)

Im Vergleich zum RC522 kann der nur minimal teurere RC532 auch NFC-Chips schreiben und mit NFC Modulen eines Smartphone kommunizieren. Der RC522 ist wohl ein reines Lesegerät.


PN532

Entsprechende Quellen sind die bekannten Bastel-Versender oder natürlich chinesische Quelle, die über Amazon, AliExpress o.ä. entsprechende Platinen für 5€ und weniger versenden.

Diese Leser haben eine sehr kleine Antenne, die neuere Mifare Karten nicht ausreichend mit Energie versorgen können und daher nicht stabil laufen
Siehe auch DIY electronic RFID Door Lock with Battery Backup https://www.codeproject.com/Articles/1096861/DIY-electronic-RFID-Door-Lock-with-Battery-Backup

Über DIP-Schalter kann die Betriebsart zwischen SPI, I2C oder HSU (High Speed UART) umgestellt werden, so dass eine Integration sehr einfach sein sollte. Die meisten IoT-Projekte arbeiten mit I2C oder SPI. Der serielle Mode interessiert mich aber auch, weil man damit theoretisch das Gerät direkt über einen USB/Seriell-Adapter betreiben könnte. Eigene Leitungen für Handshake (RTS/CTS etc.) habe ich nicht gesehen und die Baudrate von bis zu 1,2MBit möchte ich gar nicht ausschöpfen. Anscheinend muss ich an das System aber als Start-Sequenz erst einmal ein "00 00 FF" senden. Damit kann der 8051-Prozessor dann wohl die Baudrate erkennen. Die meisten Umsetzungen werden aber wohl per SPI oder I2C gebaut. Der RN532 kann auch diese Protokolle. Da aber HSU und SPI die gleichen Pins nutzen, müssen Sie per DIP-Schalter die Betriebsart entsprechend umstellen:

Wenn beide Schieber "links" auf OFF sind, dann ist HSU eingestellt. Für SPI muss der untere Schieber nach rechts.

Türsteuern mit Tasmota

Nachdem ich einige Projekte mit Tasmota im Eigenheim umgesetzt habe, habe ich auch den RFID-Leser mit dem Garagentoröffner verbunden. Dazu habe ich erst einmal die Voraussetzungen bei der Technik und der Firmware geschaffen.

  • ESP8266 mit "Tasmota-sensors.bin" vorbereitet
    Firmware über https://tasmota.GitHub.io/install/ geflashed
    Board von "Sonoff Basic" auf "Generic(0)" umgestellt.
    WLAN, IP-Adresse und MQTT-Server gesetzt.
  • PN532 Mode auf HSU umgestellt
    Tasmota kennt nur den Mode und unterstützt bei dem Leser nicht SPI oder I2C
  • PN532 NFC reader verkabelt
    https://tasmota.GitHub.io/docs/PN532
    Der Anschluss ist allein durch die vier Kabel schnell erfolgt. Die beiden Signalleitungen verbinden Sie mit zwei Digitalport, die sie dann in Tasmota entsprechend konfigurieren:
SCL = HSU_RX -> D2 (GPIO4) -> PN532 Rx
SDA = HSU_TX -> D1 (GPIO5) -> PN532 Tx 
Vcc = Vcc
GND = GND

Beim Start sollte Tasmota auf der Konsole den Reader finden und wenn Sie eine Karte davor halten, sehen Sie die ID der Karte:

Die vorgehaltenen Karten können Sie dann per MQTT oder SYSLOG absenden. Interessant ist aber auch ein "autarker" Betrieb. Hier können Sie mit den Tasmota-Regeln eine rein lokale Lösung bauen.

Allerdings ist dies nur bedingt sicher, das RFID-Karten recht einfach kopiert werden können und es ist unbequem, da sie die IDs per Konsole als Regel anlegen müssen.

Ehe ich eine Regel anlege, muss ich einen weiteren Pin als Schaltausgang definieren, an dem ich dann ein Relais anklemmen, welches z.B. den Türöffner für einige Sekunden betätigt. Ich habe dazu einfach D3 GPIO als Relay1 definiert.

Nun muss ich aber Tasmota noch sagen, dass das Relay nach z.B. 0,7 Sekunden automatisch wieder abfällt. Das geht durch die Eingabe von "Pulsetime1 7".

Ich habe dann über die WebUI das Relay eingeschaltet und nach 1 Sekunde ist es wieder abgefallen:

Nun muss ich nur noch einmal alle erlaubten Karten kurz davor halten, um die IDs der Karten zu erfassen. Die brauche ich nun gleich in den Regeln.

"SetOption0 0" verhindert, dass der Status der Relays etc. beim Neustart wieder hergestellt wird und "PowerOnState 0" stellt sicher, dass das Relay nach dem Einschalte erst mal aus ist. Nicht dass ein Stromausfall sprichwörtlich Tür und Tor öffnet und das Relay soll nach 0,7 Sek wieder abfallen:

SetOption0 0
PowerOnState 0
Pulsetime1 7
Rule1 0
Rule1
 ON PN532#UID=6ACB4BB5 DO Power1 1 ENDON
 ON PN532#UID=67618D62 DO Power1 1 ENDON
 ON PN532#UID=F339E0C7 DO Power1 1 ENDON
 ON PN532#UID=7FF4973C DO Power1 1 ENDON
Rule1 1

Die Regel 1 enthält einfach alle IDs der RFID-Karten, um das Relay anziehen zu lassen. Interessant finde ich aber, wie viele Karten so einfach ausgelesen werden können. Die meisten Bankkarten bleiben stumm, weil der Leser wohl nicht die richtige Frage stellt, aber die DB Finkster-Karte, die Pader Bäderkarte, diverse Kantinenkarten von Kunden und sogar der Personalausweis senden eine eindeutige ID unterschiedlicher Länge. Sogar mein IPhone 11 reagiert bei Annäherung und fragt nach der Bezahlkarte (aber nicht andere hinterlegte Karten) und liefert nach Bestätigung eine Seriennummer die sich aber bei jedem Vorgang ändert.

Auch wenn der ePerso eigentlich sicher ist, bedeutet es nicht, da nicht jemand eine Karte mit der gleichen "einfachen" Seriennummer herstellt.

M5Stack

Auch die chinesischen Entwickler der M5Stack-Gruppe haben einen RFID-Leser per I2C an ihre kompakten Module angebunden. Das geht dann ganz ohne Löten und Basteln.

Sie müssen dann nur das USB-Kabel mit dem PC und mit dem Groove-Kabel den M5Lite und den RFID-Reader verbinden. Der Rest ist eine kleine Arduino-Software um die RFID- UIDs der Karten auf die serielle Schnittstelle auszugeben. Hier eine Kurzform ohne Dokumentation:

#include <Wire.h>
#include "MFRC522_I2C.h"

MFRC522 mfrc522(0x28);   // Create MFRC522 instance.

void setup() {

  Serial.begin(115200);
  Wire.begin(26,32);              // Initialize I2C des M5Lite
  mfrc522.PCD_Init();             // Init MFRC522
  Serial.println(F("Scan PICC to see UID, type, and data blocks..."));
}

void loop() {
  if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
    delay(50);
    return;
  }
  
  Serial.print(F("Card UID:"));
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  } 
  Serial.println();
  
}

Allerdings ist die Reichweite des Lesers aufgrund der kleinen Antenne sehr gering. Es können sogar EC/VISA/Mastercard-Karten gelesen werden aber hier muss der Chip schon sehr genau auf dem Leser liegen.

M24SR Chip

Es muss nicht immer eine RFID/NFC-Karte sein. Mit dem Chip und minimaler externer Beschaltung können Sie einen EEPROM-Speicher per NFC oder auch per I2C lesen und schreiben. Für dem Einsatz bei Mikrocontrollern kann das z.B. für den Datenaustausch interessant sein. Sie könnten z.B. per I2C eine Konfiguration in dem Chip anlegen oder auslesen, die sie per NFC mit einem Smartphone ebenfalls beschreiben oder lesen. Es ist also kein RFID/NFC-Leder sondern ein EEPROM-Speicher, der über zwei Wege angesprochen werden kann.

ESP-RFID

Neben dem Arduino erfreut sich die ESP8266-Plattform einer großen Gemeinde. So ist es nicht verwunderlich, dass es eine Unmenge an Beispielen und sogar fertige Projekte gibt. Die Eigenentwicklung ist sicher interessant um die Möglichkeiten zu erlernen. Insbesondere um lesend auf Karte zu zuzugreifen und diese Daten zu nutzen. Nicht jeder möchte aber alles von Anfang an entwickeln. Dann bieten sich fertige Pakete an. Eines davon ist ESP-RFID, welches als Firmware auf den ESP8266 geflasht wird und nach dem Start einen eigenen WiFi-AccesPoint öffnet.

Verbinden Sie sich mit dem WLAN und surfen Sie auf 192.168.4.1. Das ist die Default IP-Adresse. Das Default-Kennwort ist "admin" um dann das System zu konfigurieren. Natürlich können Sie das Gerät in das eigene WLAN als Client aufnehmen aber sie können auch so schon mal die Funktion testen. Zuerst muss der RFID-Reader ausgewählt werden. Bei mir ist es der MFRC522, bei dem ich die Chip-Select-Leitung auf den NodeMCU D2 gelegt habe, was in Arduino-Sprechweise dann GPIO4 ist. Der NodeMCU hat sogar zwei SPI-Schnittstellen, wovon aber eine zur Kommunikation mit dem internen Speicher/Flash dient. Ich nutzen daher die zweite Schnittstelle rechts. ESP-RFID nutzt die auch wobei Sie in der Konfiguration aber den SPI SS-Port angeben müssen. Daher hier noch mal schnell die Pin-Bedeutung

Danach können Sie schon auf die Seite "Users" gehen, welche erst einmal leer ist. Halten Sie einfach eine RFID-Karte oder Token vor den Leser. Die Webseite sollte sehr schnell ihnen anzeigen, welches Gerät gefunden wurde. Hier mal meine Übersicht. Nachdem der Leser funktioniert hat, aber ich einfach mal neugierig geschaut, wo überall eine RFID-Karte eingebaut ist, die von dem Leser erkannt wird.


Hinweis: Die UID-Werte sind von mir natürlich geändert worden und entsprechen nicht den realen Daten.

Leider wurden keine RFID-Chips gelesen, die in den EC-Karten oder Kreditkarten auf jeden Fall vorhanden sind. Aber sie sehen auch so, dass es eine ganze Menge an Tags in ihrer Tasche gibt.

Diese Software beschränkt sich darauf, die UID eines Karte zu lesen, welche eindeutig und nicht kopierbar sein sollte. Dem ist aber nicht so. Zwar sollte man die RFID-Karte in einem Personalausweis nicht kopieren können aber Wenn der Leser nur die UID nutzt, dann kann ein Angreifer die UID sehr wohl einfach auf eine Blanco-Karte kopieren. Ein Leser sollte also schon etwas mehr lesen.

Auf der anderen Seite ist es schon interessant zu sehen, dass es auch Karten gibt, die deutlich länger UIDs haben. Mit der Software ESP-RFID können Sie aber schon für den Hausgebrauch eine erste Zugangskontrolle oder Erfassung umsetzen, zumal die Software auch direkt einen MQTT-Client enthält, der die Events an einen MQTT-Server weiter geben kann. Der wird ebenfalls einfach in der GUI verwaltet

Danach finden sich alle Aktionen als Meldungen auf dem MQTT-Server. Bei mir ist das eine Synology mit Mosquitto.

C:\Program Files\mosquitto>mosquitto_sub.exe -h 192.168.178.178 -t ESP-RFID -v
ESP-RFID {"type":"boot","time":16,"Wifi SSID":"FCIOT","Local IP":"192.168.180.12"}
ESP-RFID {"type":"access","time":16,"isKnown":"true","access":"Always","username":"Demo RFID-Token","uid":"f339e0c7"}
ESP-RFID {"type":"access","time":74,"isKnown":"true","access":"Always","username":"Demo RFID-Token","uid":"f339e0c7"}
ESP-RFID {"type":"access","time":77,"isKnown":"true","access":"Always","username":"Demo RFID-Chipkarte","uid":"6acb4bb5"}
ESP-RFID {"type":"access","time":105,"isKnown":"true","access":"Always","username":"Demo RFID-Chipkarte","uid":"6acb4bb5"}
ESP-RFID {"type":"access","time":121,"isKnown":"true","access":"Always","username":"Demo RFID-Chipkarte","uid":"6acb4bb5"}
ESP-RFID {"type":"heartbeat","time":16}
ESP-RFID {"type":"access","time":22,"isKnown":"true","access":"Always","username":"Demo RFID-Chipkarte","uid":"6acb4bb5"}
ESP-RFID {"type":"access","time":171,"isKnown":"true","access":"Always","username":"Demo RFID-Chipkarte","uid":"6acb4bb5"}

Bin der Version 1.02 werden aber noch keine Konfigurationsänderungen per MQTT geloggt. Das soll sich aber mit 1.31 ändern, weil hier über MQTT sogar Benutzer angelegt und gelöscht werden können und ein Provisioning möglich wäre.

Leider gibt es aber noch keinen Weg, die Zugangsdaten zentrale zu verwalten oder zwischen den Systemen automatisch abzugleichen.
Zudem hat sich mein Device nicht immer zuverlässig ins WLAN eingebucht und ist dann auf AccessPoint zurück gefallen. Die Zugänge konnten noch überprüft werden aber es wurde keine Verbindung mehr zum MQTT-Server aufgebaut.
Da gibt es wohl noch etwa zu tun.

Neben ESP-RFID gibt es noch andere Pakete, die RFID-Erfassung mit dem ESP8266 möglich machen und die Daten z.B. in eine Hausautomatisierung einspeisen.

Eigene Entwicklungen

Ein RC522-Leser wird mit 7 Kabeln einfach an den Controller angeschlossen und schon im Arduino Studio gibt es Beispiele im Bereich "Examples" für erste Gehversuche mit RFID. Bekannt ist hier die MFRC522_Library mit vielen Beispielen

Auch hier müssen Sie wieder eine Basiskonfiguration dergestalt vornehmen, dass die Library die Anschlüsse wissen muss, an denen der Leser verbunden ist. Allerdings wird es schwer sein eine Lösung wie ESP-RFID mit Webseite, Konfiguration etc. zu entwickeln. Ich würde selbst nur mit einer klaren Zielvorgabe entwickeln. Wenn ich also eine eigene "schlanke" Zugangskontrolle bauen wollte, bei der das Gerät z.B. per HTTP sich die IDs der erlaubten Personen und die Uhrzeit holt um dann den Zugang zu gewähren, dann könnte ich mir das schon vorstellen.

Aktuell habe ich keine Pläne hier weiter zu entwickeln. Vielleicht addiere ich mal ein Basismodul für den Zugang zur Garage o.ä. Aber da weder EC-Karten noch meine Smartphones bislang erkannt wurden, stelle ich Experimente etwas zurück.

Weitere Links