Arduino - RFID - Solenoidschloss

In diesem Tutorial lernen wir, wie man ein RFID-basiertes Türschloss-System herstellt, indem man ein Arduino, ein RC522 RFID-Lesegerät und ein Solenoidschloss verwendet.

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Magnetschloss
1×Relais
1×12V Netzteil
1×DC-Stromanschluss
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables STEM V3 Starter-Kit (Arduino enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
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 Solenoidschloss

Wenn Sie nichts über RFID/NFC RC522-Modul und ein Solenoidschloss wissen (Pinbelegung, Funktionsweise, Programmierung ...), lernen Sie in den folgenden Tutorials mehr darüber:

Verdrahtungsdiagramm

Arduino RFID RC522 elektromagnetisches Türschloss Verdrahtungsdiagramm

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 Arduino-Pins verbunden. Allerdings kann diese direkte Verbindung zu Problemen führen, da die Ausgabepins des Arduino 5V liefern, während die Pins des RC522-Moduls für einen Betrieb mit 3,3 V ausgelegt sind. Es wird empfohlen, die Spannung zwischen den Arduino-Pins und den Pins des RC522-Moduls zu regulieren, um potenzielle Probleme zu verhindern. Für detailliertere Anleitungen konsultieren Sie bitte das Arduino - RFID RC522 Tutorial. Das bereitgestellte Diagramm veranschaulicht, wie Widerstände eingesetzt werden können, um 5V auf 3,3V zu regulieren:

Arduino RC522-Modul mit spannungsregulierendem Verdrahtungsschema

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

※ Notiz:

Die Reihenfolge 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-solenoid-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 solenoid lock via relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => locked Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::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 solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid 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 aufgedruckt ist, besteht der erste Schritt darin, die UID des Tags herauszufinden. Dies kann durch Folgendes 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 Serial Monitor.
  • Tippen Sie auf einen RFID-Tag am RFID-RC522-Modul.
  • Lesen Sie die UID im Serial Monitor aus.
COM6
Send
Tap RFID Tag on reader Unauthorized Tag: 51 3D C1 AC
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Nachdem Sie 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.
  • Tippen Sie einen RFID-Tag an das RFID-RC522-Modul.
  • Sehen Sie die Ausgabe im Serial Monitor.
COM6
Send
Tap RFID Tag on reader Authorized Tag
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Halten Sie einen weiteren RFID-Tag an das RFID-RC522-Modul
  • Sehen Sie die Ausgabe im Serial Monitor
COM6
Send
Tap RFID Tag on reader Authorized Tag Unauthorized Tag: 5D 11 1A D3
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino-Code - Mehrere RFID-Tags

Wir können mehrere RFID-/NFC-Tags zulassen, um das Solenoidschloss zu aktivieren. Der untenstehende 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-solenoid-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 solenoid lock via relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID1[4] = {0x51, 0x3D, 0xC1, 0xAC}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the solenoid lock => locked Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::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 solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid lock => locked } else if (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 solenoid lock => unlocked delay(2000); digitalWrite(RELAY_PIN, HIGH); // activate the solenoid 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 berühre anschließend nacheinander jeden RFID-Tag am RFID-RC522-Modul. Das Ergebnis im Serial Monitor sieht folgendermaßen aus:

COM6
Send
Tap RFID Tag on reader Authorized Tag 2 Authorized Tag 1
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.

※ UNSERE NACHRICHTEN

  • 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!