Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cerradura Con Clave

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Cerradura con Clave, Mes 04 de Año 2024.

Universidad Tecnológica de Pereira 1

Cerradura con Clave


Andrés Mauricio Loaiza Orozco, Anderson Jhair Chalparizan Juaspuezan, Juan Esteban Lucero
Reyes.
1093215262, 1089176465, 1080043867
mauricio.loaiza1@utp.edu.co, anderson.chalparizan@utp.edu.co,
juan.lucero1@utp.edu.co

Abstract— The project consists of the implementation of an Resumen— El proyecto consiste en la implementación de un
access control system using a 4-digit numerical key, using an sistema de control de acceso mediante una clave numérica de 4
ESP23 microcontroller and a 4x4 matrix keyboard with C++ dígitos, utilizando un microcontrolador ESP23 y un teclado
programming language and using the Arduino IDE environment. matricial 4x4 con lenguaje de programación C++ y usando el
The program works when a user enters the correct password, entorno de Arduino IDE. En programa funciona cuando un
this activates an LED as an indicator of granted access. In case of usuario ingresa la clave correcta, este activa un LED como
three consecutive failed attempts, the system blocks the entry for indicador de acceso concedido. En caso de tres intentos fallidos
5 seconds. The 4x4 matrix keyboard and an LCD screen are used consecutivos, el sistema bloquea la entrada por 5 segundos. Se
for the interface. This report details the design, simulation, and utiliza el teclado matricial de 4x4 y una pantalla LCD para la
implementation of the system. interfaz. Este informe detalla el diseño, la simulación y la
implementación del sistema.
Index Terms— ESP32, matrix keyboard, LCD
Palabras claves— ESP32, teclado matricial, LCD

I. INTRODUCCIÓN

E l control de acceso seguro es un aspecto fundamental


en numerosas aplicaciones y entornos, desde la
protección de instalaciones físicas hasta la privacidad de
dispositivos electrónicos. En respuesta a esta necesidad,
se ha desarrollado el proyecto de un "Sistema de Control
de Acceso con Clave de Seguridad", diseñado para
ofrecer una solución efectiva y confiable para restringir
el acceso a una zona o dispositivo específico.
Este proyecto se basa en la implementación de un
sistema que requiere que los usuarios ingresen una clave
numérica de 4 dígitos a través de un teclado matricial
4x4. Si la clave ingresada coincide con la preestablecida,
se activa un LED como indicador visual de acceso
concedido. Sin embargo, si el usuario comete tres
intentos fallidos consecutivos, el sistema bloquea la
entrada durante un período de 5 segundos antes de
permitir un nuevo intento.
La utilización de un microcontrolador ESP32 para este
propósito ofrece diversas ventajas. Este
microcontrolador es una plataforma versátil, eficiente y
de bajo costo, ideal para aplicaciones embebidas como el
control de acceso. Además, se emplea una interfaz I2C
para comunicarse con una pantalla LCD y un teclado
matricial de 4x4, facilitando la interacción del usuario
con el sistema.
2 Scientia et Technica Año XVI, No xx, Mes XX de Año XX. Universidad Tecnológica de Pereira

El objetivo principal de este proyecto es proporcionar • Documentar el proceso de diseño, implementación y


