Arduino - Cerradura de Puerta con Teclado Numérico
En este tutorial, aprendemos cómo crear un sistema de cerradura para puertas con contraseña usando un teclado numérico y una cerradura de solenoide.
Cuando la puerta se desbloquea con una contraseña correcta, permanece desbloqueada durante 20 segundos y luego se bloquea de nuevo automáticamente. El código de Arduino admite varias contraseñas.
※ Nota:
También tenemos otros tutoriales de sistemas de cierre de puertas:
Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca de la cerradura de teclado y solenoide
Si no conoces la cerradura de solenoide y el botón (disposición de pines, cómo funciona, cómo programarlos), aprende sobre ellos en los siguientes tutoriales:
Diagrama de Cableado
- Arduino - Cerradura de puerta con teclado numérico y cerradura de solenoide

This image is created using Fritzing. Click to enlarge image
Código de Arduino - Sistema de cerradura con contraseña utilizando un teclado numérico y cerradura de solenoide
※ Nota:
La dirección I2C del LCD puede variar según los fabricantes. En el código, usamos 0x27, tal como lo indica el fabricante DIYables.
Pasos R\u00e1pidos
- Conecta Arduino a la PC mediante un cable USB
- Abre Arduino IDE, selecciona la placa correcta y el puerto correcto
- Navega hasta el icono Bibliotecas en la barra izquierda del Arduino IDE.
- Busca “keypad”, luego encuentra la biblioteca keypad de Mark Stanley, Alexander Brevig
- Haz clic en el botón Instalar para instalar la biblioteca keypad.

- Copia el código anterior y ábrelo con el IDE de Arduino.
- Haz clic en el botón Subir en el IDE de Arduino para cargar el código en Arduino.
- Abre el Monitor Serial.
- Presiona las teclas 12345 y presiona #.
- Presiona las teclas 1234ABC y presiona #.
- Mira el estado de la lengüeta de la cerradura durante 20 segundos.
- Mira el resultado en el Monitor Serial.
Explicación del código
Las contraseñas válidas están predefinidas en el código de Arduino.
Se utiliza una cadena para almacenar la contraseña introducida por los usuarios, llamada cadena de entrada. En el teclado numérico, dos teclas (* y #) se utilizan para fines especiales: borrar la contraseña y finalizar la entrada de la contraseña. El sistema funciona de la siguiente manera:
- Excepto dos teclas especiales, si se pulsa otra tecla, se añade a la cadena de entrada
- Si se pulsa *, la cadena de entrada se borra. Puedes usarla para empezar o reiniciar la introducción de la contraseña
- Si se pulsa #:
- La cadena de entrada se compara con las contraseñas predefinidas. Si coincide con alguna de las contraseñas predefinidas, controla el relé para abrir la puerta.
- Independientemente de si la contraseña es correcta o no, la cadena de entrada se borra para la siguiente entrada.
- 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 se oiga 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 reemplazarlo por un sensor de puerta. La puerta se bloquea cuando el sensor de la puerta detecta que está cerrada por el usuario.
- En el código anterior, las contraseñas están codificadas de forma fija. En la práctica, debería ser posible añadir/eliminar/cambiar contraseñas dinámicamente mediante un modo especial. Si es así, las contraseñas deben guardarse en la memoria EEPROM. El número de contraseñas que se guarden dependerá del tamaño de la EEPROM. El código se volverá más complicado. Si quieres construir un sistema así, ofrecemos un servicio de programación. No dude en ponerse en contacto con nosotros.
※ Nota:
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.