In diesem Tutorial lernen wir, wie man ein RFID-basiertes Türschloss-System herstellt, indem wir Arduino, ein RC522 RFID-Lesegerät und ein elektromagnetisches Schloss verwenden.
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.
Über RFID/NFC RC522-Modul und elektromagnetisches Türschloss
Wenn du nichts über das RFID/NFC RC522-Modul und die elektromagnetische Verriegelung weißt (Pinbelegung, Funktionsweise, Programmierung ...), informiere dich in den folgenden Tutorials darüber:
Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Um die Einrichtung zu vereinfachen, sind die Pins des RC522-Moduls direkt mit den Pins des Arduino verbunden. Allerdings kann diese direkte Verbindung zu Problemen führen, da die Ausgangspins des Arduino 5 V liefern, während die Pins des RC522-Moduls für einen Betrieb mit 3,3 V ausgelegt sind. Es ist ratsam, die Spannung zwischen den Arduino-Pins und den Pins des RC522-Moduls zu regulieren, um potenzielle Probleme zu vermeiden. Für detailliertere Hinweise konsultieren Sie bitte das Arduino - RFID RC522 tutorial. Die bereitgestellte Abbildung zeigt, wie Widerstände verwendet werden können, um 5 V auf 3,3 V zu regulieren:
Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
※ Notiz:
Die Anordnung der Pins kann je nach Hersteller variieren. Verwenden Sie immer die auf dem Modul aufgedruckten Beschriftungen. Das obige Bild zeigt die Pinbelegung der Module des Herstellers DIYables.
Arduino-Code - einzelner RFID-Tag
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-rfid-electromagnetic-lock*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN 10#define RST_PIN 5#define RELAY_PIN A5 // The Arduino pin that controls the electromagnetic lock via relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF};voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the electromagnetic lock => lockedSerial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] ) {Serial.println("Authorized Tag");digitalWrite(RELAY_PIN, LOW); // deactivate the electromagnetic lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked }else {Serial.print("Unauthorized Tag:");for (int i = 0; i < rfid.uid.size; i++) {Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");Serial.print(rfid.uid.uidByte[i], HEX); }Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } }}
Schnelle Schritte
Da die UID in der Regel nicht auf dem RFID-Tag gedruckt wird, besteht der erste Schritt darin, die UID des Tags herauszufinden. Dies kann auf folgende Weise erfolgen:
Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino-IDE
Klicken Sie in der Arduino-IDE auf die Hochladen-Schaltfläche, um den Code auf den Arduino hochzuladen
Öffnen Sie den seriellen Monitor
Berühren Sie ein RFID-Tag am RFID-RC522-Modul
Lesen Sie die UID im seriellen Monitor aus
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Unauthorized Tag: 51 3D C1 AC
Ln 11, Col 1
Arduino Uno on COM15
2
Nachdem Sie eine UID erhalten haben:
Aktualisieren Sie die UID in Zeile 18 des obigen Codes. Zum Beispiel ändern Sie byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; zu byte authorizedUID[4] = {0x51, 0x3D, 0xC1, 0xAC};
Laden Sie den Code erneut auf den Arduino hoch.
Halten Sie ein RFID-Tag an das RFID-RC522-Modul.
Zeigen Sie die Ausgabe im seriellen Monitor an.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag
Ln 11, Col 1
Arduino Uno on COM15
2
Berühren Sie einen weiteren RFID-Tag am RFID-RC522-Modul
Zeigen Sie die Ausgabe im seriellen Monitor an
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag
Unauthorized Tag: 5D 11 1A D3
Ln 11, Col 1
Arduino Uno on COM15
2
Arduino-Code – Mehrere RFID-Tags
Wir können mehrere RFID- und NFC-Tags zulassen, um das elektromagnetische Schloss zu aktivieren. Der unten stehende Code verwendet zwei Tags als Beispiel.
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino/arduino-rfid-electromagnetic-lock*/#include <SPI.h>#include <MFRC522.h>#define SS_PIN 10#define RST_PIN 5#define RELAY_PIN A5 // The Arduino pin that controls the electromagnetic lock via relayMFRC522 rfid(SS_PIN, RST_PIN);byte authorizedUID1[4] = {0x51, 0x3D, 0xC1, 0xAC};byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; voidsetup() {Serial.begin(9600);SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output.digitalWrite(RELAY_PIN, LOW); // deactivate the electromagnetic lock => lockedSerial.println("Tap RFID Tag on reader");}voidloop() {if (rfid.PICC_IsNewCardPresent()) { // new tag is availableif (rfid.PICC_ReadCardSerial()) { // NUID has been readedMFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);if (rfid.uid.uidByte[0] == authorizedUID1[0] && rfid.uid.uidByte[1] == authorizedUID1[1] && rfid.uid.uidByte[2] == authorizedUID1[2] && rfid.uid.uidByte[3] == authorizedUID1[3] ) {Serial.println("Authorized Tag 1");digitalWrite(RELAY_PIN, LOW); // deactivate the electromagnetic lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked }elseif (rfid.uid.uidByte[0] == authorizedUID2[0] && rfid.uid.uidByte[1] == authorizedUID2[1] && rfid.uid.uidByte[2] == authorizedUID2[2] && rfid.uid.uidByte[3] == authorizedUID2[3] ) {Serial.println("Authorized Tag 2");digitalWrite(RELAY_PIN, LOW); // deactivate the electromagnetic lock => unlockeddelay(2000);digitalWrite(RELAY_PIN, HIGH); // activate the electromagnetic lock => locked }else {Serial.print("Unauthorized Tag:");for (int i = 0; i < rfid.uid.size; i++) {Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");Serial.print(rfid.uid.uidByte[i], HEX); }Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } }}
Führe ähnliche Schritte wie oben aus und halte anschließend nacheinander jedes RFID-Tag an das RFID-RC522-Modul. Das Ergebnis im Serial Monitor sieht unten so aus:
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID Tag on reader
Authorized Tag 2
Authorized Tag 1
Ln 11, Col 1
Arduino Uno on COM15
2
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!