Ce que vous apprendrez
- Enregistrer des empreintes dans le lecteur d'empreinte digitale
- Faire des controles avec les empreintes enregistrées
- Supprimer des empreintes
Prérequis
Aucun
Contenu du cours
Un capteur d’empreinte optique est utilisé afin de scanner les données. Quand le doigt se pose, l’écran émet une forte lumière sous ce dernier pour accentuer la lumière reflétée par les sillons de l’empreinte digitale. L’image produite est analysée et le résultat permet de valider ou non une commande suite à une comparaison à une image prédéfinie.
Le Capteur
de reconnaissance d'empreinte numérique, capteur biométrique ou lecteur
d'empreinte numérique avec UART TTL port série, facile à utiliser peut-être utiliser
pour sécuriser votre projet avec la biométrie. Ces
modules sont généralement utilisés dans des coffres forts tels que tiroirs,
porte...
Le
capteur possède une puce DSP haute puissance qui fait le rendu de l'image, le
calcul, la fonction d'enquête et de recherche. Il a la capacité de retenir 300
empreintes digitales dans sa mémoire flash embarquée. Une LED bleue dans la
lentille clignote après avoir pris une photo.
Caractéristiques:
·
Tension d'alimentation: DC 3 ~ 5 V
·
Courant d'alimentation: 120 mA (150 mA maxi)
·
Taille de la fenêtre: 14 × 18 mm
·
Caractéristique Fichier: 256 octets
·
Fichiers de modèle: 512 octets
·
Capacité de stockage: 300
·
Temps de réponse: <1 seconde
·
Niveau de sécurité: niveau 3 (faible à haute: 1, 2, 3,
4, 5)
·
Taux d'erreur:
-
Bonne empreinte: <1,0% (lorsque le niveau de
sécurité set 3)
-
Mauvaise empreinte: <0,001 % (lorsque le niveau de
sécurité est 3)
·
Interface PC: UART (TTL niveau logique)
·
Taux de transmission de la communication (UART): (9600 ×
N) bps où N = 1 ~ 12
·
Température de fonctionnement: -20 ° C à + 50 ° C
·
Dimensions: 56 x 21 x 21 mm
Présentation du capteur d’empreinte digitale
Ce capteur possède 8 broches, mais nous n’utiliserons que 4.
·
Une carte Arduino (dans ce tuto j’ai utilisé
un UNO)
·
Un lecteur d’empreinte digital
·
Deux Leds (verte et rouge) et deux
résistances
·
Des fils de connexion
Tous ces matériels sont
disponibles chez Youpilab Bénin https://youpilab.com/components
Lecteur d’empreinte |
Carte Arduino |
V+ |
3.3V ou 5V |
Tx |
2 |
Rx |
3 |
GND |
GND |
|
|
#include <Adafruit_Fingerprint.h> #if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__) SoftwareSerial mySerial(2, 3); #else #define mySerial Serial1 #endif Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); int ledR=8; int ledV=9; void setup() { Serial.begin(9600); pinMode(ledR,OUTPUT); pinMode(ledV,OUTPUT); while (!Serial); // For Yun/Leo/Micro/Zero/... delay(100); Serial.println("\n\nAdafruit finger detect test"); finger.begin(57600); delay(5); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } } Serial.println(F("Reading sensor parameters")); finger.getParameters(); Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX); Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX); Serial.print(F("Capacity: ")); Serial.println(finger.capacity); Serial.print(F("Security level: ")); Serial.println(finger.security_level); Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX); Serial.print(F("Packet len: ")); Serial.println(finger.packet_len); Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate); finger.getTemplateCount(); if (finger.templateCount == 0) { Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example."); } else { Serial.println("Waiting for valid finger..."); Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates"); } } void loop() // run over and over again { getFingerprintID(); delay(50); //don't ned to run this at full speed. } uint16_t getFingerprintID() { uint16_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; } // OK success! 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; } // OK converted! p = finger.fingerSearch(); if (p == FINGERPRINT_OK) { Serial.println("Empreinte trouvée"); digitalWrite(ledV,HIGH); delay(1000); digitalWrite(ledV,LOW); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); digitalWrite(ledR,HIGH); delay(1000); digitalWrite(ledR,LOW); return p; } else { Serial.println("Unknown error"); return p; } // found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } // returns -1 if failed, otherwise returns ID # int getFingerprintIDez() { uint16_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; // found a match! Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; }
Lecteur d'empreinte | carte Arduino |
V+ | 3,3v ou 5V |
Tx | 2 |
Rx | 3 |
GND | GND |
LED Rouge | 8 |
LED Verte | 9 |
#include <Adafruit_Fingerprint.h>
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
SoftwareSerial mySerial(2, 3);
#else
#define mySerial Serial1
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
int ledR=8;
int ledV=9;
void setup()
{
Serial.begin(9600);
pinMode(ledR,OUTPUT);
pinMode(ledV,OUTPUT);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit finger detect test");
finger.begin(57600);
delay(5);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
Serial.println(F("Reading sensor parameters"));
finger.getParameters();
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
finger.getTemplateCount();
if (finger.templateCount == 0) {
Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
}
else {
Serial.println("Waiting for valid finger...");
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
}
}
void loop() // run over and over again
{
getFingerprintID();
delay(50); //don't ned to run this at full speed.
}
uint16_t getFingerprintID() {
uint16_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;
}
// OK success!
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;
}
// OK converted!
p = finger.fingerSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Empreinte trouvée");
digitalWrite(ledV,HIGH);
delay(1000);
digitalWrite(ledV,LOW);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
digitalWrite(ledR,HIGH);
delay(1000);
digitalWrite(ledR,LOW);
return p;
} else {
Serial.println("Unknown error");
return p;
}
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
uint16_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;
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
/***************************************************
This is an example sketch for our optical Fingerprint sensor
Designed specifically to work with the Adafruit Fingerprint sensor
----> http://www.adafruit.com/products/751
These displays use TTL Serial to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Adafruit_Fingerprint.h>
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
#endif
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nDelete Finger");
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1);
}
}
uint16_t readnumber(void) {
uint16_t num = 0;
while (num == 0) {
while (! Serial.available());
num = Serial.parseInt();
}
return num;
}
void loop() // run over and over again
{
Serial.println("Entrez l'ID # (de 1 à 299) que vous voulez supprimer...");
uint16_t id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("supression de l'ID #");
Serial.println(id);
deleteFingerprint(id);
}
uint16_t deleteFingerprint(uint16_t id) {
uint16_t p = -1;
p = finger.deleteModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("ID supprimé!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not delete in that location");
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
} else {
Serial.print("Unknown error: 0x"); Serial.println(p, HEX);
}
return p;
}
Le lien vers YouTube
Ajoutez l'authentification biométrique (empreinte digitale) à vos projets.
Catégorie
Durée
01:00:00
Nombre de vidéos
0
Certificat de fin de formation
NON