Description
Sécurisez votre projet grâce à la biométrie : ce capteur d’empreintes numériques optiques tout-en-un rendra l’ajout de la détection et de la vérification des empreintes numériques extrêmement simple. Il est facile à utiliser et plus abordable que jamais !
Ces modules sont généralement utilisés dans les coffres-forts : ils sont dotés d’une puce DSP haute puissance qui effectue le rendu d’image, le calcul, la recherche de caractéristiques et la recherche. Connectez-vous à n’importe quel microcontrôleur ou système avec série TTL et envoyez des paquets de données pour prendre des photos, détecter des empreintes, effectuer des hachages et effectuer des recherches.
Il est livré avec un connecteur à 8 broches au pas de 1 mm avec des prises d’en-tête de 0,1″ pour le plug-and-play. Vous pouvez également facilement couper et souder directement les fils. Le câble est codé par couleur, il est donc facile à câbler :
- Le rouge correspond à une alimentation de 3,3 V
- Le noir est TTL Serial TX
- Le jaune correspond au TTL Serial RX
- Le vert est la terre
Description de l’article
L’algorithme d’empreintes digitales extrait les caractéristiques de l’image d’empreinte numérique acquise et représente les informations d’empreinte numérique. Le stockage, la comparaison et la recherche d’empreintes numériques sont tous effectués en exploitant les fonctions d’empreinte numérique.
Le traitement des empreintes numériques comprend deux processus : le processus d’enregistrement des empreintes numériques et le processus de correspondance des empreintes numériques (dans lequel la correspondance des empreintes numériques est divisée en comparaison d’empreintes numériques (1:1) et recherche d’ empreintes digitales (1:N) de deux manières).
Lors de l’enregistrement de l’empreinte numérique, deux empreintes numériques sont saisies pour chaque empreinte numérique et l’image d’entrée est traitée deux fois. Le module de synthèse est stocké dans le module.
Lorsque l’empreinte numérique est appariée, le capteur d’empreintes numériques est utilisé pour saisir l’image d’empreinte numérique à vérifier et à traiter, puis elle est comparée au module d’empreinte numérique dans le module (si elle est appariée avec un module spécifié dans le module, on parle de mode de comparaison d’empreintes numériques, c’est-à-dire de mode 1:1 Si la correspondance avec plusieurs modules est appelée recherche d’empreintes numériques, c’est-à. -terrible mode 1:N, le module donne le résultat de la correspondance (réussite ou échec).
Tension d’alimentation : DC 3,3 V-6 V
Courant d’alimentation : Courant : < 120 mA
Courant de crête : < 140 mA
Durée de l’image d’empreinte numérique : < 1,0 seconde
Taille de la fenêtre : 14 x 18 mm
Fichier de signature : 256 octets
Fichiers de modèle : 512 octets
Capacité de stockage : 1 000
Niveau de sécurité : cinq (du plus bas au plus élevé : 1, 2, 3, 4, 5)
Taux de fausses acceptations (FAR) : < 0,001 % (niveau de sécurité 3)
Taux de faux rejets (FRR) : < 1,0 % (niveau de sécurité 3)
Temps de recherche : < 1,0 seconde (1:500, la moyenne)
Interface PC : UART (niveau logique TTL) ou USB 2.0/USB 1.1
Débit en bauds de communication (UART) : (9 600 x N) bps où N = 1 ~ 12 (valeur par défaut N = 6, soit 57 600 bps)
Environnement de travail :
Température : -20 ° – +50 °
Humidité Relative : 40% RH-85% RH (sans condensation )
Environnement de stockage :
Température : -40° – +85°
Humidité relative : <85% H (sans condensation)
Dimensions (L xlx H) : 56 x 20×21,5mm
Comment démarrer avec le module de capteur de lecteur d’empreintes numériques AS608
Le câblage du module d’empreintes digitales à l’Arduino utilise l’UART, que nous utiliserons dans le logiciel (SoftwareSerial() dans Arduino). Le schéma de câblage (y compris le câblage des LED d’acceptation et de refus) est présenté ci-dessous :
Téléchargement de la bibliothèque d’empreintes digitales d’Adafruit
Adafruit possède une bibliothèque simple et facile à comprendre. Pour télécharger la bibliothèque, ouvrez le gestionnaire de bibliothèques et saisissez « empreinte digitale » ; la bibliothèque est présentée ci-dessous sous le nom de « Bibliothèque de capteurs d’empreintes digitales Adafruit par Adafruit ».
La bibliothèque Adafruit contient plusieurs exemples, dont deux serviront de base au reste de ce tutoriel. Les deux exemples sont nommés :
-
inscrire
-
empreinte digitale
L’exemple d’inscription doit être téléchargé avant de tester les autres algorithmes. Ce processus est décrit ci-dessous.
Enregistrement d’une empreinte digitale pour identification
Avant de pouvoir tester les algorithmes d’acceptation et de refus, nous devons d’abord entraîner le capteur d’empreintes digitales à reconnaître les empreintes digitales que nous souhaitons accepter. Le code « Enroll Fingerprint » est présenté ci-dessous. La méthode la plus simple pour comprendre le code ci-dessous consiste simplement à le télécharger sur la carte Arduino, puis à suivre les instructions.
#include <Adafruit_Fingerprint.h> SoftwareSerial mySerial(2, 3); // TX/RX Adafruit_Fingerprint doigt = Adafruit_Fingerprint(&mySerial); identifiant uint8_t; configuration vide() { Série.begin(9600); while (!Serial); // Pour Yun/Leo/Micro/Zero/... retard(100); Serial.println("\n\nEnregistrement du capteur d'empreintes digitales Adafruit"); // définir le débit de données pour le port série du capteur doigt.begin(57600); si (finger.verifyPassword()) { Serial.println("Capteur d'empreintes digitales trouvé !"); } autre { Serial.println("Impossible de trouver le capteur d'empreintes digitales :("); pendant que (1) { délai(1); } } } uint8_t readnumber(void) { uint8_t num = 0; tandis que (num == 0) { pendant que (! Serial.disponible()); num = Serial.parseInt(); } retourner num; } void loop() // exécuter encore et encore { Serial.println("Prêt à enregistrer une empreinte digitale !"); Serial.println("Veuillez saisir l'ID # (de 1 à 127) sous lequel vous souhaitez enregistrer ce doigt..."); id = lirenuméro(); si (id == 0) {// ID #0 n'est pas autorisé, réessayez ! retour; } Serial.print("ID d'inscription "); Série.println(id); pendant que (! getFingerprintEnroll() ); } uint8_t getFingerprintEnroll() { int p = -1; Serial.print("En attente d'un doigt valide pour s'inscrire en tant que #"); Serial.println(id); pendant que (p != EMPREINTE_DIGITALE_OK) { p = doigt.getImage(); commutateur (p) { cas FINGERPRINT_OK : Serial.println("Image prise"); casser; cas FINGERPRINT_NOFINGER : casser; cas FINGERPRINT_PACKETRECIEVEERR : Serial.println("Erreur de communication"); casser; cas FINGERPRINT_IMAGEFAIL : Serial.println("Erreur d'imagerie"); casser; défaut: Serial.println("Erreur inconnue"); casser; } } // OK succès ! p = doigt.image2Tz(1); commutateur (p) { cas FINGERPRINT_OK : Serial.println("Image convertie"); casser; cas FINGERPRINT_IMAGEMESS : Serial.println("Image trop brouillonne"); retour p; cas FINGERPRINT_PACKETRECIEVEERR : Serial.println("Erreur de communication"); retour p; cas FINGERPRINT_FEATUREFAIL : Serial.println("Impossible de trouver les fonctionnalités d'empreinte digitale"); retour p; cas FINGERPRINT_INVALIDIMAGE : Serial.println("Impossible de trouver les fonctionnalités d'empreinte digitale"); retour p; défaut: Serial.println("Erreur inconnue"); retour p; } Serial.println("Retirer le doigt"); retard (2000); p = 0; pendant que (p != EMPREINTE_DIGITALE_SANSDOIGT) { p = doigt.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Replacer le même doigt"); pendant que (p != EMPREINTE_DIGITALE_OK) { p = doigt.getImage(); commutateur (p) { cas FINGERPRINT_OK : Serial.println("Image prise"); casser; cas FINGERPRINT_NOFINGER : casser; cas FINGERPRINT_PACKETRECIEVEERR : Serial.println("Erreur de communication"); casser; cas FINGERPRINT_IMAGEFAIL : Serial.println("Erreur d'imagerie"); casser; défaut: Serial.println("Erreur inconnue"); casser; } } // OK succès ! p = doigt.image2Tz(2); commutateur (p) { cas FINGERPRINT_OK : Serial.println("Image convertie"); casser; cas FINGERPRINT_IMAGEMESS : Serial.println("Image trop brouillonne"); retour p; cas FINGERPRINT_PACKETRECIEVEERR : Serial.println("Erreur de communication"); retour p; cas FINGERPRINT_FEATUREFAIL : Serial.println("Impossible de trouver les fonctionnalités d'empreinte digitale"); retour p; cas FINGERPRINT_INVALIDIMAGE : Serial.println("Impossible de trouver les fonctionnalités d'empreinte digitale"); retour p; défaut: Serial.println("Erreur inconnue"); retour p; } // OK converti ! Serial.print("Création du modèle pour #"); Serial.println(id); p = doigt.createModel(); si (p == EMPREINTE_DIGITALE_OK) { Serial.println("Impressions correspondantes !"); } sinon si (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Erreur de communication"); retour p; } sinon si (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println("Les empreintes digitales ne correspondent pas"); retour p; } autre { Serial.println("Erreur inconnue"); retour p; } Serial.print("ID "); Serial.println(id); p = doigt.storeModel(id); si (p == EMPREINTE_DIGITALE_OK) { Serial.println("Stocké !"); } sinon si (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Erreur de communication"); retour p; } sinon si (p == FINGERPRINT_BADLOCATION) { Serial.println("Impossible de stocker à cet emplacement"); retour p; } sinon si (p == FINGERPRINT_FLASHERR) { Serial.println("Erreur d'écriture sur la mémoire flash"); retour p; } autre { Serial.println("Erreur inconnue"); retour p; } }
L’exemple de code ci-dessus nécessite que l’utilisateur saisisse un entier, qui identifiera une empreinte digitale spécifique.
L’utilisateur pourra créer jusqu’à 128 empreintes digitales uniques qui pourront être rappelées ultérieurement. Le processus général d’enregistrement d’une empreinte digitale est le suivant :
-
Entrer un entier
-
Placez le doigt sur le capteur
-
Retirez le doigt lorsque vous y êtes invité.
-
Placez à nouveau le doigt sur le capteur
-
Attendez que le capteur vérifie l’impression et imprime « Stocké ! »
Vous trouverez ci-dessous une capture d’écran de l’exemple de sortie sur le port série utilisant 127 comme index d’empreinte digitale.
Algorithme d’acceptation et de refus d’empreintes digitales
À ce stade, on suppose qu’une ou plusieurs empreintes digitales ont été enregistrées dans le capteur AS608. Nous pouvons maintenant tester si l’Arduino et le module d’empreintes digitales peuvent réidentifier ces empreintes digitales enregistrées et rejeter les empreintes digitales inconnues. Le code complet est présenté ci-dessous, qui allumera une LED sur la broche 8 si l’empreinte digitale est reconnue et fera clignoter une LED sur la broche 9 cinq fois si l’empreinte digitale n’est pas reconnue.
Cet algorithme peut être utilisé dans des scénarios de sécurité tels que ceux vus à la télévision et au cinéma pour les serrures de porte, etc.
#include <Adafruit_Fingerprint.h> const int led_pin_accept = 8; const int led_pin_deny = 9; volatile int finger_status = -1; SoftwareSerial mySerial(2, 3); // TX/RX sur le capteur d'empreintes digitales Adafruit_Fingerprint doigt = Adafruit_Fingerprint(&mySerial); configuration vide() { Série.begin(9600); pinMode(led_pin_accept,SORTIE); pinMode(led_pin_deny,SORTIE); while (!Serial); // Pour Yun/Leo/Micro/Zero/... retard(100); Serial.println("\n\nTest de détection de doigt Adafruit"); // définir le débit de données pour le port série du capteur doigt.begin(57600); si (finger.verifyPassword()) { Serial.println("Capteur d'empreintes digitales trouvé !"); } autre { Serial.println("Impossible de trouver le capteur d'empreintes digitales :("); pendant que (1) { délai(1); } } doigt.getTemplateCount(); Serial.print("Le capteur contient "); Serial.print(finger.templateCount); Serial.println(" modèles "); Serial.println("En attente d'un doigt valide..."); } void loop() // exécuter encore et encore { finger_status = getFingerprintIDez(); si (finger_status!=-1 et finger_status!=-2){ digitalWrite(led_pin_accept,HIGH); délai(1000); } autre{ si (finger_status==-2){ pour (int ii=0;ii<5;ii++){ digitalWrite(led_pin_deny,HIGH); retard(50); digitalWrite(led_pin_deny,LOW); retard(50); } } digitalWrite(led_pin_accept,LOW); } delay(50); // il n'est pas nécessaire de l'exécuter à pleine vitesse. } // renvoie -1 en cas d'échec, sinon renvoie l'ID # int getFingerprintIDez() { uint8_t p = doigt.getImage(); si (p!=2){ Série.println(p); } si (p != FINGERPRINT_OK) renvoie -1 ; p = doigt.image2Tz(); si (p!=2){ Série.println(p); } si (p != FINGERPRINT_OK) renvoie -1 ; p = doigt.fingerFastSearch(); si (p != FINGERPRINT_OK) renvoie -2 ; // trouvé une correspondance ! Serial.print("ID trouvé #"); Serial.print(finger.fingerID); Serial.print(" avec confiance de "); Serial.println(finger.confidence); retourner doigt.fingerID; }
Conclusion
Dans ce tutoriel, j’ai présenté les principes de base du fonctionnement du module d’empreintes numériques AS608 avec la plateforme Arduino. Plus précisément, la bibliothèque Adafruit a été utilisée, qui gère une grande partie de l’interaction impliquée dans l’identification et l’enregistrement des empreintes numériques. L’implémentation la plus simple du capteur d’empreintes numériques a été explorée, d’abord en enregistrant une empreinte numérique unique, puis en vérifiant l’empreinte plus tard. Dans la démonstration vidéo, l’acceptation des empreintes numériques reconnues et le refus des empreintes numériques non reconnues ont été illustrés par les différentes LED. Les applications de l’identification des empreintes digitales sont nombreuses et, au moins, amusantes et intéressantes. L’introduction donnée ici est destinée à servir de tremplin pour s’impliquer dans l’identification des empreintes numériques avec Arduino, et avec le matériel et les bibliothèques peu coûteux et faciles à utiliser disponibles, les possibilités sont infinies à partir de là !