Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Sistema de cerradura de puerta sin llave Arduino con teclado y LCD

Componentes y suministros

Arduino UNO
× 1
Panel de botones SparkFun 4x4 - Compatible con LED
× 1
LCD estándar Adafruit - 16x2 blanco sobre azul
× 1
Retransmisión (genérico)
× 1
batería de 9V (genérica)
× 1
Potenciómetro de una sola vuelta - 10k ohmios
× 1
Resistencia de 10k ohmios
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Sistema de cerradura de puerta sin llave Arduino con teclado y LCD

0

0

Por Ali Hamza

En este proyecto, vamos a hacer un sistema de cerradura de puerta sin llave que usa un teclado 4X4 para ingresar las llaves y una cerradura de CC para abrir o cerrar la puerta. Se utilizará una pantalla LCD de 16X2 para la visualización.

Componentes necesarios

Los componentes necesarios para este proyecto son los siguientes

  • Arduino
  • Teclado 4X4
  • LCD
  • Bloqueo DC
  • Relevo
  • batería de 9 V
  • Potenciómetro de 10k
  • Resistencia de 220 ohmios

¿Cómo funciona?

Siempre que se presionan las teclas, se emparejan con las teclas ya almacenadas. Si las teclas que se presionan coinciden con la contraseña inicial almacenada en la EEPROM, que es "1234", la cerradura se abrirá. Si la contraseña no coincide, se imprimirá "acceso denegado" en la pantalla LCD.

Si se presiona la tecla "#", le pedirá que ingrese la contraseña actual y, si coincide, le pedirá que ingrese la nueva contraseña y se cambiará la contraseña.

Diagrama de circuito

Primero, conecte el teclado 4X4 al Arduino; conecte los primeros seis pines en el teclado 4X4 con los pines A0 y A5 en el Arduino. Luego, conecte los dos últimos pines del módulo de teclado 4X4 a los pines digitales 3 y 2 del Arduino.

Después de eso, conecte la pantalla LCD al Arduino. Las conexiones para conectar la pantalla LCD con el Arduino son las siguientes

  • Conecte el pin 1 en la pantalla LCD, que es el pin VSS, a GND en el Arduino
  • Conecte el pin 2, que es el pin VDD, al pin 5V en el Arduino
  • Conecte el pin 3, que es el V0, al medio del potenciómetro de 10k y conecte los otros dos pines del potenciómetro a 5V y GND en el Arduino. Este pin es para configurar el contraste de la pantalla LCD.
  • Conecte el pin 4, que es el pin RS, al pin 7 en el Arduino
  • Conecte el pin 5, que es el pin R / W, al pin GND en el Arduino
  • Conecte el pin 6, que es el pin Habilitar, al pin 6 en el Arduino
  • Conecte los pines 11, 12, 13 y 14, que son los pines de datos, a los pines 5, 4, 3 y 2 del Arduino
  • Conecte el pin 15, que es el pin de luz de fondo de la pantalla LCD, a 5V en el Arduino a través de la resistencia de 220 ohmios
  • Conecte el pin 16 en el Arduino, que es el pin negativo de la luz de fondo, a GND en el Arduino

Por último, conectaremos el bloqueo de CC con el Arduino. El bloqueo funciona con un voltaje de 7 a 12 V, por lo que no podemos conectarlo directamente al Arduino. Para conectarlo al Arduino, necesitaremos un relé y una batería.

Conecte el pin de señal del relé al pin 10 en el Arduino y el VCC y GND de la cerradura a 5V y GND en el Arduino. Luego, en el otro extremo del relé, conecte el negativo de la batería al común en el relé y el NO (normalmente abierto) en el relé a un lado de la cerradura. Luego, conecte el otro lado de la cerradura al terminal positivo de la batería.

Código de bloqueo del teclado Arduino

