ESP32 - RFID/NFC Deurslot Systeem

Deze tutorial leert u hoe u ESP32 gebruikt om een RFID/NFC deurslot systeem te maken.

※ Notiz:

U kunt dit deurslot combineren met het deurslotsysteem met toetsenbord.

Hardware Benodigd

1×ESP-WROOM-32 ontwikkelmodule
1×USB Kabel Type-C
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID Kaart
1×Solenoïde Slot
1×(Alternatief) Elektromagnetisch Slot
1×Relais
1×12V Voeding Adapter
10×Jumperkabels
1×(Optioneel) DC Voedingsconnector
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over RFID/NFC RC522 Module en Elektromagnetisch Slot

We hebben specifieke tutorials over de RFID/NFC RC522 module en het Elektromagnetisch Slot. Elke tutorial bevat gedetailleerde informatie en stap-voor-stap instructies over hardware pinout, werkingsprincipe, bedrading naar ESP32, ESP32 code... Leer er meer over via de volgende links:

Systeemcomponenten

Een deurslotsysteem bestaat uit twee hoofdonderdelen:

  • Deurslot: ESP32, RFID/NFC lezer, solenoïde slot of elektromagnetisch slot
  • Deursleutel: RFID/NFC tags
ESP32 ESP32 rfid door lock component

Hoe werkt het RFID/NFC Deurslot?

  • De UIDs van geautoriseerde tags (sleutels) zijn vooraf gedefinieerd in de ESP32 code
  • Wanneer een RFID/NFC tag op de RFID/NFC lezer wordt geplaatst
  • Leest de ESP32 de UID van de lezer
  • Vergelijkt de ESP32 de gelezen UID met de vooraf gedefinieerde UIDs
  • Als er een match is, schakelt de ESP32 het elektromagnetische slot uit om de deur te ontgrendelen.

Bedradingsschema

ESP32 RFID RC522 Deurslot systeem bedradingsschema

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De volgorde van de pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de module gedrukt staan. De bovenstaande afbeelding toont de pinout van modules van de fabrikant DIYables.

ESP32 Code - Enkelvoudige Sleutel

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 } } }

Snelle Stappen

  • Als dit de eerste keer is dat u de ESP32 gebruikt, bekijk dan hoe u de ESP32-omgeving instelt in Arduino IDE.
  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Typ “MFRC522” in het zoekvak en zoek de library van GithubCommunity.
  • Installeer de library door op de Installeren-knop te klikken.
ESP32 MFRC522 bibliotheek
  • Vind de UID van de tag via de volgende stappen:
    • Kopieer bovenstaande code en plak deze in de Arduino IDE.
    • Compileer en upload de code naar de ESP32 door op de knop Upload te klikken in de Arduino IDE.
    • Open de Seriële Monitor in de Arduino IDE.
    Hoe de seriële monitor openen in Arduino IDE
    • Tik met een RFID/NFC tag op de RFID-RC522 lezer.
    • Noteer de UID die in de Seriële Monitor verschijnt.
    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  
    • Werk de UID bij in regel 18 van bovenstaande code. Bijvoorbeeld, wijzig byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; IN byte keytagUID[4] = {0x2B, 0xB8, 0x59, 0xB1};
    • Upload de code opnieuw naar de ESP32
    • Tik met een RFID/NFC tag op de RFID-RC522 module
    • Bekijk het resultaat in de Seriële Monitor
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Access is granted
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Controleer of het elektromagnetische slot is uitgeschakeld
    • Tik met een andere RFID/NFC tag op de RFID-RC522 module
    • Bekijk het resultaat in de Seriële 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 - Meerdere Sleutels

Laten we een slot maken dat twee sleutels accepteert: de managersleutel en de secretaresse sleutel om de deur te ontgrendelen.

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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 } } }

Snelle Stappen

  • Werk de UUIDs van twee geautoriseerde RFID/NFC tags bij in de code
  • Upload de code naar de ESP32
  • Tik met de geautoriseerde tags één voor één op de RFID-RC522 module.
  • Resultaat in de Seriële 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  

U kunt de code aanpassen om drie, vier of meer tags toe te voegen.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap met de installatie en programmering.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!