- Potrebni materijali
- GT511C3 modul senzora otiska prsta (FPS)
- Povezivanje senzora za ispis prsta GT511C3 s Arduinom
- Arduino s GT511C3
- Programiranje Arduina za senzor za ispis prsta GT511C3
- Rad senzora za otisak prsta GT511C3 s Arduinom
Biometrija se već dugo koristi kao pouzdan sustav provjere autentičnosti. Danas postoje složeni biometrijski sustavi koji mogu prepoznati osobu prema ritmu otkucaja srca ili čak prema DNK. Ostale izvedive metode uključuju prepoznavanje glasa, prepoznavanje lica, skeniranje šarenice i skeniranje otiska prsta. Među kojima je prepoznavanje otisaka prstiju najčešće korištena metoda, možemo je pronaći od jednostavnog sustava pohađanja, pametnih telefona do sigurnosnih provjera i još mnogo toga.
U ovom uputstvu naučit ćemo kako koristiti popularni senzor za ispis prsta GT511C3 (FPS) s Arduinom. Dostupno je mnogo FPS-a i već smo naučili kako ih koristiti za izradu dizajna poput Attendance sustava, glasačkog stroja, sigurnosnog sustava itd. Ali GT511C3 je napredniji s velikom preciznošću i bržim vremenom odziva, pa ćemo naučiti kako ga koristiti pomoću Arduina da na njega upiše otiske prstiju, a zatim otkrije otiske kad god je to potrebno. Pa krenimo.
Potrebni materijali
- Arduino Nano / UNO
- GT511C3 Senzor za otisak prsta
- LCD zaslon od 16x2
- Pot - 10k i 1k, 10k, 22k otpornici
- Pritisnite tipku
- Spajanje žica
- Daska za kruh
GT511C3 modul senzora otiska prsta (FPS)
Prije ulaska u projekt, razjasnite nam o modulu senzora otiska prsta GT511C3 i kako on funkcionira. Ovaj se senzor vrlo razlikuje od kapacitivnog i ultrazvučnog senzora otiska prsta koji se obično koriste u našim pametnim telefonima. GT511C3 je optički senzor za otisak prsta, što znači da se oslanja na slike vaš otisak prsta da prizna svoj uzorak. Da, dobro ste pročitali, senzor zapravo ima kameru koja snima vaše otiske prstiju i zatim ih obrađuje pomoću moćnog ugrađenog IC-a ARM Cortex M3. Slika dolje prikazuje prednju i stražnju stranu senzora s pinovima.

Kao što vidite, senzor ima kameru (crnu mrlju) okruženu plavim LED-ima, te LED-e moraju biti upaljene da bi se dobila jasna slika otiska prsta. Te se slike zatim obrađuju i pretvaraju u binarnu vrijednost pomoću ARM mikrokontrolera povezanog s EEPROM-om. Modul također ima zelenu SMD LED diodu koja pokazuje snagu. Svaka slika otiska prsta ima 202x258 piksela rezolucije 450 dpi. Senzor može upisati upto 200 otisaka prstiju, a za svaki prst ispisati predložak dodjeljuje joj ID obrazac 0 do 199. Tada tijekom otkrivanja može automatski usporediti skenirani otisak prsta sa svih 200 predložaka, a ako se pronađe podudaranje, daje ID broj tog određenog otiska pomoću Smack Finger 3.0Algoritam na ARM mikrokontroleru. Senzor može raditi od 3,3 V do 6 V i komunicira serijskom komunikacijom na 9600. Kaže se da su komunikacijski pinovi (Rx i Tx) tolerantni samo 3,3 V, no u tablici se o njemu ne navodi puno. Isječak GT511C3 FPS prikazan je u nastavku.

Osim serijske komunikacije, modul se također može izravno povezati s računalom putem USB veze koristeći igle prikazane na prethodnoj slici. Jednom povezan s računalom, modulom se može upravljati pomoću aplikacije SDK_DEMO.exe koja se može preuzeti s veze. Ovaj program omogućuje korisniku da upiše / provjeri / izbriše otiske prstiju i prepozna prepoznatljive otiske. Softver vam također može pomoći u čitanju slike koju je zabilježio senzor, što vrijedi isprobati. Alternativno možete koristiti i ovaj softver, čak i ako je senzor povezan s Arduinom, o tome ćemo razgovarati kasnije u ovom članku.
Još jedna zanimljiva značajka senzora je metalno kućište oko osjetnog područja. Kao što sam ranije rekao, plava LED dioda mora biti uključena da bi senzor radio. Ali u aplikacijama u kojima bi senzor trebao aktivno čekati otisak prsta, nije moguće LED uvijek biti uključen, jer će zagrijati senzor i tako ga oštetiti. Stoga se u tim slučajevima metalno kućište može povezati s kapacitivnim dodirnim zatikom MCU-a kako bi se otkrilo dodirne li se. Ako je odgovor da, LED se može uključiti i započeti postupak osjetljivosti. Ova metoda ovdje nije prikazana jer je izvan dosega ovog članka.
Kada radi na 3.3V, senzor troši oko 130mA. Potrebno je gotovo 3 sekunde za upis prsta i 1 sekunda za njegovo prepoznavanje. Međutim, ako je broj prijavljenih predložaka manji, brzina prepoznavanja bit će velika. Za više detalja o senzoru možete pogledati ovaj tehnički list tvrtke ADH-Tech koji je službeni proizvođač modula.
Povezivanje senzora za ispis prsta GT511C3 s Arduinom
GT511C3 FPS ima dva pina za napajanje koji se mogu napajati s + 5V pinom Arduina i dva komunikacijska pina Rx i Tx koji se mogu povezati na bilo koji digitalni pin Arduina za serijsku komunikaciju. Uz to smo dodali tipku i LCD za prikaz statusa senzora. Kompletni dijagram sklopa za povezivanje GT511C3 FPS s Arduinom možete pronaći u nastavku.

