- Potrebni materiali
- Modul senzorja prstnih odtisov (FPS) GT511C3
- Povezovanje senzorja za prstni odtis GT511C3 z Arduinom
- Arduino z GT511C3
- Programiranje Arduino za senzor za prstni odtis GT511C3
- Delovanje senzorja za prstni odtis GT511C3 z Arduinom
Biometrija se že dolgo uporablja kot zanesljiv sistem za preverjanje pristnosti. Danes obstajajo zapleteni biometrični sistemi, ki človeka lahko prepoznajo po ritmu srčnega utripa ali celo po DNK. Druge izvedljive metode vključujejo prepoznavanje glasu, prepoznavanje obrazov, skeniranje šarenice in skeniranje prstnih odtisov. Med katerimi je najpogosteje uporabljena metoda prepoznavanja prstnih odtisov, jo lahko najdemo od preprostega sistema prisotnosti, pametnih telefonov do varnostnih pregledov in še veliko več.
V tej vadnici bomo izvedeli, kako uporabljati priljubljeni senzor za prstni odtis GT511C3 (FPS) z Arduino. Na voljo je veliko FPS-jev in že smo se naučili, kako jih uporabiti za izdelavo modelov, kot so Attendance sistem, Voting Machine, Varnostni sistem itd. Toda GT511C3 je naprednejši z visoko natančnostjo in hitrejšim odzivnim časom, zato se bomo naučili, kako ga uporabiti z Arduinom vnesite prstne odtise in nato po potrebi zaznajte prstne odtise. Začnimo torej.
Potrebni materiali
- Arduino Nano / UNO
- GT511C3 Senzor za prstni odtis
- LCD zaslon 16x2
- Pot - 10k in 1k, 10k, 22k upori
- Pritisni gumb
- Povezovanje žic
- Deska za kruh
Modul senzorja prstnih odtisov (FPS) GT511C3
Preden se potopite v projekt, nam sporočite, kako deluje modul senzorja prstnih odtisov GT511C3 in kako deluje. Ta senzor se zelo razlikuje od kapacitivnega in ultrazvočnega senzorja za prstne odtise, ki se pogosto uporablja v naših pametnih telefonih. GT511C3 je optični senzor prstnih odtisov, kar pomeni, da se zanaša na podobe vašega prstnega odtisa, da prizna svoj vzorec. Da, prav ste prebrali, senzor ima v sebi dejansko kamero, ki posname vaše prstne odtise in nato te slike obdela z zmogljivim vgrajenim IC ARM Cortex M3. Spodnja slika prikazuje sprednjo in zadnjo stran senzorja z izpusti.
Kot lahko vidite, ima senzor kamero (črno piko), obdano z modrimi diodami, morajo biti te svetleče, da posnamejo jasno sliko prstnega odtisa. Te slike se nato obdelajo in pretvorijo v binarno vrednost z uporabo mikrokrmilnika ARM v povezavi z EEPROM. Modul ima tudi zeleno SMD LED za prikaz moči. Vsaka slika prstnega odtisa ima velikost 202 x 258 slikovnih pik z ločljivostjo 450 dpi. Senzor lahko vpišejo stanuje 200 prstnih odtisov in za vsako prstnim odtisom predlogo jo pripisuje obrazec id 0 do 199. Nato lahko med zaznavanjem samodejno primerja optično prebrani prstni odtis z vsemi 200 predlogami in če se najde ujemanje, poda ID številko tega prstnega odtisa s pomočjo Smack Finger 3.0Algoritem na mikrokrmilniku ARM. Senzor lahko deluje od 3,3 V do 6 V in komunicira prek serijske komunikacije na 9600. Komunikacijski zatiči (Rx in Tx) naj bi bili odporni le na 3,3 V, vendar v obrazcu ni veliko o tem. Pin-out GT511C3 FPS je prikazan spodaj.
Poleg serijske komunikacije je modul mogoče tudi neposredno povezati z računalnikom prek povezave USB s pomočjo zatičev, prikazanih na prejšnji sliki. Ko je modul povezan z računalnikom, ga lahko nadzorujete s pomočjo aplikacije SDK_DEMO.exe, ki jo lahko prenesete s povezave. Ta aplikacija omogoča uporabniku, da vpiše / preveri / izbriše prstne odtise in prepozna prstne odtise. Programska oprema vam lahko pomaga tudi pri branju slike, ki jo zajame senzor, kar je vredno poskusiti. To programsko opremo lahko uporabljate tudi, tudi če je senzor povezan z Arduinom, o tem bomo razpravljali kasneje v tem članku.
Druga zanimiva lastnost senzorja je kovinsko ohišje okoli območja zaznavanja. Kot sem že povedal, mora biti modra LED dioda vklopljena, da senzor deluje. Toda v aplikacijah, kjer mora senzor aktivno čakati na prstni odtis, LED diode ni vedno mogoče vklopiti, saj bo senzor ogreval in ga tako poškodoval. Zato je v teh primerih kovinsko ohišje mogoče priključiti na kapacitivni vhodni zatič na dotik MCU, da zazna, ali se ga dotika. Če je odgovor pritrdilen, lahko LED vklopite in zaženete postopek zaznavanja. Ta metoda tukaj ni predstavljena, ker je zunaj področja uporabe tega članka.
Pri delovanju pri 3,3 V senzor porabi približno 130 mA. Za vpis prsta potrebujete skoraj 3 sekunde in 1 sekundo, da ga prepoznate. Če pa je število vpisanih predlog manjše, bo hitrost prepoznavanja velika. Za več podrobnosti o senzorju si oglejte ta podatkovni list podjetja ADH-Tech, ki je uradni proizvajalec modula.
Povezovanje senzorja za prstni odtis GT511C3 z Arduinom
GT511C3 FPS ima dva napajalna zatiča, ki ju je mogoče napajati z + 5V zatičem Arduino in dva komunikacijska zatiča Rx in Tx, ki ju je za serijsko komunikacijo mogoče povezati s katerim koli digitalnim zatičem Arduino. Poleg tega smo dodali še gumb in LCD za prikaz stanja senzorja. Celoten diagram vezja za povezovanje GT511C3 FPS z Arduinom najdete spodaj.
Ker so zatiči Rx in Tx tolerantni na 3.3V, smo za pretvorbo 5V v 3.3V uporabili potencialni delilnik na strani Rx. 10k upor in 22k upor pretvori 5V signal iz zatiča Arduino Tx v 3.3V, preden doseže Rx zatič FPS. Senzor lahko napaja tudi 3,3 V, vendar se prepričajte, da lahko vaš Arduino napaja dovolj toka za senzor. LCD smo povezali v 4-bitnem načinu, ki ga napaja 5V pin Arduino. Na zatič D2 je priključen gumb, ki ob pritisku preklopi program v način vpisa, kjer lahko uporabnik vpiše nov prst. Po včlanitvi bo program ostal v načinu optičnega branja za iskanje prstov, ki se dotikajo senzorja.
Arduino z GT511C3
Kot smo že omenili, GT511C3 FPS komunicira prek serijske komunikacije, senzor razume šestnajstiško kodo in za vsako šestnajstiško kodo se izvede določena operacija. Če vas zanima, lahko v podatkovnem listu poznate vse šestnajstiške vrednosti in njihovo ustrezno funkcijo. Ampak, na našo srečo je bboyho že ustvaril knjižnico, ki jo lahko neposredno uporabljamo z Arduinom za vpis in zaznavanje prstnih odtisov. Knjižnico Github za GT511C3 FPS lahko prenesete s spodnje povezave
GT511C3 Arduino Library
Povezava bo prenesla datoteko ZIP, nato pa jo boste morali dodati v svoj Arduino IDE po ukazu Skica -> Vključi knjižnico -> Dodaj.ZIP knjižnico. Ko dodate knjižnico, znova zaženite IDE in lahko boste našli primere programov za GT511C3 FSP pod Datoteka -> Primer -> TTL optičnega bralnika prstnih odtisov, kot je prikazano spodaj
Videli bi štiri primere programov, utripajoči program bo utripal modro na FPS, program za vpis in ID lahko uporabite za prijavo in prepoznavanje prstov. Upoštevajte, da si bo modul vedno vpisal prst, ko bo vpisan, tudi če je izključen.
Program Serial Pass-through lahko naložite v Arduino za uporabo aplikacije Demo_SDK.exe, o kateri smo govorili prej v tem članku. Če želite izbrisati katero koli predlogo prstnih odtisov ali shraniti kopijo v računalnik, lahko uporabite to aplikacijo SDK.
Programiranje Arduino za senzor za prstni odtis GT511C3
Naš cilj tukaj je napisati program, ki bo vpisal prst, ko pritisnete gumb, in prikazal ID številko prsta, ki je že vpisan. Na LCD-prikazovalniku bi morali imeti tudi možnost prikazati vse informacije, da bi lahko bil projekt samostojen. Popolna koda, da storijo enako je dal na dnu te strani. Tukaj lomim iste v majhne delčke, da boste lažje razumeli.
Kot vedno začnemo program z vključitvijo potrebnih knjižnic, tu bomo potrebovali knjižnico FPS_GT511C3 za naš modul FPS, serijo programske opreme za uporabo D4 in D5 v serijski komunikaciji in tekoče kristale za povezavo LCD. Nato moramo omeniti, na katere nožice je povezan FPS in LCD. Če ste sledili vezju kot takemu, je za FPS 4 in 5, za LCD pa od D6 do D11. Koda za isto je prikazana spodaj
#include "FPS_GT511C3.h" // Pridobite knjižnico s https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Serijska knjižnica programske opreme #include
Znotraj nastavitvene funkcije na LCD-prikazovalniku prikažemo nekaj uvodnega sporočila in nato inicializiramo modul FPS. Ukaz fps. Za vhodni zatič smo izdelali tudi zatič D2 in ga povezali z notranjim vlečnim uporom, tako da na zatič priključimo gumb.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Inicializiramo LCD LCD izpis 16 * 2 ("GT511C3 FPS"); // Uvodna vrstica sporočila 1 lcd.setCursor (0, 1); lcd.print ("z Arduino"); // Zakasnitev uvodne vrstice sporočila 2 (2000); lcd.clear (); fps.Open (); // pošljemo serijski ukaz za inicializacijo fp fps.SetLED (true); // vklopimo LED, da fps lahko vidi pinMode prstnega odtisa (2, INPUT_PULLUP); // Povezovanje z notranjo pull up upor kot vhodni pin }
Znotraj funkcije void loop moramo preveriti, ali je gumb pritisnjen, če ga pritisnemo, bomo s funkcijo vpisa vpisali nov prst in njegovo predlogo shranili z ID-številko. V nasprotnem primeru bomo še naprej čakali, da pritisnete prst v senzor. Če pritisnete, bomo identificirali prstni odtis tako, da ga bomo primerjali z vsemi vpisanimi predlogi za prstne odtise z uporabo metode 1: N. Ko je identifikacijska številka odkrita, se prikaže dobrodošlica, ki ji sledi številka. Če se odtis prstov ne ujema z nobenim od vpisanih prstov, bo število id 200, v tem primeru bomo prikazali dobrodošlico neznano.
if (digitalRead (2)) // Če je pritisnjen gumb { Enroll (); // Vnesite prstni odtis } // Določite preskus prstnega odtisa, če (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Dobrodošli:"); if (id == 200) lcd.print ("Unkown"); // Če ni prepoznan lcd.print (id); zamuda (1000); }
Za uspešno vpisovanje enega prsta bi morala funkcija vpisa uporabiti tri vzorčne vhode. Po vpisu bo ustvarjena predloga za ta prst, ki ne bo izbrisana, razen če jo uporabnik prisili s pomočjo šestnajstiških ukazov. Koda za vpis prsta je prikazana spodaj. Metoda IsPressFinger se uporablja za preverjanje, ali je zaznan prst, če je odgovor pritrdilen, se slika zajame s pomočjo CaptureFinger in nato na koncu Enroll1, Enroll2 in Enroll3 se za tri različne vzorce uspešno vpiše en prst. Na LCD-prikazovalniku se prikaže ID-številka prsta, če je vpis uspešno izveden, sicer se prikaže sporočilo o napaki s kodo. Koda 1 pomeni, da prstni odtis ni bil jasno zajet, zato morate poskusiti znova. Koda 2 označuje napako v pomnilniku, koda 3 pa pomeni, da je prst že vpisan.
void Enroll () // Funkcija vpisa iz programa knjižnice { int enrollid = 0; bool usedid = res; while (usedid == true) { usedid = fps.CheckEnroll (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // vpis lcd.print ("Enroll #"); lcd.print (enrollid); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Odstrani prst"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Ponovno pritisnite"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odstrani prst"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Pritisnite še enkrat"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odstrani prst"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Vpis uspeha"); } else { lcd.clear (); lcd.print ("Vpis ni uspel:"); lcd.print (iret); } } else lcd.print ("Failed 1"); } else lcd.print ("Failed 2"); } else lcd.print ("Failed 3"); }
Delovanje senzorja za prstni odtis GT511C3 z Arduinom
Zdaj, ko je naša strojna oprema in koda pripravljena, je čas, da preizkusimo naš projekt. Naložite kodo v Arduino in jo vklopite, za napajanje projekta uporabljam samo vrata micro-usb. Ob zagonu bi morali na LCD-prikazovalniku videti uvodno sporočilo, nato pa bi moralo biti prikazano "Živjo!.." To pomeni, da je FPS pripravljen na iskanje prstov, če pritisnete kateri koli vpisan prst, bo pisalo "Dobrodošli", čemur bo sledila ID številka tega prsta, kot je prikazano spodaj.
Če je treba vpisati nov prst, lahko s pritiskom na gumb vstopimo v način vpisa in sledimo navodilom LCD, da vpišemo prst. Po končanem postopku vpisa se na LCD-prikazovalniku spet prikaže »Živjo!..«, kar pomeni, da je bil prebran za ponovno identifikacijo prstov. Celoten delovni najdete na video s povezavo spodaj.
Od tu lahko z uporabo modula senzorja za tiskanje prstov razvijete številne zanimive stvari. Upam, da ste razumeli vadnico in ste uživali pri izdelavi nečesa koristnega, če jih imate, jih pustite v oddelku za komentarje ali uporabite forume za druga tehnična vprašanja.