- Componentes requeridos
- Descripción del Proyecto:
- Módulo de huellas dactilares:
- Funcionamiento del sistema de asistencia basado en huellas dactilares
- Diagrama de circuito y descripción del proyecto del sistema de asistencia de huellas dactilares
- Explicación del código:
Los sistemas de asistencia son sistemas de uso común para marcar la presencia en oficinas y escuelas. Desde marcar manualmente la asistencia en los registros de asistencia hasta usar aplicaciones de alta tecnología y sistemas biométricos, estos sistemas han mejorado significativamente. En nuestros proyectos anteriores, hemos cubierto algunos otros proyectos de sistemas de asistencia electrónica que utilizan microcontroladores RFID y AVR, 8051 y raspberry Pi. En este proyecto, usamos el módulo de huellas dactilares y Arduino para tomar y mantener los datos y registros de asistencia. Al utilizar el sensor de huellas dactilares, el sistema será más seguro para los usuarios. Las siguientes secciones explican los detalles técnicos de la creación de un sistema de asistencia biométrico basado en huellas dactilares utilizando Arduino.
Componentes requeridos
- Arduino -1
- Módulo de huellas dactilares -1
- Botón pulsador - 4
- LEDs -1
- Resistencia 1K -2
- Resistencia de 2,2 K -1
- Poder
- Cables de conexión
- Caja
- Zumbador -1
- Pantalla LCD 16x2 -1
- Tabla de pan -1
- Módulo RTC -1
Descripción del Proyecto:
En este circuito del sistema de asistencia de huellas dactilares, utilizamos el módulo de sensor de huellas dactilarespara autenticar a una verdadera persona o empleado tomando su entrada digital en el sistema. Aquí estamos usando 4 botones para registrar, Eliminar, Arriba / Abajo. Las teclas ENROLL y DEL tienen características triples. La tecla ENROLL se utiliza para la inscripción de una nueva persona en el sistema. Entonces, cuando el usuario desea registrar un nuevo dedo, debe presionar la tecla ENROLL y luego la pantalla LCD solicita la identificación, donde el usuario desea almacenar la imagen de la huella digital. Ahora, si en este momento el usuario no desea continuar, puede presionar la tecla ENROLL nuevamente para regresar. Esta vez, la tecla ENROLL se comporta como la tecla Atrás, es decir, la tecla ENROLL tiene la función de registro y atrás. Además, la clave de registro también se usa para descargar datos de asistencia a través del monitor en serie. Del mismo modo, la tecla DEL / OK también tiene la misma función doble que cuando el usuario inscribe un nuevo dedo,luego debe seleccionar la identificación del dedo usando otras dos teclas, a saber, ARRIBA y ABAJO. Ahora el usuario debe presionar la tecla SUPR / OK (esta vez esta tecla se comporta como OK) para continuar con la ID seleccionada. Y la tecla Del se usa para restablecer o eliminar datos de EEPROM de Arduino.
Módulo de huellas dactilares:
El módulo del sensor de huellas dactilares captura la imagen de la huella dactilar y luego la convierte en la plantilla equivalente y la guarda en su memoria según la identificación seleccionada por Arduino. Todo el proceso está comandado por Arduino, como tomar una imagen de la huella digital, convertirla en plantillas y almacenarla como ID, etc. Puede verificar algunos proyectos más usando el módulo de huellas digitales:
Sistema de seguridad basado en huellas dactilares
Máquina de votación biométrica basada en huellas dactilares
Aquí hemos agregado un LED amarillo que indica que el módulo de huellas dactilares está listo para tomar una imagen del dedo. También se utiliza un zumbador para diversas indicaciones. Arduino es el componente principal de este sistema y es responsable del control de todo el sistema.
Funcionamiento del sistema de asistencia basado en huellas dactilares
Trabajo de este proyecto de sistema de asistencia de huellas dactilareses bastante simple. En primer lugar, el usuario debe registrar las huellas digitales del usuario con la ayuda de botones. Para hacer esto, el usuario debe presionar la tecla ENROLL y luego la pantalla LCD solicita ingresar la ID de la huella digital para guardarla en la memoria por nombre de ID. Así que ahora el usuario debe ingresar la ID usando las teclas ARRIBA / ABAJO. Después de seleccionar la ID, el usuario debe presionar la tecla OK (tecla DEL). Ahora la pantalla LCD le pedirá que coloque el dedo sobre el módulo de huellas dactilares. Ahora el usuario debe colocar su dedo sobre el módulo de huellas dactilares y luego el módulo toma la imagen del dedo. Ahora la pantalla LCD dirá que retire el dedo del módulo de huellas dactilares y nuevamente le pedirá que coloque el dedo nuevamente. Ahora el usuario debe volver a poner el dedo y el módulo toma una imagen, la convierte en plantillas y la almacena por ID seleccionada en la memoria del módulo de huellas digitales.Ahora el usuario quedará registrado y podrá alimentar la asistencia colocando su dedo sobre el módulo de huellas dactilares. Por el mismo método, todos los usuarios quedarán registrados en el sistema.
Ahora, si el usuario desea eliminar o eliminar cualquier ID o huella digital almacenada, debe presionar la tecla DEL. Una vez que se presione la tecla Eliminar, la pantalla LCD le pedirá que seleccione la ID que debe eliminarse. Ahora el usuario debe seleccionar ID y presionar la tecla OK (la misma tecla DEL). Ahora, la pantalla LCD le permitirá saber que la huella digital se ha eliminado correctamente.
Cómo funciona la asistencia en este proyecto de sistema de asistencia de huellas dactilares:
Siempre que el usuario coloca su dedo sobre el módulo de huellas dactilares, el módulo de huellas dactilares captura la imagen del dedo y busca si hay alguna identificación asociada con esta huella dactilar en el sistema. Si se detecta la identificación de la huella digital, la pantalla LCD mostrará Asistencia registrada y, al mismo tiempo, el zumbador emitirá un pitido y el LED se apagará hasta que el sistema esté listo para tomar la entrada nuevamente.
Junto con el módulo de huellas dactilares, también hemos utilizado un módulo RTC para la hora y la fecha. La hora y la fecha se ejecutan continuamente en el sistema. Por lo tanto, Arduino toma la hora y la fecha cada vez que un usuario verdadero coloca su dedo sobre la huella digital y las guarda en la EEPROM en la ranura de memoria asignada.
Aquí hemos creado 5 espacios de usuario en este sistema durante 30 días. Al presionar el botón RESET en Arduino y luego inscribir inmediatamente, la clave será responsable de descargar los datos de asistencia a través del monitor en serie desde la memoria EEPROM de Arduino.
Gestión de la memoria:
Tenemos 1023 bytes de memoria en Arduino UNO de los cuales tenemos 1018 bytes para almacenar datos y hemos tomado 5 datos de asistencia de usuarios durante 30 días. Y cada asistencia registrará la hora y la fecha para que se conviertan en datos de 7 bytes.
Entonces la memoria total requerida es
5 * 30 * 7 = 1050 entonces aquí necesitamos más 32 bytes
Pero si usamos 4 usuarios, entonces requerimos
4 * 30 * 7 = 840
Aquí hemos hecho la demostración de este proyecto tomando la memoria de 5 usuarios. Por esto, no vamos a poder almacenar 32 bytes o 5 registros de asistencia de la 5 ª usuario.
Puede probarlo por 4 usuarios cambiando algunas líneas en el código. He hecho los comentarios en el código donde se necesitan los cambios.
Diagrama de circuito y descripción del proyecto del sistema de asistencia de huellas dactilares
El circuito de este proyecto de sistema de asistencia basado en huellas dactilares, como se muestra en el diagrama anterior, es bastante simple. Posee Arduino para controlar todo el proceso del proyecto, pulsador para registro, borrado, selección de IDs y asistencia, zumbador para alerta, LEDs para indicación y LCD para instruir al usuario y mostrar los mensajes resultantes.
Como se muestra en el diagrama del circuito, un botón está conectado directamente al pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) de Arduino con respecto al suelo y el LED amarillo está conectado en el pin digital D7 de Arduino con respecto a tierra a través de una resistencia de 1k. Rx y Tx del módulo de huellas dactilares conectados directamente en el pin serial D2 y D3 (Software Serial) de Arduino. La fuente de 5v se utiliza para alimentar el módulo de huellas dactilares tomado de la placa Arduino. También se conecta un zumbador en el pin A5. Una pantalla LCD de 16x2 está configurada en modo de 4 bits y sus RS, EN, D4, D5, D6 y D7 están conectados directamente en el pin digital D13, D12, D11, D10, D9 y D8 de Arduino.
Explicación del código:
El código del sistema de asistencia de huellas dactilares para arduino se proporciona en las secciones siguientes. Aunque el código se explica bien con comentarios, aquí estamos discutiendo algunas partes importantes del código. Usamos la biblioteca de huellas dactilares para conectar el módulo de huellas dactilares con la placa Arduino.
En primer lugar, incluimos el archivo de encabezado y definimos el pin de entrada y salida y definimos la macro y las variables declaradas. Después de esto, en la función de configuración, damos dirección al pin definido e iniciamos el módulo LCD y de huellas dactilares
Después, tenemos que escribir el código para descargar los datos de asistencia.
configuración vacía () {retraso (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (inscribir, INPUT_PULLUP); pinMode (arriba, INPUT_PULLUP); pinMode (abajo, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (coincidencia, INPUT_PULLUP); pinMode (zumbador, SALIDA); pinMode (indFinger, SALIDA); digitalWrite (zumbador, BAJO); if (digitalRead (registrar) == 0) {digitalWrite (zumbador, ALTO); retraso (500); digitalWrite (zumbador, BAJO); lcd.clear (); lcd.print ("Espere"); lcd.setCursor (0,1); lcd.print ("Descarga de datos");
Después, tenemos que escribir un código para borrar los datos de asistencia de EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Espere"); lcd.setCursor (0,1); lcd.print ("Reiniciando….."); para (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); para (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Reinicio del sistema"); retraso (1000); }
Después de eso, iniciamos el módulo de huellas dactilares, mostrando un mensaje de bienvenida en la pantalla LCD y también iniciamos el módulo RTC.
Después de eso, en la función de bucle, hemos leído el tiempo RTC y lo mostramos en la pantalla LCD
bucle vacío () {ahora = rtc.now (); lcd.setCursor (0,0); lcd.print ("Hora->"); lcd.print (ahora.hora (), DEC); lcd.print (':'); lcd.print (ahora.minuto (), DEC); lcd.print (':'); lcd.print (ahora.segundo (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Fecha->"); lcd.print (ahora.día (), DEC); lcd.print ('/'); lcd.print (ahora.mes (), DEC); lcd.print ('/'); lcd.print (ahora.año (), DEC);
Después, espere a que la huella digital tome la entrada y compare la ID de la imagen capturada con las ID almacenadas. Si ocurre una coincidencia, continúe con el siguiente paso. Y comprobando también las claves de registro del
int resultado = getFingerprintIDez (); if (resultado> 0) {digitalWrite (indFinger, LOW); digitalWrite (zumbador, ALTO); retraso (100); digitalWrite (zumbador, BAJO); lcd.clear (); lcd.print ("ID:"); lcd.print (resultado); lcd.setCursor (0,1); lcd.print ("Espere…"); retraso (1000); asistencia (resultado); lcd.clear (); lcd.print ("Asistencia"); lcd.setCursor (0,1); lcd.print ("Registrado"); retraso (1000); digitalWrite (indFinger, ALTO); regreso; }
La función checkKeys () dada void se usa para verificar que la tecla Enroll o DEL esté presionada o no y qué hacer si se presiona. Si se presiona la tecla ENROLL, se llama a la función Enroll () y se presiona la tecla DEL, luego se llama a la función Delete () .
La función void delet () se usa para ingresar el ID que se eliminará y llamar a la función uint8_t deleteFingerprint (uint8_t id) que eliminará el dedo de los registros.
La función dada se utiliza para tomar imágenes de huellas dactilares y convertirlas en la plantilla y guardarlas por ID seleccionada en la memoria del módulo de huellas dactilares.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID de dedo:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Colocar dedo"); retraso (2000); while (p! = DIGITAL_OK) {p = finger.getImage ();…………………
La función dada se utiliza para almacenar la hora y la fecha de asistencia en la ranura asignada de EEPROM
asistencia nula (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; usuario = usuario1 ++; } más si (id == 2) {eepLoc = 210; usuario = usuario2 ++; } más si (id == 3)………….
La función dada se utiliza para obtener datos de EEPROM y enviarlos al monitor en serie
descarga vacía (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….