Budući da su Rx i Tx pinovi tolerantni na 3,3 V, koristili smo potencijalni razdjelnik na Rx strani za pretvorbu 5 V u 3,3 V. 10k otpornik i 22k otpornik pretvaraju 5V signal s Arduino Tx pina u 3,3V prije nego što stigne do Rx pina FPS-a. Osjetnik se također može napajati od 3,3 V, ali pobrinite se da vaš Arduino može proizvesti dovoljno struje za senzor. Povezali smo LCD u 4-bitnom načinu rada napajanom od 5V pina Arduina. Gumb je spojen na pin D2 koji će pritiskom staviti program u način upisa u koji korisnik može upisati novi prst. Nakon upisa program će ostati u načinu skeniranja kako bi skenirao prste koji dodiruju senzor.

Arduino s GT511C3
Kao što je ranije spomenuto, GT511C3 FPS komunicira serijskom komunikacijom, senzor razumije hex kod i za svaki hex kôd se izvodi određena operacija. Ako ste zainteresirani, možete provjeriti tablicu kako biste znali sve heksadecimalne vrijednosti i odgovarajuću funkciju. Ali, na našu sreću, bboyho je već stvorio biblioteku koja se može izravno koristiti s Arduinom za prijavu i otkrivanje otisaka prstiju. Github biblioteku za GT511C3 FPS možete preuzeti s donje poveznice
GT511C3 Arduino knjižnica
Veza će preuzeti ZIP datoteku, a zatim biste je morali dodati u svoj Arduino IDE slijedeći naredbu Skica -> Uključi biblioteku -> Dodaj.ZIP knjižnicu. Nakon što dodate knjižnicu, ponovo pokrenite svoj IDE i trebali biste moći pronaći primjere programa za GT511C3 FSP pod Datoteka -> Primjer -> Skener otiska prsta TTL kao što je prikazano dolje

