La seguridad es una preocupación importante en nuestro día a día, y las cerraduras digitales se han convertido en una parte importante de estos sistemas de seguridad. En este proyecto se imita un bloqueo de código digital de este tipo utilizando una placa arduino y un teclado de matriz.
Componentes
- Arduino
- Módulo de teclado
- Zumbador
- LCD de 16x2
- Transistor BC547
- Resistencia (1k)
- Tabla de pan
- Poder
- Cables de conexión
En este circuito, hemos utilizado la técnica de multiplexación para interconectar el teclado para ingresar la contraseña en el sistema. Aquí estamos usando un teclado 4x4 que contiene 16 teclas. Si queremos usar 16 teclas, entonces necesitamos 16 pines para la conexión a arduino, pero en la técnica de multiplexación necesitamos usar solo 8 pines para interconectar 16 teclas. Para que sea una forma inteligente de interconectar un módulo de teclado.
Técnica de multiplexación: La técnica de multiplexación es una forma muy eficiente de reducir la cantidad de pines utilizados con el microcontrolador para proporcionar entrada o contraseña o números. Básicamente, esta técnica se utiliza de dos formas: una es la exploración de filas y la otra es la exploración de colon. Pero en este proyecto basado en arduino hemos utilizado la biblioteca de teclado, por lo que no necesitamos hacer ningún código de multiplexación para este sistema. Solo necesitamos usar la biblioteca del teclado para proporcionar entrada.
Descripción del circuito
El circuito de este proyecto es muy simple y contiene Arduino, módulo de teclado, zumbador y LCD. Arduino controla los procesos completos, como tomar el módulo de teclado del formulario de contraseña, comparar contraseñas, activar el timbre y enviar el estado a la pantalla LCD. El teclado se usa para tomar la contraseña. El zumbador se usa para indicaciones y la pantalla LCD se usa para mostrar el estado o los mensajes en él. El zumbador se activa mediante un transistor NPN.
Los pines de columna del módulo de teclado están conectados directamente a los pines 4, 5, 6, 7 y los pines de fila están conectados a 3, 2, 1, 0 de arduino uno. Una pantalla LCD de 16x2 está conectada con arduino en modo de 4 bits. Los pines de control RS, RW y En están conectados directamente al pin 13, GND y 12 de arduino. Y el pin de datos D4-D7 está conectado a los pines 11, 10, 9 y 8 del arduino. Y un zumbador está conectado en el pin 14 (A1) de arduino a través de un transistor NPN BC547.
Trabajando
Hemos utilizado la EEPROM de arduino incorporada para guardar la contraseña, por lo que cuando ejecutamos este circuito por primera vez, leemos un dato de basura de la EEPROM de arduino incorporada y lo comparamos con la contraseña de entrada y damos un mensaje en la pantalla LCD que es Acceso denegado porque la contraseña no coincide. Para resolver este problema, necesitamos establecer una contraseña predeterminada por primera vez utilizando la programación que se proporciona a continuación:
para (int j = 0; j <4; j ++) EEPROM.write (j, j + 49);
lcd.print ("Introduzca la clave de acceso de Ur:"); lcd.setCursor (0,1); para (int j = 0; j <4; j ++) pass = EEPROM.read (j);
Esto establecerá la contraseña "1234" para EEPROM de Arduino.
Después de ejecutarlo por primera vez, debemos eliminar esto del programa y nuevamente escribir el código en el arduino y ejecutarlo. Ahora su sistema funcionará bien. Y por segunda vez, la contraseña ahora es "1234". Ahora puede cambiarlo presionando el botón # y luego ingrese su contraseña actual y luego ingrese su nueva contraseña.
Cuando ingrese su contraseña, el sistema comparará su contraseña ingresada con esa contraseña que está almacenada en EEPROM de arduino. Si se produce una coincidencia, la pantalla LCD mostrará "acceso concedido" y si la contraseña es incorrecta, la pantalla LCD mostrará "Acceso denegado" y el zumbador emitirá un pitido continuo durante algún tiempo. Y el zumbador también suena una sola vez cada vez que el usuario presiona cualquier botón del teclado.
Descripción de programación
En el código, hemos utilizado la biblioteca de teclados para interconectar el teclado con arduino.
#incluir
const byte ROWS = 4; // cuatro filas const byte COLS = 4; // cuatro columnas char hexaKeys = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', ' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins = {3, 2, 1, 0}; // conectarse a los pines de fila del byte del teclado colPins = {4, 5, 6, 7}; // conectarse a los pines de columna del teclado // inicializar una instancia de clase NewKeypad Keypad customKeypad = Keypad (makeKeymap (hexaKeys), rowPins, colPins, ROWS, COLS);
Hemos incluido la biblioteca LCD para la interfaz LCD y para la interfaz EEPROM hemos incluido la biblioteca EEPROM.h., Y luego inicializamos pines variables y definidos para los componentes.
#define zumbador 15 LiquidCrystal lcd (13,12,11,10,9,8); char contraseña; char pass, pass1; int i = 0; char customKey = 0;
Y luego inicializamos la pantalla LCD y le damos dirección a los pines en la función de configuración
configuración vacía () {lcd.begin (16,2); pinMode (led, SALIDA); pinMode (zumbador, SALIDA); pinMode (m11, SALIDA); pinMode (m12, SALIDA); lcd.print ("Electrónico"); lcd.setCursor (0,1); lcd.print ("Bloqueo del teclado"); retraso (2000); lcd.clear (); lcd.print ("Introduzca la clave de acceso de Ur:"); lcd.setCursor (0,1);
Después de esto leemos el teclado en función de bucle
customKey = customKeypad.getKey (); if (customKey == '#') change (); if (customKey) {contraseña = customKey; lcd.print (clave personalizada); bip(); }
Y luego compare la contraseña con la contraseña guardada usando el método de comparación de cadenas.
si (i == 4) {retraso (200); para (int j = 0; j <4; j ++) pass = EEPROM.read (j); if (! (strncmp (contraseña, contraseña, 4))) {digitalWrite (led, HIGH); bip(); lcd.clear (); lcd.print ("Contraseña aceptada"); retraso (2000); lcd.setCursor (0,1); lcd.print ("#. Cambiar contraseña"); retraso (2000); lcd.clear (); lcd.print ("Introduzca la clave de acceso:"); lcd.setCursor (0,1); i = 0; digitalWrite (led, BAJO); }
Esta es la función de cambio de contraseña y la función de pitido del zumbador
cambio vacío () {int j = 0; lcd.clear (); lcd.print ("Contraseña actual UR"); lcd.setCursor (0,1); while (j <4) {tecla char = customKeypad.getKey (); if (clave) {pass1 = clave; lcd.print (clave); bip anulado () {digitalWrite (zumbador, ALTO); retraso (20); digitalWrite (zumbador, BAJO); }