Mejora la Seguridad de tu Motocicleta con un Sistema de Sensor Biométrico
Componentes y materiales
| Componente | Cantidad | |
|---|---|---|
| Arduino Mini 05 (Pro Mini) | 1 | |
| Relé (genérico) | 1 | |
| Sensor biométrico - Modelo: FPM10A | 1 | Lector de huellas dactilares óptico |
| Módulo regulador de voltaje (Digilent) | 1 |
Herramientas necesarias
- Soldador (genérico)
- Estaño sin plomo
- Cinta aislante
- Alicates de punta larga
Aplicaciones y servicios online
- Arduino Web Editor
Sobre el proyecto
Ante la gran cantidad de robos de motocicletas, usamos un Arduino Pro Mini para desarrollar un sistema antirrobo que vincula la moto al registro digital del usuario mediante huella dactilar.
Canal Sandro Mesquita Roboticamente
Código
Código del Sistema de Seguridad para Motocicleta
/***************************************************
* Ejemplo para sensor óptico de huella dactilar Adafruit
* Diseñado para Adafruit Fingerprint Sensor #751
* Comunicación serie TTL, 2 pines requeridos
* Licencia BSD - Todo el texto anterior debe incluirse en redistribución
****************************************************/
int clave = 0;
int verde = 5;
int azul = 4;
int rojo = 6;
int rele = 7;
#include <Adafruit_Fingerprint.h>
// En Leonardo/Micro u otros con serial hardware, usar Serial1
// #0 cable verde, #1 cable blanco
// #define mySerial Serial1
// Para UNO y otros sin serial hardware, usar SoftwareSerial
// Pin #2 = IN del sensor (cable VERDE)
// Pin #3 = OUT del Arduino (cable BLANCO)
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup() {
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(rele, 1); // Relé normalmente cerrado (desactivado)
delay(100);
digitalWrite(azul, 1); // LED azul: inicializando
finger.begin(57600); // Iniciar sensor a 57600 baudios
// Verificación de contraseña del sensor (comentado)
/* if (finger.verifyPassword()) {
Serial.println("Sensor de huella encontrado!");
} else {
Serial.println("No se encontró sensor de huella :(");
while (1) { delay(1); }
} */
// finger.getTemplateCount();
// Serial.print("Sensor contiene "); Serial.print(finger.templateCount); Serial.println(" plantillas");
digitalWrite(azul, 0);
digitalWrite(rojo, 1); // LED rojo: esperando huella
digitalWrite(verde, 0);
}
void loop() {
if (getFingerprintIDez() == 1) {
clave = !clave; // Alternar estado
delay(500); // Antirrebote
}
digitalWrite(rele, !clave); // Relé activo en bajo
digitalWrite(verde, clave); // LED verde: acceso concedido
digitalWrite(rojo, digitalRead(rele)); // LED rojo: acceso denegado
delay(50);
}
// Función completa de obtención de ID con mensajes de debug
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK: break;
case FINGERPRINT_NOFINGER: return p;
case FINGERPRINT_PACKETRECIEVEERR: return p;
case FINGERPRINT_IMAGEFAIL: return p;
default: return p;
}
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK: break;
case FINGERPRINT_IMAGEMESS: return p;
case FINGERPRINT_PACKETRECIEVEERR: return p;
case FINGERPRINT_FEATUREFAIL: return p;
case FINGERPRINT_INVALIDIMAGE: return p;
default: return p;
}
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
// Serial.println("¡Coincidencia encontrada!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) { return p; }
else if (p == FINGERPRINT_NOTFOUND) { return p; }
else { return p; }
// Serial.print("ID encontrado #"); Serial.print(finger.fingerID);
// Serial.print(" con confianza "); Serial.println(finger.confidence);
return finger.fingerID;
}
// Versión simplificada: devuelve -1 si falla, sino ID
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;
p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;
p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
// Serial.print("ID encontrado #"); Serial.print(finger.fingerID);
// Serial.print(" confianza "); Serial.println(finger.confidence);
return finger.fingerID; // Devuelve ID si coincide, activa alternancia
}
Esquemas

Funcionamiento
- LED Azul: Parpadea durante inicialización del sensor
- LED Rojo: Encendido = sistema bloqueado / esperando huella válida
- LED Verde: Encendido = acceso concedido (relé activado)
- Relé: Controla el circuito de encendido de la moto (normalmente cerrado)
- Sensor FPM10A: Comunicación serie por pines 2 (RX) y 3 (TX) via SoftwareSerial
Al detectar una huella registrada, el sistema alterna el estado del relé (encendido/apagado), permitiendo o impidiendo el arranque de la motocicleta. Incluye antirrebote de 500ms para evitar lecturas múltiples accidentales.
Proceso de manufactura
- Detector de idiomas TinyML con Edge Impulse en Arduino Nano 33 BLE Sense
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Construye tu Propio Juego de Ruleta de 37 LEDs con Arduino Nano
- Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
- ATtiny85 Mini Arcade: Snake – Construye una Consola Portátil OLED
- Detector de Rango Portátil – Kit DIY Arduino Nano con HC-SR04, Batería 18650 y Carcasa Impresa en 3D
- Proyecto de electroplacado de cobre: Construye un sistema inteligente con Arduino UNO
- Pong Neón en Matriz NeoPixel con Arduino Nano
- Estación meteorológica Arduino Nano: Sensores BMP280, DHT11, UV y RTC en OLED 0,96"
- Crea Secuencias de Luz Impactantes con Arduino y Registro de Desplazamiento