una solución de control de acceso que sea robusta, fácil pruebas del Sistema de Control de Acceso,
de usar y adaptable a una variedad de entornos y incluyendo diagramas, esquemas, código fuente y
aplicaciones. Además, se busca demostrar el uso de fotografías del prototipo.
tecnologías como la comunicación I2C, el manejo de
periféricos y la implementación de algoritmos de control
para garantizar la seguridad del acceso. III. MARCO TEÓRICO
A lo largo de este informe, se detallará el diseño, la El control de acceso con clave numérica es una técnica
implementación y el funcionamiento del sistema de comúnmente utilizada en sistemas de seguridad para
control de acceso. Se presentará el proceso paso a paso restringir el acceso a áreas específicas o dispositivos
de cómo se ha desarrollado el código en C++ para sensibles. Este método de autenticación se basa en la
Arduino IDE, así como también la simulación del verificación de una secuencia de caracteres numéricos,
sistema en la plataforma Wokwi para validar su correcto donde el usuario debe proporcionar la clave correcta
funcionamiento. Por último, se proporcionarán para obtener autorización de acceso.
conclusiones sobre la eficacia y la viabilidad de este
Teclado Matricial 4x4.
sistema, junto con las referencias utilizadas para su
Un teclado matricial 4x4 es un dispositivo de entrada
desarrollo. que consta de 16 teclas dispuestas en una matriz de 4
filas y 4 columnas. Cada tecla representa un carácter
alfanumérico o un símbolo específico, lo que permite al
II. OBJETIVOS
usuario interactuar con el sistema al presionar las teclas
Objetivo General correspondientes. En este proyecto, el teclado matricial
Implementar un Sistema de Control de Acceso con se utiliza para que los usuarios ingresen la clave
Clave de Seguridad utilizando un microcontrolador numérica de 4 dígitos, proporcionando una interfaz
ESP23, pantalla LCD con interfaz I2C, teclado matricial intuitiva y de fácil uso.
4x4 y LED indicador, que permita gestionar el acceso
mediante una clave numérica de 4 dígitos, con bloqueo
automático temporal después de tres intentos fallidos
consecutivos.

Objetivos Específicos
• Diseñar el circuito de conexión entre el
microcontrolador ESP23, la pantalla LCD y el
teclado matricial 4x4 usando el software de
simulación en línea Wokwi.
• Programar el microcontrolador para interactuar con
el teclado matricial y la pantalla LCD, permitiendo
la entrada de la clave numérica y mostrando la
información en tiempo real.
• Establecer el mecanismo de comparación de la clave Figura 1. Teclado matricial 4x4.
ingresada con la clave preestablecida para
determinar el acceso.
• Implementar la función de activación del LED
indicador en caso de clave correcta. Microcontrolador ESP32.
• Desarrollar la lógica de conteo de intentos fallidos y El microcontrolador ESP32 es un chip integrado que
activación del bloqueo de entrada por 5 segundos combina un procesador de bajo consumo de energía con
después de tres intentos incorrectos consecutivos. conectividad Wifi y Bluetooth. Es una opción popular en
• Realizar pruebas exhaustivas del sistema para proyectos de electrónica y sistemas embebidos debido a
garantizar su correcto funcionamiento y detección de su versatilidad, eficiencia y facilidad de programación.
posibles errores. En este proyecto, el ESP32 se encarga de procesar las
• Optimizar el código del programa para asegurar entradas del teclado matricial, gestionar la verificación
eficiencia en el uso de recursos y estabilidad del de la clave y controlar la interfaz de la pantalla LCD.
sistema.
Cerradura con Clave, Mes 04 de Año 2024. Universidad Tecnológica de Pereira 3

Figura 2. Microcontrolador ESP32.


Figura 4. Pantalla LCD.

Comunicación I2C.
El protocolo I2C (Inter-Integrated Circuit) es un estándar
de comunicación serial de dos cables que permite la IV. IMPLEMENTACIÓN DE CONTROL DE ACCESO
transferencia de datos entre dispositivos de manera El sistema de control de acceso implementado en este
eficiente y sencilla. En este proyecto, se utiliza la proyecto sigue un flujo de trabajo específico:
comunicación I2C para conectar el microcontrolador • El usuario ingresa una clave numérica de 4 dígitos a
ESP32 con la pantalla LCD y el teclado matricial. Esta través del teclado matricial.
interfaz simplifica la conexión de múltiples dispositivos • El microcontrolador ESP32 verifica si la clave
al microcontrolador, reduciendo la cantidad de pines ingresada coincide con la clave preestablecida.
requeridos y facilitando la implementación del sistema. • Si la clave es correcta, se activa un LED como
indicador visual de acceso concedido.
• En caso de una clave incorrecta, se registra un intento
fallido y se muestra un mensaje en la pantalla LCD.
• Después de tres intentos fallidos consecutivos, el
sistema bloquea la entrada durante 5 segundos como
medida de seguridad.
• El sistema vuelve al estado inicial, esperando una
nueva entrada de clave por parte del usuario.

