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

M430 Voltimetro y Amperimetro Digital 100V 10A DC
Beetle BLE ATmega328 Bluetooth 4.0 DFR0339
XIAO ESP32-S3 Wi-Fi y BLE
Conector de Audio XLR 3 Pines Plateado Hembra y Macho
Plug 3.5mm TRRS Metálico
Transformador 6VC/T 1A con Tap Central
Espuma Limpiadora para Equipos Electrónicos 454 ml SILIMPO
Limpiador Dieléctrico para Circuitos y Tarjetas Electrónicas 454 ml COMPUKLIN
Kit Brazo Mecánico con Garra de 4DOF
TIP112 Transistor NPN 100V 2A TO-220
LM2596S-5.0/TR Regulador de Voltaje 5V 3A SMD
Conector Estéreo de 3.5mm 90 grados Niquelado Negro
Puntas para Multímetro de 1000V 10A
CD4511BM/TR Decodificador
2SC4237 Transistor NPN 800V 12A TO-247
PIC18F4550-I/P Microcontrolador 8 Bits DIP-40
LED Rojo SMD 1206 NCD1206R1
PCM1808 Decodificador de Audio Estereo ADC 99dB SNR 24 Bits
Kit Reloj Electrónico Digital AT89C2051 4 Bits
Generador Ondas Cuadradas NE555
Set de Pinzas con Punta de Cerámica
Limpiador de Alambre para Puntas de Cautín
Disipador de Calor Raspberry Pi 3B
Cargador de Carga Rápida 40W US + Cable Tipo C
Cable Dúplex para Bocina 22 AWG 2 Vías Bicolor 1 Metro
74LS90 Contador de Décadas SN74LS90N DIP-14
Punta de Prueba SMD para Multímetro
UNIT DualMCU ONE ESP32 + RP2040
Congelante Detector de Falla para Circuitos Electrónicos 170 ml SILIJET E-3
Limpiador Electrónico en Aerosol 454 ml SILIJET E-7 Plus
Cautín de 90W 110V con Puntas Soporte y Esponja
Terminal Dupont Macho
UNIT Pi Pico Kit de Iniciación para Raspberry Pi Pico 27 Practicas
TTP223B Sensor Capacitivo Touch - UNIT DevLab
CAU-115A Cautin Tipo Lapiz de 35W 127V con Accesorios























Valoraciones
No hay valoraciones aún.