- Matériaux nécessaires
- Module de capteur d'empreintes digitales (FPS) GT511C3
- Connexion du capteur d'empreintes digitales GT511C3 avec Arduino
- Arduino avec GT511C3
- Programmation Arduino pour capteur d'empreinte digitale GT511C3
- Fonctionnement du capteur d'empreinte digitale GT511C3 avec Arduino
La biométrie est utilisée depuis longtemps comme système d'authentification fiable. Il existe aujourd'hui des systèmes biométriques complexes qui permettent d'identifier une personne par son rythme cardiaque ou même par son ADN. D'autres méthodes possibles incluent la reconnaissance vocale, la reconnaissance faciale, la numérisation de l'iris et la numérisation d'empreintes digitales. Sur laquelle la reconnaissance d'empreintes digitales est la méthode la plus utilisée, nous pouvons la trouver d'un simple système de présence aux téléphones intelligents en passant par les contrôles de sécurité et bien plus encore.
Dans ce didacticiel, nous allons apprendre à utiliser le populaire capteur d'empreintes digitales (FPS) GT511C3 avec Arduino. Il y a beaucoup de FPS disponibles et nous avons déjà appris à les utiliser pour construire des conceptions comme système de présence, Machine à voter, système de sécurité, etc. Mais le GT511C3 est plus avancé avec une grande précision et le temps de réponse plus rapide, donc nous apprendrons comment l'utiliser avec Arduino pour enregistrer les empreintes digitales dessus, puis détecter les empreintes digitales chaque fois que nécessaire. Alors, commençons.
Matériaux nécessaires
- Arduino Nano / UNO
- Capteur d'empreintes digitales GT511C3
- Écran LCD 16x2
- Pot - Résistances 10k et 1k, 10k, 22k
- Bouton poussoir
- Connexion des fils
- Planche à pain
Module de capteur d'empreintes digitales (FPS) GT511C3
Avant de plonger dans le projet, comprenons le module de capteur d'empreintes digitales GT511C3 et son fonctionnement. Ce capteur est très différent du capteur d'empreintes digitales capacitif et ultrasonique qui sont couramment utilisés dans nos téléphones intelligents. Le GT511C3 est un capteur optique d'empreintes digitales, ce qui signifie qu'il s'appuie sur les images de votre empreinte digitale pour reconnaître son motif. Oui, vous avez bien lu, le capteur a en fait une caméra à l'intérieur qui prend des photos de votre empreinte digitale, puis traite ces images à l'aide du puissant IC ARM Cortex M3 intégré. L'image ci-dessous montre l'avant et l'arrière du capteur avec des broches.
Comme vous pouvez le voir, le capteur a une caméra (point noir) entouré de LED bleues, ces LED doivent être allumées pour prendre une image claire de l'empreinte digitale. Ces images sont ensuite traitées et converties en valeur binaire à l'aide du microcontrôleur ARM couplé à l'EEPROM. Le module dispose également d'une LED SMD de couleur verte pour indiquer l'alimentation. Chaque image d'empreinte digitale est de 202x258 pixels avec une résolution de 450 dpi. Le capteur peut enregistrer jusqu'à 200 empreintes digitales et pour chaque modèle d'empreinte digitale, il attribue un formulaire d'identification de 0 à 199. Ensuite, pendant la détection, il peut automatiquement comparer l'empreinte digitale numérisée avec les 200 modèles et si une correspondance est trouvée, il donne le numéro d'identification de cette empreinte digitale particulière à l'aide du Smack Finger 3.0Algorithme sur le microcontrôleur ARM. Le capteur peut fonctionner de 3,3V à 6V et communique via une communication série à 9600. Les broches de communication (Rx et Tx) ne tolèrent que 3,3V, mais la fiche technique ne précise pas grand chose à ce sujet. Le brochage d'un GT511C3 FPS est illustré ci-dessous.
Outre la communication série, le module peut également être directement interfacé avec l'ordinateur via une connexion USB en utilisant les broches illustrées dans l'image précédente. Une fois connecté à l'ordinateur, le module peut être contrôlé à l'aide de l'application SDK_DEMO.exe qui peut être téléchargée à partir du lien. Cette application permet à l'utilisateur d'enregistrer / vérifier / supprimer les empreintes digitales et également de reconnaître les empreintes digitales. Le logiciel peut également vous aider à lire l'image capturée par le capteur, ce qui vaut la peine de l'essayer. Vous pouvez également utiliser ce logiciel même si le capteur est connecté à Arduino, nous en discuterons plus tard dans cet article.
Une autre caractéristique intéressante du capteur est le boîtier métallique autour de la zone de détection. Comme je l'ai dit plus tôt, la LED bleue doit être allumée pour que le capteur fonctionne. Mais dans les applications où le capteur doit attendre activement une empreinte digitale, il n'est pas possible de garder la LED toujours allumée car elle chauffera le capteur et donc l'endommagera. Par conséquent, dans ces cas, le boîtier métallique peut être câblé à une broche d'entrée tactile capacitive d'un MCU pour détecter s'il est touché. Si oui, la LED peut être allumée et le processus de détection peut être démarré. Cette méthode n'est pas illustrée ici car elle sort du cadre de cet article.
Lorsqu'il fonctionne à 3,3 V, le capteur consomme environ 130 mA. Il faut près de 3 secondes pour enregistrer un doigt et 1 seconde pour l'identifier. Cependant, si le nombre de modèles inscrits est inférieur, la vitesse de reconnaissance sera élevée. Pour plus de détails sur le capteur, vous pouvez vous référer à cette fiche technique d'ADH-Tech qui est le fabricant officiel du module.
Connexion du capteur d'empreintes digitales GT511C3 avec Arduino
Le GT511C3 FPS a deux broches d'alimentation qui peuvent être alimentées par la broche + 5V d'Arduino et deux broches de communication Rx et Tx qui peuvent être connectées à n'importe quelle broche numérique d'Arduino pour la communication série. De plus, nous avons également ajouté un bouton poussoir et un écran LCD pour afficher l'état du capteur. Le schéma de circuit complet pour l' interfaçage du GT511C3 FPS avec Arduino se trouve ci-dessous.
Étant donné que les broches Rx et Tx sont tolérantes à 3,3 V, nous avons utilisé un diviseur de potentiel du côté Rx pour convertir 5 V en 3,3 V. La résistance 10k et la résistance 22k convertissent le signal 5V de la broche Arduino Tx en 3,3V avant d'atteindre la broche Rx du FPS. Le capteur peut également être alimenté par 3,3 V, mais assurez-vous que votre Arduino peut fournir suffisamment de courant pour le capteur. Nous avons connecté l'écran LCD en mode 4 bits alimenté par la broche 5V d'Arduino. Un bouton poussoir est connecté à la broche D2 qui, lorsqu'il est enfoncé , met le programme en mode d'inscription où l'utilisateur peut enregistrer un nouveau doigt. Après l'inscription, le programme restera en mode de balayage pour rechercher tout doigt touchant le capteur.
Arduino avec GT511C3
Comme mentionné précédemment, le FPS GT511C3 communique via une communication série, le capteur comprend le code hexadécimal et pour chaque code hexadécimal, une opération particulière est effectuée. Vous pouvez consulter la fiche technique pour connaître toutes les valeurs hexadécimales et sa fonction correspondante si vous êtes intéressé. Mais, heureusement pour nous, bboyho a déjà créé une bibliothèque qui peut être utilisée directement avec Arduino pour s'inscrire et détecter les empreintes digitales. La bibliothèque Github pour GT511C3 FPS peut être téléchargée à partir du lien ci-dessous
Bibliothèque Arduino GT511C3
Le lien téléchargera un fichier ZIP, vous devrez alors l' ajouter à votre IDE Arduino en suivant la commande Sketch -> Inclure la bibliothèque -> Ajouter une bibliothèque.ZIP. Une fois que vous avez ajouté la bibliothèque, redémarrez votre IDE et vous devriez être en mesure de trouver les exemples de programmes pour GT511C3 FSP sous Fichier -> Exemple -> Fingerprint Scanner TTL comme indiqué ci-dessous
Vous devriez voir quatre exemples de programmes, le programme de clignotement fera clignoter le voyant bleu sur le FPS, le programme d'inscription et d'identification des doigts peut être utilisé pour enregistrer et identifier les doigts en conséquence. Notez qu'un doigt une fois inscrit sera toujours mémorisé par le module même s'il est éteint.
Le programme Serial Pass-through peut être téléchargé sur l'Arduino pour utiliser l' application Demo_SDK.exe dont nous avons parlé plus haut dans cet article. Pour supprimer un modèle d'empreinte digitale ou pour enregistrer une copie sur votre ordinateur, cette application SDK peut être utilisée.
Programmation Arduino pour capteur d'empreinte digitale GT511C3
Notre objectif ici est d'écrire un programme qui enregistrera un doigt lorsqu'un bouton est enfoncé et affichera le numéro d'identification du doigt déjà inscrit. Nous devrions également être en mesure d'afficher toutes les informations sur l'écran LCD pour permettre au projet d'être autonome. Le code complet pour faire de même est donné en bas de cette page. Ici, je divise la même chose en petits extraits pour vous aider à mieux comprendre.
Comme toujours, nous commençons le programme en incluant les bibliothèques requises, ici nous aurons besoin de la bibliothèque FPS_GT511C3 pour notre module FPS, du logiciel série pour utiliser D4 et D5 sur la communication série et des cristaux liquides pour l'interfaçage LCD. Ensuite, nous devons mentionner à quelles broches le FPS et l'écran LCD sont connectés. Si vous avez suivi le schéma de circuit en tant que tel, il est de 4 et 5 pour FPS et D6 à D11 pour LCD. Le code pour le même est indiqué ci-dessous
#include "FPS_GT511C3.h" // Récupère la bibliothèque sur https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Bibliothèque de série de logiciels #include
Dans la fonction de configuration , nous affichons un message d'introduction sur l'écran LCD, puis nous initialisons le module FPS. La commande fps.SetLED (true) allumera la LED bleue sur le capteur, vous pouvez l'éteindre de fps.SetLED (false) lorsqu'elle n'est pas nécessaire car elle chaufferait le capteur s'il était laissé allumé en continu. Nous avons également fait de la broche D2 une broche d'entrée et l'avons connectée à une résistance de rappel interne afin de connecter un bouton-poussoir à la broche.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Initialise 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Ligne de message d'introduction 1 lcd.setCursor (0, 1); lcd.print ("avec Arduino"); // Délai de la ligne 2 du message d'introduction (2000); lcd.clear (); fps.Open (); // envoie une commande série pour initialiser fp fps.SetLED (true); // allume la LED pour que les fps puissent voir l'empreinte digitale pinMode (2, INPUT_PULLUP); // Se connecter à la résistance de rappel interne comme broche d'entrée }
Dans la fonction de boucle vide , nous devons vérifier si le bouton est enfoncé.Si vous appuyez sur, nous enregistrerons un nouveau doigt et enregistrerons son modèle avec un numéro d'identification en utilisant la fonction d'inscription. Sinon, nous continuerons d'attendre qu'un doigt soit enfoncé dans le capteur. Si vous appuyez sur cette touche, nous identifierons l'empreinte digitale en la comparant à tous les modèles d'empreintes digitales enregistrés en utilisant la méthode 1: N. Une fois le numéro d'identification découvert, nous afficherons le message de bienvenue suivi du numéro d'identification. Si l'empreinte digitale ne correspond à aucun des doigts enregistrés, le nombre d'identifiants sera de 200, dans ce cas, nous afficherons bienvenue inconnu.
if (digitalRead (2)) // Si le bouton est enfoncé { Enroll (); // Enregistrer une empreinte digitale } // Identifier le test d'empreinte digitale if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Bienvenue:"); if (id == 200) lcd.print ("Unkown"); // Si non reconnu lcd.print (id); retard (1000); }
La fonction d' inscription devrait prendre trois échantillons d'entrées pour inscrire un doigt avec succès. Une fois inscrit, un modèle pour ce doigt particulier sera créé et ne sera pas supprimé à moins que l'utilisateur ne l'ait forcé via des commandes HEX. Le code pour enregistrer un doigt est indiqué ci-dessous. La méthode IsPressFinger est utilisée pour vérifier si un doigt est détecté, si oui, l'image est capturée à l'aide de CaptureFinger et enfin Enroll1, Enroll2 et Enroll3 est utilisé pour trois échantillons différents pour inscrire avec succès un doigt. L'écran LCD affiche le numéro d'identification du doigt s'il est enregistré avec succès, sinon il affichera un message d'échec avec un code. Le code 1 signifie que l'empreinte digitale n'a pas été capturée clairement et que vous devez donc réessayer. Le code 2 est une indication d'échec de la mémoire et le code 3 indique que le doigt a déjà été enregistré.
void Enroll () // Fonction d'inscription à partir du programme d'exmaple de la bibliothèque { int inscritid = 0; booléen usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (inscritid); if (usedid == true) inscritid ++; } fps.EnrollStart (inscritid); // inscrire lcd.print ("Enroll #"); lcd.print (identifiant d'inscription); while (fps.IsPressFinger () == false) delay (100); booléen bret = fps.CaptureFinger (true); int iret = 0; if (bret! = faux) { lcd.clear (); lcd.print ("Retirer le doigt"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Appuyez à nouveau"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (vrai); if (bret! = faux) { lcd.clear (); lcd.print ("Retirer le doigt"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Appuyez encore une fois"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (vrai); if (bret! = faux) { lcd.clear (); lcd.print ("Retirer le doigt"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Inscription réussie"); } else { lcd.clear (); lcd.print ("Échec de l'inscription:"); lcd.print (iret); } } else lcd.print ("Failed 1"); } else lcd.print ("Failed 2"); } else lcd.print ("Failed 3"); }
Fonctionnement du capteur d'empreinte digitale GT511C3 avec Arduino
Maintenant que notre matériel et notre code sont prêts, il est temps de tester notre projet. Téléchargez le code sur Arduino et mettez-le sous tension, j'utilise simplement le port micro-usb pour alimenter le projet. Au démarrage, nous devrions voir le message d'introduction sur l'écran LCD, puis il devrait afficher «Salut!..». Cela signifie que FPS est prêt à rechercher un doigt, si un doigt enregistré est pressé, il dira «Bienvenue» suivi du numéro d'identification de ce doigt comme indiqué ci-dessous.
Si un nouveau doigt doit être enregistré, nous pouvons utiliser le bouton-poussoir pour entrer en mode d'inscription et suivre les instructions de l'écran LCD pour enregistrer un doigt. Une fois le processus d'enregistrement terminé, l'écran LCD affichera à nouveau «Hi!..» pour indiquer qu'il est lu pour identifier à nouveau les doigts. Le travail complet peut être trouvé dans la vidéo ci-dessous.
De là, vous pouvez développer de nombreuses choses intéressantes en plus à l'aide du module de capteur d'empreinte digitale. J'espère que vous avez compris le didacticiel et que vous avez aimé créer quelque chose d'utile, si vous avez des questions, laissez-les dans la section des commentaires ou utilisez les forums pour d'autres questions techniques.