Hardware Utilizado
Figura 3. Módulo de comunicación I2C. • Microcontrolador ESP23
• Teclado matricial 4x4
• LED como indicador de acceso
Pantalla LCD (Liquid Crystal Display). • Pantalla LCD
La pantalla LCD es un dispositivo de salida que • Resistencias y cables de conexión
proporciona una interfaz visual para mostrar información
al usuario. En este proyecto, se utiliza una pantalla LCD Conexiones Físicas
de 16x2 caracteres, que puede mostrar mensajes de texto
y facilitar la interacción con el sistema. La comunicación
a través de I2C permite controlar la pantalla para mostrar
mensajes de estado, instrucciones y resultados del
proceso de ingreso de la clave.

Figura 5. Conexión del circuito.

Para que el sistema de control de acceso funcione


correctamente, se deben realizar las siguientes
4 Scientia et Technica Año XVI, No xx, Mes XX de Año XX. Universidad Tecnológica de Pereira

conexiones físicas entre los componentes y el Pantalla LCD (I2C)


microcontrolador ESP32:

Teclado matricial 4x4

Figura 6. Teclado matricial. Figura 8. Simulación I2C


Las filas del teclado matricial se conectan a los pines del
ESP32 (RowPins) La pantalla LCD se conecta al ESP32 mediante la
R1: Conectada al pin 15 interfaz I2C:
R2: Conectada al pin 4 Pin SDA (Serial Data): Conectado al pin 21 del ESP32
R3: Conectada al pin 16 (por defecto en la librería LiquidCrystal_I2C)
R4: Conectada al pin 17 Pin SCL (Serial Clock): Conectado al pin 22 del ESP32
(por defecto en la librería LiquidCrystal_I2C)
Las columnas del teclado matricial se conectan a los Pin VCC: Conectado al pin 5V del ESP32
pines del ESP32 (ColPins) Pin GND: Conectado al pin GND del ESP32
C1: Conectada al pin 5
C2: Conectada al pin 18 LED Indicador de Acceso
C3: Conectada al pin 19 El LED se conecta al pin 2 del ESP32.
C4: Conectada al pin 23
Descripción del Código
El código en C++ para Arduino IDE implementa el
funcionamiento del sistema de control de acceso.

El código en C++ para Arduino IDE implementa el


funcionamiento del sistema de control de acceso.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

const byte ROWS = 4; // Definimos el


número de filas y columnas del teclado
matricial
Figura 7. Montaje a nivel protoboard del circuito. const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Cerradura con Clave, Mes 04 de Año 2024. Universidad Tecnológica de Pereira 5

byte rowPins[ROWS] = {15, 4, 16, 17}; // lcd.setCursor(claveCorrecta.len


