ESP32 S3 - Système de Serrure de Porte RFID/NFC

Apprenez à câbler un module RFID/NFC RC522 et une serrure électromagnétique ou à solénoïde contrôlée par relais à un ESP32 S3 pour construire un système de serrure de porte RFID pleinement fonctionnel. En stockant les UID des tags autorisés directement dans le firmware, l'ESP32 S3 accorde ou refuse instantanément l'accès chaque fois qu'une carte ou un tag est présenté au lecteur — sans connexion réseau nécessaire.

Ce que vous allez construire :

  1. Un circuit connectant le module RFID-RC522, un relais, et une serrure électromagnétique ou à solénoïde à l'ESP32 S3
  2. Un firmware qui lit l'UID de n'importe quel tag RFID ou NFC présenté et le compare à une liste stockée d'UID autorisés
  3. Une variante à clé unique qui déverrouille la porte pour un tag autorisé et refuse tous les autres
  4. Une variante multi-clés qui associe chaque tag autorisé à un utilisateur nommé (par exemple, gérant et secrétaire)
Système de serrure de porte RFID ESP32 S3

À propos du Module RFID/NFC RC522 et de la Serrure Électromagnétique

Le RFID-RC522 est un module lecteur 13,56 MHz à faible coût basé sur la puce MFRC522 de NXP Semiconductors. Il communique avec l'ESP32 S3 via SPI, fonctionne en logique 3,3 V (directement compatible avec l'ESP32 S3), et peut détecter les cartes et tags compatibles ISO 14443A à des distances allant jusqu'à environ 5 cm. Une serrure électromagnétique ou à solénoïde convertit un signal électrique de l'ESP32 S3 (acheminé via un relais) en mouvement mécanique du pêne, ce qui en fait l'actionneur idéal pour un système de contrôle d'accès physique.

Spécifications Clés

Nous avons des tutoriels dédiés couvrant chaque composant en profondeur, incluant leur brochage, principe de fonctionnement, et câblage à l'ESP32 S3. En savoir plus sur eux aux liens suivants :

Composants du Système

Un système de serrure de porte construit avec l'ESP32 S3 se compose de deux parties principales :

  • Système de Serrure de Porte : ESP32 S3, lecteur RFID/NFC RC522, relais, et serrure à solénoïde ou électromagnétique
  • Clé de Porte : Tags RFID/NFC (cartes, porte-clés, ou autocollants)
Composant serrure de porte RFID ESP32 S3

Comment Fonctionne la Serrure de Porte RFID/NFC

Les UID des tags autorisés sont prédéfinis dans le firmware de l'ESP32 S3. Quand un utilisateur présente un tag RFID ou NFC sur le lecteur RC522, l'ESP32 S3 lit l'UID renvoyé par le module et le compare à la liste stockée. Si l'UID correspond à une entrée autorisée, l'ESP32 S3 désactive le relais pour déverrouiller la serrure électromagnétique ou à solénoïde ; sinon, l'accès est refusé et la serrure reste engagée.

Schéma de Câblage

Connectez le module RC522, le relais, et la serrure électromagnétique ou à solénoïde à l'ESP32 S3 en suivant le schéma ci-dessous. Gardez les fils SPI entre le RC522 et l'ESP32 S3 courts pour réduire le bruit, et vérifiez toujours la connexion d'alimentation 3,3 V au RC522 avant de mettre le circuit sous tension.

Schéma de câblage Système de Serrure de Porte RFID RC522 ESP32 S3

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

Brancher des fils dans les connecteurs femelles est rapide, mais les fils peuvent glisser. Placez la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3, puis serrez chaque fil sous une vis. Voir le schéma ci-dessous pour la version avec borniers à vis.

Schéma de câblage Système de Serrure de Porte RFID RC522 ESP32 S3 (Screw Terminal)

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

Ou branchez la carte ESP32 S3 sur une carte d'extension GPIO pour ESP32 S3. Le même câblage ressemble alors à ceci :

Schéma de câblage Système de Serrure de Porte RFID RC522 ESP32 S3 (GPIO Breakout Board)

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

Notes de Sécurité

Le module RFID-RC522 fonctionne en 3,3 V — connecter sa broche VCC à 5 V endommagera définitivement le module, donc vérifiez deux fois le rail d'alimentation avant de mettre le circuit sous tension. La serrure électromagnétique ou à solénoïde fonctionne en 12 V DC et doit être commutée via le relais ; ne la connectez jamais directement à une broche GPIO de l'ESP32 S3. Gardez le câblage 12 V du côté charge du relais physiquement séparé du câblage SPI basse tension pour éviter les erreurs de lecture induites par le bruit.

