- Wymagane materiały
- Moduł czytnika linii papilarnych (FPS) GT511C3
- Łączenie czujnika odcisków palców GT511C3 z Arduino
- Arduino z GT511C3
- Programowanie Arduino dla czujnika odcisków palców GT511C3
- Praca czujnika odcisków palców GT511C3 z Arduino
Biometria od dawna jest wykorzystywana jako niezawodny system uwierzytelniania. Obecnie istnieją złożone systemy biometryczne, które mogą zidentyfikować osobę na podstawie rytmu bicia serca, a nawet DNA. Inne możliwe metody obejmują rozpoznawanie głosu, rozpoznawanie twarzy, skanowanie tęczówki i skanowanie odcisków palców. Spośród których rozpoznawanie odcisków palców jest najczęściej stosowaną metodą, możemy je znaleźć od prostego systemu obecności, przez smartfony, po kontrole bezpieczeństwa i wiele więcej.
W tym samouczku dowiemy się, jak używać popularnego czujnika odcisków palców (FPS) GT511C3 z Arduino. Dostępnych jest wiele klatek na sekundę i już nauczyliśmy się ich używać do tworzenia projektów, takich jak system obecności, maszyna do głosowania, system bezpieczeństwa itp. Ale GT511C3 jest bardziej zaawansowany z dużą dokładnością i szybszym czasem reakcji, więc nauczymy się go używać z Arduino, aby zarejestrować na nim odciski palców, a następnie wykryć odciski palców w razie potrzeby. Więc zacznijmy.
Wymagane materiały
- Arduino Nano / UNO
- Czujnik odcisków palców GT511C3
- Ekran LCD 16x2
- Pot - rezystory 10k i 1k, 10k, 22k
- Naciśnij przycisk
- Podłączanie przewodów
- Deska do chleba
Moduł czytnika linii papilarnych (FPS) GT511C3
Przed przystąpieniem do projektu pozwól nam zrozumieć moduł czujnika linii papilarnych GT511C3 i jego działanie. Ten czujnik bardzo różni się od pojemnościowego i ultradźwiękowego czytnika linii papilarnych, które są powszechnie używane w naszych smartfonach. GT511C3 to optyczny czujnik odcisków palców, co oznacza, że opiera się na obrazach odcisku palca w celu rozpoznania jego wzór. Tak, dobrze to przeczytałeś, czujnik faktycznie ma w sobie aparat, który robi zdjęcia odcisków palców, a następnie przetwarza te obrazy za pomocą potężnego wbudowanego ARM Cortex M3 IC. Poniższy rysunek przedstawia przednią i tylną stronę czujnika z pinoutami.
Jak widać, czujnik ma kamerę (czarną plamkę) otoczoną niebieskimi diodami LED, te diody LED muszą być zapalone, aby uzyskać wyraźny obraz odcisku palca. Obrazy te są następnie przetwarzane i konwertowane na wartości binarne przy użyciu mikrokontrolera ARM połączonego z pamięcią EEPROM. Moduł posiada również zieloną diodę LED SMD wskazującą zasilanie. Każdy obraz linii papilarnych ma 202x258 pikseli i rozdzielczość 450 dpi. Czujnik może zapisać do września 200 odcisków palców i każdego wydruku palca szablon to przypisuje formularz ID 0 do 199. Następnie podczas wykrywania może automatycznie porównać zeskanowany odcisk palca ze wszystkimi 200 szablonami, a jeśli zostanie znalezione dopasowanie, podaje numer identyfikacyjny tego konkretnego odcisku palca za pomocą Smack Finger 3.0Algorytm na mikrokontrolerze ARM. Czujnik może pracować w zakresie od 3,3 V do 6 V i komunikuje się poprzez komunikację szeregową przy 9600. Piny komunikacyjne (Rx i Tx) mają tolerancję tylko 3,3 V, jednak arkusz danych nie podaje zbyt wiele na ten temat. Schemat pinów FPS GT511C3 pokazano poniżej.
Oprócz komunikacji szeregowej moduł można również podłączyć bezpośrednio do komputera poprzez połączenie USB za pomocą pinów pokazanych na poprzednim rysunku. Po podłączeniu do komputera modułem można sterować za pomocą aplikacji SDK_DEMO.exe, którą można pobrać z linku. Ta aplikacja umożliwia użytkownikowi rejestrowanie / weryfikację / usuwanie odcisków palców, a także rozpoznawanie odcisków palców. Oprogramowanie może również pomóc w odczytaniu obrazu przechwyconego przez czujnik, który warto spróbować. Alternatywnie możesz również użyć tego oprogramowania, nawet jeśli czujnik jest połączony z Arduino, omówimy to w dalszej części tego artykułu.
Inną interesującą cechą czujnika jest metalowa obudowa wokół obszaru wykrywania. Jak powiedziałem wcześniej, aby czujnik działał, musi być włączona niebieska dioda LED. Ale w zastosowaniach, w których czujnik powinien aktywnie czekać na odcisk palca, nie jest możliwe, aby dioda LED była zawsze włączona, ponieważ podgrzeje czujnik, a tym samym go uszkodzi. Dlatego w takich przypadkach metalowa obudowa może być połączona przewodem z dotykowym stykiem pojemnościowym MCU w celu wykrycia, czy jest dotykana. Jeśli tak, można włączyć diodę LED i rozpocząć proces wykrywania. Ta metoda nie została tutaj przedstawiona, ponieważ wykracza ona poza zakres tego artykułu.
Podczas pracy przy 3,3 V czujnik pobiera około 130 mA. Rejestracja palca zajmuje prawie 3 sekundy i 1 sekundę, aby go zidentyfikować. Jeśli jednak liczba zarejestrowanych szablonów jest mniejsza, szybkość rozpoznawania będzie wysoka. Więcej informacji na temat czujnika można znaleźć w tym arkuszu danych firmy ADH-Tech, która jest oficjalnym producentem modułu.
Łączenie czujnika odcisków palców GT511C3 z Arduino
GT511C3 FPS ma dwa piny zasilania, które mogą być zasilane przez pin + 5V Arduino i dwa piny komunikacyjne Rx i Tx, które można podłączyć do dowolnego cyfrowego pinu Arduino w celu komunikacji szeregowej. Dodatkowo dodaliśmy również przycisk i wyświetlacz LCD do wyświetlania stanu czujnika. Pełny schemat połączeń dla połączenia GT511C3 FPS z Arduino można znaleźć poniżej.
Ponieważ piny Rx i Tx mają tolerancję 3,3 V, zastosowaliśmy dzielnik potencjału po stronie Rx, aby przekonwertować 5 V na 3,3 V. Rezystor 10k i rezystor 22k konwertują sygnał 5 V z pinu Arduino Tx na 3,3 V, zanim dotrze on do styku Rx FPS. Czujnik może być również zasilany napięciem 3,3 V, ale upewnij się, że Arduino może dostarczyć wystarczającą ilość prądu dla czujnika. Podłączyliśmy wyświetlacz LCD w trybie 4-bitowym zasilany 5V pinem Arduino. Przycisk jest podłączony do pinu D2, który po naciśnięciu przełącza program w tryb rejestracji, w którym użytkownik może zarejestrować nowy palec. Po zarejestrowaniu program pozostanie w trybie skanowania w celu wyszukania dowolnego palca dotykającego czujnika.
Arduino z GT511C3
Jak wspomniano wcześniej, GT511C3 FPS komunikuje się poprzez komunikację szeregową, czujnik rozumie kod szesnastkowy i dla każdego kodu szesnastkowego wykonywana jest określona operacja. Jeśli jesteś zainteresowany, możesz sprawdzić arkusz danych, aby poznać wszystkie wartości szesnastkowe i odpowiadające im funkcje. Ale na szczęście dla nas, bboyho stworzyło już bibliotekę, której można używać bezpośrednio z Arduino do rejestrowania i wykrywania odcisków palców. Bibliotekę Github dla GT511C3 FPS można pobrać z linku poniżej
Biblioteka GT511C3 Arduino
Link pobierze plik ZIP, który następnie musisz dodać do swojego Arduino IDE, wykonując polecenie Szkic -> Uwzględnij bibliotekę -> Dodaj bibliotekę.ZIP. Po dodaniu biblioteki uruchom ponownie IDE i powinieneś być w stanie znaleźć przykładowe programy dla GT511C3 FSP w Plik -> Przykład -> TTL skanera linii papilarnych, jak pokazano poniżej
Powinieneś zobaczyć cztery przykładowe programy, program migania będzie migał niebieską diodą na FPS, program rejestracji i palca ID może być użyty do przypisania i odpowiedniej identyfikacji palców. Należy pamiętać, że raz zarejestrowany palec zostanie zawsze zapamiętany przez moduł, nawet jeśli jest wyłączony.
Program Serial Pass-through można przesłać do Arduino, aby użyć aplikacji Demo_SDK.exe , którą omówiliśmy wcześniej w tym artykule. Aby usunąć szablon odcisku palca lub zapisać kopię na komputerze, można użyć tej aplikacji SDK.
Programowanie Arduino dla czujnika odcisków palców GT511C3
Naszym celem jest tutaj napisanie programu, który zarejestruje palec po naciśnięciu przycisku i wyświetli numer identyfikacyjny palca, który jest już zarejestrowany. Powinniśmy również móc wyświetlać wszystkie informacje na wyświetlaczu LCD, aby projekt był samodzielny. Kompletny kod, aby zrobić to samo dać na dole tej strony. Tutaj dzielę to samo na małe fragmenty, aby pomóc Ci lepiej zrozumieć.
Jak zawsze zaczynamy program od włączenia wymaganych bibliotek, tutaj będziemy potrzebować biblioteki FPS_GT511C3 dla naszego modułu FPS, oprogramowania szeregowego do używania D4 i D5 w komunikacji szeregowej oraz ciekłokrystalicznego do interfejsu LCD. Następnie musimy wspomnieć, do których pinów jest podłączony FPS i LCD. Gdybyś postępował zgodnie ze schematem obwodu jako takim, to jest 4 i 5 dla FPS i D6 do D11 dla LCD. Kod tego samego jest pokazany poniżej
#include "FPS_GT511C3.h" // Pobierz bibliotekę z https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Biblioteka szeregowa oprogramowania #include
W ramach funkcji konfiguracji wyświetlamy na ekranie LCD kilka informacji wprowadzających, a następnie inicjalizujemy moduł FPS. Polecenie fps.SetLED (true) włączy niebieską diodę LED na czujniku, możesz ją wyłączyć za pomocą fps.SetLED (false), gdy nie jest wymagane, ponieważ spowoduje to podgrzanie czujnika, jeśli pozostanie włączone w sposób ciągły. Zrobiliśmy również pin D2 jako pin wejściowy i podłączyliśmy go do wewnętrznego rezystora podciągającego, aby podłączyć przycisk do pinów.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Zainicjuj 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("z Arduino"); // Intro Message line 2 delay (2000); lcd.clear (); fps.Open (); // wyślij polecenie szeregowe, aby zainicjować fp fps.SetLED (true); // włącz diodę LED, aby fps mógł zobaczyć odcisk palca pinMode (2, INPUT_PULLUP); // Podłącz do wewnętrznego rezystora podciągającego jako pin wejściowy }
Wewnątrz funkcji void loop musimy sprawdzić, czy przycisk jest wciśnięty, jeśli zostanie wciśnięty, zapiszemy nowy palec i zapiszemy jego szablon z numerem ID za pomocą funkcji enroll. Jeśli nie, będziemy czekać na wciśnięcie palca w czujnik. Jeśli zostanie naciśnięty, zidentyfikujemy odcisk palca, porównując go ze wszystkimi zapisanymi szablonami odcisków palców przy użyciu metody 1: N. Po odkryciu numeru identyfikacyjnego wyświetli się powitanie, a następnie numer identyfikacyjny. Jeśli odcisk palca nie pasuje do żadnego z zapisanych palców, liczba identyfikatorów wyniesie 200, w takim przypadku wyświetlimy powitanie nieznane.
if (digitalRead (2)) // Jeśli przycisk został naciśnięty { Enroll (); // Zarejestruj odcisk palca } // Zidentyfikuj test odcisku palca if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Witamy:"); if (id == 200) lcd.print ("Nieznany"); // Jeśli nie zostanie rozpoznany lcd.print (id); opóźnienie (1000); }
Funkcja rejestracji musiałaby pobrać trzy przykładowe dane wejściowe, aby pomyślnie zarejestrować jeden palec. Po zarejestrowaniu zostanie utworzony szablon dla tego konkretnego palca, który nie zostanie usunięty, chyba że użytkownik wymusi to za pomocą poleceń HEX. Kod do przypisania palca jest pokazany poniżej. Metoda IsPressFinger służy do sprawdzenia, czy wykryto palec, jeśli tak, obraz jest przechwytywany za pomocą CaptureFinger a na końcu Enroll1, Enroll2 i Enroll3 są używane dla trzech różnych próbek, aby pomyślnie zarejestrować jeden palec. Wyświetlacz LCD wyświetla numer identyfikacyjny palca, jeśli został pomyślnie zarejestrowany, w przeciwnym razie wyświetli komunikat o błędzie z kodem. Kod 1 oznacza, że odcisk palca nie został wyraźnie zarejestrowany i dlatego należy spróbować ponownie. Kod 2 to wskazanie awarii pamięci, a kod 3 wskazuje, że palec został już zapisany.
void Enroll () // Zapisz funkcję z biblioteki exmaple program { int enrollid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // enroll lcd.print ("Enroll #"); lcd.print (enrollid); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Usuń palec"); fps.Enroll1 (); while (fps.IsPressFinger () == true) opóźnienie (100); lcd.clear (); lcd.print ("Naciśnij ponownie"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Usuń palec"); fps.Enroll2 (); while (fps.IsPressFinger () == true) opóźnienie (100); lcd.clear (); lcd.print ("Jeszcze raz naciśnij"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Usuń palec"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Rejestracja powiodła się"); } else { lcd.clear (); lcd.print ("Rejestracja nie powiodła się:"); lcd.print (iret); } } else lcd.print ("Błąd 1"); } else lcd.print ("Błąd 2"); } else lcd.print ("Błąd 3"); }
Praca czujnika odcisków palców GT511C3 z Arduino
Teraz, gdy nasz sprzęt i kod są gotowe, czas przetestować nasz projekt. Prześlij kod do Arduino i włącz go, używam tylko portu micro-usb do zasilania projektu. Podczas bootowania powinniśmy zobaczyć wiadomość intro na LCD, a następnie powinien wyświetlić się komunikat „Hi!..”. Oznacza to, że FPS jest gotowy do skanowania w poszukiwaniu palca, jeśli naciśnięty zostanie jakikolwiek zarejestrowany palec, powie „Witamy”, a następnie numer identyfikacyjny tego palca, jak pokazano poniżej.
Jeśli trzeba zarejestrować nowy palec, możemy użyć przycisku, aby przejść do trybu rejestracji i postępować zgodnie z instrukcjami wyświetlanymi na wyświetlaczu LCD, aby zarejestrować palec. Po zakończeniu procesu rejestracji na wyświetlaczu LCD ponownie pojawi się „Hi!..”, co oznacza, że jest czytany w celu ponownego zidentyfikowania palców. Kompletny pracy można znaleźć na filmie połączonego poniżej.
Stąd możesz opracować wiele interesujących rzeczy na ten temat, używając modułu czujnika odcisków palców. Mam nadzieję, że zrozumiałeś samouczek i podobało Ci się tworzenie czegoś pożytecznego. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy lub skorzystaj z forów, aby uzyskać odpowiedzi na inne pytania techniczne.