- Nødvendige materialer
- GT511C3 FPS-modul (Fingerprint Sensor)
- Tilslutning af GT511C3-fingerprint-sensor med Arduino
- Arduino med GT511C3
- Programmering Arduino til GT511C3 Fingerprint Sensor
- Arbejde med GT511C3 Fingerprint Sensor med Arduino
Biometri har været brugt som et pålideligt godkendelsessystem i lang tid nu. I dag findes der komplekse biometriske systemer, som kan identificere en person ved hans hjerterytme eller endda ved hjælp af hans DNA. Andre gennemførlige metoder inkluderer stemmegenkendelse, Ansigtsgenkendelse, Iris-scanning og Fingerprint-scanning. Ud af hvilken fingeraftryksgenkendelse er den mest anvendte metode, kan vi finde det fra et simpelt tilstedeværelsessystem til smartphones til sikkerhedskontrol og meget mere.
I denne vejledning lærer vi, hvordan du bruger den populære GT511C3 Fingerprint Sensor (FPS) med Arduino. Der er mange FPS til rådighed, og vi har allerede lært, hvordan man bruger dem til at opbygge designs som fremmøde, stemmemaskine, sikkerhedssystem osv. Men GT511C3 er mere avanceret med høj nøjagtighed og hurtigere responstid, så vi lærer at bruge det med Arduino for at registrere fingeraftryk på det og derefter registrere fingeraftryk, når det er nødvendigt. Så lad os komme i gang.
Nødvendige materialer
- Arduino Nano / UNO
- GT511C3 Fingerprint Sensor
- 16x2 LCD-skærm
- Pot - 10k og 1k, 10k, 22k modstande
- Trykknap
- Tilslutning af ledninger
- Brødbræt
GT511C3 FPS-modul (Fingerprint Sensor)
Før vi dykker ind i projektet, lad os forstå om GT511C3-fingeraftrykssensormodulet og hvordan det fungerer. Denne sensor er meget forskellig fra den kapacitive og ultralyds fingeraftrykssensor, der ofte bruges i vores smartphones. Den GT511C3 er en optisk fingeraftryk sensor, hvilket betyder at det er afhængig af billeder af dit fingeraftryk til at genkende sin mønster. Ja, du læste rigtigt, sensoren har faktisk et kamera inde i det, der tager billeder af dit fingeraftryk og derefter behandler disse billeder ved hjælp af kraftfuld indbygget ARM Cortex M3 IC. Billedet nedenfor viser forsiden og bagsiden af sensoren med pinouts.
Som du kan se, har sensoren et kamera (sort plet) omgivet af blå lysdioder, disse lysdioder skal tændes for at tage et klart billede af fingeraftrykket. Disse billeder behandles derefter og konverteres til binær værdi ved hjælp af ARM Microcontroller koblet med EEPROM. Modulet har også en grøn SMD-LED for at indikere strøm. Hvert fingeraftryksbillede har 202x258 pixels med en opløsning på 450 dpi. Den Sensoren kan tilmelde op til 200 fingeraftryk, og for hver finger print skabelon det tildeler et ID formular 0-199. Derefter kan det under detektion automatisk sammenligne det scannede fingeraftryk med alle 200 skabeloner, og hvis der findes et match, giver det ID-nummeret på det pågældende fingeraftryk ved hjælp af Smack Finger 3.0Algoritme på ARM Microcontroller. Sensoren kan fungere fra 3,3 V til 6 V og kommunikerer gennem seriel kommunikation ved 9600. Kommunikationsstifterne (Rx og Tx) siges kun at være 3,3 V tolerante, men databladet specificerer ikke meget om det. Pin-out af en GT511C3 FPS er vist nedenfor.
Bortset fra seriel kommunikation kan modulet også forbindes direkte til computeren via USB-forbindelse ved hjælp af de ben, der er vist i det foregående billede. Når det er tilsluttet computeren, kan modulet styres ved hjælp af SDK_DEMO.exe-applikationen, som kan downloades fra linket. Denne applikation giver brugeren mulighed for at tilmelde / verificere / slette fingeraftryk og også at genkende fingeraftryk. Softwaren kan også hjælpe dig med at læse det billede, der er taget af sensoren, og det er værd at prøve det. Alternativt kan du også bruge denne software, selvom sensoren er forbundet med Arduino, vil vi diskutere om dette senere i denne artikel.
Et andet interessant træk ved sensoren er metalkabinettet omkring detekteringsområdet. Som jeg tidligere har fortalt, skal den blå LED tændes, for at sensoren fungerer. Men i applikationer, hvor sensoren aktivt skal vente på et fingeraftryk, er det ikke muligt at holde lysdioden tændt, da den vil varme sensoren op og dermed beskadige den. Derfor kan metalhuset i disse tilfælde forbindes til en kapacitiv berøringsindgangsstift på en MCU for at detektere, om den berøres. Hvis ja, kan LED'en tændes, og sensingprocessen kan startes. Denne metode demonstreres ikke her, da den ligger uden for denne artikels anvendelsesområde.
Ved drift ved 3,3 V forbruger sensoren cirka 130 mA. Det tager næsten 3 sekunder at tilmelde en finger og 1 sekund at identificere den. Men hvis den tilmeldte skabelontælling er mindre, vil genkendelseshastigheden være høj. For flere detaljer om sensoren kan du henvise til dette datablad fra ADH-Tech, som er den officielle producent af modulet.
Tilslutning af GT511C3-fingerprint-sensor med Arduino
GT511C3 FPS har to strømstifter, der kan drives af + 5V stift Arduino og to kommunikationsstifter Rx og Tx, som kan tilsluttes enhver digital stift af Arduino til seriel kommunikation. Derudover har vi også tilføjet en trykknap og et LCD-display til at vise sensorens status. Det komplette kredsløbsdiagram til grænseflade mellem GT511C3 FPS og Arduino kan findes nedenfor.
Da Rx- og Tx-stifterne er 3,3V-tolerante, har vi brugt en potentiel skillevæg på Rx-siden til at konvertere 5V til 3,3V. 10k-modstanden og 22k-modstanden konverterer 5V-signalet fra Arduino Tx-stiften til 3.3V, før den når Fx's Rx-stift. Sensoren kan også drives af 3,3 V, men sørg for, at din Arduino kan skaffe tilstrækkelig strøm til sensoren. Vi har tilsluttet LCD'et i 4-bit tilstand drevet af 5V pin Arduino. En trykknap er forbundet til pin D2, som når den trykkes vil sætte programmet i tilmeldingstilstand, hvor brugeren kan tilmelde ny finger. Efter tilmelding forbliver programmet i scanningstilstand for at scanne for enhver finger, der berører sensoren.
Arduino med GT511C3
Som tidligere nævnt kommunikerer GT511C3 FPS gennem seriel kommunikation, sensoren forstår hex-kode, og for hver hex-kode udføres en bestemt operation. Du kan kontrollere databladet for at kende alle hex-værdierne og dets tilsvarende funktion, hvis du er interesseret. Men heldig for os har bboyho allerede oprettet et bibliotek, som kan bruges direkte med Arduino til at tilmelde og registrere fingeraftryk. Github-biblioteket til GT511C3 FPS kan downloades fra nedenstående link
GT511C3 Arduino-bibliotek
Linket downloader en ZIP-fil, så skal du tilføje den til din Arduino IDE ved at følge kommandoen Skitse -> Inkluder bibliotek -> Tilføj.ZIP-bibliotek. Når du har tilføjet biblioteket, skal du genstarte din IDE, og du skal kunne finde eksempler på programmer til GT511C3 FSP under File -> Eksempel -> Fingerprint Scanner TTL som vist nedenfor
Du skal se fire eksempler på programmer, blinkprogrammet blinker den blå led på FPS, tilmeldings- og ID-fingerprogrammet kan bruges til at tilmelde og identificere fingrene i overensstemmelse hermed. Bemærk, at en finger, når den er tilmeldt, altid vil huskes af modulet, selvom den er slukket.
Serial Pass-through-programmet kan uploades til Arduino for at bruge Demo_SDK.exe- applikationen, som vi diskuterede tidligere i denne artikel. For at slette en fingeraftryksskabelon eller gemme en kopi på din computer kan dette SDK-program bruges.
Programmering Arduino til GT511C3 Fingerprint Sensor
Vores mål her er at skrive et program, der registrerer en finger, når der trykkes på en knap og viser ID-nummeret på den finger, der allerede er tilmeldt. Vi skal også være i stand til at vise alle oplysninger på LCD'et for at gøre det muligt for projektet at være et enkeltstående. Den komplette kode for at gøre det samme er at give i bunden af denne side. Her deler jeg det samme i små uddrag for at hjælpe dig med at forstå bedre.
Som altid starter vi programmet med at inkludere de krævede biblioteker, her har vi brug for FPS_GT511C3-biblioteket til vores FPS-modul, softwareserien til at bruge D4 og D5 til seriel kommunikation og flydende krystal til LCD-interface Så skal vi nævne, hvilke stifter FPS og LCD er forbundet til. Hvis du havde fulgt kredsløbsdiagrammet som sådan, er det 4 og 5 for FPS og D6 til D11 for LCD. Koden for det samme er vist nedenfor
#include "FPS_GT511C3.h" // Hent bibliotek fra https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Software serielt bibliotek #include
Inde i installationsfunktionen viser vi nogle introduktionsmeddelelser på LCD'et og initialiserer derefter FPS-modulet. Kommandoen fps.SetLED (sand) tænder den blå LED på sensoren, du kan slukke for den med fps. SetLED (falsk), når det ikke kræves, da det ville varme sensoren op, hvis den forbliver tændt kontinuerligt. Vi har også lavet pin D2 som input pin og tilsluttet den til intern pull-up modstand for at forbinde en trykknap til pin.
ugyldig opsætning () { Serial.begin (9600); lcd.begin (16, 2); // Initialiser 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Intro meddelelseslinje 1 lcd.setCursor (0, 1); lcd.print ("med Arduino"); // Intro Message line 2 delay (2000); lcd.clear (); fps.Open (); // send seriel kommando for at initialisere fp fps.SetLED (true); // tænd LED, så fps kan se fingeraftryk pinMode (2, INPUT_PULLUP); // Tilslut til intern pull up-modstand som input pin }
Inde i tomrumsfunktionen skal vi kontrollere, om der trykkes på knappen, hvis der trykkes på, tilmelder vi en ny finger og gemmer dens skabelon med et ID-nummer ved hjælp af tilmeldingsfunktionen. Hvis ikke, venter vi på, at der trykkes på en finger i sensoren. Hvis der trykkes på, identificerer vi fingeraftrykket ved at sammenligne det med alle tilmeldte fingeraftrykskabeloner ved hjælp af 1: N-metoden. Når ID-nummeret er opdaget, viser vi velkomst efterfulgt af ID-nummeret. Hvis fingeraftrykket ikke matchede nogen af de tilmeldte fingre, vil antallet af id'er være 200, i så fald viser vi velkomst ukendt.
hvis (digitalRead (2)) // Hvis der trykkes på knappen { Tilmeld (); // Tilmeld et fingeraftryk } // Identificer fingeraftryktest, hvis (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Velkommen:"); hvis (id == 200) lcd.print ("Ukendt"); // Hvis ikke genkendt lcd.print (id); forsinkelse (1000); }
Den tilmelde funktion skulle tage tre eksempler indgange at tilmelde en finger med succes. Efter tilmelding oprettes der en skabelon til den pågældende finger, som ikke slettes, medmindre brugeren tvang den, selvom HEX-kommandoer. Koden til at tilmelde en finger vises nedenfor. Metoden IsPressFinger bruges til at kontrollere, om der registreres en finger, hvis ja, bliver billedet taget med CaptureFinger og til sidst bruges Enroll1, Enroll2 og Enroll3 til tre forskellige prøver til at tilmelde en finger med succes. LCD'et viser fingerens ID-nummer, hvis det er tilmeldt med succes ellers viser det en fejlmeddelelse med kode. Kode 1 betyder, at fingeraftrykket ikke blev fanget tydeligt, og derfor skal du prøve igen. Kode 2 er en hukommelsesfejlindikation, og kode 3 er at angive, at fingeren allerede er tilmeldt.
void Enroll () // Enroll-funktion fra bibliotekseksempelprogrammet { introllid = 0; bool usedid = sandt; mens (usedid == true) { usedid = fps.CheckEnrolled (rollid); hvis (usedid == true) tilmeld ++; } fps.EnrollStart (tilmelding); // tilmeld lcd.print ("Tilmeld #"); lcd.print (tilmelding); mens (fps.IsPressFinger () == false) forsinkelse (100); bool bret = fps.CaptureFinger (sand); int iret = 0; hvis (bret! = falsk) { lcd.clear (); lcd.print ("Fjern finger"); fps.Enroll1 (); mens (fps.IsPressFinger () == true) forsinkelse (100); lcd.clear (); lcd.print ("Tryk igen"); mens (fps.IsPressFinger () == false) forsinkelse (100); bret = fps.CaptureFinger (sand); hvis (bret! = falsk) { lcd.clear (); lcd.print ("Fjern finger"); fps.Enroll2 (); mens (fps.IsPressFinger () == true) forsinkelse (100); lcd.clear (); lcd.print ("Tryk endnu en gang"); mens (fps.IsPressFinger () == false) forsinkelse (100); bret = fps.CaptureFinger (sand); hvis (bret! = falsk) { lcd.clear (); lcd.print ("Fjern finger"); iret = fps.Enroll3 (); hvis (iret == 0) { lcd.clear (); lcd.print ("Tilmelding af succes"); } andet { lcd.clear (); lcd.print ("Tilmelding mislykkedes:"); lcd.print (iret); } } andet lcd.print ("Mislykkedes 1"); } andet lcd.print ("Mislykkedes 2"); } ellers lcd.print ("Mislykkedes 3"); }
Arbejde med GT511C3 Fingerprint Sensor med Arduino
Nu hvor vores hardware og kode er klar, er det tid til at teste vores projekt. Upload koden til Arduino og tænd den, jeg bruger bare micro-usb-porten til at drive projektet. Ved opstart skal vi se introduktionsmeddelelsen på LCD'et, og derefter skal den vise "Hej!..". Dette betyder, at FPS er klar til at scanne efter finger. Hvis der trykkes på en tilmeldt finger, vil den sige "Velkommen" efterfulgt af fingerens ID-nummer som vist nedenfor.
Hvis en ny finger skal tilmeldes, kan vi bruge trykknappen til at komme i tilmeldingstilstand og følge LCD-instruktionen for at tilmelde en finger. Når tilmeldingsprocessen er afsluttet, viser LCD'et "Hej!.." igen for at indikere, at det læses for at identificere fingrene igen. Det komplette arbejde kan findes i videoen, der er linket nedenfor.
Herfra kan du udvikle mange interessante ting ovenpå ved hjælp af sensormodulet Fingerprint. Håber du forstod vejledningen og nød at bygge noget nyttigt, hvis du har spørgsmål, lad dem være i kommentarsektionen eller brug foraerne til andre tekniske spørgsmål.