ESP32 S3 - Clavier - Serrure à solénoïde

Ce tutoriel vous montre comment combiner un clavier et une serrure à solénoïde avec l'ESP32 S3 pour construire un système d'entrée contrôlé par mot de passe. Quand un utilisateur saisit le bon mot de passe sur le clavier, l'ESP32 S3 active la serrure à solénoïde pour accorder l'accès.

Le tutoriel couvre aussi une variante de déverrouillage temporisé qui active la serrure à solénoïde pendant une durée définie puis la désactive automatiquement — sans utiliser la fonction delay(). Le code prend en charge plusieurs mots de passe afin que vous puissiez enregistrer plus d'un code d'entrée valide.

Ce que vous allez construire :

  1. Un circuit connectant un clavier 3x4, un relais, et une serrure à solénoïde à l'ESP32 S3
  2. Un croquis qui lit un mot de passe depuis le clavier et déverrouille la serrure à solénoïde quand il est correct
  3. Une variante de déverrouillage temporisé qui maintient la serrure ouverte pendant 5 secondes puis se reverrouille automatiquement
  4. Une base pour les projets de contrôle d'accès et de serrure intelligente utilisant l'ESP32 S3

À propos du clavier et de la serrure à solénoïde

Un clavier offre aux utilisateurs une façon familière et sécurisée de saisir des mots de passe numériques ou alphanumériques directement dans un système embarqué sans aucun appareil externe. Une serrure à solénoïde convertit un signal électrique provenant de l'ESP32 S3 (via un relais) en un mouvement mécanique de verrou, ce qui en fait l'actionneur idéal pour le contrôle d'accès physique. Ensemble, ils forment une serrure de porte ou d'armoire autonome et peu coûteuse qui ne nécessite ni smartphone ni connexion réseau.

Spécifications clés

Nous avons des tutoriels dédiés couvrant chaque composant en détail. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage matériel, le principe de fonctionnement, le câblage vers l'ESP32 S3, et le code Arduino. Apprenez-en davantage via les liens suivants :

Schéma de câblage

Connectez le clavier, le relais, et la serrure à solénoïde à votre ESP32 S3 en suivant le schéma ci-dessous. Vérifiez toutes les connexions avant de mettre sous tension, surtout sur le côté haute tension du relais qui pilote la serrure à solénoïde.

ESP32 S3 keypad solenoid lock wiring diagram

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

Vous voulez que le câblage reste bien en place ? Vous pouvez placer la carte ESP32 S3 sur une carte à bornier à vis pour ESP32 S3 et brancher les fils sur ses borniers à vis. Voici le schéma de câblage avec la carte à bornier à vis.

