- Material som krävs
- GT511C3 Fingerprint Sensor (FPS) -modul
- Ansluter GT511C3 fingeravtryckssensor med Arduino
- Arduino med GT511C3
- Programmering Arduino för GT511C3 fingeravtryckssensor
- Arbetar med GT511C3 fingeravtryckssensor med Arduino
Biometri har använts som ett tillförlitligt autentiseringssystem under lång tid nu. Idag finns det komplexa biometriska system som kan identifiera en person genom hans hjärtrytm eller till och med genom hans DNA. Andra möjliga metoder inkluderar röstigenkänning, Ansiktsigenkänning, Iris-scanning och Fingerprint Scanning. Av vilka fingeravtrycksigenkänning är den mest använda metoden kan vi hitta det från ett enkelt närvarosystem till smarta telefoner till säkerhetskontroller och mycket mer.
I den här handledningen lär vi oss hur man använder den populära GT511C3 fingeravtryckssensorn (FPS) med Arduino. Det finns många FPS tillgängliga och vi har redan lärt oss hur man använder dem för att bygga mönster som närvarosystem, röstmaskin, säkerhetssystem etc. Men GT511C3 är mer avancerad med hög noggrannhet och snabbare svarstid, så vi lär oss hur man använder den med Arduino för att registrera fingeravtryck på den och sedan upptäcka fingeravtryck när det behövs. Så låt oss komma igång.
Material som krävs
- Arduino Nano / UNO
- GT511C3 fingeravtryckssensor
- 16x2 LCD-skärm
- Pot - 10k och 1k, 10k, 22k motstånd
- Tryckknapp
- Anslutande ledningar
- Brödbräda
GT511C3 Fingerprint Sensor (FPS) -modul
Innan vi dyker in i projektet, låt oss förstå om fingeravtryckssensormodulen GT511C3 och hur den fungerar. Denna sensor skiljer sig mycket från kapacitiv och ultraljud fingeravtryckssensor som ofta används i våra smarta telefoner. Den GT511C3 är en optisk Fingeravtryckssensor, vilket betyder att den bygger på bilder av ditt fingeravtryck för att känna igen dess mönster. Ja du läste rätt, sensorn har faktiskt en kamera inuti som tar bilder av ditt fingeravtryck och bearbetar sedan dessa bilder med kraftfull inbyggd ARM Cortex M3 IC. Bilden nedan visar fram- och baksidan av sensorn med pinouts.
Som du kan se har sensorn en kamera (svart fläck) omgiven av blå lysdioder, dessa lysdioder måste tändas för att ta en tydlig bild av fingeravtrycket. Dessa bilder bearbetas sedan och konverteras till binärt värde med hjälp av ARM Microcontroller kopplat till EEPROM. Modulen har också en grön färg SMD-LED för att indikera effekt. Varje fingeravtrycksbild har 202x258 pixlar med en upplösning på 450 dpi. Den sensorn kan registrera upp till 200 fingeravtryck och för varje fingeravtryck mall som det tilldelar ett ID formen 0-199. Under detekteringen kan den automatiskt jämföra det skannade fingeravtrycket med alla 200 mallar och om en matchning hittas ger den ID-numret för det specifika fingeravtrycket med Smack Finger 3.0Algoritm på ARM Microcontroller. Sensorn kan arbeta från 3,3 V till 6 V och kommunicerar via seriell kommunikation vid 9600. Kommunikationsstiftet (Rx och Tx) sägs vara endast 3,3 V tolerant, men databladet specificerar inte mycket om det. Pin-out på en GT511C3 FPS visas nedan.
Förutom seriell kommunikation kan modulen också kopplas direkt till datorn via USB-anslutning med stiften som visas i föregående bild. När den väl är ansluten till datorn kan modulen styras med SDK_DEMO.exe-applikationen som kan laddas ner från länken. Denna applikation gör det möjligt för användaren att registrera / verifiera / radera fingeravtryck och även känna igen fingeravtryck. Programvaran kan också hjälpa dig att läsa av bilden som tagits av sensorn, vilket är värt att prova. Alternativt kan du också använda denna programvara även om sensorn är ansluten till Arduino, kommer vi att diskutera om detta senare i den här artikeln.
En annan intressant funktion om sensorn är metallhöljet runt avkänningsregionen. Som jag sa tidigare måste den blå lysdioden tändas för att sensorn ska fungera. Men i applikationer där sensorn aktivt ska vänta på ett fingeravtryck är det inte möjligt att hålla lysdioden tänd alltid eftersom den kommer att värma upp sensorn och därmed skada den. Följaktligen kan metallhöljet i dessa fall kopplas till en kapacitiv beröringsingångsstift på en MCU för att detektera om den berörs. Om ja, kan LED-lampan tändas och avkänningsförfarandet kan startas. Denna metod visas inte här eftersom den ligger utanför tillämpningsområdet för denna artikel.
När den arbetar vid 3,3 V förbrukar sensorn cirka 130 mA. Det tar nästan 3 sekunder för att registrera ett finger och en sekund för att identifiera det. Men om det registrerade mallantalet är mindre kommer igenkänningshastigheten att vara hög. För mer information om sensorn kan du hänvisa till detta datablad från ADH-Tech som är den officiella tillverkaren av modulen.
Ansluter GT511C3 fingeravtryckssensor med Arduino
GT511C3 FPS har två strömuttag som kan drivas med + 5V-stift Arduino och två kommunikationsstift Rx och Tx som kan anslutas till valfri digital stift av Arduino för seriell kommunikation. Dessutom har vi lagt till en tryckknapp och en LCD för att visa sensorstatus. Det fullständiga kretsschemat för gränssnitt mellan GT511C3 FPS och Arduino finns nedan.
Eftersom Rx- och Tx-stiften är 3,3V-toleranta har vi använt en potentialdelare på Rx-sidan för att konvertera 5V till 3,3V. 10k-motståndet och 22k-motståndet omvandlar 5V-signalen från Arduino Tx-stift till 3,3V innan den når Rx-stiftet på FPS. Sensorn kan också drivas med 3,3 V men se till att din Arduino kan få tillräckligt med ström för sensorn. Vi har anslutit LCD-skärmen i 4-bitars läge som drivs av 5V-stift Arduino. En tryckknapp är ansluten till stift D2, som när du trycker på den kommer att sätta programmet i inskrivningsläge där användaren kan registrera nytt finger. Efter registreringen förblir programmet i skanningsläge för att söka efter fingrar som rör vid sensorn.
Arduino med GT511C3
Som tidigare nämnts kommunicerar GT511C3 FPS genom seriell kommunikation, sensorn förstår hex-kod och för varje hex-kod utförs en viss operation. Du kan kolla databladet för att känna till alla hex-värden och dess motsvarande funktion om du är intresserad. Men tur för oss har bboyho redan skapat ett bibliotek som kan användas direkt med Arduino för att registrera och upptäcka fingeravtryck. Github-biblioteket för GT511C3 FPS kan laddas ner från länken nedan
GT511C3 Arduino-bibliotek
Länken laddar ner en ZIP-fil, då måste du lägga till den i din Arduino IDE genom att följa kommandot Skiss -> Inkludera bibliotek -> Lägg till.ZIP-bibliotek. När du har lagt till biblioteket startar du om din IDE och du skulle kunna hitta exempelprogrammen för GT511C3 FSP under File -> Exempel -> Fingerprint Scanner TTL som visas nedan
Du bör se fyra exempelprogram, blinkningsprogrammet blinkar den blå ledningen på FPS, registrerings- och ID-fingerprogrammet kan användas för att registrera och identifiera fingrarna i enlighet därmed. Observera att ett finger en gång registrerat kommer alltid att komma ihåg av modulen även om det är avstängt.
Serial Pass-through-programmet kan laddas upp till Arduino för att använda programmet Demo_SDK.exe som vi diskuterade tidigare i den här artikeln. För att radera en fingeravtrycksmall eller för att spara en kopia på din dator kan detta SDK-program användas.
Programmering Arduino för GT511C3 fingeravtryckssensor
Vårt mål här är att skriva ett program som registrerar ett finger när en knapp trycks in och visar ID-numret på det finger som redan är registrerat. Vi bör också kunna visa all information på LCD-skärmen för att göra det möjligt för projektet att vara fristående. Den fullständiga koden för att göra detsamma är att ge längst ner på denna sida. Här delar jag upp samma i små utdrag för att hjälpa dig att förstå bättre.
Som alltid börjar vi programmet med att inkludera de nödvändiga biblioteken, här behöver vi FPS_GT511C3-biblioteket för vår FPS-modul, programvaruserien för att använda D4 och D5 på seriell kommunikation och flytande kristaller för LCD-gränssnitt. Då måste vi nämna till vilka stift FPS och LCD är ansluten till. Om du hade följt kretsschemat som sådant är det 4 och 5 för FPS och D6 till D11 för LCD. Koden för detsamma visas nedan
#include "FPS_GT511C3.h" // Skaffa bibliotek från https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Seriens programbibliotek #include
Inuti installationsfunktionen visar vi några inledande meddelanden på LCD-skärmen och initialiserar sedan FPS-modulen. Kommandot fps.SetLED (true) tänder den blå lysdioden på sensorn, du kan stänga av den med fps. SetLED (false) när det inte krävs eftersom det skulle värma upp sensorn om den lämnas på kontinuerligt. Vi har också gjort stiftet D2 som ingångsstift och anslutit det till internt uppdragsmotstånd för att ansluta en tryckknapp till stiftet.
ogiltig installation () { Serial.begin (9600); lcd.begin (16, 2); // Initiera 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Intro Meddelandelinje 1 lcd.setCursor (0, 1); lcd.print ("med Arduino"); // Intro Meddelandelinje 2 fördröjning (2000); lcd.clear (); fps.Open (); // skicka seriellt kommando för att initialisera fp fps.SetLED (true); // slå på LED så att fps kan se fingeravtryck pinMode (2, INPUT_PULLUP); // Anslut till internt uppdragsmotstånd som ingångsstift }
Inuti hålrumsfunktionen måste vi kontrollera om knappen trycks in. Om den trycks in registrerar vi ett nytt finger och sparar dess mall med ett ID-nummer med hjälp av registreringsfunktionen. Om inte kommer vi att vänta på att ett finger ska tryckas in i sensorn. Om du trycker på kommer vi att identifiera fingeravtrycket genom att jämföra det med alla registrerade fingeravtrycksmallar med 1: N-metoden. När ID-numret har upptäckts kommer vi att visa välkomst följt av ID-numret. Om fingeravtrycket inte matchade någon av de inskrivna fingrarna kommer id-antalet att vara 200, i så fall visar vi välkomst okänt.
om (digitalRead (2)) // Om knappen trycks ned { Registrera (); // Registrera ett fingeravtryck } // Identifiera fingeravtryckstest om (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Välkommen:"); if (id == 200) lcd.print ("Okänt"); // Om det inte känns igen lcd.print (id); fördröjning (1000); }
Den Anmäl funktion skulle behöva ta tre prov ingångar för att registrera ett finger med framgång. När du är registrerad skapas en mall för det fingret som inte kommer att raderas om inte användaren tvingade det genom HEX-kommandon. Koden för att registrera ett finger visas nedan. Metoden IsPressFinger används för att kontrollera om ett finger upptäcks, om ja, då fångas bilden med CaptureFinger och slutligen används Enroll1, Enroll2 och Enroll3 för tre olika sampel för att framgångsrikt registrera ett finger. LCD: n visar ID-numret på fingret om det registrerades framgångsrikt annars skulle det visa ett felmeddelande med kod. Kod 1 betyder att fingeravtrycket inte fångades tydligt och därför måste du försöka igen. Kod 2 är en minnesfelindikering och kod 3 är att indikera att fingret redan har registrerats.
void Enroll () // Enroll-funktion från biblioteks exmaple-programmet { introllid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true)rollid ++; } fps.EnrollStart (inskrivning); // registrera lcd.print ("Registrera #"); lcd.print (inskrivning); medan (fps.IsPressFinger () == falsk) fördröjning (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Ta bort finger"); fps.Registrera1 (); medan (fps.IsPressFinger () == true) fördröjning (100); lcd.clear (); lcd.print ("Tryck igen"); medan (fps.IsPressFinger () == falsk) fördröjning (100); bret = fps.CaptureFinger (sant); if (bret! = false) { lcd.clear (); lcd.print ("Ta bort finger"); fps.Enroll2 (); medan (fps.IsPressFinger () == true) fördröjning (100); lcd.clear (); lcd.print ("Tryck ännu en gång"); medan (fps.IsPressFinger () == falsk) fördröjning (100); bret = fps.CaptureFinger (sant); if (bret! = false) { lcd.clear (); lcd.print ("Ta bort finger"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Enrolling Success"); } annat { lcd.clear (); lcd.print ("Registrering misslyckades:"); lcd.print (iret); } } annat lcd.print ("Misslyckades 1"); } annat lcd.print ("Misslyckades 2"); } annat lcd.print ("Misslyckades 3"); }
Arbetar med GT511C3 fingeravtryckssensor med Arduino
Nu när vår hårdvara och kod är redo är det dags att testa vårt projekt. Ladda upp koden till Arduino och starta den, jag använder bara micro-usb-porten för att driva projektet. När vi startar bör vi se introduktionsmeddelandet på LCD-skärmen och sedan ska det visa "Hej!..". Detta innebär att FPS är redo att söka efter finger, om någon registrerad finger trycks in skulle den säga "Välkommen" följt av ID-numret för fingret som visas nedan.
Om ett nytt finger måste registreras kan vi använda tryckknappen för att komma in i registreringsläge och följa LCD-instruktionen för att registrera ett finger. När registreringsprocessen är klar visar LCD-skärmen "Hej!.." igen för att indikera att den läses för att identifiera fingrarna igen. Den kompletta arbets kan hittas på videon länkad nedan.
Härifrån kan du utveckla många intressanta saker ovanpå detta med hjälp av sensormodulen Finger Print. Hoppas att du förstod handledningen och tyckte om att bygga något användbart, om du har några frågor lämnar du dem i kommentarsektionen eller använder forumen för andra tekniska frågor.