ESP32 S3 - Clavier - Serrure électromagnétique

Apprendre à combiner un clavier, un relais et une serrure électromagnétique avec l'ESP32 S3 est un excellent moyen de construire des systèmes de contrôle d'accès concrets. Ce tutoriel vous montre comment lire un mot de passe sur un clavier 3x4 et l'utiliser pour contrôler une serrure électromagnétique via un relais — incluant une variante à déverrouillage minuté qui libère la porte pendant une durée fixe sans bloquer l'exécution du code.

Ce que vous allez construire :

  1. Un circuit reliant un clavier 3x4 et une serrure électromagnétique (via un relais) à l'ESP32 S3
  2. Un code qui vérifie le mot de passe saisi et déverrouille la porte s'il correspond à un des codes prédéfinis
  3. Une version étendue qui maintient la porte déverrouillée pendant 5 secondes puis la reverrouille automatiquement
  4. Une sortie du Moniteur Série indiquant si chaque tentative de mot de passe a réussi ou échoué
ESP32 S3 - Clavier - Serrure électromagnétique

À propos du clavier et de la serrure électromagnétique

Un clavier matriciel 3x4 permet aux utilisateurs de saisir des codes numériques à l'aide d'une disposition compacte de 12 touches, tandis qu'une serrure électromagnétique (maglock) utilise une force magnétique pour maintenir une porte fermée tant que l'alimentation est appliquée. Combinés à un relais qui commute l'alimentation 12V de la serrure, ces composants forment un système d'accès complet contrôlé par mot de passe, entièrement géré par l'ESP32 S3 en logiciel.

Spécifications clés

Vous ne connaissez pas le clavier ou la serrure électromagnétique, ni comment les câbler et les programmer individuellement ? Consultez les tutoriels dédiés ci-dessous avant de continuer :

Schéma de câblage

Connectez les broches de lignes et de colonnes du clavier 3x4 aux broches GPIO disponibles de l'ESP32 S3, puis câblez la broche de signal du relais à un GPIO séparé. La serrure électromagnétique se connecte aux contacts normalement ouverts du relais et est alimentée par l'adaptateur 12V, gardant le circuit haute tension de la serrure isolé de la logique de l'ESP32 S3.

Notes de sécurité

La serrure électromagnétique fonctionne en 12V et consomme un courant significatif lorsqu'elle est alimentée — utilisez toujours le relais pour commuter l'alimentation de la serrure et ne connectez jamais les fils de la serrure directement à une broche GPIO de l'ESP32 S3. Assurez-vous que l'adaptateur 12V est dimensionné pour au moins le courant indiqué sur votre serrure électromagnétique, et vérifiez que tout le câblage haute tension est entièrement isolé avant de mettre le système sous tension.

Schéma de câblage ESP32 S3 clavier serrure électromagnétique

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

Component Pin ESP32 S3 Pin Notes
Ligne 1 du clavier GPIO17 Première ligne du clavier 3x4
Ligne 2 du clavier GPIO16 Deuxième ligne
Ligne 3 du clavier GPIO15 Troisième ligne
Ligne 4 du clavier GPIO7 Quatrième ligne
Colonne 1 du clavier GPIO6 Première colonne
Colonne 2 du clavier GPIO5 Deuxième colonne
Colonne 3 du clavier GPIO4 Troisième colonne
Signal du relais (IN) GPIO18 Contrôle l'activation/désactivation du relais
VCC du relais 5V Alimente le module relais
GND du relais GND Masse commune
COM du relais 12V Power + Depuis l'adaptateur d'alimentation
NO du relais Fil 1 de la serrure EM Connexion normalement ouverte
Fil 2 de la serrure EM 12V Power - Complète le circuit

Pour un projet durable, les borniers à vis tiennent mieux les fils que les fils de connexion. Branchez simplement la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3. Voici le même circuit câblé avec la carte à bornier à vis :

Schéma de câblage ESP32 S3 clavier serrure électromagnétique (Screw Terminal)

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

Une autre solution est une carte d'extension GPIO pour ESP32 S3. Chaque GPIO a une broche de signal avec une broche 3,3V et une broche GND à côté, comme ci-dessous :

Schéma de câblage ESP32 S3 clavier serrure électromagnétique (GPIO Breakout Board)

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

Code ESP32 S3 - Activer la serrure électromagnétique si le mot de passe est correct

Le code suivant déverrouille la serrure électromagnétique lorsque l'utilisateur saisit un mot de passe correct sur le clavier et appuie sur la touche #. Il prédéfinit une liste de mots de passe valides, accumule les touches pressées dans une chaîne de saisie, efface cette chaîne lorsque * est pressée, et compare la saisie complète à chaque mot de passe stocké lorsque # est pressée — activant le relais si une correspondance est trouvée et affichant le résultat dans le Moniteur Série.

/* * 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-keypad-electromagnetic-lock */ #include <Keypad.h> #define RELAY_PIN 18 // ESP32-S3 pin GPIO18 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {17, 16, 15, 7}; // ESP32-S3 pin: GPIO17, GPIO16, GPIO15, GPIO7 connected to the row pins byte pin_column[COLUMN_NUM] = {6, 5, 4}; // ESP32-S3 pin: GPIO6, GPIO5, GPIO4 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, HIGH); // lock the electromagnetic lock } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct => unlock"); digitalWrite(RELAY_PIN, LOW); } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Étapes rapides

  1. Nouveau avec l'ESP32 S3 ? Complétez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez le clavier, le relais et la serrure électromagnétique à l'ESP32 S3 selon le schéma de câblage ci-dessus.
  3. Connectez l'ESP32 S3 à votre ordinateur à l'aide d'un câble USB Type-C.
  4. Ouvrez l'Arduino IDE sur votre ordinateur.
  5. Sélectionnez votre carte : choisissez la bonne carte ESP32 S3 dans le menu Tools > Board.
  6. Choisissez votre port : sélectionnez le bon port COM dans le menu Tools > Port.
  7. Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  8. Recherchez "keypad", puis trouvez la bibliothèque keypad par DIYables.
  9. Cliquez sur le bouton Install pour installer la bibliothèque keypad.
  • Search for DIYables_Keypad created by DIYables.io 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
DIYables_Keypad by DIYables.io
The library is designed for Arduino, ESP32, ESP8266... to use with keypad such as 3x4, 4x4 keypad. It also works with Arduino Uno R4 WiFi/Minima More info
1.0.1
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 le bouton Upload de l'Arduino IDE pour téléverser le code sur l'ESP32 S3.
  3. Appuyez sur les touches 8123 puis sur #.
  4. Appuyez sur les touches 1234 puis sur #.
  5. Consultez le Moniteur Série et observez l'état de la serrure électromagnétique.
  6. Astuce pro : Appuyez sur * à tout moment pour effacer la saisie en cours et recommencer — utile si vous faites une erreur de frappe en cours de mot de passe.

Sortie du Moniteur Série

Ouvrez le Moniteur Série à 115200 bauds après le téléversement et saisissez des mots de passe sur le clavier. Vous verrez des messages d'état similaires à la sortie suivante :

∞
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:04] The password is incorrect, try again [2026-06-16 09:15:21] The password is correct => unlock [2026-06-16 09:15:43] The password is incorrect, try again [2026-06-16 09:16:02] The password is correct => unlock
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Explication du code

Les mots de passe autorisés sont prédéfinis dans le code de l'ESP32 S3. Une chaîne de caractères est utilisée pour stocker le mot de passe saisi par l'utilisateur, appelée chaîne de saisie. Deux touches du clavier (* et #) servent à des fins spéciales — effacer la saisie et finaliser l'entrée. Lorsqu'une touche est pressée :

  • Si la touche pressée n'est pas une des deux touches spéciales, elle est ajoutée à la chaîne de saisie.
  • Si la touche pressée est *, la chaîne de saisie est effacée afin que l'utilisateur puisse commencer ou recommencer la saisie.
  • Si la touche pressée est # :
    • La chaîne de saisie est comparée à tous les mots de passe prédéfinis. Si elle correspond à l'un d'entre eux, la serrure électromagnétique est activée.
    • Que le mot de passe soit correct ou non, la chaîne de saisie est effacée pour la prochaine tentative.

Code ESP32 S3 - Activer la serrure électromagnétique pendant une durée si le mot de passe est correct

Le code suivant étend l'exemple de base en déverrouillant la serrure électromagnétique pendant 5 secondes lorsque le bon mot de passe est saisi, puis en la reverrouillant automatiquement. Il utilise la bibliothèque ezOutput pour gérer la sortie minutée de manière non bloquante, afin que le clavier continue de répondre pendant la période de déverrouillage.

/* * 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-keypad-electromagnetic-lock */ #include <Keypad.h> #include <ezOutput.h> #define UNLOCK_TIME 5000 // in milliseconds #define RELAY_PIN 18 // ESP32-S3 pin GPIO18 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {17, 16, 15, 7}; // ESP32-S3 pin: GPIO17, GPIO16, GPIO15, GPIO7 connected to the row pins byte pin_column[COLUMN_NUM] = {6, 5, 4}; // ESP32-S3 pin: GPIO6, GPIO5, GPIO4 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); ezOutput relay(RELAY_PIN); const String password_1 = "1234"; // change your password here const String password_2 = "56789"; // change your password here const String password_3 = "901234"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed relay.high(); // lock the electromagnetic lock } void loop() { relay.loop(); // MUST call the loop() function first char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct => unlock"); relay.high(); // set high before making a low pulse relay.pulse(UNLOCK_TIME); // deactivate the electromagnetic lock during UNLOCK_TIME duration } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Veuillez noter que le code ci-dessus utilise la bibliothèque ezOutput, qui facilite la gestion de sorties minutées sans bloquer l'exécution du code. Vous pouvez consulter le Guide d'installation de la bibliothèque ezOutput pour les instructions d'installation.

Applications concrètes

Combiner un clavier, un relais et une serrure électromagnétique avec l'ESP32 S3 ouvre la porte à une grande variété d'applications de sécurité et d'automatisation, des simples prototypes aux systèmes de contrôle d'accès de niveau production.

  1. Serrure de porte résidentielle : Remplacez une serrure à clé traditionnelle par un système d'entrée par code PIN sur une porte avant ou arrière.
  2. Contrôle d'accès de bureau : Restreignez l'accès à certaines pièces ou zones à l'aide de codes PIN attribués aux employés, avec journalisation optionnelle des événements.
  3. Sécurité de laboratoire ou d'atelier : Empêchez l'accès non autorisé à des équipements ou matériels sensibles à l'aide d'un maglock sécurisé par code.
  4. Armoire de stockage : Sécurisez électroniquement un classeur ou un casier à outils à l'aide d'un relais et d'une serrure plus petits.
  5. Accès multi-utilisateurs : Stockez plusieurs mots de passe valides dans le sketch afin que différents utilisateurs disposent chacun de leur propre code PIN unique.
  6. Sécurité améliorée par l'IoT : Étendez le système avec le Wi-Fi de l'ESP32 S3 pour permettre un déverrouillage à distance ou l'envoi d'alertes lorsqu'un mot de passe incorrect est saisi de manière répétée.

Vidéo tutoriel

Regardez ci-dessous la vidéo pas à pas de ce projet ESP32 S3.

Défiez-vous

Maintenant que vous avez une serrure électromagnétique contrôlée par clavier fonctionnelle sur l'ESP32 S3, essayez ces extensions progressivement plus difficiles pour développer des compétences plus poussées en contrôle d'accès.

  1. Débutant : Changez un des mots de passe prédéfinis dans le code et confirmez que le nouveau code fonctionne et que l'ancien ne fonctionne plus.
  2. Débutant : Ajoutez un indicateur LED qui s'allume en vert pour un mot de passe correct et en rouge pour un mot de passe incorrect.
  3. Intermédiaire : Ajoutez un buzzer piézoélectrique qui joue une courte mélodie de succès lors d'une saisie correcte et une tonalité différente en cas d'échec.
  4. Intermédiaire : Implémentez un verrouillage qui désactive la saisie au clavier pendant 60 secondes après trois tentatives incorrectes consécutives.
  5. Avancé : Stockez la liste des mots de passe dans la flash NVS afin qu'elle persiste entre les cycles d'alimentation, et ajoutez un code administrateur permettant à l'utilisateur de mettre à jour les mots de passe à l'exécution.
  6. Avancé : Intégrez un lecteur RFID afin que la porte puisse être déverrouillée soit avec un code PIN au clavier, soit avec une carte RFID.

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 !