Système de verrouillage de porte ESP32 - RFID/NFC

Ce tutoriel vous explique comment utiliser l'ESP32 pour réaliser un système de verrouillage de porte RFID/NFC.

※ Note:

Vous pouvez combiner cette serrure de porte avec le Système de verrouillage de porte avec mot de passe utilisant ESP32..

À propos du module RFID/NFC RC522 et de la serrure électromagnétique

Nous avons des tutoriels spécifiques sur le module RFID/NFC RC522 et la serrure électromagnétique. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage du matériel, le principe de fonctionnement, la connexion des fils à l'ESP32, le code ESP32... Pour en savoir plus, consultez les liens suivants :

#Composants du système

Un système de verrouillage de porte comprend deux parties principales :

  • Serrure de porte : ESP32, lecteur RFID/NFC, serrure à solénoïde ou serrure électromagnétique
  • Clé de porte : étiquettes RFID/NFC
Composant de serrure de porte RFID ESP32

Comment fonctionne une serrure de porte RFID/NFC

  • Les UID des étiquettes autorisées (clé) sont prédéfinies dans le code ESP32
  • Lorsqu'une étiquette RFID/NFC est tapée sur le lecteur RFID/NFC
  • L'ESP32 lit l'UID depuis le lecteur
  • L'ESP32 compare l'UID avec les UID prédéfinis
  • Si un UID correspond, l'ESP32 désactive la serrure électromagnétique pour déverrouiller la porte.

Diagramme de câblage

Schéma de câblage du système de verrouillage de porte ESP32 RFID RC522

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, consultez les instructions dans le tutoriel suivant : Comment alimenter l'ESP32..

※ Note:

L'ordre des broches peut varier selon les fabricants. Utilisez TOUJOURS les étiquettes imprimées sur le module. L'image ci-dessus montre le schéma des broches des modules du fabricant DIYables.

Code ESP32 - Clé Unique

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 } } }

Étapes rapides

  • Si c'est la première fois que vous utilisez ESP32, consultez Installation du logiciel ESP32..
  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  • Tapez "MFRC522" dans la boîte de recherche, puis recherchez la bibliothèque par GithubCommunity
  • Installez la bibliothèque en cliquant sur le bouton Install.
Bibliothèque ESP32 MFRC522
  • Découvrez l'UID de l'étiquette en suivant les étapes ci-dessous :
    • Copiez le code ci-dessus et collez-le dans l'IDE Arduino.
    • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload de l'IDE Arduino.
    • Ouvrez le moniteur série sur l'IDE Arduino.
    Comment ouvrir le moniteur série sur Arduino IDE
    • Appuyez sur une étiquette RFID/NFC que vous souhaitez autoriser sur le lecteur RFID-RC522
    • Notez l'UID affiché sur le moniteur série
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Access denied, UID: 2B B8 59 B1
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2
    • Mettez à jour l'UID dans la ligne 18 du code ci-dessus. Par exemple, changez byte keytagUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; en byte keytagUID[4] = {0x2B, 0xB8, 0x59, 0xB1};
    • Téléversez à nouveau le code sur l'ESP32
    • Tapez une étiquette RFID/NFC sur le module RFID-RC522
    • Vérifiez le résultat sur le moniteur série
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Access is granted
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2
    • Vérifiez le verrou électromagnétique, il doit être désactivé
    • Tapez un autre tag RFID/NFC sur le module RFID-RC522
    • Consultez le résultat sur le moniteur série
    Newbiely | Arduino IDE 2.3.8
    ──
    File
    Edit
    Sketch
    Tools
    Help
    ESP32 Dev Module
    Newbiely.ino
    ···
    8 Serial.println("Hello World!");
    Output
    Serial Monitor
    Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
    New Line
    9600 baud
    Tap an RFID/NFC tag on the RFID-RC522 reader Access is granted Access denied, UID: 1C 2A 52 E3
    Ln 11, Col 1
    ESP32 Dev Module on COM15
    2

Code ESP32 - Plusieurs clés

Fabriquons une serrure qui accepte deux clés : la clé du directeur et la clé du secrétaire pour déverrouiller la porte.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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 } } }

Étapes rapides

  • Mis à jour les UUID de deux étiquettes RFID/NFC autorisées dans le code
  • Téléverser le code sur l'ESP32
  • Approcher les étiquettes autorisées une à une sur le module RFID-RC522.
  • Le résultat sur le moniteur série :
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Tap an RFID/NFC tag on the RFID-RC522 reader The access is granted to manager The access is granted to secretary
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Vous pouvez modifier le code pour ajouter trois, quatre ou plus de balises.

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !