INHALT
RFID Arduino (Radio Frequency IDentification) ist eine berührungslose Identifikation eines Transponders (Tag) mittels eines Funkkommunikationskanals. Das System ist in vielen Branchen weit verbreitet: für die Zugangskontrolle von Ausweisen, die Verfolgung von Waren in logistischen Lieferketten, die Erstellung von Belohnungssystemen usw. Schauen wir uns an, wie man ein RFID-RC522-Lesegerät an ein Arduino-Board anschließt.
Bestandteile:
Das RFID-System für Arduino-Boards besteht aus zwei Elementen: einem Tag in Form einer Plastikkarte oder eines Schlüsselanhängers und einem Tag-Lesegerät. Die Identifizierung basiert auf einer eindeutigen UID (96-Bit-EPC-96-Standard), die jeder RFID-Tag besitzt. Das Arduino-Modul RC522 sendet elektromagnetische Wellen aus, und die RFID-Tags senden ihre Identifikationsnummer (UID) und gespeicherte Daten aus dem Speicher zurück.
RFID-Modul RC522 Arduino pinout, datasheet
Merkmale des RFID-Modul RC522 (datasheet)
- Versorgungsspannung: 3,3 V
- Frequenz: 13,56 MHz
- Optimaler Abstand: 10 mm
- Schnittstelle: SPI
- Protokoll: Mifare
- Abmessungen: 61 x 40 mm
RFID-Etiketten können aktiv oder passiv sein (ohne Stromversorgung, d. h. sie sind autark) und arbeiten mit unterschiedlichen Frequenzen: LF (125-134 kHz), HF (13,56 MHz), UHF (860-960 MHz). Die Module, die die Informationen auf den Etiketten lesen und schreiben, werden als Lesegeräte bezeichnet. RC522-Module, die auf dem MFRC522-Chip basieren, verwenden elektromagnetische Felder, um Daten an die Karte zu übertragen.
Wie man einen RFID-Modul RC522 an Arduino anschließt
MFRC522 | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 3,3V | 3,3V | 3,3V |
MOSI | 11 | 11 | 51 |
MISO | 12 | 12 | 50 |
SCK | 13 | 13 | 52 |
SDA | 10 | 10 | 10 |
RST | 9 | 9 | 9 |
Das Modul wird über die SPI mit dem Arduino verbunden. Der SPI-Bus auf den Arduino Uno und Mega Boards ist auf verschiedenen Ports. Sie müssen die SPI-Bibliothek MFRC522 herunterladen und das Archiv in das Arduino-Bibliotheksverzeichnis entpacken. Nachdem Sie das RC522-Modul angeschlossen haben, laden Sie den Code herunter, um den Tag-Typ und die UID (eindeutige Schlüsselanhänger- oder Karten-ID) zu ermitteln.
Programm für RFID am Arduino auslesen mit MFRC-522
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); delay(4); mfrc522.PCD_DumpVersionToSerial(); Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks...")); } void loop() { // den Zyklus zurücksetzen, wenn sich keine Karte im Lesegerät befindet if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // zeigt die UID auf dem seriellen Port an mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }
- Der serielle Anschluss zeigt die UID (eindeutige Kennung) des Etiketts an, wenn Sie die etikettierte Karte oder den Schlüsselanhänger an den Kartenleser halten;
- SPI.h muss ebenfalls installiert sein, damit der Sketch funktioniert.
Zugangskontrolle mit Arduino RFID-Modul RC522
Schauen wir uns ein Beispiel an, das für ein Zugangssystem (z. B. Türöffner) verwendet werden kann. Die Software scannt die eindeutige Tag-ID, wenn die Karten-UID mit dem in der Software definierten Wert (cardID) übereinstimmt, wird der Zugang gewährt (grüne LED leuchtet). Wird ein unbekannter RFID-Tag an den RC522-Kartenleser gebracht, wird der Zugang verweigert (die rote LED auf dem Breadboard leuchtet).
Programm für Zugangskontrolle mit RFID-Modul RC522
#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // RES pin #define SS_PIN 10 // SDA (SS) pin byte readCard[4]; String cardID = "20C3935E"; // durch die ID Ihres Tags ersetzen String tagID = ""; MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { while (getID()) { if (tagID == cardID) { Serial.println("Access Granted!"); digitalWrite(5, LOW); digitalWrite(6, HIGH); } else { Serial.println("Access Denied!"); } Serial.print("ID: "); Serial.println(tagID); delay(2000); digitalWrite(6, LOW); } } boolean getID() { if (! mfrc522.PICC_IsNewCardPresent()) { return false; } if (! mfrc522.PICC_ReadCardSerial()) { return false; } tagID = ""; for (uint8_t i = 0; i < 4; i++) { tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); } tagID.toUpperCase(); mfrc522.PICC_HaltA(); return true; }
- Statt einer grünen LED können Sie ein SSR-Statikrelais an den Arduino anschließen und damit z. B. eine Türklingel steuern;
- Der cardID-Wert im Sketch sollte auf den Wert eingestellt werden, den Sie im ersten Programm aus dem Etikett erhalten haben.
Schlussfolgerung. Das RC522-Modul wurde entwickelt, um ein elektromagnetisches Feld zu erzeugen, das zur Kommunikation mit RFID-Tags (Schlüsseln) verwendet wird. Das Lesegerät kann mit dem Arduino mit einer maximalen Datenübertragungsrate von 10 Mbit pro Sekunde über die SPI-Schnittstelle oder das I2C-Protokoll (SDA, SCL) kommunizieren, wodurch bis zu 127 Geräte gleichzeitig angeschlossen werden können.
Schreibe einen Kommentar