Bouw een Arduino Veilige Zone: Ontgrendel Android, iOS & Windows 10 met Vingerafdruk
Onderdelen en Benodigdheden
| Onderdeel | Aantal |
|---|---|
| HC-05 Bluetooth Serial Wireless Module | 1 |
| Arduino Nano R3 | 1 |
| R301T Semiconductor Vingerafdruk Module | 1 |
| 5mm RGB Tri-color 4Pin LED | 1 |
Apps & Online Services
- Arduino IDE
Over dit Project
In dit artikel bouwen we een slimme gadget die een veilige zone creëert voor je apparaten. Aan het einde van dit project:
- Leer je hoe je een vingerafdruksensor gebruikt
- Leer je hoe je je apparaten koppelt met de veilige zone gadget
- Heb je een coole gadget genaamd "Safe Zone"

Apparaten Vergrendelen & Ontgrendelen
Ons gebruik van slimme apparaten is toegenomen en we bewaren veel gevoelige data (chats, contacten, foto's, notities). Sommige data moet privéblijven, daarom vergrendelen we onze apparaten. Maar beveiliging kan frustrerend zijn als je in een veilige omgeving werkt (bijv. je eigen kamer).
Onze oplossing: een kleine gadget die via Bluetooth verbindt met al je apparaten. Activeer hem met je vingerafdruk, en zolang de gadget in de buurt is, blijven je apparaten ontgrendeld.
R301T Vingerafdruk Module

De R301T communiceert serieel met een controller (Arduino) om data uit te wisselen. Je registreert eerst je vingerafdruk, sluit de sensor aan op Arduino TX/RX pinnen. We gebruiken een HC-05 Bluetooth module en koppelen deze één keer met onze apparaten. De Arduino code zorgt ervoor dat Bluetooth inschakelt bij geldige vingerafdruk.
Schema

Code
Je moet de vingerafdruksensor bibliotheek toevoegen en de code uploaden. Eerste keer Arduino? Volg deze stappen:
- Download Arduino IDE van arduino.cc
- Open IDE, wis editor, plak de code
- Kies je bord onder Tools → Board
- Verbinden met PC, stel COM-poort in onder Tools → Port
- Klik Upload (pijltje)
- Klaar!
#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;
}
Montage

Bluetooth koppelen:
- Windows 10: Instellingen → Zoek "inlogopties" → Schakel "Dynamic Lock" in → Koppel BT module
- Android: Instellingen → Scherm → Schermvergrendeling → Schakel "Smart Lock" in → Koppel met BT
- iOS: Instellingen → Touch ID & Wachtcode → Configureer daar
Als apparaten niet automatisch koppelen: stuur een teken naar het apparaat tijdens de eerste koppeling.
Wat Komt Er Nu?
- Maak de gadget gevoelig voor een specifieke locatie (GPS/geofencing)
- Voeg beperkte toegang toe voor andere gebruikers
Code
Vingerafdruk Bibliotheek
Download de bibliotheek uit de bijlagen (geen preview beschikbaar).
Productieproces
- Arduino Nano Flight Simulator 2020 Bedieningspaneel – LCD & CDI Display
- Bouw een indrukwekkend monitor Ambilight-systeem met Arduino
- Slim Temperatuurmonitoring Systeem voor Scholen: Nauwkeurig, Real-time en Beveiligd
- Efficiënte 8-bit IO-poort bibliotheek voor Arduino – Uitbreiding digitale controle
- Bestuur Arduino LED Knipperen vanaf iOS & Android App via WiFi/Ethernet
- Arduino 64-toets Prototoetsenbord Matrix – Bouw een Aangepast Toetsenbord met Shift Registers
- Maak Muzikale Tonen met Arduino: Stapsgewijze Handleiding
- Hoogwaardige 2,8″ TFT Shield voor Arduino Nano – 320×240 SPI Display
- Geïsoleerde analoge ingangsschakeling voor Arduino bouwen
- Slim Indoor Navigatie Robot Kit voor Arduino Projecten
- Hoe directe waterpompen de watertransmissie-efficiëntie verbeteren