- Potrebné materiály
- Modul snímača odtlačkov prstov (FPS) GT511C3
- Pripojenie snímača odtlačkov prstov GT511C3 k Arduinu
- Arduino s GT511C3
- Programovanie Arduina pre snímač odtlačkov prstov GT511C3
- Fungovanie snímača odtlačkov prstov GT511C3 s Arduino
Biometria sa už dlho používa ako spoľahlivý autentifikačný systém. Dnes existujú zložité biometrické systémy, ktoré dokážu identifikovať človeka podľa rytmu srdcového rytmu alebo dokonca podľa jeho DNA. Medzi ďalšie uskutočniteľné metódy patrí rozpoznávanie hlasu, rozpoznávanie tváre, skenovanie dúhovky a skenovanie odtlačkov prstov. Z ktorých je rozpoznávanie odtlačkov prstov najpoužívanejšou metódou, nájdeme ho od jednoduchého dochádzkového systému cez inteligentné telefóny až po bezpečnostné kontroly a oveľa viac.
V tomto tutoriáli sa dozvieme, ako používať populárny snímač odtlačkov prstov (FPS) GT511C3 s Arduino. Existuje veľa FPS a my sme sa už naučili, ako ich používať na vytváranie návrhov, ako je dochádzkový systém, hlasovacie zariadenie, bezpečnostný systém atď. GT511C3 je však pokročilejší s vysokou presnosťou a rýchlejšou dobou odozvy, takže sa naučíme, ako ho používať. pomocou Arduina zaregistrovať odtlačky prstov a potom podľa potreby zistiť odtlačky prstov. Tak poďme na to.
Potrebné materiály
- Arduino Nano / UNO
- Senzor odtlačkov prstov GT511C3
- 16x2 LCD obrazovka
- Pot - rezistory 10k a 1k, 10k, 22k
- Stlačte tlačidlo
- Pripojenie drôtov
- Chlebová doska
Modul snímača odtlačkov prstov (FPS) GT511C3
Pred ponorením sa do projektu nám vysvetlite, ako funguje modul snímača odtlačkov prstov GT511C3. Tento snímač sa veľmi líši od kapacitného a ultrazvukového snímača odtlačkov prstov, ktoré sa bežne používajú v našich inteligentných telefónoch. GT511C3 je optický snímač odtlačkov prstov, čo znamená, že sa spolieha na obrazy odtlačku prsta rozpoznať jej vzor. Áno, čítate správne, snímač má v sebe zabudovanú kameru, ktorá sníma vaše odtlačky prstov a potom tieto obrázky spracováva pomocou zabudovaného výkonného ARM Cortex M3 IC. Na nasledujúcom obrázku je predná a zadná strana snímača s pinoutmi.
Ako vidíte, snímač má kameru (čiernu škvrnu) obklopenú modrými LED diódami, tieto LED diódy musia byť rozsvietené, aby ste dosiahli jasný obraz odtlačku prsta. Tieto obrázky sa potom spracujú a prevedú na binárnu hodnotu pomocou mikrokontroléra ARM spojeného s EEPROM. Modul má tiež zelenú farbu SMD LED na indikáciu napájania. Každý obrázok odtlačku prsta má veľkosť 202x258 pixelov s rozlíšením 450 dpi. Senzor je možné zapísať až pre 200 odtlačkov prstov a pre každý odtlačku prsta šablóna poverí ID štúdium 0 až 199. Počas detekcie potom môže automaticky porovnať naskenovaný odtlačok prsta so všetkými 200 šablónami a ak sa nájde zhoda, dá pomocou Smack Finger 3.0 identifikačné číslo konkrétneho odtlačku prsta.Algoritmus na mikrokontroléri ARM. Snímač môže pracovať od 3,3 V do 6 V a komunikuje prostredníctvom sériovej komunikácie na 9600. Komunikačné kolíky (Rx a Tx) sú považované za tolerantné iba voči 3,3 V, avšak údajový list o nich veľa neuvádza. Konektor FPS GT511C3 je uvedený nižšie.
Okrem sériovej komunikácie môže byť modul tiež priamo prepojený s počítačom pomocou USB pripojenia pomocou pinov zobrazených na predchádzajúcom obrázku. Po pripojení k počítaču je možné modul ovládať pomocou aplikácie SDK_DEMO.exe, ktorú je možné stiahnuť z odkazu. Táto aplikácia umožňuje používateľovi zaregistrovať / overiť / vymazať odtlačky prstov a tiež rozpoznať odtlačky prstov. Softvér vám tiež môže pomôcť prečítať obraz nasnímaný snímačom, ktorý stojí za to vyskúšať. Prípadne môžete tento softvér použiť aj v prípade, že je snímač pripojený k Arduinu, o čom sa zmienime neskôr v tomto článku.
Ďalšou zaujímavou vlastnosťou snímača je kovové puzdro okolo snímacej oblasti. Ako som už povedal skôr, aby snímač fungoval, musí byť zapnutá modrá LED. Ale v aplikáciách, kde by mal senzor aktívne čakať na odtlačok prsta, nie je možné nechať LED zapnutú vždy, pretože by to senzor zohrialo a poškodilo ho. Preto v týchto prípadoch môže byť kovové puzdro pripojené k kapacitnému dotykovému vstupnému kolíku MCU, aby sa zistilo, či sa ho dotýka. Ak áno, LED sa dá rozsvietiť a môže sa spustiť proces snímania. Táto metóda tu nie je demonštrovaná, pretože je mimo rozsahu pôsobnosti tohto článku.
Pri prevádzke na 3,3 V spotrebuje snímač okolo 130 mA. Na registráciu prsta to vyžaduje takmer 3 sekundy a jeho identifikácia 1 sekundu. Ak je však počet zaregistrovaných šablón menší, rýchlosť rozpoznávania bude vysoká. Viac podrobností o snímači nájdete v tomto údajovom liste spoločnosti ADH-Tech, ktorá je oficiálnym výrobcom modulu.
Pripojenie snímača odtlačkov prstov GT511C3 k Arduinu
GT511C3 FPS má dva napájacie piny, ktoré môžu byť napájané + 5 V pinom Arduina, a dva komunikačné piny Rx a Tx, ktoré môžu byť pripojené k akémukoľvek digitálnemu pinu Arduina pre sériovú komunikáciu. Ďalej sme pridali tiež tlačidlo a LCD na zobrazenie stavu snímača. Kompletnú schému zapojenia pre prepojenie GT511C3 FPS s Arduino nájdete nižšie.
Pretože kolíky Rx a Tx sú tolerantné voči napätiu 3,3 V, použili sme delič potenciálov na strane Rx na prevod 5V na 3,3V. 10k rezistor a 22k rezistor prevádza signál 5V z kolíka Arduino Tx na 3,3V predtým, ako dosiahne pin Rx na FPS. Senzor môže byť tiež napájaný 3,3 V, ale uistite sa, že vaše Arduino dokáže dodať dostatočný prúd pre senzor. Pripojili sme LCD v 4-bitovom režime napájanom 5V pinom Arduina. Na pin D2 je pripojené tlačidlo, ktoré po stlačení uvedie program do režimu registrácie, kde si užívateľ môže zaregistrovať nový prst. Po zaregistrovaní program zostane v režime skenovania, aby vyhľadal akýkoľvek prst dotýkajúci sa snímača.
Arduino s GT511C3
Ako už bolo spomenuté, GT511C3 FPS komunikuje prostredníctvom sériovej komunikácie, snímač rozumie hexadecimálnemu kódu a pre každý hexadecimálny kód sa vykonáva konkrétna operácia. Ak máte záujem, môžete skontrolovať údajový list a poznať všetky hexadecimálne hodnoty a ich príslušné funkcie. Ale šťastie pre nás bboyho už vytvorilo knižnicu, ktorú je možné priamo pomocou Arduina použiť na registráciu a detekciu odtlačkov prstov. Knižnicu Github pre GT511C3 FPS je možné stiahnuť z nasledujúceho odkazu
Knižnica Arduino GT511C3
Odkaz stiahne súbor ZIP, ktorý by ste potom museli pridať do svojho Arduino IDE pomocou príkazu Skica -> Zahrnúť knižnicu -> Pridať.ZIP knižnicu. Po pridaní knižnice reštartujte svoje IDE a mali by ste byť schopní nájsť príklady programov pre GT511C3 FSP v časti Súbor -> Príklad -> Snímač odtlačkov prstov TTL, ako je uvedené nižšie.
Mali by ste vidieť štyri ukážkové programy, program blikania bude blikať modrou LED na FPS, program na registráciu a identifikáciu prsta je možné použiť na príslušnú registráciu a identifikáciu prstov. Upozorňujeme, že akonáhle je zaregistrovaný prst, modul si ho vždy pamätá, aj keď je vypnutý.
Program sériového prenosu je možné nahrať do Arduina a použiť aplikáciu Demo_SDK.exe, o ktorej sme hovorili vyššie v tomto článku. Na odstránenie akejkoľvek šablóny odtlačku prsta alebo na uloženie kópie do počítača je možné použiť túto aplikáciu SDK.
Programovanie Arduina pre snímač odtlačkov prstov GT511C3
Našim cieľom je napísať program, ktorý zaregistruje prst po stlačení tlačidla a zobrazí identifikačné číslo prsta, ktorý je už zaregistrovaný. Mali by sme byť tiež schopní zobraziť všetky informácie na LCD, aby sme umožnili, aby bol projekt samostatný. Kompletné kód, aby urobili to isté sa dá v dolnej časti tejto stránky. Tu ich delím na malé útržky, ktoré vám pomôžu lepšie pochopiť.
Ako vždy začneme program zahrnutím požadovaných knižníc, tu budeme potrebovať knižnicu FPS_GT511C3 pre náš modul FPS, softvérové sériové použitie D4 a D5 pre sériovú komunikáciu a tekuté kryštály pre LCD prepojenie. Potom musíme spomenúť, ku ktorým pinom je pripojený FPS a LCD. Ak ste postupovali podľa schémy zapojenia ako takej, potom je to 4 a 5 pre FPS a D6 až D11 pre LCD. Kód rovnakého kódu je uvedený nižšie
#include "FPS_GT511C3.h" // Získajte knižnicu z https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Softvérová sériová knižnica #include
Vo vnútri funkcie nastavenia zobrazíme na LCD úvodnú správu a potom inicializujeme FPS modul. Príkaz fps.SetLED (true) rozsvieti modrú LED diódu na snímači, môžete ju vypnúť pomocou fps.SetLED (false), keď to nie je potrebné, pretože by zostal trvale zapnutý, senzor by sa zahrial. Taktiež sme vyrobili pin D2 ako vstupný pin a pripojili sme ho k internému pull-up rezistoru tak, aby sme ku kolíku pripojili tlačidlo.
void setup () { Serial.begin (9600); lcd.začiatok (16, 2); // Inicializácia 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Úvod Riadok správy 1 lcd.setCursor (0, 1); lcd.print ("s Arduinom"); // Úvod oneskorenia riadku správy 2 (2000); lcd.clear (); fps.Open (); // poslať sériový príkaz na inicializáciu fp fps.SetLED (true); // rozsvieti LED, aby fps videlo odtlačok prsta pinMode (2, INPUT_PULLUP); // Pripojte k internému pull up rezistoru ako vstupný pin }
Vo vnútri funkcie void loop musíme skontrolovať, či je stlačené tlačidlo, pri stlačení zaregistrujeme nový prst a pomocou funkcie enroll uložíme jeho šablónu s ID číslom. Pokiaľ nie, budeme čakať na stlačenie prsta v senzore. Ak stlačíte, identifikujeme odtlačok prsta porovnaním so všetkými zaregistrovanými šablónami odtlačkov prstov pomocou metódy 1: N. Po zistení identifikačného čísla sa zobrazí uvítanie, za ktorým nasleduje identifikačné číslo. Ak sa odtlačok prsta nezhoduje so žiadnym zo zaregistrovaných prstov, počet id bude 200, v takom prípade sa zobrazí vítaná neznáma.
if (digitalRead (2)) // Ak je stlačené tlačidlo { Enroll (); // Zaregistrujte odtlačok prsta } // Identifikujte test odtlačkov prstov if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print („Vitajte:“); if (id == 200) lcd.print ("Neznáme"); // Ak nie je rozpoznaný lcd.print (id); oneskorenie (1 000); }
Na úspešné zaregistrovanie jedného prsta by funkcia registrácie musela trvať tri vzorové vstupy. Po zaregistrovaní sa vytvorí šablóna pre konkrétny prst, ktorá sa neodstráni, pokiaľ ju používateľ neprinútil pomocou príkazov HEX. Kód na registráciu prsta je uvedený nižšie. Metóda IsPressFinger sa používa na kontrolu, či je detekovaný prst, ak áno, potom sa obrázok nasníma pomocou nástroja CaptureFinger. a nakoniec sa Enroll1, Enroll2 a Enroll3 použijú pre tri rôzne vzorky na úspešné zaregistrovanie jedného prsta. Na LCD displeji sa zobrazí identifikačné číslo prsta, ak je zaregistrovaný úspešne, v opačnom prípade by sa zobrazila chybová správa s kódom. Kód 1 znamená, že odtlačok prsta nebol zachytený jasne, a preto musíte skúsiť znova. Kód 2 je indikácia zlyhania pamäte a kód 3 označuje, že prst už bol naučený.
void Enroll () // Funkcia registrácie z programu exmaple knižnice { int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // zaregistrovať lcd.print ("Zaregistrovať #"); lcd.print (enrollid); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Odstrániť prst"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Znova stlačte"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odstrániť prst"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Znova stlačte"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odstrániť prst"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Registrácia úspechu"); } else { lcd.clear (); lcd.print ("Registrácia zlyhala:"); lcd.print (iret); } } else lcd.print ("Zlyhalo 1"); } else lcd.print ("Zlyhalo 2"); } else lcd.print ("Zlyhanie 3"); }
Fungovanie snímača odtlačkov prstov GT511C3 s Arduino
Teraz, keď je náš hardvér a kód pripravený, je čas otestovať náš projekt. Nahrajte kód do Arduina a zapnite ho. Na napájanie projektu používam iba port micro-USB. Pri bootovaní by sme mali vidieť úvodnú správu na LCD displeji a potom by sa mala zobraziť správa „Ahoj!..“. To znamená, že FPS je pripravený na skenovanie prsta. Ak stlačíte ktorýkoľvek zaregistrovaný prst, povedie „Vitajte“ a za ním bude nasledovať identifikačné číslo tohto prsta, ako je uvedené nižšie.
Ak je potrebné zaregistrovať nový prst, pomocou tlačidla sa dostaneme do režimu registrácie a podľa pokynov LCD zaregistrujeme prst. Po dokončení procesu registrácie sa na displeji LCD znova zobrazí „Ahoj!..“, čo znamená, že je načítaný, aby sa opäť identifikovali prsty. Kompletné pracovné možno nájsť na videu odkazujeme nižšie.
Odtiaľto môžete pomocou modulu snímača odtlačkov prstov vyvinúť veľa zaujímavých vecí. Dúfam, že ste pochopili tento návod a páčilo sa vám vytváranie niečoho užitočného. Ak máte akékoľvek otázky, nechajte ich v sekcii komentárov alebo použite fóra na ďalšie technické otázky.