- Reikalingos medžiagos
- GT511C3 pirštų atspaudų jutiklio (FPS) modulis
- GT511C3 pirštų atspaudų jutiklio prijungimas prie „Arduino“
- „Arduino“ su GT511C3
- „Arduino“ programavimas GT511C3 pirštų atspaudų jutikliui
- GT511C3 pirštų atspaudų jutiklio su „Arduino“ darbas
Biometriniai duomenys jau seniai naudojami kaip patikima autentifikavimo sistema. Šiandien egzistuoja sudėtingos biometrinės sistemos, kurios gali identifikuoti asmenį pagal jo širdies ritmo ritmą ar net pagal jo DNR. Kiti galimi metodai yra balso atpažinimas, veido atpažinimas, rainelės nuskaitymas ir pirštų atspaudų nuskaitymas. Pirštų atspaudų atpažinimas yra plačiausiai naudojamas metodas. Tai galime rasti nuo paprastos lankomumo sistemos iki išmaniųjų telefonų, saugos patikrinimų ir daug daugiau.
Šioje pamokoje sužinosime, kaip naudoti populiarųjį GT511C3 pirštų atspaudų jutiklį (FPS) su „Arduino“. Yra daugybė FPS, ir mes jau išmokome juos naudoti kurdami tokius dizainus kaip dalyvavimo sistema, balsavimo mašina, apsaugos sistema ir kt. Tačiau „GT511C3“ yra pažangesnis, labai tikslus ir greitesnis atsako laikas, todėl mes išmoksime, kaip juo naudotis su „Arduino“ užregistruoti ant jo pirštų atspaudus ir tada, kai reikia, aptikti pirštų atspaudus. Taigi pradėkime.
Reikalingos medžiagos
- „Arduino Nano“ / UNO
- GT511C3 pirštų atspaudų jutiklis
- 16x2 LCD ekranas
- Puodas - 10k ir 1k, 10k, 22k rezistoriai
- Paspauskite mygtuką
- Laidų sujungimas
- Bandomoji Lenta
GT511C3 pirštų atspaudų jutiklio (FPS) modulis
Prieš pasinerdami į projektą, supraskite apie „ GT511C3“ pirštų atspaudų jutiklio modulį ir kaip jis veikia. Šis jutiklis labai skiriasi nuo talpinio ir ultragarso pirštų atspaudų jutiklio, kurie dažniausiai naudojami mūsų išmaniuosiuose telefonuose. GT511C3 yra optinis pirštų jutiklis, o tai reiškia, ji remiasi vaizdų jūsų pirštų atspaudų pripažinti savo modelį. Taip, jūs skaitėte teisingai, jutiklio viduje iš tikrųjų yra kamera, kuri nufotografuoja jūsų piršto atspaudą ir tada apdoroja šiuos vaizdus naudodama galingą įmontuotą „ARM Cortex M3 IC“. Žemiau esančiame paveikslėlyje parodyta jutiklio priekinė ir užpakalinė pusės su prisegamaisiais elementais.
Kaip matote, jutiklyje yra kamera (juoda dėmė), apsupta mėlynų šviesos diodų, šie šviesos diodai turi būti įjungti, kad būtų aiškus piršto atspaudo vaizdas. Šie vaizdai apdorojami ir konvertuojami į dvejetainę reikšmę naudojant ARM mikrovaldiklį kartu su EEPROM. Modulyje taip pat yra žalios spalvos SMD šviesos diodas, rodantis galią. Kiekvienas piršto antspaudo vaizdas yra 202x258 pikselių, skiriamoji geba 450 dpi. Jutiklis gali užregistruoti net iki 200 pirštų atspaudų ir kiekvienam pirštų atspaudų šablonas ji priskiria ID, sudaro 0 iki 199. Tada aptikimo metu jis gali automatiškai palyginti nuskaitytą pirštų atspaudus su visais 200 šablonų ir, jei randama atitiktis, naudojant „ Smack Finger 3.0“, nurodomas konkretaus piršto atspaudo ID numeris.ARM mikrovaldiklio algoritmas. Jutiklis gali veikti nuo 3,3 V iki 6 V ir bendrauti nuosekliu ryšiu esant 9600. Sakoma, kad ryšio kaiščiai (Rx ir Tx) toleruoja tik 3,3 V, tačiau duomenų lape apie tai nedaug nurodyta. „GT511C3 FPS“ prisegimas rodomas žemiau.
Be nuoseklaus ryšio, modulis taip pat gali būti tiesiogiai sujungtas su kompiuteriu, naudojant USB jungtį, naudojant ankstesniame paveikslėlyje parodytus kaiščius. Prisijungus prie kompiuterio, modulį galima valdyti naudojant SDK_DEMO.exe programą, kurią galima atsisiųsti iš nuorodos. Ši programa leidžia vartotojui užregistruoti / patikrinti / ištrinti pirštų atspaudus ir atpažinti pirštų atspaudus. Programinė įranga taip pat gali padėti perskaityti jutiklio užfiksuotą vaizdą, kurį verta išbandyti. Arba taip pat galite naudoti šią programinę įrangą, net jei jutiklis yra prijungtas prie „Arduino“, tai aptarsime vėliau šiame straipsnyje.
Kita įdomi jutiklio savybė yra metalinis korpusas aplink jutimo sritį. Kaip sakiau anksčiau , norint, kad jutiklis veiktų, turi būti įjungtas mėlynas šviesos diodas. Tačiau tose programose, kur jutiklis turėtų aktyviai laukti piršto atspaudo, neįmanoma visada palaikyti įjungto šviesos diodo, nes jis kaitins jutiklį ir taip sugadins. Taigi tokiais atvejais metalinis korpusas gali būti prijungtas prie MCU talpinio jutiklinio įvesties kaiščio, kad būtų galima nustatyti, ar jis liečiamas. Jei taip, šviesos diodą galima įjungti ir pradėti jutimo procesą. Šis metodas čia nėra parodytas, nes jis nepatenka į šio straipsnio taikymo sritį.
Dirbdamas prie 3,3 V jutiklis sunaudoja apie 130 mA. Užregistruoti pirštą reikia beveik 3 sekundes, o atpažinti - 1 sekundę. Tačiau jei užregistruotų šablonų skaičius yra mažesnis, atpažinimo greitis bus didelis. Norėdami gauti daugiau informacijos apie jutiklį, galite kreiptis į ADH-Tech, kuris yra oficialus modulio gamintojas, duomenų lapą.
GT511C3 pirštų atspaudų jutiklio prijungimas prie „Arduino“
„GT511C3 FPS“ turi du maitinimo kaiščius, kuriuos gali maitinti + 5 V „Arduino“ kaištis, ir du „Rx“ ir „Tx“ ryšio kaiščius, kuriuos galima prijungti prie bet kurio skaitmeninio „Arduino“ kaiščio nuosekliam ryšiui. Mes taip pat pridėjome mygtuką ir skystųjų kristalų ekraną, kad būtų rodoma jutiklio būsena. Visą GT511C3 FPS sąsajos su „Arduino“ grandinės schemą galite rasti žemiau.
Kadangi Rx ir Tx kaiščiai yra tolerantiški 3,3 V, 5 V konvertuoti į 3,3 V naudojome potencialų daliklį Rx pusėje. 10 k rezistorius ir 22 k rezistorius paverčia 5 V signalą iš „Arduino Tx“ kaiščio į 3,3 V, kol jis pasiekia FPS Rx kaištį. Jutiklis taip pat gali būti maitinamas 3,3 V įtampa, tačiau įsitikinkite, kad jūsų „Arduino“ gali gauti pakankamai jutiklio srovės. Mes prijungėme skystųjų kristalų ekraną 4 bitų režimu, kurį maitina 5 V „Arduino“ kaištis. Prie kaiščio D2 prijungtas mygtukas, kurį paspaudus programa bus įjungta į registracijos režimą, kur vartotojas galės užregistruoti naują pirštą. Užregistravus programą, liks nuskaitymo režimas, kad būtų galima ieškoti bet kurio piršto, paliečiančio jutiklį.
„Arduino“ su GT511C3
Kaip minėta anksčiau, GT511C3 FPS palaiko nuoseklųjį ryšį, jutiklis supranta šešiakampį kodą ir kiekvienam šešiakampio kodui atliekama tam tikra operacija. Jei norite, galite patikrinti duomenų lapą, kad sužinotumėte visas šešioliktaines reikšmes ir atitinkamas funkcijas. Bet, pasisekė mums, bboyho jau sukūrė biblioteką, kurią galima tiesiogiai naudoti su „Arduino“, norint užregistruoti ir aptikti pirštų atspaudus. GT511C3 FPS „Github“ biblioteką galima atsisiųsti iš toliau pateiktos nuorodos
GT511C3 „Arduino“ biblioteka
Nuoroda atsisiųs ZIP failą, tada turėtumėte jį pridėti prie „Arduino IDE“, vykdydami komandą „ Eskizas -> Įtraukti biblioteką -> Pridėti.ZIP biblioteką“. Pridėję biblioteką, iš naujo paleiskite savo IDE ir turėtumėte rasti „ GT511C3 FSP“ pavyzdines programas skiltyje Failas -> Pavyzdys -> Pirštų atspaudų skaitytuvas TTL, kaip parodyta žemiau
Turėtumėte pamatyti keturias programų pavyzdžius: mirksėjimo programa mirksi mėlyna FPS lempute, registravimo ir ID pirštų programa gali būti naudojama atitinkamai registruoti ir atpažinti pirštus. Atkreipkite dėmesį, kad kartą užregistruotą pirštą modulis visada prisimins, net jei jis bus išjungtas.
„Serial Pass-through“ programą galima įkelti į „Arduino“, kad būtų galima naudoti programą Demo_SDK.exe , kurią aptarėme anksčiau šiame straipsnyje. Šią SDK programą galima naudoti norint ištrinti bet kokį pirštų atspaudų šabloną arba išsaugoti kopijas kompiuteryje.
„Arduino“ programavimas GT511C3 pirštų atspaudų jutikliui
Mūsų tikslas yra parašyti programą, kuri užregistruos pirštą paspaudus mygtuką ir parodys jau užregistruoto piršto ID numerį. Mes taip pat turėtume sugebėti rodyti visą informaciją LCD, kad projektas būtų atskiras. Visiškai kodas daryti tą patį yra parašęs šio puslapio apačioje. Čia aš suskaidau tą patį į mažus fragmentus, kad galėčiau geriau suprasti.
Kaip visada, programą pradedame įtraukdami reikalingas bibliotekas, čia mums reikės FPS_GT511C3 bibliotekos, skirtos mūsų FPS moduliui, programinės įrangos serijos naudoti D4 ir D5 nuosekliam ryšiui ir skystųjų kristalų LCD sąsajai. Tada turime paminėti, prie kurių kaiščių prijungtas FPS ir LCD. Jei laikytumėtės tokios grandinės schemos, FPS yra 4 ir 5, o LCD - nuo D6 iki D11. To paties kodas parodytas žemiau
#include "FPS_GT511C3.h" // Gauti biblioteką iš https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Programinės įrangos nuoseklioji biblioteka #include
Sąrankos funkcijos viduje LCD ekrane rodome įvadinį pranešimą ir inicijuojame FPS modulį. Komanda fps.SetLED (true) jutiklyje įjungs mėlyną šviesos diodą, galite jį išjungti fps. SetLED (klaidinga), kai to nereikia, nes jis kaitins jutiklį, jei jis bus nuolat įjungtas. Mes taip pat padarėme kaištį D2 kaip įvesties kaištį ir prijungėme jį prie vidinio prisitraukimo rezistoriaus, kad prie kaiščio būtų prijungtas mygtukas.
negaliojanti sąranka () { Serial.begin (9600); lcd.begin (16, 2); // Inicializuokite 16 * 2 LCD lcd.print („GT511C3 FPS“); // Įvadinė pranešimų eilutė 1 lcd.setCursor (0, 1); lcd.print ("su Arduino"); // Intro Message line 2 delay (2000); lcd.clear (); fps. Atidaryti (); // siųsti serijinę komandą inicijuoti fp fps.SetLED (true); // įjungti šviesos diodą, kad fps matytų piršto atspaudo pinMode (2, INPUT_PULLUP); // Prijunkite prie vidinio traukimo rezistoriaus kaip įvesties kaištį }
Viduje ciklo funkcijos viduje turime patikrinti, ar mygtukas yra paspaustas, jei paspausime, užregistruosime naują pirštą ir naudodami registracijos funkciją išsaugosime jo šabloną su ID numeriu. Jei ne, mes lauksime, kol jutiklyje bus paspaustas pirštas. Paspaudus, identifikuosime piršto atspaudą palygindami jį su visais užregistruotais pirštų atspaudų šablonais, naudodami 1: N metodą. Aptikus ID numerį, bus rodomas pasveikinimas, po kurio bus nurodytas ID numeris. Jei pirštų atspaudai neatitiko nė vieno iš užregistruotų pirštų, ID skaičius bus 200, tokiu atveju mes rodysime sveikinimo žodį nežinoma.
if (digitalRead (2)) // Jei paspaudžiamas mygtukas { Enroll (); // Užregistruokite piršto atspaudą } // Identifikuokite pirštų atspaudų testą, jei (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Sveiki atvykę:"); if (id == 200) lcd.print ("Nežinomas"); // Jei neatpažinta lcd.print (id); vėlavimas (1000); }
Užsisakyti funkcija turėtų imtis tris pavyzdžius įėjimai stoti vieną pirštą sėkmingai. Užregistravus bus sukurtas tam tikro piršto šablonas, kuris nebus ištrintas, nebent vartotojas priverstų jį naudoti HEX komandomis. Kodas, skirtas užregistruoti pirštą, rodomas žemiau. IsPressFinger metodas naudojamas patikrinti, ar aptiktas pirštas, jei taip, vaizdas yra užfiksuotas naudojant „ CaptureFinger“ ir tada galiausiai „Enroll1“, „Enroll2“ ir „Enroll3“ naudojamos trims skirtingiems mėginiams, norint sėkmingai užregistruoti vieną pirštą. Jei sėkmingai užsiregistruosite, skystųjų kristalų ekrane rodomas piršto ID numeris. 1 kodas reiškia, kad piršto atspaudas nebuvo aiškiai užfiksuotas, todėl turite bandyti dar kartą. 2 kodas reiškia atminties gedimą, o kodas 3 rodo, kad pirštas jau užregistruotas.
void Enroll () // Enroll funkcija iš bibliotekos exmaple programos { int enrollid = 0; bool usedid = tiesa; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // užsiregistruoti lcd.print ("Užregistruoti #"); lcd.print (registruoti); o (fps.IsPressFinger () == klaidingas) atidėjimas (100); „Bool bret“ = fps. „CaptureFinger“ (tiesa); int iret = 0; jei (bret! = false) { lcd.clear (); lcd.print ("Pašalinti pirštą"); fps.Registruoti1 (); o (fps.IsPressFinger () == true) vėlavimas (100); lcd.clear (); lcd.print ("Paspauskite dar kartą"); o (fps.IsPressFinger () == klaidingas) atidėjimas (100); bret = fps.CaptureFinger (tiesa); jei (bret! = false) { lcd.clear (); lcd.print ("Pašalinti pirštą"); fps.Registruoti2 (); o (fps.IsPressFinger () == true) vėlavimas (100); lcd.clear (); lcd.print ("Dar kartą paspauskite"); o (fps.IsPressFinger () == klaidingas) atidėjimas (100); bret = fps.CaptureFinger (tiesa); jei (bret! = false) { lcd.clear (); lcd.print ("Pašalinti pirštą"); iret = fps. Prisiregistruoti3 (); jei (iret == 0) { lcd.clear (); lcd.print („Užregistravimo sėkmė“); } dar { lcd.clear (); lcd.print ("Nepavyko užregistruoti:"); lcd.print (iret); } } else lcd.print ("Nepavyko 1"); } else lcd.print ("Nepavyko 2"); } else lcd.print ("Nepavyko 3"); }
GT511C3 pirštų atspaudų jutiklio su „Arduino“ darbas
Dabar, kai mūsų techninė įranga ir kodas yra paruošti, laikas išbandyti mūsų projektą. Įkelkite kodą į „Arduino“ ir įjunkite jį, aš tiesiog naudoju „micro-usb“ prievadą projektui valdyti. Įkeldami turėtume pamatyti įvadinį pranešimą LCD ekrane ir tada rodyti „Sveiki!..“. Tai reiškia, kad FPS yra pasirengęs nuskaityti pirštą, jei paspaudžiamas koks nors užregistruotas pirštas, tai sakytų „Sveiki atvykę“, po kurio nurodomas to piršto ID numeris, kaip parodyta žemiau.
Jei reikia užregistruoti naują pirštą, mes galime naudoti mygtuką naudodamiesi registracijos režimu ir vykdydami LCD instrukcijas, kad užregistruotumėte pirštą. Kai registracija bus baigta, skystųjų kristalų ekranas vėl parodys „Hi!..“, nurodydamas, kad jis perskaitytas, kad vėl būtų galima identifikuoti pirštus. Pilnas darbo galima rasti vaizdo įrašą žemiau susijęs.
Iš čia galite sukurti daug įdomių dalykų naudodami „Finger Print“ jutiklio modulį. Tikiuosi, kad supratote pamoką ir patiko kurti ką nors naudingo, jei turite klausimų, palikite juos komentarų skyriuje arba naudokite forumus kitiems techniniams klausimams.