La contraseña inicial es 1234.

  #include  #include  #include  LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); char contraseña [4]; char initial_password [4], new_password [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; columnas de bytes constantes =4; char hexaKeys [filas] [columnas] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte row_pins [filas] ={A0, A1, A2, A3}; byte column_pins [columnas] ={A4, A5,3,2}; Keypad keypad_key =Teclado (makeKeymap (hexaKeys), row_pins, column_pins, filas, columnas); void setup () {pinMode (relay_pin, OUTPUT); visualización_cristales_líquidos.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Cerradura electrónica"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); initialpassword ();} bucle vacío () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); if (tecla_primida) {contraseña [i ++] =tecla_primida; Liquid_crystal_display.print (tecla_primida); } Si (i ==4) {retraso (200); for (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j); if (! (strncmp (contraseña, contraseña_inicial, 4))) {visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Aprobado aceptado"); digitalWrite (relay_pin, BAJO); retraso (2000); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # para cambiar"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña:"); Liquid_crystal_display.setCursor (0,1); i =0; } Else {digitalWrite (relay_pin, HIGH); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña incorrecta"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # para cambiar"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); i =0; }}} Cambio vacío () {int j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña actual"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {nueva_contraseña [j ++] =clave; Liquid_crystal_display.print (clave); } Clave =0; } Retraso (500); if ((strncmp (nueva_contraseña, contraseña_inicial, 4))) {pantalla_cristal_líquido.clear (); liquid_crystal_display.print ("Contraseña incorrecta"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Intentar de nuevo"); retraso (1000); } Más {j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Nueva contraseña:"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {contraseña_inicial [j] =clave; Liquid_crystal_display.print (clave); EEPROM.write (j, clave); j ++; }} Liquid_crystal_display.print ("Pase cambiado"); retraso (1000); } Visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {for (int j =0; j <4; j ++) EEPROM.write (j, j + 49); para (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j);}  

Explicación del código

En primer lugar, incluiremos las bibliotecas para el teclado 4X4, la pantalla LCD y una biblioteca para almacenar la contraseña. La biblioteca EEPROM se utiliza para almacenar la contraseña. La contraseña predeterminada almacenada en él es "1234".

  #include  #include  #include   

En la función de bucle, la tecla presionada se almacenará en la " tecla_presionada "Variable y se comparará con las otras claves. Si la tecla presionada es "#", entonces se llamará a la función de cambio y le pedirá la nueva contraseña.

  key_pressed =keypad_key.getKey (); if (key_pressed =='#') change ();  

