- Nødvendig materiale
- GT511C3 Fingeravtrykkssensormodul (FPS)
- Kobler GT511C3 fingeravtrykkssensor med Arduino
- Arduino med GT511C3
- Programmering Arduino for GT511C3 fingeravtrykkssensor
- Arbeid med GT511C3 fingeravtrykkssensor med Arduino
Biometri har vært brukt som et pålitelig autentiseringssystem i lang tid nå. I dag eksisterer det komplekse biometriske systemer som kan identifisere en person ved hjerterytmen eller til og med DNA. Andre mulige metoder inkluderer stemmegjenkjenning, Ansiktsgjenkjenning, Iris-skanning og Fingerprint-skanning. Ut av hvilken fingeravtrykksgjenkjenning er den mest brukte metoden, kan vi finne den fra et enkelt oppmøtesystem til smarttelefoner til sikkerhetskontroll og mye mer.
I denne opplæringen lærer vi hvordan du bruker den populære GT511C3 Finger Print Sensor (FPS) med Arduino. Det er mange FPS tilgjengelig, og vi har allerede lært hvordan vi bruker dem til å bygge design som fremmøtesystem, stemmemaskin, sikkerhetssystem osv. Men GT511C3 er mer avansert med høy nøyaktighet og raskere responstid, så vi vil lære å bruke den med Arduino for å registrere fingeravtrykk på den og deretter oppdage fingeravtrykkene når det er nødvendig. Så la oss komme i gang.
Nødvendig materiale
- Arduino Nano / UNO
- GT511C3 fingeravtrykkssensor
- 16x2 LCD-skjerm
- Pot - 10k og 1k, 10k, 22k motstand
- Trykknapp
- Koble ledninger
- Brettbrett
GT511C3 Fingeravtrykkssensormodul (FPS)
Før vi dykker inn i prosjektet, la oss forstå om GT511C3 fingeravtrykkssensormodul og hvordan den fungerer. Denne sensoren er veldig forskjellig fra den kapasitive og ultralyds fingeravtrykkssensoren som ofte brukes i våre smarttelefoner. Den GT511C3 er en optisk fingeravtrykkssensor, noe som betyr at det er avhengig av bilder av ditt fingeravtrykk til å gjenkjenne mønsteret. Ja, du leste riktig, sensoren har faktisk et kamera inne i den som tar bilder av fingeravtrykket ditt og behandler disse bildene ved hjelp av kraftig innebygd ARM Cortex M3 IC. Bildet nedenfor viser front- og baksiden av sensoren med pinouts.
Som du kan se, har sensoren et kamera (svart flekk) omgitt av blå lysdioder, disse lysdiodene må lyse for å ta et tydelig bilde av fingeravtrykket. Disse bildene blir deretter behandlet og konvertert til binær verdi ved hjelp av ARM Microcontroller kombinert med EEPROM. Modulen har også en grønn farge SMD LED for å indikere strøm. Hvert fingeravtrykk har 202x258 piksler med en oppløsning på 450 dpi. Den sensoren kan registrere opptil 200 fingeravtrykk og for hver finger trykk mal den tildeler ID skjema 0-199. Under deteksjonen kan den automatisk sammenligne det skannede fingeravtrykket med alle 200 malene, og hvis det blir funnet en kamp, gir den ID-nummeret til det aktuelle fingeravtrykket ved hjelp av Smack Finger 3.0Algoritme på ARM Microcontroller. Sensoren kan fungere fra 3,3 V til 6 V og kommuniserer gjennom seriell kommunikasjon ved 9600. Kommunikasjonspinnene (Rx og Tx) sies å være bare 3,3 V tolerante, men databladet spesifiserer ikke mye om det. Pin-out av en GT511C3 FPS er vist nedenfor.
Bortsett fra seriell kommunikasjon, kan modulen også kobles direkte til datamaskinen via USB-tilkobling ved hjelp av pinnene vist i forrige bilde. Når den er koblet til datamaskinen, kan modulen styres ved hjelp av SDK_DEMO.exe-applikasjonen som kan lastes ned fra lenken. Denne applikasjonen lar brukeren registrere / verifisere / slette fingeravtrykk og også å gjenkjenne fingeravtrykk. Programvaren kan også hjelpe deg med å lese bildet som er tatt av sensoren, og det er verdt å prøve. Alternativt kan du også bruke denne programvaren, selv om sensoren er koblet til Arduino, vil vi diskutere om dette senere i denne artikkelen.
En annen interessant funksjon om sensoren er metallhylsen rundt detekteringsområdet. Som jeg fortalte tidligere, må den blå LED-lampen være på for at sensoren skal fungere. Men i applikasjoner der sensoren aktivt skal vente på et fingeravtrykk, er det ikke mulig å holde lysdioden på alltid, siden den vil varme opp sensoren og dermed skade den. Derfor kan metallhylsteret kobles til en kapasitiv berøringsinngangsstift på en MCU for å oppdage om den blir berørt. Hvis ja, kan LED-lampen slås på og sensorprosessen kan startes. Denne metoden er ikke demonstrert her, da den ligger utenfor omfanget av denne artikkelen.
Ved drift på 3,3 V bruker sensoren omtrent 130 mA. Det tar nesten 3 sekunder å registrere en finger og 1 sekund å identifisere den. Men hvis antallet registrerte maler er mindre, vil gjenkjennelseshastigheten være høy. For mer informasjon om sensoren kan du se dette databladet fra ADH-Tech som er den offisielle produsenten av modulen.
Kobler GT511C3 fingeravtrykkssensor med Arduino
GT511C3 FPS har to strømpinner som kan drives av + 5V pin med Arduino og to kommunikasjonspinner Rx og Tx som kan kobles til hvilken som helst digital pin av Arduino for seriell kommunikasjon. I tillegg har vi også lagt til en trykknapp og en LCD for å vise sensorstatus. Det komplette kretsskjemaet for grensesnitt GT511C3 FPS med Arduino finner du nedenfor.
Siden Rx- og Tx-pinnene er 3,3V-tolerante, har vi brukt en potensiell skillelinje på Rx-siden for å konvertere 5V til 3.3V. 10k-motstanden og 22k-motstanden konverterer 5V-signalet fra Arduino Tx-pinnen til 3.3V før den når Rx-pinnen på FPS. Sensoren kan også drives av 3,3 V, men sørg for at Arduino kan skaffe nok strøm til sensoren. Vi har koblet LCD-skjermen i 4-bit-modus drevet av 5V pin Arduino. En trykknapp er koblet til pin D2, som når den trykkes vil sette programmet i registreringsmodus der brukeren kan registrere ny finger. Etter at du har registrert deg, forblir programmet i skannemodus for å skanne etter en finger som berører sensoren.
Arduino med GT511C3
Som nevnt tidligere kommuniserer GT511C3 FPS gjennom seriell kommunikasjon, sensoren forstår heksekode og for hver heksekode utføres en bestemt operasjon. Du kan sjekke databladet for å vite alle hexverdiene og dets tilhørende funksjon hvis du er interessert. Men heldig for oss har bboyho allerede opprettet et bibliotek som kan brukes direkte med Arduino for å registrere og oppdage fingeravtrykk. Github-biblioteket for GT511C3 FPS kan lastes ned fra lenken nedenfor
GT511C3 Arduino-bibliotek
Koblingen vil laste ned en ZIP-fil, og du må da legge den til din Arduino IDE ved å følge kommandoen Skisse -> Inkluder bibliotek -> Legg til.ZIP-bibliotek. Når du har lagt til biblioteket, start IDE på nytt, og du skal kunne finne eksempler på programmer for GT511C3 FSP under Fil -> Eksempel -> Fingeravtrykkskanner TTL som vist nedenfor
Du bør se fire eksempler på programmer, blinkprogrammet vil blinke den blå ledningen på FPS, registrerings- og ID-fingerprogrammet kan brukes til å registrere og identifisere fingrene i samsvar med dette. Merk at en finger en gang registrert vil alltid bli husket av modulen selv om den er slått av.
Serial Pass-through-programmet kan lastes opp til Arduino for å bruke Demo_SDK.exe- applikasjonen som vi diskuterte tidligere i denne artikkelen. For å slette en fingeravtrykkmal eller for å lagre en kopi på datamaskinen din, kan dette SDK-programmet brukes.
Programmering Arduino for GT511C3 fingeravtrykkssensor
Målet vårt her er å skrive et program som vil registrere en finger når du trykker på en knapp og vise ID-nummeret til fingeren som allerede er registrert. Vi bør også kunne vise all informasjon på LCD-skjermen for å gjøre det mulig for prosjektet å være frittstående. Den komplette koden for å gjøre det samme er å gi nederst på denne siden. Her deler jeg det samme i små utdrag for å hjelpe deg med å forstå bedre.
Som alltid starter vi programmet med å inkludere de nødvendige bibliotekene, her trenger vi FPS_GT511C3-biblioteket for FPS-modulen vår, programvareserien for å bruke D4 og D5 på seriell kommunikasjon og flytende krystall for LCD-grensesnitt. Da må vi nevne hvilke pinner FPS og LCD er koblet til. Hvis du hadde fulgt kretsskjemaet som sådan, er det 4 og 5 for FPS og D6 til D11 for LCD. Koden for det samme er vist nedenfor
#include "FPS_GT511C3.h" // Få bibliotek fra https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Programvareseriebibliotek #include
Inne i oppsettfunksjonen viser vi noen innledende meldinger på LCD-skjermen og initialiserer deretter FPS-modulen. Kommandoen fps.SetLED (true) vil slå på den blå lysdioden på sensoren, du kan slå den av med fps. SetLED (false) når det ikke er nødvendig, da det vil varme opp sensoren hvis den blir slått på kontinuerlig. Vi har også laget pinnen D2 som inngangspinne og koblet den til intern opptrekksmotstand for å koble en trykknapp til pinnen.
ugyldig oppsett () { Serial.begin (9600); lcd.begin (16, 2); // Initialiser 16 * 2 LCD lcd.print ("GT511C3 FPS"); // Intro Meldingslinje 1 lcd.setCursor (0, 1); lcd.print ("med Arduino"); // Intro Message line 2 delay (2000); lcd.clear (); fps.Open (); // send seriell kommando for å initialisere fp fps.SetLED (true); // slå på LED slik at fps kan se fingeravtrykk pinMode (2, INPUT_PULLUP); // Koble til intern opptrekksmotstand som inngangsstift }
Inne i tomrumsløyfefunksjonen må vi sjekke om knappen trykkes inn. Hvis du trykker på den, registrerer vi en ny finger og lagrer malen med et ID-nummer ved å bruke påmeldingsfunksjonen. Hvis ikke, vil vi fortsette å vente på at en finger skal trykkes inn i sensoren. Hvis du trykker på det, vil vi identifisere fingeravtrykket ved å sammenligne det med alle registrerte fingeravtrykkmaler ved hjelp av 1: N-metoden. Når ID-nummeret er oppdaget, viser vi velkomst etterfulgt av ID-nummeret. Hvis fingeravtrykket ikke stemte overens med noen av de påmeldte fingrene, vil ID-tallet være 200, i så fall vil vi vise velkomst ukjent.
hvis (digitalRead (2)) // Hvis knappen trykkes på { Enroll (); // Registrer et fingeravtrykk } // Identifiser fingeravtrykkstest hvis (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Velkommen:"); hvis (id == 200) lcd.print ("Ukjent"); // Hvis ikke gjenkjent lcd.print (id); forsinkelse (1000); }
Den melde funksjon måtte ta tre prøve innganger til å melde en finger med hell. Når du er registrert, vil det opprettes en mal for den aktuelle fingeren som ikke blir slettet med mindre brukeren tvang det gjennom HEX-kommandoer. Koden for å registrere en finger er vist nedenfor. Metoden IsPressFinger brukes til å sjekke om en finger oppdages, hvis ja, blir bildet tatt med CaptureFinger og til slutt brukes Enroll1, Enroll2 og Enroll3 til tre forskjellige prøver for å lykkes med å registrere en finger. LCD-skjermen viser ID-nummeret til fingeren hvis den ble registrert, ellers vil den vise en feilmelding med kode. Kode 1 betyr at fingeravtrykket ikke ble fanget tydelig, og derfor må du prøve igjen. Kode 2 er en minnefeilindikasjon og kode 3 er å indikere at fingeren allerede er registrert.
void Enroll () // Enroll-funksjon fra biblioteket exmaple program { introllid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (rollid); if (usedid == true)rollid ++; } fps.EnrollStart (registrert); // registrer lcd.print ("Enroll #"); lcd.print (registrert); mens (fps.IsPressFinger () == false) forsinkelse (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Fjern finger"); fps.Enroll1 (); mens (fps.IsPressFinger () == true) forsinkelse (100); lcd.clear (); lcd.print ("Trykk igjen"); mens (fps.IsPressFinger () == false) forsinkelse (100); bret = fps.CaptureFinger (sant); if (bret! = false) { lcd.clear (); lcd.print ("Fjern finger"); fps.Enroll2 (); mens (fps.IsPressFinger () == true) forsinkelse (100); lcd.clear (); lcd.print ("Trykk enda en gang"); mens (fps.IsPressFinger () == false) forsinkelse (100); bret = fps.CaptureFinger (sant); if (bret! = false) { lcd.clear (); lcd.print ("Fjern finger"); iret = fps.Enroll3 (); hvis (iret == 0) { lcd.clear (); lcd.print ("Enrolling Success"); } annet { lcd.clear (); lcd.print ("Melding mislyktes:"); lcd.print (iret); } } annet lcd.print ("Mislyktes 1"); } annet lcd.print ("Mislyktes 2"); } annet lcd.print ("Mislyktes 3"); }
Arbeid med GT511C3 fingeravtrykkssensor med Arduino
Nå som maskinvaren og koden vår er klar, er det på tide å teste prosjektet vårt. Last opp koden til Arduino og slå den på, jeg bruker bare mikro-usb-porten for å drive prosjektet. Ved oppstart skal vi se intro-meldingen på LCD-skjermen, og deretter skal den vise "Hei!..". Dette betyr at FPS er klar til å skanne etter finger. Hvis du trykker på en registrert finger, vil det si "Velkommen" etterfulgt av ID-nummeret til fingeren som vist nedenfor.
Hvis en ny finger må registreres, kan vi bruke trykknappen for å komme i påmeldingsmodus og følge LCD-instruksjonene for å registrere en finger. Etter at registreringsprosessen er fullført, viser LCD-skjermen “Hei!..” igjen for å indikere at den blir lest for å identifisere fingrene igjen. Den komplette arbeids kan bli funnet på video link under.
Herfra kan du utvikle mange interessante ting på toppen av dette ved hjelp av sensormodulen Finger Print. Håper du forsto opplæringen og likte å bygge noe nyttig, hvis du har spørsmål, la dem være i kommentarseksjonen eller bruk forumene til andre tekniske spørsmål.