※ Note:

L'ordre des broches sur le module RC522 peut varier selon les fabricants. Utilisez toujours les étiquettes imprimées sur le module lui-même. L'image ci-dessus montre le brochage pour les modules du fabricant DIYables.

Module RFID/NFC RC522 Broche ESP32 S3
SS pin GPIO10 (SS/CS)
SCK pin GPIO12 (SCK)
MOSI pin GPIO11 (MOSI)
MISO pin GPIO13 (MISO)
IRQ pin (non connectée)
GND pin GND
RST pin GPIO9
VCC pin 3.3V

Code ESP32 S3 - Clé Unique

Le code suivant initialise le bus SPI et la bibliothèque MFRC522, puis scrute en continu pour un nouveau tag. Quand un tag est détecté, son UID est lu et comparé à l'unique UID autorisé stocké dans le firmware — s'ils correspondent, le relais est brièvement activé pour déverrouiller la porte ; sinon, l'UID est affiché sur le Serial Monitor et l'accès est refusé.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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-s3/esp32-s3-rfid-door-lock-system */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-rfid-door-lock-system */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // ESP32-S3 pin GPIO10 #define RST_PIN 9 // ESP32-S3 pin GPIO9 #define RELAY_PIN 7 // ESP32-S3 pin GPIO7 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

  1. Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez les composants en suivant le schéma de câblage montré ci-dessus.
  3. Connectez l'ESP32 S3 à votre ordinateur en utilisant un câble USB Type-C.
  4. Ouvrez l'Arduino IDE sur votre ordinateur.
  5. Sélectionnez la bonne carte ESP32 S3 et le bon port COM dans le menu Tools.
  6. Cliquez sur l'icône Libraries sur la barre de gauche de l'Arduino IDE.
  7. Tapez "MFRC522" dans la boîte de recherche, puis cherchez la bibliothèque par GithubCommunity.
  8. Cliquez sur Install pour installer la bibliothèque MFRC522.
  • Search for MFRC522 created by GithubCommunity and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
MFRC522 by GithubCommunity
Read/Write a RFID Card or Tag using the ISO/IEC 14443A/MIFARE interface. More info
1.4.11
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Copiez le code ci-dessus et collez-le dans l'Arduino IDE.
  2. Cliquez sur Upload pour compiler et téléverser le code sur l'ESP32 S3.
Téléverser le code sur Arduino IDE
  1. Ouvrez le Serial Monitor dans l'Arduino IDE après le téléversement.
Comment ouvrir le Serial Monitor sur Arduino IDE
  1. Présentez un tag RFID ou NFC que vous voulez autoriser sur le lecteur RC522 et notez l'UID affiché dans le Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:14:22] Tap an RFID/NFC tag on the RFID-RC522 reader [2026-06-16 09:14:35] Access denied, UID: 2B B8 59 B1
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2
  1. Mettez à jour l'UID à 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};
  2. Téléversez à nouveau le code mis à jour sur l'ESP32 S3.
  3. Présentez le tag RFID/NFC autorisé sur le lecteur RC522 et vérifiez le Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:15:01] Tap an RFID/NFC tag on the RFID-RC522 reader [2026-06-16 09:15:10] Access is granted
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2
  1. Vérifiez que la serrure électromagnétique ou à solénoïde se désactive (se déverrouille) quand l'accès est accordé.
  2. Présentez un tag différent (non autorisé) et confirmez que la serrure reste engagée.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:15:28] Tap an RFID/NFC tag on the RFID-RC522 reader [2026-06-16 09:15:35] Access denied, UID: 1C 2A 52 E3
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2
  1. Astuce : Pour faciliter les tests, la durée de déverrouillage est réglée à 2 secondes dans le code — augmentez cette valeur avant de déployer le système dans une installation réelle.

Code ESP32 S3 - Clés Multiples