Trebali biste vidjeti četiri primjera programa, program za treptanje treptati će plavom lampom na FPS-u, program za upis i ID prsti mogu se koristiti za prijavu i identifikaciju prstiju u skladu s tim. Imajte na umu da će modul jednom upisan prst pamtiti čak i ako je isključen.
Program serijskog prolaska može se prenijeti na Arduino kako bi se koristila aplikacija Demo_SDK.exe o kojoj smo govorili ranije u ovom članku. Da biste izbrisali bilo koji predložak otiska prsta ili spremili kopiju na svoje računalo, može se koristiti ovaj SDK program.
Programiranje Arduina za senzor za ispis prsta GT511C3
Naš je cilj ovdje napisati program koji će upisati prst kad se pritisne gumb i prikazati ID broj prsta koji je već upisan. Također bismo trebali biti u mogućnosti prikazati sve informacije na LCD-u kako bi projekt mogao biti samostalan. Kompletan kod za učiniti isto se dati na dnu ove stranice. Ovdje ih dijelim na male isječke kako bih vam pomogao da bolje razumijete.
Kao i uvijek započinjemo program uključivanjem potrebnih knjižnica, ovdje će nam trebati knjižnica FPS_GT511C3 za naš FPS modul, serijski softver za upotrebu D4 i D5 u serijskoj komunikaciji i tekući kristal za LCD povezivanje. Zatim moramo spomenuti na koje je igle povezan FPS i LCD. Ako ste slijedili shemu spojeva kao takvu, to je 4 i 5 za FPS i D6 do D11 za LCD. Kôd za isti prikazan je u nastavku
#include "FPS_GT511C3.h" // Nabavite biblioteku s https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Softverska serijska biblioteka #include
Unutar funkcije postavljanja prikazujemo uvodnu poruku na LCD-u, a zatim inicijaliziramo FPS modul. Naredba fps.SetLED (true) uključit će plavu LED na senzoru, možete je isključiti fps.SetLED (false) kad nije potrebna, jer bi zagrijala senzor ako ga neprestano uključuje. Također smo napravili pin D2 kao ulazni pin i povezali smo ga s unutarnjim otpornikom na izvlačenje kako bismo na gumb povezali tipku.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Iniciranje LCD LCD ispisa s 16 * 2 ("GT511C3 FPS"); // Uvodni redak poruke 1 lcd.setCursor (0, 1); lcd.print ("s Arduinom"); // Uvod u retku poruke 2 (2000); lcd.clear (); fps.Open (); // slanje serijske naredbe za inicijalizaciju fp fps.SetLED (true); // uključimo LED tako da fps može vidjeti pinMode otiska prsta (2, INPUT_PULLUP); // povezivanje s unutarnjim otpornikom na izvlačenje kao ulazni pin }
Unutar funkcije petlje void moramo provjeriti je li tipka pritisnuta, ako pritisnemo, upisat ćemo novi prst i spremiti njegov predložak s ID brojem pomoću funkcije upisa. Ako ne, nastavit ćemo čekati da se pritisne prst u senzoru. Ako se pritisne, identificirat ćemo otisak prsta uspoređujući ga sa svim upisanim predloškom otisaka pomoću metode 1: N. Jednom kada se identifikacijski broj otkrije, prikazat ćemo dobrodošlicu, a zatim ID broj. Ako se otisak prsta ne podudara ni s jednim od upisanih prstiju, broj id bit će 200, u tom ćemo slučaju prikazati nepoznatu dobrodošlicu.
if (digitalRead (2)) // Ako je pritisnuta tipka { Enroll (); // Upis otiska prsta } // Identificiranje testa otiska prsta if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Dobrodošli:"); if (id == 200) lcd.print ("Unkown"); // Ako nije prepoznat lcd.print (id); kašnjenje (1000); }
Funkcija upisa trebala bi uzeti tri uzorka ulaza da bi uspješno upisala jedan prst. Jednom upisan stvorit će se predložak za taj određeni prst koji se neće izbrisati ukoliko ga korisnik ne prisili pomoću HEX naredbi. Kôd za upis prsta prikazan je u nastavku. Metoda IsPressFinger koristi se za provjeru prepoznaje li se prst, ako je odgovor da, slika se snima pomoću CaptureFinger a zatim se konačno Enroll1, Enroll2 i Enroll3 koristi za tri različita uzorka za uspješno upisivanje jednog prsta. LCD će prikazati ID broj prsta ako je uspješno upisan, inače će prikazati poruku o neuspjehu s kodom. Šifra 1 znači da otisak prsta nije bio jasno snimljen i stoga morate pokušati ponovo. Kod 2 označava neuspjeh memorije, a kod 3 označava da je prst već upisan.
void Enroll () // Funkcija upisa iz programa knjižnice { int enrollid = 0; bool usedid = točno; while (usedid == true) { usedid = fps.CheckEnroll (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // enroll lcd.print ("Enroll #"); lcd.tisak (enrollid); while (fps.IsPressFinger () == false) kašnjenje (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Ukloni prst"); fps.Enroll1 (); dok (fps.IsPressFinger () == true) kašnjenje (100); lcd.clear (); lcd.print ("Ponovno pritisnite"); while (fps.IsPressFinger () == false) kašnjenje (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Ukloni prst"); fps.Enroll2 (); dok (fps.IsPressFinger () == true) kašnjenje (100); lcd.clear (); lcd.print ("Pritisnite još jednom"); while (fps.IsPressFinger () == false) kašnjenje (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Ukloni prst"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Upis uspjeha"); } else { lcd.clear (); lcd.print ("Upis nije uspio:"); lcd.tisak (iret); } } else lcd.print ("Failed 1"); } else lcd.print ("Nije uspjelo 2"); } else lcd.print ("Failed 3"); }
Rad senzora za otisak prsta GT511C3 s Arduinom
Sad kad su naš hardver i kod spremni, vrijeme je da testiramo naš projekt. Prenesite kod na Arduino i uključite ga, ja samo koristim micro-usb priključak za napajanje projekta. Prilikom pokretanja trebali bismo vidjeti uvodnu poruku na LCD-u, a zatim bi trebao prikazati "Bok!..". To znači da je FPS spreman za skeniranje prsta, ako se pritisne bilo koji upisani prst, reći će "Dobrodošli", nakon čega slijedi ID broj tog prsta kako je prikazano u nastavku.

Ako treba upisati novi prst, možemo pritisnuti tipku za ulazak u način upisa i slijediti LCD upute za upis prsta. Nakon završetka postupka upisa, LCD će ponovno prikazati "Bok!..", što znači da je ponovno pročitan kako bi se identificirali prsti. Kompletan radni može se naći na video vezom u nastavku.

Odavde možete razviti mnogo zanimljivih stvari na vrhu pomoću modula senzora otiska prsta. Nadam se da ste razumjeli vodič i uživali ste u stvaranju nečeg korisnog, ako imate pitanja, ostavite ih u odjeljku za komentare ili koristite forume za druga tehnička pitanja.
