Ejemplo práctico con lector de huellas

Objetivos

 

  • Jugar con el sensor de huellas dactilares.
  • Modificar el programa ejemplo.
  • Crear un programa base que sirva para accionar un rele al reconocer una huella.
  •  

    Material requerido.

     

    Vista principal de un arduino uno Arduino UNO
    Vista principal lector de huellas dactilares

     

    Lector de huellas y caso practico

     

    Estamos tan acostumbrado a que el teléfono se abra simplemente plantando el dedo en el lector de huellas que no nos damos cuenta de la maravilla tecnológica que esto supone.

    Cuando lo comentas, a todo el mundo le sorprende que los lectores de huellas dactilares funcionen y encima de forma poco menos que instantánea con una fiabilidad muy, pero que muy alta.

    Por eso no es raro que nos hagáis consultas del tipo… ¿Podría usar ese reconocedor de huellas que tenéis en la tienda con mi Arduino para abrir XXXX?

    La respuesta es invariablemente sí y de hecho tenemos un par de tutos en la web describiendo cómo usarlos pero parece que seguimos recibiendo consultas de si se podrían usar para abrir una puerta o un cajón con llave o en algún caso… para abrir el coche sin llave.

    Parece que el personal menos experto se pierde mucho al revisar los ejemplos oficiales de Adafruit y  como andaba haciendo una cosita de estas por aquí para un amigo se me ha ocurrido documentarlo por si os sirve a alguno más y para que podáis usarlo como base para vuestros propios proyectos.

    En principio voy a usar el lector de huellas y un led más un módulo de 2 relés de modo que se pueda abrir algo activado por los relés (Puede ser la puerta del coche o un cerrojo eléctrico) y usaremos el de dos porque puede servir para que se abra una caja u otra, dependiendo de quién pone la huella.

     

    Diagrama de conexión.

     

    Vamos a empezar con un único led que se ilumine durante un breve intervalo, cuando el lector reconoce una huella digital. La conexión va a ser bastante sencilla:

    esquema de conexion

    La conexión es muy sencilla y el único cuidado es conectar bien los cables TX y RX del sensor de huella dactilar.

    Tenéis que aseguraros de que habéis instalado la librería y los ejemplos del lector de huellas y para eso, recordad que ya tenemos una sesión que os describe como descargar e instalar la librería de Adafruit para el sensor de huellas dactilares.

    Ahí verás que tienes que instalar la librería y luego correr un par de programas de los ejemplos que vienen. El primero Enroll, simplemente graba las huellas que queremos que acepte, y un segundo programa fingerprint, que es quien reconoce las huellas archivadas.

    Para conseguir que el LED se ilumine al validar na huella necesitamos modificar un poco el programa original de ejemplo de la librería, y parece que es aquí donde tenéis las dificultades

     

    Modificando el programa original de la librería.

     

    Cargad el programa de ejemplo fingerprint de la librería de ejemplo del lector y vamos a modificarlo un poco.

    El programa original es básicamente un control de errores que son el 90% del código y unos mensajes que envía a la consola cuando reconoce una huella.

    Si buscas hacia final del programa, tras los controles de errores, y cuando valida la huella encontrarás unas líneas como estas

    // found a match!
    
    Serial.print("Found ID #"); Serial.print(finger.fingerID);
    Serial.print(" with confidence of "); Serial.println(finger.confidence);
    
    return finger.fingerID;

    Es aquí donde vamos a hacer un par de cambios. Crearemos un par de variables globales que vamos a llamar ID1 y C1 para almacenar el ID de la huella y la confianza que le merece el reconocimiento, y cambiaremos esas líneas de arriba  por estas otras:

    // found a match!
    
    ID1 = finger.fingerID;
    C1 =  finger.confidence ;
    
    Serial.print("Found ID #"); Serial.print(ID1);
    Serial.print(" with confidence of "); Serial.println(C1);
    
    return ID1;

    El problema para más de uno que nos habéis preguntado por este tema, es que hay dos ocurrencias de esas líneas y tenéis que hacer el cambio por dos veces o no va a funcionar ¿Vale?

    Y no os olvidéis de añadir la declaración de las  variables globales al principio del programa

    int ID1 ;
    int C1  ;

    Añadimos en el setup la declaración del pin 6 para el led:

    pinMode(6, OUTPUT);

    Y ya solo nos queda tocar en el loop() lo que queremos que haga nuestro programa cuando se reconozca la huella, pero antes un comentario importante:

    El lector de huellas nos devuelve la huella que ha reconocido y un valor que indica el grado de confianza que le merece el reconocimiento. Tened en cuenta que el lector comprueba la huella leída contra las huellas almacenadas y en muchas ocasiones no encuentra la huella completa sino solo partes de ella que es lo que ha reconocido.

    Por eso devuelve un valor entre 0 y 255 indicando que porcentaje de la huella ha reconocido. En nuestro programa vamos a fijar un mínimo de confianza del 100 para asegurarnos pero podéis modificar este valor a voluntad si encuentras difícil el reconocimiento

    Así pues, tenemos:

    void loop()
    { getFingerprintIDez();
      delay(50);            //don't ned to run this at full speed.
    
      if ( ID1 >= 0 && C1 >100)
         { digitalWrite(6, HIGH);    // Enciende
           delay(1000) ;
           digitalWrite(6, LOW);     // Apaga
    
           ID1 = -1;
         }
     }

    Fíjate que lo único que hace el delay es el tiempo que queremos para activar la señal del LED antes de se apague.

  • Si os apetece hacer un ejercicio puedes modificar de nuevo el programa para que encienda la luz verde cuando reconoce la huella y encienda una luz roja cuando no lo la reconozca.
  •  

    Puedes descargar el programa completo aquí:

    fingerprint2

     

    Usando un relé de salida.

     

    Encender una luz de salida siempre es simpático, pero suele ser más útil marcar la validación además de con el led, con una relé que pueda activar cualquier dispositivo de salida, como un motorcito, o encienda una luz ambiente, o active una cerradura electrónica, e incluso podríamos activar un cerrojo eléctrico para abrir un contenedor.

    Si buscáis por ahí, encontrareis modelos de diferentes tipos y precios

    Cerrojo activado por electricidad  

    Para activar uno de estos cerrojos eléctricos,  nos sirve el mismo programa pero tenemos que conectar el módulo de relé. Vamos a usar uno de dos relés para el ejemplo:

    esma de conexiones

    Vamos a conectar el pin 6 de Arduino que antes iba al LED al pin de activación del primer relé y de momento con eso ya se cerraría el contacto del relé durante el tiempo establecido, con el mismo programa de antes.

    Podemos almacenar hasta 124 huellas en el sensor, así que podríamos autorizar la apertura de una puerta con cerrojo electrónico hasta ese número de personas. Esto serviría para un Txoco o Peña, que no suelen tener tantos socios.

    Pero imagínate, que queremos usar el sensor de huellas para abrir las taquillas de un gimnasio o colegio. El sensor puede almacenar 124 huellas y podríamos usar un solo sensor para todos, lo que puede parecer un follón, pero no es para tanto.

    Para el caso de tendríamos que usar un Arduino con más pines disponibles como el Arduino Mega, y suponte que conectamos el primer activador del relé en el pin 22 del Mega, correspondiente al ID #0. Podemos conectar el 23 a la señal de control del rele 1,  y el 24 al control del rele 2 y así sucesivamente.

    Pin Número

    MEGA 22 23 24 25 26 27 28
    Rele 0 1 2 3 4 5 6

     

    DEtalle de los pines exteriores

  • Hay módulos de relé de 2, 4, 8 y 16 unidades que se controlan con un unico pin cada uno y serian ideales para una aplicación como la que estamos comentando.
  • detalle de pines de control
  •  

    Para relacionar el pin que debemos activar con la el ID de huella reconocido, basta con calcular el pin a activar como el pin inicial (22) + el ID reconocido (de 0 a 124).

    Podríamos cambiar el loop por algo así:

    void loop()
    { int Pin0 = 22;   // El pin donde empezamos a conectar contactos del rele
      
      if ( ID1 >= 0 && C1 >100)
         { digitalWrite(ID + Pin0 , HIGH);    // Enciende
           delay(1000) ;
           digitalWrite(ID + Pin0, LOW);     // Apaga
    
           ID1 = -1;
         }
    }

     

    Este programa podría abrir por huella dactilar las taquillas un buen número de personas en el gimnasio de una forma elegante y barata. Con una Mega podemos gestionar unas 60 taquillas. No está nada mal,¿ No os parece?

     

    tamaño grande

     

     

    Deja una respuesta