ESP32 - Verrouillage de porte à clavier

Ce tutoriel vous guidera sur la façon de créer un système de verrouillage de porte avec un mot de passe utilisant un clavier et un verrou à solénoïde. Le système déverrouillera la porte lorsque le bon mot de passe est saisi et gardera la porte déverrouillée pendant 20 secondes avant de la verrouiller automatiquement. Le code ESP32 est également capable de prendre en charge plusieurs mots de passe.

※ NOTE THAT:

En plus de ce tutoriel, nous proposons également d'autres tutoriels sur les systèmes de verrouillage de porte disponibles :

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Keypad 3x4
1×Relay
1×Solenoid Lock
1×12V Power Adapter
1×(Optional) DC Power Jack
1×Breadboard
1×Jumper Wires
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 numérique et du verrou à solénoïde

Nous disposons de tutoriels distincts qui se concentrent spécifiquement sur les claviers numériques et les serrures à solénoïde. Chaque tutoriel fournit des informations détaillées et des instructions étape par étape sur le brochage du matériel, le principe de fonctionnement, les connexions de câblage à l'ESP32, le code ESP32, et plus encore. Pour plus d'informations sur ces tutoriels, veuillez consulter les liens suivants :

Diagramme de câblage

  • ESP32 - Serrure de porte avec clavier, serrure à solénoïde
Schéma de câblage de l'ESP32, du clavier et de la serrure à solénoïde.

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 - Système de verrouillage de porte avec mot de passe utilisant un clavier, serrure à solénoïde

/* * 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-door-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 = "1234567"; // change your password here const String password_2 = "987654"; // change your password here const String password_3 = "55555"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // lock the door } 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, unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // lock the door } 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

  • Connectez l'ESP32 à votre PC à l'aide d'un câble USB.
  • Ouvrez l'IDE Arduino, sélectionnez la carte adaptée et le port correspondant.
  • Cliquez sur l'icône Libraries dans la barre latérale gauche de l'IDE Arduino.
  • Recherchez la bibliothèque “keypad”, puis trouvez la bibliothèque keypad créée par Mark Stanley et Alexander Brevig.
  • Cliquez sur le bouton Install pour installer la bibliothèque keypad.
Bibliothèque de clavier ESP32
  • Copiez le code fourni et collez-le dans l'IDE Arduino.
  • Compilez et téléchargez le code sur la carte ESP32 en cliquant sur le bouton Upload dans l'IDE Arduino.
  • Ouvrez le moniteur série dans l'IDE Arduino.
  • Appuyez sur les touches 12345 puis sur #
  • Appuyez sur les touches 1234567 puis sur #
  • Observez l'état de la languette de la serrure pendant 20 secondes.
  • Observez la sortie sur le moniteur série.
COM6
Send
The password is incorrect, try again The password is correct, unlocking the door in 20 seconds
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du code

Dans ce système, les mots de passe valides sont préprogrammés dans le code ESP32. Une chaîne de saisie est utilisée pour stocker le mot de passe saisi par les utilisateurs. Le clavier possède deux touches spéciales, * et #, qui sont utilisées pour effacer et terminer le mot de passe saisi. Le système fonctionne comme suit :

  • Lorsqu'une touche autre que les touches spéciales est pressée, elle est ajoutée à la chaîne de saisie.
  • Lorsque la touche * est pressée, la chaîne de saisie est effacée et le processus de saisie du mot de passe peut être recommencé.
  • Lorsque la touche # est pressée :
    • 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 relais est activé pour déverrouiller la porte.
    • Que le mot de passe soit correct ou non, la chaîne de saisie est effacée pour la prochaine saisie.

    ※ NOTE THAT:

    • Dans le code ci-dessus, pour simplifier, nous avons utilisé la fonction delay. Il est préférable d'utiliser millis() au lieu de delay(). Voir Comment utiliser millis() au lieu de delay()
    • Vous pouvez ajouter un buzzer piézoélectrique pour émettre un bip chaque fois que le clavier est pressé.
    • Dans les codes ci-dessus, la porte se verrouille à nouveau après 20 secondes. Vous pouvez le remplacer par un capteur de porte. La porte se verrouille lorsque le capteur de porte détecte que la porte est fermée par l'utilisateur.

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!