ESP32 S3 keypad solenoid lock wiring diagram (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 :

ESP32 S3 keypad solenoid lock wiring diagram (GPIO Breakout Board)

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

Notes de sécurité

La serrure à solénoïde fonctionne en 12 V CC et doit être alimentée via le relais, pas directement depuis les broches GPIO de l'ESP32 S3. Gardez le câblage 12 V physiquement séparé du câblage basse tension du clavier, et assurez-vous que toutes les bornes à vis du relais sont serrées avant de mettre le circuit sous tension.

Composant Broche Broche ESP32 S3
Clavier Rangée 1 GPIO17
Clavier Rangée 2 GPIO16
Clavier Rangée 3 GPIO15
Clavier Rangée 4 GPIO7
Clavier Colonne 1 GPIO6
Clavier Colonne 2 GPIO5
Clavier Colonne 3 GPIO4
Relais DC- GND
Relais DC+ 5V
Relais IN GPIO18
Serrure à solénoïde + Relay NO
Serrure à solénoïde - 12V GND

Code ESP32 S3 - Activer la serrure à solénoïde si le mot de passe est correct

Le code suivant lit les appuis de touches depuis le clavier sur l'ESP32 S3, les accumule dans une chaîne de saisie, et active la serrure à solénoïde via le relais quand le mot de passe saisi correspond à l'un des mots de passe prédéfinis. Aucune bibliothèque supplémentaire en dehors de la bibliothèque Keypad n'est nécessaire pour cette variante.

/* * 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-solenoid-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 solenoid 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 sur l'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 la carte ESP32 S3 à votre PC avec un câble USB Type-C.
  4. Ouvrez l'Arduino IDE sur votre PC.
  5. Sélectionnez la bonne carte ESP32 S3 et le bon port COM dans le menu Tools.
  6. Cliquez sur l'icône Libraries dans la barre latérale gauche de l'Arduino IDE.
  7. Recherchez "keypad", puis trouvez la bibliothèque Keypad de Mark Stanley et Alexander Brevig.
  8. Cliquez sur 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 pour compiler et téléverser le code vers l'ESP32 S3.
Arduino IDE Upload Code
  1. Appuyez sur les touches 7124 puis appuyez sur # sur le clavier.
  2. Appuyez sur les touches 1234 puis appuyez sur # sur le clavier.
  3. Ouvrez le moniteur série et observez les résultats en parallèle de l'état physique de la serrure à solénoïde.
  4. Astuce : Utilisez la touche * à tout moment pour effacer votre saisie actuelle et recommencer la saisie du mot de passe depuis le début.

Sortie du moniteur série

La sortie du moniteur série suivante montre l'ESP32 S3 répondant aux saisies de mot de passe en temps réel. Les tentatives correctes et incorrectes sont enregistrées afin que vous puissiez vérifier d'un coup d'œil le comportement du contrôle d'accès.

∞
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:02] Key pressed: 7 [2026-06-16 09:14:03] Key pressed: 1 [2026-06-16 09:14:04] Key pressed: 2 [2026-06-16 09:14:04] Key pressed: 4 [2026-06-16 09:14:05] The password is incorrect, try again [2026-06-16 09:14:12] Key pressed: 1 [2026-06-16 09:14:13] Key pressed: 2 [2026-06-16 09:14:13] Key pressed: 3 [2026-06-16 09:14:14] Key pressed: 4 [2026-06-16 09:14:15] 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 variable de type chaîne appelée chaîne de saisie accumule chaque touche que l'utilisateur appuie. Deux touches spéciales du clavier contrôlent le déroulement : * efface la chaîne de saisie afin que vous puissiez recommencer la saisie, et # la termine et déclenche une comparaison. Quand # est appuyée, la chaîne de saisie est comparée à chaque mot de passe prédéfini — si elle correspond à l'un d'eux, la serrure à solénoïde est activée ; indépendamment du résultat, la chaîne de saisie est ensuite effacée, prête pour la prochaine tentative.

Code ESP32 S3 - Activer la serrure à solénoïde pendant une durée définie

Le code suivant déverrouille la serrure à solénoïde pendant 5 secondes quand le mot de passe correct est saisi, puis se reverrouille automatiquement. Le comportement temporisé est implémenté avec la bibliothèque ezOutput afin que l'ESP32 S3 reste réactif aux nouveaux appuis de touches pendant la fenêtre 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-solenoid-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 solenoid 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, turning ON relay"); relay.high(); // set high before making a low pulse relay.pulse(UNLOCK_TIME); // deactivate the solenoid 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 } } }

Le code ci-dessus utilise la bibliothèque ezOutput, qui facilite la gestion de sorties temporisées de manière non bloquante. Vous trouverez les instructions d'installation dans le Guide de la bibliothèque ezOutput.

Applications et idées de projets

Une fois que vous maîtrisez le fonctionnement d'une serrure à solénoïde contrôlée par mot de passe avec l'ESP32 S3, vous pouvez étendre ce modèle à un large éventail de projets de contrôle d'accès et de sécurité.

  1. Serrure d'armoire de bureau : Sécurisez un classeur ou une baie de serveurs avec un code PIN numérique que seul le personnel autorisé connaît.
  2. Serrure de porte domestique : Remplacez une serrure à clé traditionnelle par un verrou à solénoïde contrôlé par clavier sur une porte d'entrée ou arrière.
  3. Coffre-fort : Ajoutez une serrure à solénoïde à un coffre et exigez le bon code PIN avant que le couvercle puisse être libéré.
  4. Système de vestiaires : Attribuez des codes PIN individuels à chaque casier et utilisez un ESP32 S3 par unité pour un fonctionnement autonome.
  5. Accès à un espace de travail partagé : Changez le mot de passe à distance en mettant à jour le firmware afin que seuls les membres actuels puissent entrer.
  6. Laboratoire de sécurité prototype : Construisez un banc de test qui enregistre chaque tentative d'accès sur une console série ou une carte SD à des fins d'audit.

Tutoriel vidéo

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

Relevez le défi

Maintenant que vous pouvez déverrouiller une serrure à solénoïde avec un mot de passe de clavier sur l'ESP32 S3, essayez ces extensions progressivement plus difficiles pour approfondir votre compréhension et créer des projets plus performants.

  1. Débutant : Changez le mot de passe prédéfini dans le code pour un code PIN à six chiffres et vérifiez que les saisies plus courtes sont toujours rejetées.
  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, offrant un retour visuel instantané.
  3. Intermédiaire : Implémentez un mécanisme de verrouillage qui désactive le clavier pendant 30 secondes après trois tentatives de mot de passe incorrectes consécutives.
  4. Intermédiaire : Stockez les mots de passe autorisés dans l'EEPROM ou la mémoire flash afin qu'ils persistent après une coupure d'alimentation et puissent être mis à jour sans reflasher le firmware.
  5. Avancé : Ajoutez une interface Web via WiFi afin qu'un administrateur puisse changer les mots de passe et consulter le journal d'accès depuis un navigateur.
  6. Avancé : Intégrez un écran OLED pour afficher une invite de saisie de mot de passe, un message de succès, et un compte à rebours pendant la fenêtre de déverrouillage.

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 !