Crea una Zona Segura con Arduino para Desbloquear Android, iOS y Windows 10
Componentes y materiales
| Módulo Bluetooth HC-05 | × | 1 |
| Arduino Nano R3 | × | 1 |
| Módulo huella dactilar R301T | × | 1 |
| LED RGB 5 mm 4 pines | × | 1 |
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
En este artículo creamos un gadget que establece una "zona segura" para desbloquear tus dispositivos automáticamente. Al finalizar:
- Aprenderás a usar un sensor de huella dactilar.
- Aprenderás a emparejar tus dispositivos con el gadget.
- Tendrás un dispositivo "zona segura" funcional.
Bloqueo y desbloqueo de dispositivos
Hoy usamos múltiples dispositivos inteligentes con datos privados (chats, contactos, fotos, notas). La seguridad es esencial, pero los métodos actuales pueden ser tediosos cuando estás en un entorno seguro (tu habitación, solo).
Nuestra solución: un pequeño gadget que se conecta por Bluetooth a todos tus dispositivos. Al activarlo con tu huella, empareja y desbloquea tus dispositivos mientras esté cerca.
Módulo huella dactilar R301T
El R301T se comunica por serie con Arduino. Registramos nuestra huella, lo conectamos a los pines Tx/Rx del Arduino, y usamos un módulo Bluetooth HC-05 emparejado una vez con nuestros dispositivos. El código de Arduino activa el Bluetooth al detectar huella válida.
Circuito
Código
Debes añadir la librería del sensor de huella y subir el código. Si es tu primera vez con Arduino:
- Descarga Arduino IDE en arduino.cc e instálalo.
- Abre el IDE, limpia el editor y pega el código.
- En Herramientas > Placa, selecciona tu Arduino.
- Conecta el Arduino al PC y selecciona el puerto COM en Herramientas > Puerto.
- Pulsa Subir (flecha).
- ¡Listo!
#include "Adafruit_Fingerprint.h"
#include "SoftwareSerial.h"
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int cc = 0;
void setup() {
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("\n\nAdafruit finger detect test");
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) {
pinMode(13, OUTPUT); digitalWrite(13, LOW);
pinMode(9, OUTPUT); digitalWrite(9, HIGH);
}
}
finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
}
void loop() {
getFingerprintIDez();
delay(50);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK: Serial.println("Image taken"); break;
case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p;
case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p;
case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p;
default: Serial.println("Unknown error"); return p;
}
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK: Serial.println("Image converted"); break;
case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p;
case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p;
case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p;
case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p;
default: Serial.println("Unknown error"); return p;
}
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) Serial.println("Found a print match!");
else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; }
else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; }
else { Serial.println("Unknown error"); return p; }
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
for (int i = 255; i > 1; i--) { analogWrite(9, i); delay(10); }
if (cc % 2 == 0) digitalWrite(13, HIGH); else digitalWrite(13, LOW);
cc++;
return finger.fingerID;
}
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("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
Montaje
Primero, empareja el módulo Bluetooth con tu dispositivo:
- Windows 10: Configuración > Opciones de inicio de sesión > Bloqueo dinámico > Emparejar BT.
- Android: Ajustes > Pantalla > Bloqueo de pantalla > Smart Lock > Emparejar BT.
- iOS: Ajustes > Touch ID y código > Configurar desde ahí.
Si no emparejan automáticamente, envía un carácter al dispositivo al intentar emparejar por primera vez.
¿Qué sigue?
- Haz el gadget sensible a una ubicación específica.
- Añade acceso limitado para otros usuarios.
Código
Librería huella dactilar C/C++
Solo descarga (sin vista previa).
Proceso de manufactura
- Panel de control para Flight Simulator 2020 con Arduino Nano: Pantallas LCD y CDI
- Crea un Impresionante Sistema Ambilight para Monitor con Arduino
- Sistema inteligente de monitorización de temperatura para escuelas: preciso, en tiempo real y seguro
- Librería Eficiente de Puerto I/O de 8 Bits para Arduino – Expande el Control Digital
- Controla el Parpadeo del LED de Arduino desde tu App iOS/Android vía WiFi/Ethernet
- Teclado Prototipo de 64 Teclas con Arduino: Matriz con Registros de Desplazamiento
- Genera Tonos Musicales con Arduino: Guía Paso a Paso
- Pantalla TFT Shield de Alto Rendimiento 2.8” para Arduino Nano – Display SPI 320×240
- Circuito de entrada analógica aislada para Arduino
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino
- Cómo las Bombas de Agua Directas Mejoran la Eficiencia de Transmisión de Agua