Conectamos las filas y columnas del gth(), 1);
teclado a los pines del ESP32 lcd.print(" ");
byte colPins[COLS] = {5, 18, 19, 23}; }
} else {
Keypad keypad = Keypad(makeKeymap(keys), if (claveCorrecta.length() < 4) {
rowPins, colPins, ROWS, COLS); claveCorrecta += key;
lcd.setCursor(claveCorrecta.len
LiquidCrystal_I2C lcd(0x27, 16, 2); // gth(), 1); // Posicionar cursor al final
Dirección I2C de la pantalla LCD y sus de la clave
dimensiones lcd.print(key); // Mostrar el
carácter ingresado
const int ledPin = 2; // Pin para el LED }
indicador de acceso concedido }
String claveCorrecta = ""; // Clave }
preestablecida } else {
const int intentosMaximos = 3; // Número mostrarTiempoRegresivo();
máximo de intentos antes de bloquear }
const int tiempoBloqueo = 5000; // Tiempo }
en milisegundos para el bloqueo
void verificarClave() {
int intentos = 0; if (claveCorrecta == "1234") {
bool bloqueado = false; accesoConcedido();
} else {
void setup() { intentos++;
pinMode(ledPin, OUTPUT); lcd.clear();
lcd.init(); lcd.print("Clave incorrecta");
lcd.backlight(); delay(1000);
lcd.clear(); lcd.clear();
lcd.print("Ingrese clave:"); lcd.print("Ingrese clave:");
} claveCorrecta = "";
lcd.setCursor(0, 1);
void loop() { for (int i = 0; i < intentos; i++) {
char key = keypad.getKey(); lcd.print("*");
}
if (!bloqueado) { if (intentos >= intentosMaximos) {
if (key != NO_KEY) { bloquearEntrada();
if (key == '#') { }
if (claveCorrecta.length() == 4) }
{ }
verificarClave();
} void accesoConcedido() {
} else if (key == '*') { digitalWrite(ledPin, HIGH); // Activar
if (claveCorrecta.length() > 0) { LED
claveCorrecta.remove(claveCorre lcd.clear();
cta.length() - 1, 1); // Borra el último lcd.print("Acceso concedido");
carácter delay(2000);
lcd.clear();
6 Scientia et Technica Año XVI, No xx, Mes XX de Año XX. Universidad Tecnológica de Pereira

lcd.print("Ingrese clave:"); Entrada de Clave


claveCorrecta = ""; Se lee constantemente el teclado matricial en busca de
intentos = 0; teclas presionadas con keypad.getKey().
• Si el sistema no está bloqueado (!bloqueado) y se
digitalWrite(ledPin, LOW); // Apagar
presiona una tecla (key != NO_KEY), se realiza lo
LED siguiente:
} • Si se presiona #, se verifica si la longitud de la clave
ingresada es 4 caracteres (claveCorrecta.length() == 4) y
void bloquearEntrada() { se llama a la función verificarClave().
lcd.clear(); • Si se presiona *, se borra el último carácter de la clave
lcd.print("Entrada bloqueada"); (claveCorrecta.remove(claveCorrecta.length() - 1, 1)) y
bloqueado = true; se actualiza la pantalla LCD.
• Si se presiona cualquier otro carácter numérico, se
mostrarTiempoRegresivo();
agrega a la clave (claveCorrecta += key) y se muestra en
bloqueado = false; la pantalla LCD.
lcd.clear();
lcd.print("Ingrese clave:"); Funciones Auxiliares:
claveCorrecta = ""; • verificarClave(): Compara la clave ingresada con la
intentos = 0; clave preestablecida. Si coinciden, se llama a
} accesoConcedido(). De lo contrario, se incrementa el
contador de intentos, se muestra un mensaje de error en
la LCD, y se bloquea la entrada si se exceden los
void mostrarTiempoRegresivo() {
intentos máximos.
int tiempoRestante = tiempoBloqueo / • accesoConcedido(): Activa el LED, muestra un
1000; // Convertir a segundos mensaje de "Acceso concedido" en la LCD, reinicia el
lcd.setCursor(0, 1); proceso de ingreso de clave y restablece los intentos.
lcd.print("Bloqueado: "); • bloquearEntrada(): Muestra un mensaje de "Entrada
while (tiempoRestante > 0) { bloqueada", activa el contador de bloqueo y llama a
lcd.setCursor(11, 1); mostrarTiempoRegresivo() para contar el tiempo
lcd.print(tiempoRestante); restante del bloqueo.
• mostrarTiempoRegresivo(): Muestra en la LCD el
lcd.print("s ");
tiempo restante para el desbloqueo, disminuyendo el
delay(1000); contador en cada segundo.
tiempoRestante--;
}
} Ciclo de Funcionamiento
El sistema espera constantemente la entrada del usuario.
A continuación, se detalla el proceso de funcionamiento: • Si se ingresa una clave correcta, se concede acceso.
• Si se ingresa una clave incorrecta, se cuenta el
Inicialización
En la función setup(), se establecen las configuraciones número de intentos.
iniciales del sistema: Después de 3 intentos fallidos consecutivos, se bloquea
• Se define el pin del LED como salida con la entrada por 5 segundos.
pinMode(ledPin, OUTPUT).
• Se inicializa y enciende la pantalla LCD con lcd.init() Enlace del video
y lcd.backlight(). https://drive.google.com/file/d/1H2D8OfmAl_GCvoHP
• Se limpia la pantalla LCD y se muestra el mensaje Hmvw8RlkpD4__N35/view?usp=drivesdk
inicial "Ingrese clave:" con lcd.clear() y lcd.print().
Enlace de la simulación el Wokwi
Bucle Principal (loop()): https://wokwi.com/projects/394264343350762497
• El bucle principal del programa, donde ocurre el
funcionamiento continuo del sistema.
Cerradura con Clave, Mes 04 de Año 2024. Universidad Tecnológica de Pereira 7

V. CONCLUSIÓN [7] «Teclado Matricial». Accedido: 4 de abril de 2024.


Diseño Integral: El proyecto abordó todos los aspectos, desde [En línea]. Disponible en:
la teoría hasta la implementación práctica, detallando cada https://classroom.google.com/c/NjI4NjY1ODI2Mzg
componente y su función. y/m/NjU2MjE0OTgxMjIx/details
Selección de Componentes: La elección del microcontrolador [8] I. M. Salvador, «Teclado Matricial 4x4 Arduino»,
ESP32, el teclado matricial, la pantalla LCD y el LED
indicador fue acertada para este propósito. Blog Arduino, LabVIEW y Electrónica. Accedido: 4
Interfaz Amigable: El uso del teclado matricial y la pantalla de abril de 2024. [En línea]. Disponible en:
LCD proporciona una experiencia de usuario intuitiva y fácil https://electronicamade.com/teclado-matricial-
de usar. 4x4/
Seguridad Reforzada: La inclusión de un bloqueo después de [9] «Tutorial LCD con I2C, controla un LCD con solo dos
tres intentos fallidos mejora significativamente la seguridad pines», Naylamp Mechatronics - Perú. Accedido: 4
del sistema.
Código Bien Organizado: El código en C++ para Arduino IDE de abril de 2024. [En línea]. Disponible en:
está estructurado de manera clara y organizada, con https://naylampmechatronics.com/blog/35_tutoria
comentarios explicativos que facilitan su comprensión y l-lcd-con-i2c-controla-un-lcd-con-solo-dos-
mantenimiento. pines.html
[10] «I2C LCD with ESP32 on Arduino IDE - ESP8266
compatible | Random Nerd Tutorials». Accedido: 4 de
VI. BIBLIOGRAFÍA abril de 2024. [En línea]. Disponible en:
https://randomnerdtutorials.com/esp32-esp8266-i2c-
[1] «esp32 - Buscar con Google». Accedido: 4 de abril de lcd-arduino-ide/
2024. [En línea]. Disponible en:
https://www.google.com/search?sca_esv=8dd3a61b3090
0631&sca_upv=1&rlz=1C1UEAD_enCO1048CO1048&
sxsrf=ACQVn0-
GnbZAAErmRIhcX8dV5eoiILhz4Q:1712263076841&q
=esp32&uds=AMwkrPtD2X8ne8wHcZUM2vdrxSzmqFf
b0ApYRB9SztgrlGecDGxz2kQvnkERdYiVXH3hUY2rC
MQwJcJDHiZAoKjS3HLBSVNRw4w8Kx1wmsBqS99c
q4wsxh3sCg77sfL4lTzUZ696cZXCI4C64PrlSTBqzyWk
SSGPFV2qemoF35Z5exMueQDyTkmV7hgV_Yj1eZez-
3og4oZGp_0pCQazLCF695S_hKMAqv-
FHUYeGEae0MSAViKDnCw4D_veUUBMON3-
eRQ6_OdC477L01C9s77iGbyMSD-mqULb-
XKj7SUpjjwVVl4o7bU&udm=2&prmd=sivnmbtz&sa=
X&ved=2ahUKEwjG1NODtamFAxWHQjABHb1EB3Q
QtKgLegQIEhAB#vhid=z2sWTGSTLHaQwM&vssid=m
osaic
[2] «(PDF) JHD162A Datasheet - 16 CHAR x 2 ROW LCD
MOUDULE». Accedido: 4 de abril de 2024. [En línea].
Disponible en:
https://datasheet.es/PDF/512991/JHD162A-pdf.html
[3] «Teclado Matricial». Accedido: 4 de abril de 2024. [En
línea]. Disponible en:
https://classroom.google.com/c/NjI4NjY1ODI2Mzgy/m/
NjU2MjE0OTgxMjIx/details
[4] «CERRADURA CON CLAVE esp32 - Wokwi ESP32,
STM32, Arduino Simulator». Accedido: 4 de abril de
2024. [En línea]. Disponible en:
https://wokwi.com/projects/394264343350762497
[5] «LiquidCrystal I2C - Arduino Reference». Accedido: 4
de abril de 2024. [En línea]. Disponible en:
https://www.arduino.cc/reference/en/libraries/liquidcrysta
l-i2c/
[6] «Arduino Playground - HomePage». Accedido: 4 de
abril de 2024. [En línea]. Disponible en:
https://playground.arduino.cc/code/keypad/

También podría gustarte