- Potřebné materiály
- Modul snímače otisků prstů (FPS) GT511C3
- Připojení snímače otisku prstu GT511C3 k Arduinu
- Arduino s GT511C3
- Programování Arduina pro snímač otisků prstů GT511C3
- Práce se snímačem otisku prstu GT511C3 s Arduino
Biometrie se již dlouho používá jako spolehlivý autentizační systém. Dnes existují složité biometrické systémy, které dokážou identifikovat člověka podle rytmu srdečního rytmu nebo dokonce podle jeho DNA. Mezi další proveditelné metody patří rozpoznávání hlasu, rozpoznávání tváře, skenování duhovky a skenování otisků prstů. Z nichž je nejčastěji používanou metodou rozpoznávání otisků prstů, můžeme ji najít od jednoduchého docházkového systému přes chytré telefony až po bezpečnostní kontroly a mnoho dalšího.
V tomto tutoriálu se naučíme, jak používat populární snímač otisků prstů GT511C3 (FPS) s Arduinem. Existuje mnoho FPS a my jsme se již naučili, jak je používat k vytváření návrhů, jako je docházkový systém, hlasovací automat, bezpečnostní systém atd. GT511C3 je však pokročilejší s vysokou přesností a rychlejší dobou odezvy, takže se naučíme, jak jej používat pomocí Arduina zaregistrujte otisky prstů a poté podle potřeby detekujte otisky prstů. Pojďme tedy začít.
Potřebné materiály
- Arduino Nano / UNO
- Senzor otisku prstu GT511C3
- 16x2 LCD obrazovka
- Pot - 10k a 1k, 10k, 22k rezistory
- Stiskněte tlačítko
- Připojení vodičů
- Chlebová deska
Modul snímače otisků prstů (FPS) GT511C3
Než se ponoříme do projektu, pochopíme, jak funguje modul snímače otisků prstů GT511C3 a jak to funguje. Tento snímač je velmi odlišný od kapacitního a ultrazvukového snímače otisků prstů, které se běžně používají v našich chytrých telefonech. GT511C3 je optický snímač otisků prstů, což znamená, že se spoléhá na obrazy otisku prstu rozpoznat její vzor. Ano, čtete správně, senzor má uvnitř kameru, která snímá vaše otisky prstů a poté tyto snímky zpracovává pomocí výkonného integrovaného ARM Cortex M3 IC. Na následujícím obrázku je přední a zadní strana snímače s vývody.
Jak vidíte, senzor má kameru (černou skvrnu) obklopenou modrými LED diodami, tyto LED diody musí být rozsvíceny, aby byl jasný obraz otisku prstu. Tyto obrazy jsou poté zpracovány a převedeny na binární hodnotu pomocí mikrokontroléru ARM spojeného s EEPROM. Modul má také zelenou barvu SMD LED pro indikaci napájení. Každý obrázek otisku prstu má velikost 202x258 pixelů s rozlišením 450 dpi. Senzor lze zapsat až pro 200 otisků prstů a pro každý otisku prstu šablona pověří ID studium 0 až 199. Během detekce pak může automaticky porovnat naskenovaný otisk prstu se všemi 200 šablonami a pokud je nalezena shoda, dá ID číslo konkrétního otisku prstu pomocí Smack Finger 3.0Algoritmus na mikrokontroléru ARM. Senzor může pracovat od 3,3 V do 6 V a komunikuje sériovou komunikací při 9600. Komunikační piny (Rx a Tx) jsou považovány za tolerantní pouze k 3,3 V, ale datový list o nich příliš neuvádí. Níže je uveden pin-out GT511C3 FPS.
Kromě sériové komunikace lze modul také přímo propojit s počítačem pomocí USB připojení pomocí pinů zobrazených na předchozím obrázku. Po připojení k počítači lze modul ovládat pomocí aplikace SDK_DEMO.exe, kterou lze stáhnout z odkazu. Tato aplikace umožňuje uživateli registrovat / ověřovat / mazat otisky prstů a také rozpoznávat otisky prstů. Tento software vám také pomůže přečíst obraz zachycený snímačem, což stojí za to vyzkoušet. Alternativně můžete tento software také použít, i když je senzor připojen k Arduinu, o tom pojednáme dále v tomto článku.
Další zajímavou vlastností snímače je kovové pouzdro kolem snímací oblasti. Jak jsem již řekl dříve, aby senzor fungoval, musí být rozsvícena modrá LED. Ale v aplikacích, kde by senzor měl aktivně čekat na otisk prstu, není možné nechat LED rozsvícenou vždy, protože by senzor zahřál a poškodil. V těchto případech tedy může být kovové pouzdro připojeno ke kapacitnímu dotykovému vstupnímu kolíku MCU, aby se zjistilo, zda se ho dotýká. Pokud ano, lze LED rozsvítit a zahájit proces snímání. Tato metoda zde není prokázána, protože je mimo rozsah tohoto článku.
Při provozu na 3,3 V spotřebuje snímač přibližně 130 mA. To vyžaduje téměř 3 sekundy pro registraci prstu a 1 sekundu k jeho identifikaci. Pokud je však počet zaregistrovaných šablon menší, rychlost rozpoznávání bude vysoká. Další podrobnosti o senzoru naleznete v tomto datovém listu od společnosti ADH-Tech, která je oficiálním výrobcem modulu.
Připojení snímače otisku prstu GT511C3 k Arduinu
GT511C3 FPS má dva napájecí piny, které mohou být napájeny pinem + 5V Arduino a dva komunikační piny Rx a Tx, které lze připojit k libovolnému digitálnímu pinu Arduino pro sériovou komunikaci. Navíc jsme přidali také tlačítko a LCD pro zobrazení stavu senzoru. Kompletní schéma zapojení rozhraní GT511C3 FPS s Arduino najdete níže.
Vzhledem k tomu, že kolíky Rx a Tx jsou tolerantní k 3,3 V, jsme použili převodník potenciálů na straně Rx k převodu 5V na 3,3V. Rezistor 10k a rezistor 22k převádí signál 5V z kolíku Arduino Tx na 3,3V, než dosáhne kolíku Rx FPS. Senzor lze také napájet 3,3 V, ale ujistěte se, že vaše Arduino může pro senzor napájet dostatečný proud. LCD jsme připojili ve 4bitovém režimu napájeném 5V pinem Arduino. K pinu D2 je připojeno tlačítko, které po stisknutí přepne program do režimu registrace, kde může uživatel zaregistrovat nový prst. Po registraci program zůstane v režimu skenování, aby vyhledal jakýkoli prst dotýkající se senzoru.
Arduino s GT511C3
Jak již bylo zmíněno dříve, GT511C3 FPS komunikuje prostřednictvím sériové komunikace, senzor rozumí hexadecimálnímu kódu a pro každý hexadecimální kód se provádí konkrétní operace. Pokud máte zájem, můžete si prohlédnout datový list a znát všechny hexadecimální hodnoty a odpovídající funkce. Naštěstí pro nás bboyho již vytvořil knihovnu, kterou lze přímo pomocí Arduina použít k registraci a detekci otisků prstů. Knihovnu Github pro GT511C3 FPS lze stáhnout z níže uvedeného odkazu
Knihovna Arduino GT511C3
Odkaz stáhne soubor ZIP, který byste poté museli přidat do svého Arduino IDE pomocí příkazu Skica -> Zahrnout knihovnu -> Přidat knihovnu.ZIP. Jakmile přidáte knihovnu, restartujte IDE a měli byste být schopni najít příklady programů pro GT511C3 FSP v části Soubor -> Příklad -> Fingerprint Scanner TTL, jak je uvedeno níže
Měli byste vidět čtyři ukázkové programy, program blikání bude blikat modrou LED na FPS, program pro registraci a ID prstu lze použít k odpovídající registraci a identifikaci prstů. Pamatujte si, že jakmile zaregistrovaný prst si modul vždy zapamatuje, i když je vypnutý.
Program sériového předávání lze nahrát do Arduina, aby bylo možné použít aplikaci Demo_SDK.exe, kterou jsme probrali dříve v tomto článku. K odstranění jakékoli šablony otisků prstů nebo uložení kopie do počítače lze použít tuto aplikaci SDK.
Programování Arduina pro snímač otisků prstů GT511C3
Naším cílem je napsat program, který zaregistruje prst po stisknutí tlačítka a zobrazí ID číslo již zaregistrovaného prstu. Měli bychom také být schopni zobrazit všechny informace na LCD, abychom umožnili, aby byl projekt samostatný. Kompletní kód, aby učinily totéž se dá v dolní části této stránky. Tady to rozděluji na malé úryvky, abych vám pomohl lépe porozumět.
Jako vždy začneme program zahrnutím požadovaných knihoven, zde budeme potřebovat knihovnu FPS_GT511C3 pro náš modul FPS, softwarové sériové použití D4 a D5 pro sériovou komunikaci a tekuté krystaly pro LCD rozhraní. Pak musíme zmínit, ke kterým pinům jsou připojeny FPS a LCD. Pokud jste postupovali podle schématu zapojení jako takového, pak je to 4 a 5 pro FPS a D6 až D11 pro LCD. Kód stejné je uveden níže
#include "FPS_GT511C3.h" // Získejte knihovnu z https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Softwarová sériová knihovna #include
Uvnitř funkce nastavení zobrazíme na LCD úvodní zprávu a poté inicializujeme modul FPS. Příkaz fps.SetLED (true) rozsvítí modrou LED na senzoru, můžete ji vypnout pomocí fps.SetLED (false), pokud není vyžadován, protože by senzor trvale zahříval. Také jsme vyrobili pin D2 jako vstupní pin a připojili jsme ho k internímu pull-up rezistoru, abychom připojili tlačítko ke kolíku.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Inicializace 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Úvod Řádek zprávy 1 lcd.setCursor (0, 1); lcd.print ("s Arduino"); // Úvodní zpoždění řádku zprávy 2 (2000); lcd.clear (); fps.Open (); // odeslání sériového příkazu k inicializaci fp fps.SetLED (true); // rozsvítí LED, aby fps viděl otisk prstu pinMode (2, INPUT_PULLUP); // Připojte se k internímu pull up rezistoru jako vstupní pin }
Uvnitř funkce void smyčky musíme zkontrolovat, zda je stisknuto tlačítko, pokud je stisknuto, zaregistrujeme nový prst a pomocí funkce registrace uložíme jeho šablonu s ID číslem. Pokud ne, budeme čekat na stisknutí prstu v senzoru. Pokud je stisknuto, identifikujeme otisk prstu porovnáním se všemi zaregistrovanými šablonami otisků prstů pomocí metody 1: N. Jakmile zjistíte identifikační číslo, zobrazí se uvítací a následně identifikační číslo. Pokud se otisk prstu neshoduje s žádným ze zaregistrovaných prstů, bude počet id 200, v takovém případě se zobrazí uvítací neznámo.
if (digitalRead (2)) // Pokud bylo stisknuto tlačítko { Enroll (); // Zaregistrujte otisk prstu } // Identifikujte test otisků prstů if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Vítejte:"); if (id == 200) lcd.print ("Neznámý"); // Pokud není rozpoznán lcd.print (id); zpoždění (1000); }
K úspěšnému zaregistrování jednoho prstu by funkce registrace musela trvat tři ukázkové vstupy. Jakmile se zaregistrujete, vytvoří se šablona pro daný konkrétní prst, která nebude odstraněna, pokud ji uživatel nevynutil pomocí příkazů HEX. Kód pro registraci prstu je uveden níže. Metoda IsPressFinger se používá ke kontrole, zda je detekován prst, pokud ano, pak je snímek zachycen pomocí CaptureFinger a nakonec se Enroll1, Enroll2 a Enroll3 použijí pro tři různé vzorky k úspěšnému zaregistrování jednoho prstu. Na LCD displeji se zobrazí ID číslo prstu, pokud byl úspěšně zaregistrován, jinak by se zobrazila chybová zpráva s kódem. Kód 1 znamená, že otisk prstu nebyl zachycen jasně, a proto musíte zkusit znovu. Kód 2 je indikace selhání paměti a kód 3 označuje, že prst již byl zaregistrován.
void Enroll () // Funkce registrace z programu exmaple knihovny { int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (zápis); // zapsat lcd.print ("Zapsat #"); lcd.print (zápis); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Odebrat prst"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Stiskněte znovu"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odebrat prst"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Stiskněte ještě jednou"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Odebrat prst"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Registrace úspěchu"); } else { lcd.clear (); lcd.print ("Registrace se nezdařila:"); lcd.print (iret); } } else lcd.print ("Selhalo 1"); } else lcd.print ("Selhalo 2"); } else lcd.print ("Selhalo 3"); }
Práce se snímačem otisku prstu GT511C3 s Arduino
Nyní, když je náš hardware a kód připraven, je čas náš projekt otestovat. Nahrajte kód do Arduina a zapněte jej, k napájení projektu používám port micro-USB. Při bootování bychom měli vidět úvodní zprávu na LCD a poté by se měla zobrazit „Ahoj!..“. To znamená, že FPS je připraven vyhledávat prst, pokud stisknete jakýkoli zaregistrovaný prst, řekne „Vítejte“ následovaný identifikačním číslem tohoto prstu, jak je znázorněno níže.
Pokud je třeba zaregistrovat nový prst, můžeme se pomocí tlačítka dostat do režimu registrace a podle pokynů na LCD prstu zaregistrovat prst. Po dokončení procesu registrace se na displeji LCD znovu zobrazí „Ahoj!..“, což znamená, že je načítán, aby se znovu identifikovaly prsty. Kompletní pracovní lze nalézt na videu odkazujeme níže.
Odtud můžete na tomto modulu vyvinout mnoho zajímavých věcí pomocí modulu snímače otisků prstů. Doufám, že jste pochopili výukový program a bavilo vás budovat něco užitečného, pokud máte nějaké dotazy, nechte je v sekci komentářů nebo použijte fóra pro další technické otázky.