ESP32 - Cerradura de Puerta con Teclado Numérico

Este tutorial te guiará sobre cómo crear un sistema de cerradura de puerta con una contraseña usando un teclado numérico y una cerradura de solenoide. El sistema abrirá la puerta cuando se introduzca la contraseña correcta y mantendrá la puerta desbloqueada durante 20 segundos antes de volver a cerrarse automáticamente. El código para ESP32 también puede admitir varias contraseñas.

※ Nota:

Además de este tutorial, también tenemos otros tutoriales sobre sistemas de cerradura de puertas disponibles:

Acerca del teclado numérico y de la cerradura de solenoide

Tenemos tutoriales separados que se enfocan específicamente en teclados numéricos y cerraduras de solenoide. Cada tutorial proporciona información detallada e instrucciones paso a paso sobre la asignación de pines de hardware, el principio de funcionamiento, las conexiones de cableado al ESP32, el código para ESP32 y más. Para obtener más información sobre estos tutoriales, consulte los siguientes enlaces:

Diagrama de Cableado

  • ESP32 - Cerradura de puerta con teclado numérico, cerradura de solenoide
ESP32, teclado, diagrama de cableado de la cerradura de solenoide

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Código ESP32 - Sistema de cierre de puertas con contraseña mediante teclado numérico, cerradura de solenoide

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/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 } } }

Pasos R\u00e1pidos

  • Conecta el ESP32 a tu PC usando un cable USB.
  • Abre el IDE de Arduino y selecciona la placa y el puerto adecuados.
  • Haz clic en el ícono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca la biblioteca “keypad”, luego encuentra la biblioteca keypad creada por Mark Stanley y Alexander Brevig.
  • Haz clic en el botón Instalar para instalar la biblioteca keypad.
Biblioteca de teclado para ESP32
  • Copia el código proporcionado y pégalo en el IDE de Arduino.
  • Compila y sube el código a la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino.
  • Abre el Monitor Serial en el IDE de Arduino.
  • Pulsa las teclas 12345 y luego pulsa #
  • Pulsa las teclas 1234567 y luego pulsa #
  • Observa el estado de la lengüeta de la cerradura durante 20 segundos.
  • Observa la salida en el Monitor Serial.
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  

Explicación del código

En este sistema, las contraseñas válidas están preprogramadas en el código del ESP32. Una cadena de entrada se utiliza para almacenar la contraseña ingresada por los usuarios. El teclado tiene dos teclas especiales, * y #, que se utilizan para borrar y terminar la contraseña introducida. El sistema funciona de la siguiente manera:

  • Cuando se pulsa una tecla distinta de las teclas especiales, se añade a la cadena de entrada.
  • Cuando se pulsa la tecla *, la cadena de entrada se borra y se puede reiniciar el proceso de introducción de la contraseña.
  • Cuando se pulsa la tecla #:
    • La cadena de entrada se compara con las contraseñas predefinidas. Si coincide con alguna de las contraseñas predefinidas, se activa el relé para desbloquear la puerta.
    • Independientemente de si la contraseña es correcta o no, la cadena de entrada se borra para la siguiente entrada.

    ※ Nota:

    • En el código anterior, para simplificarlo, usamos la función delay. Es mejor usar millis() en lugar de delay(). Consulte Cómo usar millis() en lugar de delay()
    • Puede agregar un zumbador piezoeléctrico para que emita un pitido cada vez que se presione el teclado.
    • En los códigos anteriores, la puerta se bloquea de nuevo después de 20 segundos. Puedes reemplazarla por un sensor de puerta; la puerta se bloquea cuando el sensor de la puerta detecta que la puerta está cerrada por el usuario.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!