Créer une Zone Sécurisée Arduino pour Déverrouiller Android, iOS et Windows 10 par Empreinte
Composants et fournitures
| Composant | Quantité |
|---|---|
| Module Bluetooth HC-05 série sans fil | 1 |
| Arduino Nano R3 | 1 |
| Module empreinte digitale R301T | 1 |
| LED RGB 5 mm 4 broches (anode commune) | 1 |
Applications et services en ligne
- Arduino IDE
À propos du projet
Ce projet crée un gadget « zone sûre » qui déverrouille vos appareils (smartphones, PC) quand vous êtes à proximité, après authentification par empreinte digitale. Fini les déverrouillages répétitifs dans votre bureau privé !
Objectifs :
- Apprendre à utiliser un capteur d'empreintes
- Appairer vos appareils avec le gadget zone sûre
- Réaliser un gadget pratique et ludique
Verrouiller & Déverrouiller les appareils
Nos appareils contiennent des données privées (chats, contacts, photos, notes). Les méthodes de verrouillage actuelles (code, empreinte, visage) deviennent fastidieuses quand on travaille seul dans une pièce sûre. L'idée : un petit gadget qui, activé par votre empreinte, se connecte en Bluetooth à vos appareils et les maintient déverrouillés tant qu'il reste à portée.
Module R301T Empreinte Digitale
Le R301T communique en série (UART) avec l'Arduino. On y enregistre d'abord son empreinte, puis on le relie aux pins Tx/Rx de l'Arduino. Le module Bluetooth HC-05 est appairé une fois avec chaque appareil. Le code Arduino active le Bluetooth dès qu'une empreinte valide est reconnue.
Schéma de câblage
Code
Installer la librairie Adafruit_Fingerprint puis téléverser :
#include "Adafruit_Fingerprint.h"
#include "SoftwareSerial.h"
SoftwareSerial mySerial(2, 3); // RX, TX
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int cc = 0;
void setup() {
Serial.begin(9600);
while (!Serial);
delay(100);
Serial.println("\n\nTest detection empreinte Adafruit");
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Capteur empreinte trouvé !");
} else {
Serial.println("Capteur non détecté :(");
while (1) {
pinMode(13, OUTPUT); digitalWrite(13, LOW);
pinMode(9, OUTPUT); digitalWrite(9, HIGH);
}
}
finger.getTemplateCount();
Serial.print("Capteur contient "); Serial.print(finger.templateCount); Serial.println(" empreintes");
Serial.println("En attente empreinte valide...");
}
void loop() {
getFingerprintIDez();
delay(50);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK: Serial.println("Image capturée"); break;
case FINGERPRINT_NOFINGER: Serial.println("Aucun doigt détecté"); return p;
case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Erreur communication"); return p;
case FINGERPRINT_IMAGEFAIL: Serial.println("Erreur imagerie"); return p;
default: Serial.println("Erreur inconnue"); return p;
}
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK: Serial.println("Image convertie"); break;
case FINGERPRINT_IMAGEMESS: Serial.println("Image trop brouillée"); return p;
case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Erreur communication"); return p;
case FINGERPRINT_FEATUREFAIL: Serial.println("Caractéristiques non trouvées"); return p;
case FINGERPRINT_INVALIDIMAGE: Serial.println("Caractéristiques non trouvées"); return p;
default: Serial.println("Erreur inconnue"); return p;
}
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) Serial.println("Correspondance trouvée !");
else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Erreur communication"); return p; }
else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Aucune correspondance"); return p; }
else { Serial.println("Erreur inconnue"); return p; }
Serial.print("ID #"); Serial.print(finger.fingerID);
Serial.print(" confiance "); 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("ID #"); Serial.print(finger.fingerID);
Serial.print(" confiance "); Serial.println(finger.confidence);
return finger.fingerID;
}
Assemblage & Appairage
Appairage Bluetooth :
- Windows 10 : Paramètres → Options de connexion → Verrouillage dynamique → Appairer module BT
- Android : Paramètres → Affichage → Écran de verrouillage → Smart Lock → Appairer BT
- iOS : Réglages → Touch ID et Code → Configurer
Si l'appairage automatique échoue, envoyer un caractère depuis l'Arduino lors de la première tentative.
Améliorations possibles
- Rendre le gadget sensible à une position GPS spécifique
- Ajouter des accès limités pour d'autres utilisateurs
Code (Librairie)
Librairie Adafruit Fingerprint (téléchargement uniquement)
Processus de fabrication
- Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Système de Surveillance Thermique Scolaire : Précis, Temps Réel et Sécurisé
- Bibliothèque Arduino efficace pour port E/S 8 bits — Étendez le contrôle numérique
- Contrôler les clignotements LED Arduino depuis votre application iOS/Android via WiFi/Ethernet
- Clavier prototype 64 touches Arduino avec registres à décalage - Matrice clavier DIY
- Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
- Kit de robot de navigation intérieure intelligente pour projets Arduino
- Comment les pompes à eau directes améliorent l'efficacité de la transmission d'eau