- Nepieciešamie materiāli
- GT511C3 pirkstu nospiedumu sensoru (FPS) modulis
- GT511C3 pirkstu nospiedumu sensora savienošana ar Arduino
- Arduino ar GT511C3
- Arduino programmēšana GT511C3 pirkstu nospiedumu sensoram
- GT511C3 pirkstu nospiedumu sensora darbība ar Arduino
Biometrija jau ilgu laiku tiek izmantota kā uzticama autentifikācijas sistēma. Mūsdienās pastāv sarežģītas biometriskās sistēmas, kas var identificēt cilvēku pēc sirdsdarbības ritma vai pat pēc DNS. Citas iespējamās metodes ir balss atpazīšana, sejas atpazīšana, varavīksnenes skenēšana un pirkstu drukas skenēšana. No kuriem pirkstu nospiedumu atpazīšana ir visplašāk izmantotā metode, mēs to varam atrast no vienkāršas apmeklēšanas sistēmas līdz viedtālruņiem līdz drošības pārbaudēm un daudz ko citu.
Šajā apmācībā mēs uzzināsim, kā izmantot populāro GT511C3 pirkstu nospiedumu sensoru (FPS) ar Arduino. Ir pieejami daudzi FPS, un mēs jau esam iemācījušies tos izmantot, lai izveidotu tādus dizainus kā apmeklēšanas sistēma, balsošanas mašīna, drošības sistēma utt. Bet GT511C3 ir daudz uzlabots ar augstu precizitāti un ātrāku reakcijas laiku, tāpēc mēs iemācīsimies to izmantot ar Arduino, lai tajā reģistrētu pirkstu nospiedumus un pēc tam noteiktu pirkstu nospiedumus, kad vien tas nepieciešams. Tātad sāksim.
Nepieciešamie materiāli
- Arduino Nano / UNO
- GT511C3 pirkstu nospiedumu sensors
- 16x2 LCD ekrāns
- Pot - 10k un 1k, 10k, 22k rezistori
- Uzspied pogu
- Vadu savienošana
- Maizes dēlis
GT511C3 pirkstu nospiedumu sensoru (FPS) modulis
Pirms ienirt projektā, ļaujiet mums saprast, kas ir GT511C3 pirkstu nospiedumu sensora modulis un kā tas darbojas. Šis sensors ļoti atšķiras no kapacitatīvā un ultraskaņas pirkstu nospiedumu sensora, ko parasti izmanto mūsu viedtālruņos. GT511C3 ir optiskais pirkstu nospiedumu sensors, kas nozīmē, tas balstās uz attēliem savu pirkstu nospiedumu, lai atpazītu savu modeli. Jā, jūs lasījāt pareizi, sensora iekšpusē faktiski ir kamera, kas uzņem jūsu pirksta nospieduma attēlus un pēc tam apstrādā šos attēlus, izmantojot jaudīgu iebūvēto ARM Cortex M3 IC. Zemāk redzamajā attēlā redzama sensora priekšējā un aizmugurējā puse ar tapām.
Kā redzat, sensoram ir kamera (melns plankums), ko ieskauj zilas gaismas diodes, šie gaismas diodes ir jāiedegas, lai iegūtu skaidru pirksta nospieduma attēlu. Pēc tam šie attēli tiek apstrādāti un pārveidoti binārā vērtībā, izmantojot ARM mikrokontrolleru kopā ar EEPROM. Modulim ir arī zaļas krāsas SMD LED, kas norāda strāvu. Katram pirksta nospieduma attēlam ir 202x258 pikseļi ar izšķirtspēju 450 dpi. Sensoru var pieteikties līdz pat 200 pirkstu nospiedumi, un katru pirkstu nospiedumu veidni tā uztic ID, veidlapu 0 līdz 199. Pēc tam noteikšanas laikā tas var automātiski salīdzināt ieskenēto pirkstu nospiedumu ar visām 200 veidnēm, un, ja tiek atrasta atbilstība, tiek norādīts šī pirksta nospieduma ID numurs, izmantojot Smack Finger 3.0ARM mikrokontrollera algoritms. Sensors var darboties no 3,3 V līdz 6 V un sazināties, izmantojot sērijas sakarus ar ātrumu 9600. Tiek apgalvots, ka sakaru tapas (Rx un Tx) ir tikai 3,3 V tolerantas, tomēr datu lapā par to nav daudz norādīts. GT511C3 FPS spraudnis ir parādīts zemāk.
Papildus sērijveida saziņai moduli var arī tieši savienot ar datoru, izmantojot USB savienojumu, izmantojot iepriekšējā attēlā redzamās tapas. Pēc savienojuma ar datoru moduli var vadīt, izmantojot lietojumprogrammu SDK_DEMO.exe, kuru var lejupielādēt no saites. Šī lietojumprogramma ļauj lietotājam reģistrēt / pārbaudīt / izdzēst pirkstu nospiedumus un arī atpazīt pirkstu nospiedumus. Programmatūra var arī palīdzēt jums nolasīt sensora uzņemto attēlu, kuru ir vērts pamēģināt. Alternatīvi jūs varat arī izmantot šo programmatūru, pat ja sensors ir savienots ar Arduino, mēs to apspriedīsim vēlāk šajā rakstā.
Vēl viena interesanta sensora iezīme ir metāla apvalks ap sensora reģionu. Kā es teicu iepriekš, sensora darbībai ir jāieslēdz zilā LED. Bet lietojumprogrammās, kurās sensoram aktīvi jāgaida pirksta nospiedums, LED nav iespējams vienmēr ieslēgt, jo tas sensoru uzsildīs un tādējādi to sabojās. Tādējādi šajos gadījumos metāla apvalku var pieslēgt MCU kapacitatīvai pieskāriena ievades tapai, lai noteiktu, vai tam pieskaras. Ja jā, LED var ieslēgt un sākt sensoru procesu. Šī metode šeit nav parādīta, jo tā ir ārpus šī raksta darbības jomas.
Strādājot pie 3,3 V, sensors patērē aptuveni 130 mA. Lai reģistrētu pirkstu, ir nepieciešamas gandrīz 3 sekundes un tā identificēšanai - 1 sekunde. Tomēr, ja reģistrēto veidņu skaits ir mazāks, atpazīšanas ātrums būs liels. Lai iegūtu sīkāku informāciju par sensoru, skatiet šo datu lapu no ADH-Tech, kas ir moduļa oficiālais ražotājs.
GT511C3 pirkstu nospiedumu sensora savienošana ar Arduino
GT511C3 FPS ir divas strāvas tapas, kuras var darbināt ar + 5 V Arduino kontaktu un divām komunikācijas tapām Rx un Tx, kuras var savienot ar jebkuru Arduino digitālo kontaktu seriālai saziņai. Mēs esam arī pievienojuši spiedpogu un LCD, lai parādītu sensora statusu. Pilna shēma GT511C3 FPS saskarnei ar Arduino ir atrodama zemāk.
Tā kā Rx un Tx tapas ir tolerantas 3,3 V, mēs esam izmantojuši potenciālu dalītāju Rx pusē, lai pārveidotu 5V par 3,3V. 10k rezistors un 22k rezistors pārveido 5V signālu no Arduino Tx tapas uz 3.3V, pirms tas sasniedz FPS Rx tapu. Sensoru var darbināt arī ar 3,3 V, taču pārliecinieties, ka jūsu Arduino var piegādāt sensoram pietiekamu strāvu. Mēs esam savienojuši LCD 4 bitu režīmā, ko darbina ArVino 5 V tapa. Piespraude ir savienota ar tapu D2, kas, nospiežot , programma tiks iestatīta reģistrācijas režīmā, kur lietotājs var reģistrēt jaunu pirkstu. Pēc reģistrācijas programma paliks skenēšanas režīmā, lai meklētu visus pirkstus, kas pieskaras sensoram.
Arduino ar GT511C3
Kā minēts iepriekš, GT511C3 FPS sazinās, izmantojot sērijas sakarus, sensors saprot sešstūra kodu un katram heks kodam tiek veikta noteikta darbība. Ja vēlaties, varat pārbaudīt datu lapu, lai uzzinātu visas hex vērtības un tām atbilstošās funkcijas. Bet, par laimi mums, bboyho jau ir izveidojis bibliotēku, kuru var tieši izmantot kopā ar Arduino, lai reģistrētu un noteiktu pirkstu nospiedumus. GT511C3 FPS Github bibliotēku var lejupielādēt no tālāk esošās saites
GT511C3 Arduino bibliotēka
Saite lejupielādēs ZIP failu, pēc tam jums tas būs jāpievieno savam Arduino IDE, izpildot komandu Sketch -> Include Library -> Add.ZIP Library. Kad esat pievienojis bibliotēku, restartējiet savu IDE un jums vajadzētu būt iespējai atrast GTX11C3 FSP e xample programmas sadaļā Fails -> Piemērs -> Pirkstu nospiedumu skeneris TTL, kā parādīts zemāk
Jums vajadzētu redzēt četras piemēru programmas, mirgojošā programma mirgos zilajā LED uz FPS, reģistrēšanas un ID pirkstu programmu var izmantot, lai attiecīgi reģistrētu un identificētu pirkstus. Ņemiet vērā, ka modulis vienmēr atcerēsies pirkstu pēc reģistrācijas, pat ja tas ir izslēgts.
Sērijveida caurlaidprogrammu var augšupielādēt Arduino, lai izmantotu Demo_SDK.exe lietojumprogrammu, kuru mēs iepriekš apspriedām šajā rakstā. Šo SDK lietojumprogrammu var izmantot, lai izdzēstu jebkuru pirkstu nospiedumu veidni vai saglabātu kopiju datorā.
Arduino programmēšana GT511C3 pirkstu nospiedumu sensoram
Mūsu mērķis šeit ir uzrakstīt programmu, kas reģistrēs pirkstu, nospiežot pogu, un parādīs jau reģistrētā pirksta ID numuru. Mums arī jāspēj visu informāciju parādīt LCD, lai projekts būtu atsevišķs. Pilnīga kods darīt to pašu, ir jāsniedz pie šīs lapas apakšā. Šeit es sadalu to pašu mazos fragmentos, lai palīdzētu jums labāk saprast.
Kā vienmēr, mēs sākam programmu, iekļaujot nepieciešamās bibliotēkas, šeit mums būs nepieciešama FPS_GT511C3 bibliotēka mūsu FPS modulim, programmatūras sērija, lai sērijveida sakariem izmantotu D4 un D5, un šķidro kristālu saskarne ar LCD. Tad mums jāpiemin, pie kurām tapām FPS un LCD ir savienoti. Ja jūs būtu ievērojis ķēdes shēmu, tad FPS ir 4 un 5, bet LCD - no D6 līdz D11. Tālāk ir parādīts tā paša kods
#include "FPS_GT511C3.h" // Iegūt bibliotēku vietnē https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Programmatūras sērijveida bibliotēka #include
Inside iestatīšanas funkciju, mēs parādām kādu ievada ziņojumu par LCD un pēc tam sāktu FPS moduli. Komanda fps.SetLED (patiess) sensorā ieslēdz zilo LED, jūs to varat izslēgt, izmantojot fps. SetLED (nepatiesa), kad tas nav nepieciešams, jo tas nepārtraukti ieslēdz sensoru. Mēs arī izveidojām tapu D2 kā ievades tapu un pievienojām to iekšējam pievilkšanas rezistoram, lai piespraustu pogu pievienotu tapai.
void setup () { Sērijas.sākt (9600); lcd.begin (16, 2); // Inicializējiet 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("ar Arduino"); // Intro Message line 2. aizkave (2000); lcd.clear (); kadri sekundē. Atvērt (); // nosūtiet sērijas komandu, lai inicializētu fp fps.SetLED (true); // ieslēdziet LED, lai fps varētu redzēt pirkstu nospiedumu pinMode (2, INPUT_PULLUP); // Pievienojiet iekšējo pievilkšanas rezistoru kā ievades tapu }
Funkcijas void loop iekšpusē mums jāpārbauda, vai poga ir nospiesta, nospiežot, mēs ierakstīsim jaunu pirkstu un saglabāsim tā veidni ar ID numuru, izmantojot reģistrēšanas funkciju. Ja nē, mēs turpināsim gaidīt, kamēr sensorā tiks nospiests pirksts. Nospiežot, mēs identificēsim pirkstu nospiedumu, salīdzinot to ar visu reģistrēto pirkstu nospiedumu veidni, izmantojot metodi 1: N. Kad būs atrasts ID numurs, tiks parādīts sveiciens, kam sekos ID numurs. Ja pirkstu nospiedums nesakrita ar kādu no reģistrētajiem pirkstiem, id skaits būs 200, tādā gadījumā mēs parādīsim sveicienu nezināms.
if (digitalRead (2)) // Ja tiek nospiesta poga { Enroll (); // reģistrēt pirkstu nospiedumu } // Identificēt pirkstu nospiedumu testu, ja (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps. Identificēt1_N (); lcd.clear (); lcd.print ("Laipni lūdzam:"); if (id == 200) lcd.print ("Nezināms"); // Ja nav atpazīts, lcd.print (id); kavēšanās (1000); }
Piereģistrēties funkcija būtu jāņem trīs paraugu ievadi uzņemt vienu pirkstu veiksmīgi. Pēc reģistrēšanās tiks izveidota konkrētā pirksta veidne, kas netiks izdzēsta, ja vien lietotājs to nepiespiedīs, izmantojot HEX komandas. Kods pirksta reģistrēšanai ir parādīts zemāk. Metode IsPressFinger tiek izmantota, lai pārbaudītu, vai pirksts ir atklāts, ja jā, attēls tiek uzņemts, izmantojot CaptureFinger un, visbeidzot, Enroll1, Enroll2 un Enroll3 tiek izmantoti trim dažādiem paraugiem, lai veiksmīgi reģistrētu vienu pirkstu. Ja veiksmīgi reģistrējaties, LCD displejā tiek parādīts pirksta ID numurs, pretējā gadījumā tas parādīs kļūdas ziņojumu ar kodu. 1. kods nozīmē, ka pirkstu nospiedums netika notverts skaidri, un tāpēc jums ir jāmēģina vēlreiz. Kods 2 ir atmiņas kļūmes indikācija, un kods 3 norāda, ka pirksts jau ir reģistrēts.
void Enroll () // Reģistrēt funkciju no bibliotēkas exmaple programmas { int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // reģistrēt lcd.print ("Reģistrēties #"); lcd.print (reģistrētais); while (fps.IsPressFinger () == false) kavēšanās (100); bool bret = fps.CaptureFinger (patiess); int iret = 0; ja (bret! = nepatiesa) { lcd.clear (); lcd.print ("Noņemt pirkstu"); kadri sekundē. Reģistrēties1 (); while (fps.IsPressFinger () == true) kavēšanās (100); lcd.clear (); lcd.print ("Nospiediet vēlreiz"); while (fps.IsPressFinger () == false) kavēšanās (100); bret = fps.CaptureFinger (patiess); ja (bret! = nepatiesa) { lcd.clear (); lcd.print ("Noņemt pirkstu"); kadri sekundē. Reģistrēties2 (); while (fps.IsPressFinger () == true) kavēšanās (100); lcd.clear (); lcd.print ("Vēlreiz nospiediet vēlreiz"); while (fps.IsPressFinger () == false) kavēšanās (100); bret = fps.CaptureFinger (patiess); ja (bret! = nepatiesa) { lcd.clear (); lcd.print ("Noņemt pirkstu"); iret = fps. Reģistrēties3 (); ja (iret == 0) { lcd.clear (); lcd.print ("Veiksmīgas reģistrēšanās"); } cits { lcd.clear (); lcd.print ("Reģistrēties neizdevās:"); lcd.print (iret); } } else lcd.print ("1 neizdevās"); } else lcd.print ("2 neizdevās"); } else lcd.print ("Neizdevās 3"); }
GT511C3 pirkstu nospiedumu sensora darbība ar Arduino
Tagad, kad mūsu aparatūra un kods ir gatavs, ir pienācis laiks pārbaudīt mūsu projektu. Augšupielādējiet kodu Arduino un aktivizējiet to, es tikai izmantoju mikro-USB portu, lai darbinātu projektu. Sākot palaišanu, mums vajadzētu redzēt ievaddaļu LCD ekrānā, un pēc tam tajā jāparāda “Hi!..”. Tas nozīmē, ka FPS ir gatavs meklēt pirkstu, ja tiek nospiests kāds reģistrētais pirksts, tas saka “Welcome”, kam seko šī pirksta ID numurs, kā parādīts zemāk.
Ja ir jāreģistrē jauns pirksts, mēs varam izmantot spiedpogu, lai nokļūtu reģistrācijas režīmā, un izpildiet LCD norādījumus, lai reģistrētu pirkstu. Kad reģistrēšanās ir pabeigta, LCD displejā atkal parādīsies “Hi!..”, lai norādītu, ka tas ir lasīts, lai atkal identificētu pirkstus. Pilnīga darba var atrast video saistīti zemāk.
Šeit varat izstrādāt daudz interesantu lietu, izmantojot pirkstu drukas sensora moduli. Ceru, ka sapratāt apmācību un jums patika veidot kaut ko noderīgu, ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā vai izmantojiet forumus citiem tehniskiem jautājumiem.