Las teclas presionadas se almacenan en la " contraseña "Variable y estos se muestran en la pantalla LCD cuando se presionan las teclas. Luego, estas claves se compararán con la contraseña inicial almacenada en la EEPROM. Si las teclas que se presionaron coinciden con la contraseña inicial, entonces el candado se abrirá y se imprimirá "Aprobado aceptado" en la pantalla LCD. Si la contraseña no coincide, se le pedirá que ingrese la contraseña nuevamente.

  if (key_pressed) {contraseña [i ++] =key_pressed; Liquid_crystal_display.print (tecla_primida); } si (i ==4) {retraso (200); for (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j); if (! (strncmp (contraseña, contraseña_inicial, 4))) {visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Aprobado aceptado"); digitalWrite (relay_pin, BAJO); retraso (2000);  

Si se presiona la tecla "#", llamará al " cambio () "Función. En la función de cambio, le pedirá que ingrese la contraseña actual. Si la contraseña actual es correcta, le pedirá que ingrese la nueva contraseña. Al ingresar la nueva contraseña, se cambiará la contraseña.

  void change () {int j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña actual"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {nueva_contraseña [j ++] =clave; Liquid_crystal_display.print (clave); } Clave =0; } Retraso (500);  

Etiquetas:Teclado 4x4, Arduino, Bloqueo de CC, Bloqueo de teclas, Teclado, lcd, Bloqueo

Publicaciones recomendadas

Despertador Arduino usando un reloj en tiempo real y una pantalla LCD

Cómo construir un robot de autoequilibrio Arduino

Use un Arduino y un solenoide para hacer bailar una tostadora

Haga un sistema de riego automático de bricolaje con Arduino

Código

  • Fragmento de código n. ° 1
  • Fragmento de código n. ° 2
  • Fragmento de código n. ° 3
  • Fragmento de código n. ° 4
  • Fragmento de código n. ° 5
Fragmento de código n. ° 1 Texto sin formato
 #include  #include  #include  LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); char contraseña [4]; char initial_password [ 4], nueva_contraseña [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; columnas de bytes constantes =4; char hexaKeys [filas] [columnas] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte row_pins [filas] ={A0, A1, A2, A3}; byte column_pins [columnas] ={A4, A5,3,2}; Keypad keypad_key =Teclado (makeKeymap (hexaKeys), row_pins, column_pins, filas, columnas); void setup () {pinMode (relay_pin, OUTPUT); visualización_cristales_líquidos.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Cerradura electrónica"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); initialpassword ();} bucle vacío () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); if (tecla_primida) {contraseña [i ++] =tecla_primida; Liquid_crystal_display.print (tecla_primida); } Si (i ==4) {retraso (200); for (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j); if (! (strncmp (contraseña, contraseña_inicial, 4))) {visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Aprobado aceptado"); digitalWrite (relay_pin, BAJO); retraso (2000); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # para cambiar"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña:"); Liquid_crystal_display.setCursor (0,1); i =0; } Else {digitalWrite (relay_pin, HIGH); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña incorrecta"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # para cambiar"); retraso (2000); Liquid_crystal_display.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); i =0; }}} Cambio vacío () {int j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña actual"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {nueva_contraseña [j ++] =clave; Liquid_crystal_display.print (clave); } Clave =0; } Retraso (500); if ((strncmp (nueva_contraseña, contraseña_inicial, 4))) {pantalla_cristal_líquido.clear (); liquid_crystal_display.print ("Contraseña incorrecta"); Liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Intentar de nuevo"); retraso (1000); } Más {j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Nueva contraseña:"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {contraseña_inicial [j] =clave; Liquid_crystal_display.print (clave); EEPROM.write (j, clave); j ++; }} Liquid_crystal_display.print ("Pase cambiado"); retraso (1000); } Visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Ingresar contraseña"); Liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {for (int j =0; j <4; j ++) EEPROM.write (j, j + 49); para (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j);} 
Fragmento de código n. ° 2 Texto sin formato
 #include  #include  #include  
Fragmento de código n. ° 3 Texto sin formato
 key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); 
Fragmento de código n.º 4 Texto sin formato
 if (tecla_primida) {contraseña [i ++] =tecla_presionada; Liquid_crystal_display.print (tecla_primida); } si (i ==4) {retraso (200); for (int j =0; j <4; j ++) contraseña_inicial [j] =EEPROM.read (j); if (! (strncmp (contraseña, contraseña_inicial, 4))) {visualización_cristal_líquido.clear (); liquid_crystal_display.print ("Aprobado aceptado"); digitalWrite (relay_pin, BAJO); retraso (2000); 
Fragmento de código n. ° 5 Texto sin formato
 cambio vacío () {int j =0; Liquid_crystal_display.clear (); liquid_crystal_display.print ("Contraseña actual"); Liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (clave) {nueva_contraseña [j ++] =clave; Liquid_crystal_display.print (clave); } Clave =0; } Retraso (500); 

Esquemas

Use un Arduino para controlar una cerradura de puerta con solenoide que se puede abrir con la combinación de teclas correcta.

Proceso de manufactura

  1. Juego de giroscopio Arduino con MPU-6050
  2. Sistema de asistencia que usa Arduino y RFID con Python
  3. Sensor DHT11 con LED y altavoz piezoeléctrico
  4. Animación LCD y juegos
  5. Unopad - Controlador MIDI Arduino con Ableton
  6. Registrador de datos de temperatura y humedad
  7. Sensor de obstáculos simple con Arduino
  8. Cubo LED 4x4x4 con Arduino Uno y 1sheeld
  9. Contador de RPM basado en Arduino con un algoritmo nuevo y más rápido
  10. Sistema de asistencia basado en Arduino y hoja de cálculo de Google
  11. Cerradura de puerta protegida con contraseña basada en Arduino y Android