Le code suivant étend l'exemple à clé unique pour prendre en charge plusieurs utilisateurs autorisés, chacun identifié par un UID unique et un nom lisible par un humain stocké dans le firmware. Quand un tag correspondant est présenté, l'ESP32 S3 affiche le nom de l'utilisateur sur le Serial Monitor et déverrouille la porte ; tout tag non reconnu est refusé et son UID est journalisé.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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-s3/esp32-s3-rfid-door-lock-system */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-rfid-door-lock-system */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // ESP32-S3 pin GPIO10 #define RST_PIN 9 // ESP32-S3 pin GPIO9 #define RELAY_PIN 7 // ESP32-S3 pin GPIO7 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

  1. Nouveau sur ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Suivez les mêmes étapes d'installation de bibliothèque et de câblage décrites dans la section à clé unique ci-dessus.
  3. Découvrez l'UID de chaque tag que vous voulez autoriser en exécutant d'abord le code à clé unique (voir l'étape 12 ci-dessus).
  4. Mettez à jour les deux UID autorisés dans le code avec les UID de vos tags de gérant et de secrétaire.
  5. Téléversez le code mis à jour sur l'ESP32 S3.
  6. Présentez le tag du gérant sur le lecteur RC522, puis présentez le tag de la secrétaire, et observez le Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:20:05] Tap an RFID/NFC tag on the RFID-RC522 reader [2026-06-16 09:20:12] The access is granted to manager [2026-06-16 09:20:20] Tap an RFID/NFC tag on the RFID-RC522 reader [2026-06-16 09:20:28] The access is granted to secretary
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2
  1. Astuce : Vous pouvez ajouter trois, quatre, ou plus de tags autorisés en étendant le tableau d'UID dans le code — chaque entrée supplémentaire nécessite un UID de plus et une chaîne de nom de plus.

※ Note:

Dans ce tutoriel, les UID autorisés sont compilés dans le firmware. Pour un système de production, vous stockeriez typiquement les UID dans une mémoire non volatile (comme l'EEPROM ou la flash) afin qu'ils puissent être ajoutés ou supprimés pendant l'exécution sans reflasher. Si vous avez besoin d'aide pour implémenter cette fonctionnalité, n'hésitez pas à nous contacter via notre service de programmation.

Applications et Idées de Projets

L'ESP32 S3 associé à un module RFID RC522 et une serrure contrôlée par relais ouvre une large gamme d'applications de contrôle d'accès et de sécurité qui peuvent être déployées avec un minimum de matériel supplémentaire. Voici des façons pratiques de mettre ce système au travail :

  1. Serrure de porte de bureau : Attribuez une carte RFID par employé et restreignez l'entrée au seul personnel autorisé, avec les tentatives d'accès journalisées sur le Serial Monitor.
  2. Serrure intelligente domestique : Remplacez une clé traditionnelle par une carte RFID ou un porte-clés que seuls les membres de la famille portent.
  3. Sécurité de baie de serveurs : Protégez un équipement informatique sensible à l'intérieur d'une armoire verrouillée qui ne s'ouvre que pour des techniciens de service autorisés.
  4. Système de vestiaire : Donnez à chaque casier son propre pêne à solénoïde contrôlé par RFID piloté par un ESP32 S3 dédié pour un fonctionnement autonome.
  5. Accès à un atelier partagé : Accordez l'accès RFID aux membres enregistrés et journalisez automatiquement chaque entrée à des fins d'audit.
  6. Laboratoire de sécurité de prototype : Construisez un banc de test qui journalise chaque tentative d'accès avec un horodatage sur une carte SD ou une base de données cloud.
  7. Contrôleur de barrière de parking : Remplacez les lecteurs de carte-clé aux barrières de parking par un RC522 et un ESP32 S3 pour autoriser les véhicules par leurs autocollants RFID de pare-brise.

Tutoriel Vidéo

Regardez la vidéo étape par étape pour ce projet ESP32 S3 ci-dessous.

Défiez-vous

Maintenant que votre ESP32 S3 contrôle avec succès une serrure de porte avec des cartes RFID, poussez le projet plus loin avec ces défis progressivement plus difficiles :

  1. Débutant : Ajoutez une LED verte qui s'allume pendant 2 secondes quand l'accès est accordé et une LED rouge qui clignote quand l'accès est refusé.
  2. Débutant : Connectez un buzzer passif et jouez un court bip quand l'accès est accordé et un double bip plus long quand l'accès est refusé.
  3. Intermédiaire : Implémentez un verrouillage qui désactive le lecteur RFID pendant 30 secondes après trois tentatives consécutives de tag non autorisé.
  4. Intermédiaire : Stockez les UID autorisés dans l'EEPROM afin qu'ils survivent aux cycles d'alimentation et puissent être mis à jour sans reflasher l'ESP32 S3.
  5. Avancé : Ajoutez une interface web via le Wi-Fi de l'ESP32 S3 afin qu'un administrateur puisse ajouter ou révoquer des UID autorisés depuis un navigateur sans toucher au matériel.
  6. Avancé : Combinez le lecteur RC522 avec un clavier afin que la porte ne s'ouvre que quand un tag RFID valide et le bon PIN sont présentés ensemble.

Commentaires

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