Accueil > ARDUINO > Capteurs > Capteur biométrique d’empreintes digitales GT511C1
mercredi 16 décembre 2015, par
Ce capteur biométrique permet de mémoriser 20 empreintes auxquelles sont associées un numéro d’identification (id).
La communication se fait par liaison série UART. Pour le mettre en oeuvre, on utilisera la bibliothèque SoftwareSerial (https://www.arduino.cc/en/Reference/SoftwareSerial) et la bibliothèque FPS_GT511C3.h )
Pour utiliser la bibliothèque, il faut installer les fichiers FPS_GT511C3.cpp et FPS_GT511C3.h dans le répertoire ..Arduino/Library/FPS_GT511C3 (le dernier répertoire est à créer)
Le capteur nécessite une alimentation de 3,3V à 6V. Il sera donc alimenté entre +5V et GND de la carte Leonardo.
Par contre, pour la communication, le capteur travail en 0V-3,3V alors que la carte Arduino communique en 0V - 5V :
dans le sens capteur Tx -> Arduino Rx, pas besoin d’adapter la tension car la carte Arduino lit 3,3V comme un niveau logique 1,
dans le sens Arduino Tx -> Capteur Rx, on passera par un pont diviseur de tension qui permet d’abaisser le 5V en sortie de la carte Arduino à 3,3V.
calcul du pont diviseur de tension :
3,3=5*R1/(R1+R2), donc on peut choisir R1=2,2K et R2=1k
D’après la documentation sur la bibliothèque SoftwareSerial, on peut utiliser les broches 11 (Rx) et 12 (Tx).
Tester le branchement et faire clignoter la led du capteur.
Mise en oeuvre :
téléverser le programme dans la carte,
débrancher et rebrancher la carte Arduino (problème de fonctionnement si l’on ne fait pas cela),
ouvrir le moniteur série ("outil -> moniteur série" ou loupe en haut à droite de l’interface),
/* FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS) Created by Josh Hawley, July 23rd 2013 Licensed for non-commercial use, must include this license message basically, Feel free to hack away at it, but just give me credit for my work =) TLDR; Wil Wheaton's Law This simple sketch turns the LED on and off similar to the Arduino blink sketch. It is used to show that communications are working. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" FPS_GT511C3 fps(11,12); void setup() { Serial.begin(9600); while (!Serial) { // attend l'ouverture du terminal série (nécessaire pour cartes LEONARDO } fps.UseSerialDebug = true; // active le debugage fps.Open(); } void loop() { // FPS Blink LED Test fps.SetLED(true); // turn on the LED inside the fps Serial.println("led"); delay(1000); fps.SetLED(false);// turn off the LED inside the fps delay(1000); }
Enregistrer une empreinte dans la mémoire du capteur
téléverser le programme dans la carte,
débrancher et rebrancher la carte Arduino (problème de fonctionnement si l’on ne fait pas cela),
ouvrir le moniteur série ("outil -> moniteur série" ou loupe en haut à droite de l’interface),
/* FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS) Created by Josh Hawley, July 23rd 2013 Licensed for non-commercial use, must include this license message basically, Feel free to hack away at it, but just give me credit for my work =) TLDR; Wil Wheaton's Law */ #include "FPS_GT511C3.h" FPS_GT511C3 fps(11,12); void setup() { Serial.begin(9600); while (!Serial) {// attend l'ouverture du terminal série (nécessaire pour cartes LEONARDO } delay(100); fps.Open(); fps.SetLED(true); } void Enroll() { // Enroll test // find open enroll id int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled(enrollid); if (usedid==true) enrollid++; } fps.EnrollStart(enrollid); // enroll Serial.print("Press finger to Enroll #"); Serial.println(enrollid); while(fps.IsPressFinger() == false) delay(100); bool bret = fps.CaptureFinger(true); int iret = 0; if (bret != false) { Serial.println("Remove finger"); fps.Enroll1(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Press same finger again"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) { Serial.println("Remove finger"); fps.Enroll2(); while(fps.IsPressFinger() == true) delay(100); Serial.println("Press same finger yet again"); while(fps.IsPressFinger() == false) delay(100); bret = fps.CaptureFinger(true); if (bret != false) { Serial.println("Remove finger"); iret = fps.Enroll3(); if (iret == 0) { Serial.println("Enrolling Successfull"); } else { Serial.print("Enrolling Failed with error code:"); Serial.println(iret); } } else Serial.println("Failed to capture third finger"); } else Serial.println("Failed to capture second finger"); } else Serial.println("Failed to capture first finger"); } void loop() { Enroll(); delay(2000); }
tester une empreinte
téléverser le programme dans la carte,
débrancher et rebrancher la carte Arduino (problème de fonctionnement si l’on ne fait pas cela),
ouvrir le moniteur série ("outil -> moniteur série" ou loupe en haut à droite de l’interface),
/* FPS_Enroll.ino - Library example for controlling the GT-511C3 Finger Print Scanner (FPS) Created by Josh Hawley, July 23rd 2013 Licensed for non-commercial use, must include this license message basically, Feel free to hack away at it, but just give me credit for my work =) TLDR; Wil Wheaton's Law This sketch will attempt to identify a previously enrolled fingerprint. */ #include "FPS_GT511C3.h" #include "SoftwareSerial.h" FPS_GT511C3 fps(11,12); void setup() { Serial.begin(9600); while (!Serial) { } fps.Open(); delay(500); fps.SetLED(true); } void loop() { if (fps.IsPressFinger()) { fps.CaptureFinger(false); int id = fps.Identify1_N(); if (id <20) { Serial.print("Id. valide ID:"); Serial.println(id); } else { Serial.println("Empreinte non valide !"); } } else { Serial.println("Poser votre doigt."); } delay(1000); }