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.