ESP32 - Clavier - Serrure électromagnétique

Dans ce tutoriel, nous allons apprendre à utiliser un clavier numérique, un verrou électromagnétique et un ESP32 ensemble. En détail, si un utilisateur saisit correctement le mot de passe sur le clavier, l'ESP32 active le verrou électromagnétique.

Le tutoriel fournit également le code qui active un verrou électromagnétique pendant une période de temps puis le désactive sans utiliser la fonction delay(). Le code ESP32 prend également en charge plusieurs mots de passe.

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Keypad 3x4
1×Relay
1×Jumper Wires
1×Electromagnetic Lock
1×12V Power Adapter
1×(Optional) DC Power Jack
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

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

Non familiarisé avec le clavier et le verrou électromagnétique, y compris leurs brochages, fonctionnalités et programmation ? Explorez des tutoriels complets sur ces sujets ci-dessous :

Diagramme de câblage

Schéma de câblage du verrou électromagnétique à clavier ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32 - activer le verrou électromagnétique si le mot de passe est correct

Les codes ci-dessous activent un verrou électromagnétique si le mot de passe est correct.

/* * 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-keypad-electromagnetic-lock */ #include <Keypad.h> #define RELAY_PIN 19 // ESP32 pin GPIO19 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] = {12, 14, 27, 26}; // ESP32 pin: GPIO12, GPIO14, GPIO27, GPIO26 connected to the row pins byte pin_column[COLUMN_NUM] = {25, 33, 32}; // ESP32 pin: GPIO25, GPIO33, GPIO32 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

  • Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Effectuez le câblage comme sur l'image ci-dessus.
  • Connectez la carte ESP32 à votre PC via un câble micro USB.
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32) et le port COM.
  • Connectez l'ESP32 au PC via un câble USB.
  • Ouvrez Arduino IDE, sélectionnez la bonne carte et le port.
  • Cliquez sur l'icône Libraries dans la barre gauche de l'Arduino IDE.
  • Recherchez "keypad", puis trouvez la bibliothèque keypad de Mark Stanley, Alexander Brevig.
  • Cliquez sur le bouton Install pour installer la bibliothèque keypad.
Bibliothèque de clavier ESP32
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour téléverser le code sur ESP32
Téléversement de code Arduino IDE
  • Appuyez sur les touches 8123 puis appuyez sur #
  • Appuyez sur les touches 1234 puis appuyez sur #
  • Vérifiez le résultat sur le moniteur série et l'état du verrou électromagnétique
COM6
Send
The password is incorrect, try again The password is correct => unlock
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du code

Les mots de passe autorisés sont prédéfinis dans le code ESP32.

Une chaîne est utilisée pour stocker le mot de passe saisi par les utilisateurs, appelée chaîne d'entrée. Sur le clavier, deux touches (* et #) sont utilisées à des fins spéciales : effacer le mot de passe et terminer le mot de passe. Lorsqu'une touche du clavier est pressée :

  • Si la touche pressée n'est pas l'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. Vous pouvez l'utiliser pour commencer ou recommencer à saisir le mot de passe.
  • Si la touche pressée est # :
    • La chaîne de saisie est comparée aux mots de passe prédéfinis. Si elle correspond à l'un des mots de passe prédéfinis, le verrou électromagnétique est activé.
    • Que le mot de passe soit correct ou non, la chaîne de saisie est effacée pour la prochaine saisie.

Code ESP32 - activer un verrou électromagnétique pendant une période si le mot de passe est correct

Le code ci-dessous active la serrure électromagnétique pendant 5 secondes si le mot de passe est correct. Après 5 secondes, la serrure électromagnétique est désactivée.

/* * 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-keypad-electromagnetic-lock */ #include <Keypad.h> #include <ezOutput.h> #define UNLOCK_TIME 5000 // in milliseconds #define RELAY_PIN 19 // ESP32 pin GPIO19 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] = {12, 14, 27, 26}; // ESP32 pin: GPIO12, GPIO14, GPIO27, GPIO26 connected to the row pins byte pin_column[COLUMN_NUM] = {25, 33, 32}; // ESP32 pin: GPIO25, GPIO33, GPIO32 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 du temps de manière non bloquante. Vous pouvez consulter le Guide d'installation de la bibliothèque ezOutput

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!