ESP32 - RFID/NFC Türschloss-System

Dieses Tutorial zeigt Ihnen, wie Sie den ESP32 verwenden, um ein RFID- und NFC-Türschloss-System zu erstellen.

※ Notiz:

Sie können dieses Türschloss mit dem Türschloss-System mit Tastatur kombinieren.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×RFID/NFC RC522 Kit (reader + tags)
1×RFID Key Fob
1×RFID Card
1×Magnetschloss
1×(Aternative) Electromagnetic Lock
1×Relais
1×12V Netzteil
10×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 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 elektromagnetisches Schloss

Wir haben spezielle Tutorials zum RFID/NFC RC522-Modul und zu elektromagnetischen Schlössern. Jedes Tutorial enthält detaillierte Informationen und eine Schritt-für-Schritt-Anleitung zur Hardware-Pinbelegung, zum Funktionsprinzip, zur Verdrahtung mit dem ESP32 und zum ESP32-Code... Weitere Informationen dazu finden Sie in den folgenden Links:

Systemkomponenten

Ein Türschloss-System umfasst zwei Hauptteile:

  • Türschloss: ESP32, RFID/NFC-Leser, Solenoid-Schloss oder elektromagnetisches Schloss
  • Türschlüssel: RFID/NFC-Tags
ESP32 ESP32 RFID-Türschlosskomponente

Wie RFID/NFC-Türschloss funktioniert

  • Die UIDs der autorisierten Tags (Schlüssel) sind im ESP32-Code vordefiniert.
  • Wenn ein RFID-/NFC-Tag an den RFID-/NFC-Leser gehalten wird.
  • Der ESP32 liest die UID vom Leser aus.
  • Der ESP32 vergleicht die UID mit den vordefinierten UIDs.
  • Wenn eine UID übereinstimmt, deaktiviert der ESP32 die elektromagnetische Türverriegelung, um die Tür zu entriegeln.

Verdrahtungsdiagramm

ESP32 RFID RC522 Türschloss-System Verdrahtungsdiagramm

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

※ Notiz:

Die Reihenfolge der Pins kann je nach Hersteller variieren. IMMER die auf dem Modul aufgedruckten Beschriftungen verwenden. Das obige Bild zeigt die Pinbelegung der Module des Herstellers DIYables.

ESP32-Code - Eine Taste

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32/esp32-rfid-nfc-door-lock-system */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte keyTagUID[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, HIGH); // lock the door Serial.println("Tap an RFID/NFC tag on the RFID-RC522 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] == keyTagUID[0] && rfid.uid.uidByte[1] == keyTagUID[1] && rfid.uid.uidByte[2] == keyTagUID[2] && rfid.uid.uidByte[3] == keyTagUID[3] ) { Serial.println("Access is granted"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 2 seconds delay(2000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.print("Access denied, UID:"); 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

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Geben Sie im Suchfeld „MFRC522“ ein, suchen Sie dann nach der Bibliothek von GithubCommunity
  • Installieren Sie die Bibliothek, indem Sie auf die Installieren-Schaltfläche klicken.
ESP32 MFRC522-Bibliothek
  • Ermitteln Sie die UID des Tags, indem Sie die folgenden Schritte ausführen:
    • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino-IDE ein.
    • Kompilieren Sie den Code und laden Sie ihn auf das ESP32-Board hoch, indem Sie in der Arduino-IDE auf die Upload-Schaltfläche klicken
    • Öffnen Sie den Serial Monitor in der Arduino-IDE
    Wie öffnet man den seriellen Monitor in der Arduino IDE?
    • Berühren Sie ein RFID/NFC-Tag, dem Sie am RFID-RC522-Leser eine Autorisierung erteilen möchten.
    • Notieren Sie die im seriellen Monitor angezeigte UID.
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Access denied, UID: 2B B8 59 B1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Aktualisiere die UID in Zeile 18 des obigen Codes. Zum Beispiel ändere byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; zu byte keytagUID[4] = {0x2B, 0xB8, 0x59, 0xB1};
    • Lade den Code erneut auf den ESP32 hoch.
    • Tippe einen RFID/NFC-Tag auf das RFID-RC522-Modul.
    • Sieh das Ergebnis im Serial Monitor.
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Access is granted
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Überprüfen Sie das elektromagnetische Schloss; es sollte deaktiviert sein
    • Legen Sie einen weiteren RFID/NFC-Tag auf das RFID-RC522-Modul
    • Sehen Sie das Ergebnis im Serial Monitor
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Access is granted Access denied, UID: 1C 2A 52 E3
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

ESP32-Code - Mehrere Tasten

Lass uns ein Schloss bauen, das zwei Schlüssel akzeptiert: den Manager-Schlüssel und den Sekretär-Schlüssel, um die Tür zu öffnen.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32/esp32-rfid-nfc-door-lock-system */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte managerKeyUID[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte secretaryKeyUID[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, HIGH); // lock the door Serial.println("Tap an RFID/NFC tag on the RFID-RC522 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] == managerKeyUID[0] && rfid.uid.uidByte[1] == managerKeyUID[1] && rfid.uid.uidByte[2] == managerKeyUID[2] && rfid.uid.uidByte[3] == managerKeyUID[3] ) { Serial.println("The access is granted to manager"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 2 seconds delay(2000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else if (rfid.uid.uidByte[0] == secretaryKeyUID[0] && rfid.uid.uidByte[1] == secretaryKeyUID[1] && rfid.uid.uidByte[2] == secretaryKeyUID[2] && rfid.uid.uidByte[3] == secretaryKeyUID[3] ) { Serial.println("The access is granted to secretary"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 2 seconds delay(2000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.print("Access denied, UID:"); 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

  • Zwei autorisierte RFID/NFC-Tag-UUIDs in den Code aufgenommen.
  • Den Code auf den ESP32 hochladen.
  • Berühren Sie die autorisierten Tags nacheinander am RFID-RC522-Modul.
  • Das Ergebnis im seriellen Monitor:
COM6
Send
Tap an RFID/NFC tag on the RFID-RC522 reader The access is granted to manager The access is granted to secretary
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Sie können den Code so ändern, dass drei, vier oder mehr Tags hinzugefügt werden.

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!