- Szükséges anyagok
- GT511C3 ujjlenyomat-érzékelő (FPS) modul
- A GT511C3 ujjlenyomat-érzékelő csatlakoztatása Arduinóval
- Arduino a GT511C3-mal
- Arduino programozása a GT511C3 ujjlenyomat-érzékelőhöz
- A GT511C3 ujjlenyomat-érzékelő működése az Arduinóval
A biometrikus adatokat hosszú ideje használják megbízható hitelesítési rendszerként. Ma már léteznek összetett biometrikus rendszerek, amelyek képesek azonosítani az embert a szívverési ritmusa vagy akár a DNS alapján. Egyéb megvalósítható módszerek a hangfelismerés, az arcfelismerés, az írisz-szkennelés és az ujjlenyomat-szkennelés. Amelyek közül az ujjlenyomat-felismerés a legelterjedtebb módszer, megtalálhatjuk az egyszerű jelenléti rendszertől az okostelefonokig, a biztonsági ellenőrzésekig és még sok minden másig.
Ebben az oktatóanyagban megtanuljuk, hogyan kell használni a népszerű GT511C3 ujjlenyomat-érzékelőt (FPS) az Arduino-val. Sok FPS rendelkezésre, és már megtanulta, hogyan kell használni őket, hogy építsenek tervez, mint a nyilvántartó rendszer, szavazógép, biztonsági rendszer, stb De a GT511C3 fejlettebb a nagy pontosság és gyorsabb válaszidőt, így megtanulják , hogyan kell használni az Arduinóval az ujjlenyomatok regisztrálásához, majd szükség esetén az ujjlenyomatok felismeréséhez. Tehát kezdjük.
Szükséges anyagok
- Arduino Nano / UNO
- GT511C3 ujjlenyomat-érzékelő
- 16x2 LCD képernyő
- Pot - 10k és 1k, 10k, 22k ellenállások
- Nyomógomb
- Vezetékek csatlakoztatása
- Kenyérlap
GT511C3 ujjlenyomat-érzékelő (FPS) modul
Mielőtt belemerülne a projektbe, ismerje meg a GT511C3 ujjlenyomat-érzékelő modulját és működését. Ez az érzékelő nagyon különbözik az okostelefonjainkban általánosan használt kapacitív és ultrahangos ujjlenyomat-érzékelőtől. A GT511C3 egy optikai ujjlenyomat-érzékelő, vagyis az ujjlenyomat képeire támaszkodik annak mintázatának felismerésére. Igen, jól olvasta, az érzékelőnek tulajdonképpen van egy kamerája, amely képeket készít az ujjlenyomatáról, majd ezeket a képeket a beépített ARM Cortex M3 IC segítségével dolgozza fel. Az alábbi képen az érzékelő elülső és hátsó oldala látható kivezetéssel.
Amint láthatja, az érzékelőnek van egy kamerája (fekete foltja), amelyet kék LED-ek vesznek körül, ezeket a LED-eket fel kell világítani, hogy tiszta képet kapjanak az ujjlenyomatról. Ezeket a képeket ezután az ARM mikrokontroller és az EEPROM segítségével párosítva bináris értékre konvertáljuk. A modulnak zöld színű SMD LED-je is van az áram jelzésére. Minden ujjlenyomat kép 202x258 pixel, 450dpi felbontással. Az érzékelő legfeljebb 200 ujjlenyomatot képes bejegyezni, és minden egyes ujjlenyomat-sablonhoz 0 és 199 közötti azonosító űrlapot rendel. Ezután az észlelés során automatikusan összehasonlíthatja a beolvasott ujjlenyomatot mind a 200 sablonnal, és ha talál egyezést, megadja az adott ujjlenyomat azonosító számát a Smack Finger 3.0 segítségévelAlgoritmus az ARM mikrokontrolleren. Az érzékelő 3,3 V-tól 6 V-ig működhet, és soros kommunikációval kommunikál 9600-nál. A kommunikációs csapok (Rx és Tx) állítólag csak 3,3 V-os toleránsak, azonban az adatlap nem tartalmaz sokat erről. Az alábbiakban látható a GT511C3 FPS kitűzése.
A soros kommunikáción kívül a modul közvetlenül csatlakoztatható a számítógéphez USB-kapcsolaton keresztül az előző képen látható csapok segítségével. Miután csatlakozott a számítógéphez, a modul vezérelhető az SDK_DEMO.exe alkalmazás segítségével, amely letölthető a linkről. Ez az alkalmazás lehetővé teszi a felhasználó számára az ujjlenyomatok bejegyzését / ellenőrzését / törlését, valamint az ujjlenyomatok felismerését. A szoftver segíthet az érzékelő által készített kép elolvasásában is, amelyet érdemes kipróbálni. Alternatív megoldásként akkor is használhatja ezt a szoftvert, ha az érzékelő Arduino-val van összekapcsolva, erről a cikk későbbi részében fogunk megbeszélni.
Az érzékelő másik érdekes tulajdonsága az érzékelő régió körüli fém burkolat. Amint azt korábban elmondtam , az érzékelő működéséhez a kék LED-et be kell kapcsolni. De azokban az alkalmazásokban, ahol az érzékelőnek aktívan várnia kell az ujjlenyomatra, a LED-et nem lehet mindig bekapcsolt állapotban tartani, mivel ez felmelegíti az érzékelőt és így károsítja azt. Ezért ezekben az esetekben a fém burkolat beköthető az MCU kapacitív érintőképernyő bemeneti tűjébe annak érzékelésére, hogy megérintették-e. Ha igen, a LED bekapcsolható és elindítható az érzékelési folyamat. Ezt a módszert itt nem mutatjuk be, mivel kívül esik a cikk hatályán.
3,3 V feszültség mellett az érzékelő körülbelül 130 mA-t fogyaszt. Közel 3 másodperc szükséges az ujj beírásához, és 1 másodperc az azonosításához. Ha azonban a beírt sablonszám kevesebb, akkor a felismerési sebesség nagy lesz. Az érzékelőről további részletekért tekintse meg ezt az ADH-Tech adatlapot, amely a modul hivatalos gyártója.
A GT511C3 ujjlenyomat-érzékelő csatlakoztatása Arduinóval
A GT511C3 FPS két tápcsatlakozóval rendelkezik, amelyeket + 5 V-os Arduino tűvel lehet táplálni, valamint két Rx és Tx kommunikációs tűt, amelyek bármely Arduino digitális tűhöz csatlakoztathatók soros kommunikációhoz. Ezenkívül egy nyomógombot és egy LCD-t is felvettünk az érzékelő állapotának megjelenítésére. A GT511C3 FPS és az Arduino összekapcsolásának teljes kapcsolási rajza alább található.
Mivel az Rx és a Tx csapok 3,3 V toleránsak, az Rx oldalon egy potenciálosztót használtunk az 5 V 3,3 V átalakítására. A 10k-os és a 22k-os ellenállás az Arduino Tx csap 5 V-ját 3,3 V-ra alakítja, mielőtt eléri az FPS Rx-tűjét. Az érzékelőt 3,3 V feszültséggel is táplálhatja, de ügyeljen arra, hogy Arduino elegendő áramot tudjon biztosítani az érzékelő számára. Csatlakoztattuk az LCD-t 4-bites módba, amelyet 5 V-os tűs Arduino táplált. Egy nyomógomb van csatlakoztatva a D2 csaphoz, amely megnyomásakor a program belépési módba kerül, ahol a felhasználó új ujját regisztrálhatja. A program regisztrálása után szkennelési módban marad, hogy az ujját megérintse-e az érzékelőhöz.
Arduino a GT511C3-mal
Mint korábban említettük, a GT511C3 FPS soros kommunikáción keresztül kommunikál, az érzékelő megérti a hex kódot, és minden hex kódhoz egy adott műveletet hajtanak végre. Ha érdekli, ellenőrizheti az adatlapot, hogy ismerje az összes hexa értéket és a hozzá tartozó függvényt. De, számunkra szerencsés, a bboyho már létrehozott egy könyvtárat, amelyet közvetlenül az Arduinóval lehet használni az ujjlenyomatok regisztrálásához és felismeréséhez. A GT511C3 FPS-hez tartozó Github könyvtár letölthető az alábbi linkről
GT511C3 Arduino könyvtár
A link letölt egy ZIP fájlt, majd hozzá kell adnia az Arduino IDE-hez a Sketch -> Könyvtár belefoglalása -> .ZIP könyvtár hozzáadása paranccsal. Miután hozzáadta a könyvtárat, indítsa újra az IDE-t, és meg kell találnia a GT511C3 FSP e xample programjait a Fájl -> Példa -> Ujjlenyomat-olvasó TTL alatt, az alábbiak szerint
Négy példaprogramot kell látnia, a villogás program villogni kezd az FPS kék LED-jén, a beiratkozási és az azonosító ujj program segítségével regisztrálható és azonosítható az ujjak. Ne feledje, hogy a regisztrált ujjakra a modul mindig emlékezni fog, még akkor is, ha kikapcsolt állapotban vannak.
A Soros áthaladás program feltölthető az Arduino-ba a cikkben korábban tárgyalt Demo_SDK.exe alkalmazás használatához. Bármely ujjlenyomat-sablon törléséhez vagy egy másolat mentéséhez a számítógépére ez az SDK-alkalmazás használható.
Arduino programozása a GT511C3 ujjlenyomat-érzékelőhöz
Célunk egy olyan program megírása, amely egy gomb megnyomásakor regisztrálja az ujját, és megjeleníti a már bejegyzett ujj azonosító számát. Ezenkívül képesnek kell lennünk minden információ megjelenítésére az LCD-n, hogy a projekt önálló legyen. A teljes kód, hogy ugyanezt az adja meg a lap alján. Itt ugyanezt apró részletekre bontom, hogy jobban megértsem.
Mint mindig, a szükséges könyvtárak beillesztésével kezdjük a programot, itt szükségünk lesz az FPS modulunk FPS_GT511C3 könyvtárára, a Software serialra, hogy a soros kommunikációra a D4 és D5, az LCD interfészhez pedig a folyadékkristályra használja. Ezután meg kell említenünk, hogy az FPS és az LCD melyik érintkezőkhöz van csatlakoztatva. Ha a kapcsolási rajzot követte, akkor az FPS esetén 4 és 5, az LCD esetén a D6 és D11 között van. Ugyanennek a kódja az alábbiakban látható
#include "FPS_GT511C3.h" // Könyvtár letöltése a https://github.com/sparkfun/Fingerprint_Scanner-TTL oldalról #include "SoftwareSerial.h" // Szoftver soros könyvtár #include
A beállítási funkción belül megjelenítünk néhány bevezető üzenetet az LCD-n, majd inicializáljuk az FPS modult. Az fps.SetLED (true) parancs bekapcsolja az érzékelő kék LED-jét, és fps-szel kikapcsolhatja. SetLED (hamis), ha nem szükséges, mivel felmelegítené az érzékelőt, ha folyamatosan be van kapcsolva. Azt is elkészítettük a D2 csapot, mint bemeneti csapot, és csatlakoztattuk a belső felhúzó ellenálláshoz, hogy egy nyomógombot csatlakoztassunk a csaphoz.
void setup () { Soros.kezdés (9600); lcdbegin (16, 2); // 16 * 2 LCD lcd.print inicializálása ("GT511C3 FPS"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("Arduinóval"); // Intro Message line delay (2000); lcd.clear (); fps.Open (); // soros parancs küldése az fp fps inicializálásához. SetLED (true); // kapcsolja be a LED-et, hogy az fps láthassa az ujjlenyomat pinMode (2, INPUT_PULLUP); // Csatlakozás belső húzza fel ellenállást a bemeneti pin }
A void loop funkción belül ellenőriznünk kell, hogy megnyomták-e a gombot. Ha megnyomjuk, új ujjat regisztrálunk, és sablonját azonosító számmal mentjük az enroll funkció segítségével. Ha nem, akkor továbbra is várni fogjuk, amíg egy ujj benyomódik az érzékelőbe. Ha megnyomja, azonosítani fogjuk az ujjlenyomatot, összehasonlítva az összes bejegyzett ujjlenyomat-sablonnal az 1: N módszerrel. Miután felfedezték az azonosító számot, megjelenik az üdvözlő üzenet, majd az azonosító szám. Ha az ujjlenyomat nem egyezik a regisztrált ujjak egyikével, az azonosító száma 200 lesz, ebben az esetben az ismeretlen üdvözlőt jelenítjük meg.
if (digitalRead (2)) // Ha megnyomja a gombot { Feliratkozás (); // ujjlenyomat regisztrálása } // Az ujjlenyomat-teszt azonosítása, ha (fps.IsPressFinger ()) { fps.CaptureFinger (hamis); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Welcome:"); if (id == 200) lcd.print ("Ismeretlen"); // Ha nem ismeri fel az lcd.print (id); késés (1000); }
A beiratkozási funkciónak három minta bemenetet kell tennie, hogy sikeresen bejegyezhesse az egyik ujját. A regisztráció után létrejön az adott ujj sablonja, amelyet csak akkor törölnek, ha a felhasználó a HEX parancsokkal kényszeríti. Az ujj beírásához szükséges kód az alábbiakban látható. Az IsPressFinger módszerrel ellenőrizhető, hogy nem észlelt-e ujjat, ha igen, akkor a képet a CaptureFinger segítségével rögzítették majd végül az Enroll1, Enroll2 és Enroll3 három különböző mintához használható az egyik ujj sikeres regisztrálásához. Az LCD megjeleníti az ujj azonosító számát, ha sikeresen regisztrálta, különben hibaüzenetet jelenít meg kóddal. Az 1. kód azt jelenti, hogy az ujjlenyomatot nem sikerült egyértelműen rögzíteni, ezért újra kell próbálkoznia. A 2. kód memóriahiba jelzés, a 3. kód pedig azt jelzi, hogy az ujját már beírták.
void Enroll () // függvény beírása a könyvtár exmaple programjából { int enrollid = 0; bool usedid = igaz; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // enroll lcd.print ("Regisztráció #"); lcd.print (enrollid); while (fps.IsPressFinger () == hamis) késleltetés (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = hamis) { lcd.clear (); lcd.print ("ujj eltávolítása"); fps.Enroll1 (); while (fps.IsPressFinger () == true) késleltetés (100); lcd.clear (); lcd.print ("Nyomja meg újra"); while (fps.IsPressFinger () == hamis) késleltetés (100); bret = fps.CaptureFinger (true); if (bret! = hamis) { lcd.clear (); lcd.print ("ujj eltávolítása"); fps.Enroll2 (); while (fps.IsPressFinger () == true) késleltetés (100); lcd.clear (); lcd.print ("Nyomja meg még egyszer"); while (fps.IsPressFinger () == hamis) késleltetés (100); bret = fps.CaptureFinger (true); if (bret! = hamis) { lcd.clear (); lcd.print ("ujj eltávolítása"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Sikeres beiratkozás"); } else { lcd.clear (); lcd.print ("Sikertelen regisztráció:"); lcd.print (iret); } } else lcd.print ("Sikertelen 1"); } else lcd.print ("Nem sikerült 2"); } else lcd.print ("Sikertelen 3"); }
A GT511C3 ujjlenyomat-érzékelő működése az Arduinóval
Most, hogy a hardver és a kód készen áll, itt az ideje tesztelni a projektünket. Töltsd fel a kódot az Arduino-ra, és kapcsold be, én csak a mikro-usb portot használom a projekt működéséhez. Indításkor látnunk kell az intro üzenetet az LCD-n, majd a „Hi!..” feliratot kell megjeleníteni. Ez azt jelenti, hogy az FPS készen áll az ujj beolvasására, ha bármelyik bejegyzett ujját megnyomják, az azt írja, hogy „Welcome”, majd az ujj azonosító száma az alábbiak szerint.
Ha új ujjat kell beírni, akkor a nyomógombbal léphetünk beiratkozási módba, és követhetjük az LCD utasításait az ujj beírásához. A beiratkozás befejezése után az LCD-n ismét a „Hi!..” felirat jelenik meg, jelezve, hogy a beolvasás az ujjak azonosítására szolgál. A teljes munka megtalálható az alábbi linkre kattintva.
Innen számos érdekes dolgot fejleszthet ezen felül az ujjlenyomat-érzékelő modul segítségével. Remélem, megértette az oktatóanyagot, és élvezettel készített valami hasznosat, ha bármilyen kérdése van, hagyja őket a megjegyzés részben, vagy használja a fórumot egyéb technikai kérdésekhez.