Cómo utilizar un sensor de huellas dactilares con tu Raspberry Pi para la autenticación

Cerradura con detector de huellas dactilares y una Raspberry Pi

No sólo en las películas de acción, los lectores de huellas dactilares se ven cada vez con más frecuencia en la vida real. Estos módulos se instalan a menudo en los sistemas de vigilancia del hogar y se utilizan para la verificación sencilla pero segura de personas. Con un sensor de huellas dactilares para Raspberry Pi también puedes implementar algunos otros proyectos, como cerraduras seguras.

Una de las ventajas es que las contraseñas y/o códigos numéricos pueden omitirse por completo. Aunque esto todavía es posible, pero es mucho más cómodo sin él. Este tutorial trata sobre la conexión, la lectura, el almacenamiento y la verificación de las huellas dactilares importadas.

Accesorios

Estos sensores fueron desarrollados originalmente para Arduino y pueden ser leídos a través de UART. La Raspberry Pi tiene dos pines (pin 8 / GPIO14 y pin 10 / GPIO 15), pero funcionan con 3.3V. Como hay diferentes sensores de huellas dactilares, que no todos funcionan con 3.3V, se recomienda un convertidor USB UART. Algunos modelos se pueden utilizar con voltaje de 3.3V y 5V. Estos son particularmente adecuados (también en conexión con un Arduino).

Por lo tanto, se requiere lo siguiente:

  • Sensor de huellas dactilares para Raspberry Pi. Aparte de la tensión, los modelos no difieren mucho.
  • Convertidor USB serie con conexión de 3.3V y 5V
  • Cables de puente hembra-hembra, si no se incluyen con el convertidor USB.
  • optativo: la carcasa (que también se puede imprimir en tres dimensiones)

Debes tener en cuenta en la descripción del artículo, qué voltaje necesita tu sensor. El nuestro necesita una tensión de entrada de 3,3V, sin embargo, por ejemplo, otros modelos tienen una tensión entre 3,8V y 6V. La tensión es muy importante para la conexión.

Conexión del sensor de huellas dactilares de Raspberry Pi

El adaptador USB está etiquetado, pero los cables del sensor de huellas dactilares no. Sin embargo, los cables tienen un color claro, que podemos identificar y conectar al convertidor USB. Sólo necesitamos cuatro de los cables (si tu sensor de huellas dactilares tiene más, puedes ignorar los colores restantes):

  • Rojo: Dependiendo de la tensión aceptada del sensor (3,3V o 5V).
  • Blanco: RXD
  • Verde: TXD
  • Negro: GND

Si el sensor necesita una tensión superior a 3,3 V (y el valor máximo es igual o superior a 5 V), puedes conectar el cable rojo a la clavija de 5 V.

Para comprobar si el cableado es correcto y si se detecta el sensor, puede abrir la consola y realizar lo siguiente antes y después de la conexión:

ls /dev/ttyUSB*

Si no se conectan otros dispositivos serie a través de USB, no se debe mostrar nada primero y después /dev/ttyUSB0. Si el nombre difiere (porque, por ejemplo, hay otros dispositivos conectados), deberás adaptarlo en los siguientes pasos.

Segunda variante a través de GPIO

Si tienes un sensor con una tensión de entrada de 3,3 V, también puede conectarlo sin necesidad de un convertidor USB directamente a los GPIO. Teóricamente, puedes hacerlo también con 5V y un convertidor TTL, pero no entraremos en detalles en este tutorial. Una ventaja de la variante USB es que es más fácil comprobar si se ha detectado el sensor.

Instalación de la librería de huellas dactilares de Raspberry Pi

Para algunos comandos de la instalación, se requieren privilegios de root. Por lo tanto, iniciamos una sesión de terminal y escribimos lo siguiente, que ejecuta todos los siguientes comandos como root:

sudo bash

Ahora añadimos las fuentes de paquetes necesarias:

wget -O - http://apt.pm-codeworks.de/pm-codeworks.de.gpg | apt-key add -
wget http://apt.pm-codeworks.de/pm-codeworks.list -P /etc/apt/sources.list.d/

Luego actualizamos los paquetes disponibles e instalamos la librería Python:

apt-get update
apt-get install python-fingerprint --yes

Si ha ocurrido un error (en particular, que no todos los paquetes dependientes han sido instalados), entonces ejecuta lo siguiente:

apt-get -f install

o volver a la shell normal (debajo del usuario Pi), escribe exit.

Por cierto: Si prefieres usar una librería C++, puedes ver esta de Adafruit (originalmente para Arduino). El código de la biblioteca Python está disponible en Github.

Código de prueba y escenario de ejemplo

Primero, hacemos una pequeña prueba para ver si el sensor está detectado y listo para el acceso. Para ello, ejecutamos uno de los archivos de ejemplo:

python2 /usr/share/doc/python-fingerprint/examples/example_index.py

Se puede almacenar un total de hasta 1000 huellas dactilares diferentes. Un dedo también se puede utilizar varias veces, por ejemplo. Se puede almacenar en diferentes posiciones para que se detecten con mayor rapidez y claridad. Debería aparecer lo siguiente, que te permite mostrar las posiciones bajo las cuales se almacena una impresión seleccionando una página (0-3).
Currently stored templates: 0
Please enter the index page (0, 1, 2, 3) you want to see:

Si el mensaje de error «Mensaje de excepción: Aparece el puerto del sensor de huellas dactilares «/dev/ttyUSB0″ no se ha encontrado», algo está mal en el cableado o en el sensor. Compruébalo de nuevo.

Guardar y leer

Se adjuntan archivos de muestra para almacenar una nueva huella dactilar, leer y borrar las huellas dactilares almacenadas. Comencemos por grabar un dedo. Llame a lo siguiente:

python2 /usr/share/doc/python-fingerprint/examples/example_enroll.py

Pon el dedo en la superficie de cristal, espera las instrucciones en el terminal y retira el dedo tan pronto como esté escrito allí. Después hay que poner el dedo una segunda vez para la verificación y la impresión se almacena en el siguiente número.

Veamos también si se reconoce nuestro dedo. Por lo tanto, retira el dedo del sensor y llame al siguiente script:

python2 /usr/share/doc/python-fingerprint/examples/example_search.py

Vuelve a ponerle el dedo encima. Si se detecta la huella dactilar en la Raspberry Pi, aparece un mensaje como este:

Currently stored templates: 2
Waiting for finger...
Found template at position #1
The accuracy score is: 63
SHA-2 hash of template: 3aa1b01149abf0a7ad0d7803eaba65c22ba084009700c3c7f5f4ecc38f020851

En este caso, también se especifica un valor de precisión (cuanto más alto, mejor).

En este directorio, también hay otros scripts con los que puede borrar impresiones almacenadas o incluso cargarlas como una imagen. Con ls /usr/share/docs/python-fingerprint/ puede mostrar todos esos archivos.

Pin It on Pinterest

Shares