INFORMACIÓN
R502-F Sensor Dactilar es un dispositivo que permite leer y guardar hasta 200 huellas dactilares a través de un panel touch, también contiene un indicador configurable de luz LED. R502-F Sensor Dactilar puede ser utilizado en aplicaciones de seguridad, control de acceso y asistencia, puedes usar los colores del LED para indicar errores en el censado, huellas encontradas en los registros, huellas no registradas, entre otras cosas.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Modelo: R502-F
- Color:
- Base: Transparente
- Panel touch: Negro
- Voltaje
- Entrada: 3.3V
- Touch: 3-5 V
- Típico en modo de espera: 3.3V
- Corriente
- Funcionamiento: 20mA
- Modo de espera (standby) Promedio: 2 uA
- A prueba de agua (A excepción del conector)
- Resolución de imagen: 508 dpi
- Número de pines: 6
- Conector: SH1.0mm de 6 pines
- Longitud de cable: 25 cm
- Protocolos de comunicación: UART (Nivel lógico TTL 3.3V)
- Índice de baudios: (9600 × N) bps; N=1 ~ 12 (N = 6 predeterminado, es decir, 57600 bps)
- Tiempo de adquisición de imagen: <0.2s
- Matiz de censado: 192 x 192 píxeles
- Área de detección: 15 mm de diámetro
- Dimensiones:
- Diámetro: 19.4 mm
- Altura: 9 mm
- Peso: 7 g
Pines:
- VIN: Conexión a fuente de alimentación (3.3 V)
- GND: Conexión a GND de la fuente de alimentación
- TXD: Transmisión de datos, nivel lógico TTL
- RXD: Recepción de datos, nivel lógico TTL
- WAKE UP: Señal de detección de dedo
- 3.3VT: Voltaje de alimentación de la inducción touch (3-5 V)
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
¿Cómo funciona el R502-F Sensor Dactilar?
Este sensor es pequeño y de fácil uso, tiene un amplio rango de detección, tiene 6 pines, 2 para alimentación, 1 para la señal de detección de dactilar, otro para la alimentación del touch y 2 para comunicación por protocolo serial (Tx, Rx) para que puedas utilizarlo con tarjetas de desarrollo Arduino, ESP 32, PIC y otros microcontroladores.
- Registro de huellas
- Lector de huellas
Cuando se hace el registro, el usuario debe de colocar su dedo 2 veces para que el módulo pueda procesar ambas imágenes y generar una plantilla para guardarla. En el modo lector el sistema generará otra plantilla y hará una comparación con las que ya están guardadas. El módulo trabaja con protocolo serial semiduplex, por lo que a través de un monitor serial puedes enviar comandos para cambiar el color del indicador LED, borrar huellas guardadas, elegir el registro donde guardar, entre otras.
Prueba del R502-F Sensor Dactilar
Para poder probar el módulo se necesita instalar en el IDE Arduino la librería Adafruit_Fingerprint. Realizaremos las siguientes conexiones en nuestra tarjeta de desarrollo Arduino Uno:
Cables:
- Rojo: 3.3V
- Negro: GND
- Amarillo: Pin 2
- Café: Pin 3
- Azul: N/C
- Blanco: 3.3V
Posteriormente usaremos el siguiente código en nuestro IDE para programar nuestro Arduino, esté código registra y guarda las huellas detectadas por el sensor:
#include <Adafruit_Fingerprint.h> #if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) // Para Arduino Uno u otros dispositivos sin hardware serial, debemos usar software serial... // pin #2 es entrada del sensor (Cable amarillo) // pin #3 es salida arduino (Cable Café) SoftwareSerial mySerial(2, 3); //Configuración del puerto serial para software serial #else // Para Leonardo/M0/etc, otros con hardware serial, usar hardware serial! // #0 es el cable amarillo, #1 es café #define mySerial Serial1 #endif Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); uint8_t id; void setup() { Serial.begin(9600); while (!Serial); // Para Yun/Leo/Micro/Zero/... delay(100); Serial.println("\n\nAdafruit Fingerprint Registro de Huellas"); // Configuración de la transmision de datos para el puerto serial finger.begin(57600); // Comprobar conexion con el sensor if (finger.verifyPassword()) { Serial.println(" Sensor encontrado!"); } else { Serial.println("No se encontro sensor de huellas :("); while (1) { delay(1); } } // Lectura de parámetros del sensor Serial.println(F("Leyendo parametros del sensor")); finger.getParameters(); Serial.print(F("Estatus: 0x")); Serial.println(finger.status_reg, HEX); Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX); Serial.print(F("Capacidad: ")); Serial.println(finger.capacity); Serial.print(F("Nivel de Seguridad: ")); Serial.println(finger.security_level); Serial.print(F("Dirección del Dispositivo: ")); Serial.println(finger.device_addr, HEX); Serial.print(F("Longitud del paquete: ")); Serial.println(finger.packet_len); Serial.print(F("Rango de Baudios: ")); Serial.println(finger.baud_rate); } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); } return num; } void loop() //Repetir una y otra vez { // Elección de dirección del registro de la huella Serial.println("Listo para registrar huella!"); Serial.println("Por favor escribe el ID # (del 1 al 127) en el que quieres registrar tu huella..."); id = readnumber(); if (id == 0) {// ID #0 no permitido, intenta otra vez! return; } Serial.print("Registrando ID #"); Serial.println(id); while (! getFingerprintEnroll() ); } // Registro de la huella uint8_t getFingerprintEnroll() { int p = -1; Serial.print("Esperando una huella valida para registrar en #"); Serial.println(id); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Imagen obtenida"); break; case FINGERPRINT_NOFINGER: Serial.println("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Error de comunicación"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Error de Imagen"); break; default: Serial.println("Error desconocido"); break; } } // OK Exito! p = finger.image2Tz(1); switch (p) { case FINGERPRINT_OK: Serial.println("Imagen Convertida"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Imagen muy confusa"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Error de comunicación"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("No se pueden encontrar las caracteristicas de la huella"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("No se pueden encontrar las caracteristicas de la huella"); return p; default: Serial.println("Error desconocido"); return p; } // Obtener segunda imagen de la huella Serial.println("Retira el dedo"); delay(2000); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Coloca el mismo dedo otra vez"); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Imagen obtenida"); break; case FINGERPRINT_NOFINGER: Serial.print("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Error de comunicación"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Error de imagen"); break; default: Serial.println("Error desconocido"); break; } } // OK Exito! p = finger.image2Tz(2); switch (p) { case FINGERPRINT_OK: Serial.println("Imagen convertida"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Imagen muy confusa"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Error de comunicación"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("No se pueden encontrar las características de la huella"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("No se pueden encontrar las características de la huella"); return p; default: Serial.println("Error desconocido"); return p; } // OK convertida! Serial.print("Creando el modelo para #"); Serial.println(id); p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Han coincidido las huellas!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Error de comunicación"); return p; } else if (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println("Las huellas no coinciden"); return p; } else { Serial.println("Error desconocido"); return p; } Serial.print("ID "); Serial.println(id); p = finger.storeModel(id); if (p == FINGERPRINT_OK) { Serial.println("Guardado!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Error de comunicación"); return p; } else if (p == FINGERPRINT_BADLOCATION) { Serial.println("No se puede guardar en esa ubicación"); return p; } else if (p == FINGERPRINT_FLASHERR) { Serial.println("Error de escritura en la memoria flash"); return p; } else { Serial.println("Error desconocido"); return p; } return true; }
Recuerda que para poder visualizar el funcionamiento del código debes abrir el monitor serial:
Si requieres más ejemplos de uso, por ejemplo para detectar si las huellas ya están guardadas, configuración del indicador LED o borrar registros de huellas, puedes acceder a los ejemplos que tiene la librería desde aquí o desde el IDE de Arduino:
También como sugerencia de uso puedes utilizar: K202 Placa de Control
Valoraciones
No hay valoraciones aún.