- Tarvittavat materiaalit
- GT511C3 sormenjälkitunnistin (FPS) -moduuli
- GT511C3-sormenjälkitunnistimen liittäminen Arduinoon
- Arduino ja GT511C3
- Arduinon ohjelmointi GT511C3-sormenjälkitunnistimelle
- GT511C3-sormenjälkitunnistimen toiminta Arduinon kanssa
Biometriikkaa on käytetty luotettavana todennusjärjestelmänä jo pitkään. Nykyään on olemassa monimutkaisia biometrisiä järjestelmiä, jotka tunnistavat henkilön sydämen rytminsä tai jopa hänen DNA: nsa perusteella. Muita toteutettavissa olevia menetelmiä ovat äänentunnistus, kasvojentunnistus, iiris-skannaus ja sormenjälkiskannaus. Joista sormenjälkitunnistus on yleisimmin käytetty menetelmä, voimme löytää sen yksinkertaisesta läsnäolojärjestelmästä älypuhelimiin turvatarkastuksiin ja paljon muuta.
Tässä opetusohjelmassa opimme käyttämään suosittua GT511C3-sormenjälkitunnistinta (FPS) Arduinon kanssa. Saatavilla on monia FPS-järjestelmiä, ja olemme jo oppineet käyttämään niitä rakentaaksemme malleja, kuten osallistumisjärjestelmä, äänestyskone, turvajärjestelmä jne. Mutta GT511C3 on edistyneempi suurella tarkkuudella ja nopeammalla vasteajalla, joten opimme käyttämään sitä rekisteröidä sormenjäljet Arduinon kanssa ja tunnista sormenjäljet tarvittaessa. Joten aloitetaan.
Tarvittavat materiaalit
- Arduino Nano / UNO
- GT511C3 sormenjälkitunnistin
- 16x2 LCD-näyttö
- Potti - 10k ja 1k, 10k, 22k vastukset
- Paina nappia
- Johtojen liittäminen
- Leipälauta
GT511C3 sormenjälkitunnistin (FPS) -moduuli
Ennen kuin sukeltaa projektiin, anna meidän ymmärtää GT511C3-sormenjälkitunnistinmoduuli ja miten se toimii. Tämä anturi on hyvin erilainen kapasitiivisesta ja ultraäänisormen tunnistimesta, joita yleisesti käytetään älypuhelimissamme. GT511C3 on optinen Sormenjälkitunnistin, eli se perustuu kuvia sormenjäljen tunnistaa sen mallia. Kyllä, luit oikein, anturin sisällä on itse asiassa kamera, joka ottaa kuvia sormenjäljestäsi ja käsittelee nämä kuvat sitten tehokkaalla sisäänrakennetulla ARM Cortex M3 IC: llä. Alla olevassa kuvassa näkyy anturin etu- ja takapuoli, jossa on pinouts.
Kuten näet, anturissa on kamera (musta täplä), jota ympäröivät siniset LED-valot, nämä LED-valot on sytytettävä ottamaan selkeä kuva sormenjäljestä. Nämä kuvat käsitellään ja muunnetaan binaariarvoksi käyttämällä ARM-mikrokontrolleria yhdistettynä EEPROM: iin. Moduulissa on myös vihreä SMD-LED virran osoittamiseksi. Jokainen sormenjälkikuva on 202x258 pikseliä ja resoluutio 450 dpi. Anturi voi ilmoittautua enintään 200 sormenjälkien ja kukin sormi print Pohja se antaa tunnuksen muodossa 0-199. Sitten havaitsemisen aikana se voi verrata skannattua sormenjälkeä automaattisesti kaikkiin 200 malliin ja jos vastaavuus löydetään, se antaa kyseisen sormenjäljen ID-numeron Smack Finger 3.0: llaARM-mikrokontrollerin algoritmi. Anturi voi toimia välillä 3,3 V - 6 V ja kommunikoida sarjaliikenteen kautta nopeudella 9600. Tiedonsiirtonastojen (Rx ja Tx) sanotaan olevan vain 3,3 V: n suvaitsevaisia, mutta tuotetiedot eivät tarkoita siitä paljon. GT511C3 FPS: n kiinnitys on esitetty alla.
Sarjaliikenteen lisäksi moduuli voidaan myös liittää suoraan tietokoneeseen USB-liitännän kautta käyttämällä edellisessä kuvassa esitettyjä nastoja. Kun tietokone on yhdistetty, moduulia voidaan ohjata SDK_DEMO.exe-sovelluksella, joka voidaan ladata linkistä. Tämän sovelluksen avulla käyttäjä voi rekisteröidä / tarkistaa / poistaa sormenjälkiä ja tunnistaa myös sormenjäljet. Ohjelmisto voi myös auttaa sinua lukemaan anturin ottaman kuvan, jota kannattaa kokeilla. Vaihtoehtoisesti voit käyttää tätä ohjelmistoa myös silloin, kun anturi on kytketty Arduinoon, keskustelemme tästä myöhemmin tässä artikkelissa.
Toinen mielenkiintoinen ominaisuus anturissa on metallikotelo anturin ympärillä. Kuten kerroin aiemmin, sininen LED on kytkettävä päälle, jotta anturi toimisi. Mutta sovelluksissa, joissa anturin tulisi odottaa aktiivisesti sormenjälkeä, ei ole mahdollista pitää LED-valoa aina päällä, koska se lämmittää anturia ja vahingoittaa sitä. Siksi näissä tapauksissa metallikotelo voidaan kytkeä MCU: n kapasitiiviseen kosketustuloon sen havaitsemiseksi, kosketetaanko sitä. Jos kyllä, LED voidaan kytkeä päälle ja tunnistusprosessi voidaan aloittaa. Tätä menetelmää ei esitetä tässä, koska se on tämän artikkelin ulkopuolella.
Kun se toimii 3,3 V: n jännitteellä, anturi kuluttaa noin 130 mA. Se vie lähes 3 sekuntia sormen rekisteröimiseksi ja 1 sekunti sen tunnistamiseksi. Kuitenkin, jos ilmoittautuneiden mallien määrä on pienempi, tunnistusnopeus on suuri. Lisätietoja anturista saat tästä ADH-Techin moduulin virallisesta valmistajasta.
GT511C3-sormenjälkitunnistimen liittäminen Arduinoon
GT511C3 FPS: ssä on kaksi virtapistoketta, jotka voidaan syöttää + 5 V: n Arduino-nastalla ja kaksi Rx- ja Tx-tiedonsiirtotappia, jotka voidaan liittää mihin tahansa Arduinon digitaaliseen nastaan sarjaliikennettä varten. Lisäksi olemme lisänneet painikkeen ja nestekidenäytön anturin tilan näyttämiseksi. Täydellinen kytkentäkaavio GT511C3 FPS: n ja Arduinon rajapinnasta löytyy alla.
Koska Rx- ja Tx-nastat ovat 3,3 V toleranssia, olemme käyttäneet Rx-puolella olevaa potentiaalijakajaa 5 V: n muuntamiseen 3,3 V: ksi. 10k vastus ja 22k vastus muuntaa Arduino Tx -tapin 5 V: n signaalin 3,3 V: ksi ennen kuin se saavuttaa FPS: n Rx-nastan. Anturin virtalähde voi olla myös 3,3 V, mutta varmista, että Arduino voi hankkia riittävästi virtaa anturille. Olemme yhdistäneet LCD-näytön 4-bittisessä tilassa, jonka virtalähteenä on 5 V nasta Arduinoa. Napaan D2 on kytketty painike, joka painettuna asettaa ohjelman rekisteröintitilaan, jossa käyttäjä voi rekisteröidä uuden sormen. Rekisteröitymisen jälkeen ohjelma pysyy skannaustilassa etsimään anturia koskettavia sormia.
Arduino ja GT511C3
Kuten aiemmin mainittiin, GT511C3 FPS kommunikoi sarjaliikenteen kautta, anturi ymmärtää heksakoodin ja jokaiselle heksakoodille suoritetaan tietty toimenpide. Voit tarkistaa tietolomakkeen, jos haluat tietää kaikki hex-arvot ja niitä vastaavat toiminnot, jos olet kiinnostunut. Mutta onnekas meille, bboyho on jo luonut kirjaston, jota voidaan käyttää suoraan Arduinon kanssa rekisteröidäkseen ja tunnistamaan sormenjäljet. GT511C3 FPS: n Github-kirjasto voidaan ladata alla olevasta linkistä
GT511C3 Arduino -kirjasto
Linkki lataa ZIP-tiedoston, sinun on sitten lisättävä se Arduino IDE -ohjelmaasi seuraamalla komentoa Sketch -> Include Library -> Add.ZIP Library. Kun olet lisännyt kirjaston, käynnistä IDE uudelleen ja sinun pitäisi löytää GT511C3 FSP: n e- esimerkkiohjelmat kohdasta Tiedosto -> Esimerkki -> Sormenjälkitunnistin TTL alla olevan kuvan mukaisesti.
Sinun pitäisi nähdä neljä esimerkkiohjelmaa, vilkkuva ohjelma vilkkuu FPS: n sinistä lediä, rekisteröinti- ja tunnussormiohjelmalla voidaan rekisteröidä ja tunnistaa sormet vastaavasti. Huomaa, että moduuli muistaa aina rekisteröidyn sormen, vaikka se olisi sammutettu.
Serial Pass-through -ohjelma voidaan ladata Arduinoon Demo_SDK.exe- sovelluksen käyttämiseksi, josta keskustelimme aiemmin tässä artikkelissa. Tätä SDK-sovellusta voidaan käyttää minkä tahansa sormenjälkimallin poistamiseen tai kopion tallentamiseen tietokoneellesi.
Arduinon ohjelmointi GT511C3-sormenjälkitunnistimelle
Tavoitteenamme on kirjoittaa ohjelma, joka rekisteröi sormen, kun painiketta painetaan, ja näyttää jo rekisteröidyn sormen ID-numeron. Meidän pitäisi myös pystyä näyttämään kaikki tiedot nestekidenäytöllä, jotta projekti voi olla erillinen. Koko koodi tekemään samoin on antaa alareunassa tämän sivun. Täällä jaan saman pieniksi katkelmiksi auttaakseni sinua ymmärtämään paremmin.
Kuten aina, aloitamme ohjelman sisällyttämällä vaaditut kirjastot, tarvitsemme tässä FPS-moduulillemme FPS_GT511C3-kirjaston, ohjelmistosarjan käyttämään D4 ja D5 sarjaliikenteessä ja nestekidenäytön LCD-liitännöissä. Sitten meidän on mainittava, mihin nastoihin FPS ja LCD on kytketty. Jos olisit noudattanut piirikaaviota sellaisenaan, se on 4 ja 5 FPS: lle ja D6 - D11 LCD: lle. Saman koodi näkyy alla
#include "FPS_GT511C3.h" // Hae kirjasto osoitteesta https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Ohjelmiston sarjakirjasto #include
Asetustoiminnon sisällä näytämme nestekidenäytössä joitain johdantoviestejä ja alustamme sitten FPS-moduulin. Komento fps.SetLED (true) sytyttää sensorin sinisen LEDin, voit sammuttaa sen fps.SetLED (false) -toiminnolla, kun sitä ei tarvita, koska se lämmittää anturia, jos se jätetään jatkuvasti päälle. Olemme myös tehneet tapin D2 tulotapiksi ja liittäneet sen sisäiseen vetovastukseen kytkemään painonapin tapiin.
void setup () { Sarja.alku (9600); lcd.begin (16, 2); // Alusta 16 * 2 LCD- lcd.print ("GT511C3 FPS"); // Johdeviestirivi 1 lcd.setCursor (0, 1); lcd.print ("Arduinon kanssa"); // Intro Message line 2 delay (2000); lcd.clear (); fps.Avaa (); // lähetä sarjakomento fp fps: n alustamiseksi.SetLED (true); // kytke LED päälle, jotta fps näkee sormenjäljen pinMode (2, INPUT_PULLUP); // Yhdistä sisäiseen vetovastukseen tulotapina }
Void loop -toiminnon sisällä on tarkistettava, painetaanko painiketta, jos painetaan, rekisteröidään uusi sormi ja tallennetaan sen malli ID-numerolla käyttämällä rekisteröintitoimintoa. Jos ei, odotamme sormen painamista anturiin. Jos painetaan, tunnistamme sormenjäljen vertaamalla sitä kaikkiin ilmoitettuihin sormenjälkimalliin 1: N-menetelmällä. Kun tunnistenumero on löydetty, näytöllä näkyy Tervetuloa ja sen jälkeen tunnusnumero. Jos sormenjälki ei täsmää minkään rekisteröidyn sormen kanssa, tunnistenumero on 200, siinä tapauksessa näytämme tervetullut tuntematon.
if (digitalRead (2)) // Jos painiketta painetaan { Rekisteröi (); // rekisteröi sormenjälki } // Tunnista sormenjälkitesti, jos (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Tervetuloa:"); if (id == 200) lcd.print ("tuntematon"); // Jos ei tunnisteta lcd.print (id); viive (1000); }
Ilmoittautua toiminto olisi otettava kolme näytettä tuloa rekisteröidä yksi sormi onnistuneesti. Kun olet rekisteröinyt mallin kyseiselle sormelle, luodaan sitä, jota ei poisteta, ellei käyttäjä pakota sitä HEX-komentojen avulla. Koodi sormen rekisteröimiseksi näkyy alla. Menetelmällä IsPressFinger tarkistetaan, onko sormi havaittu, jos kyllä, kuva otetaan CaptureFingerillä ja sitten lopuksi Enroll1, Enroll2 ja Enroll3 käytetään kolmessa eri näytteessä yhden sormen rekisteröimiseksi. Nestekidenäytössä näkyy sormen tunnusnumero, jos rekisteröinti onnistuu, muuten se näyttää vikailmoituksen koodilla. Koodi 1 tarkoittaa, että sormenjälkeä ei siepattu selkeästi, joten sinun on yritettävä uudelleen. Koodi 2 on muistivirheilmoitus ja koodi 3 osoittaa, että sormi on jo rekisteröity.
void Enroll () // Ilmoitustoiminto kirjaston exmaple-ohjelmasta { int enrollid = 0; bool usedid = tosi; while (usedid == true) { usedid = fps.CheckEnrolled (enrollid); if (usedid == true) enrollid ++; } fps.EnrollStart (enrollid); // rekisteröi lcd.print ("Rekisteröi #"); lcd.print (ilmoittautunut); while (fps.IsPressFinger () == false) viive (100); bool bret = fps.CaptureFinger (tosi); int iret = 0; jos (bret! = false) { lcd.clear (); lcd.print ("Poista sormi"); fps.rekisteröi1 (); taas (fps.IsPressFinger () == true) viive (100); lcd.clear (); lcd.print ("Paina uudelleen"); while (fps.IsPressFinger () == false) viive (100); bret = fps.CaptureFinger (true); jos (bret! = false) { lcd.clear (); lcd.print ("Poista sormi"); fps.rekisteröi2 (); taas (fps.IsPressFinger () == true) viive (100); lcd.clear (); lcd.print ("Paina vielä kerran"); while (fps.IsPressFinger () == false) viive (100); bret = fps.CaptureFinger (true); jos (bret! = false) { lcd.clear (); lcd.print ("Poista sormi"); iret = fps. rekisteröidy3 (); jos (iret == 0) { lcd.clear (); lcd.print ("Rekisteröitymismenestys"); } else { lcd.clear (); lcd.print ("Rekisteröinti epäonnistui:"); lcd.print (iret); } } else lcd.print ("epäonnistui 1"); } else lcd.print ("epäonnistui 2"); } else lcd.print ("epäonnistui 3"); }
GT511C3-sormenjälkitunnistimen toiminta Arduinon kanssa
Nyt kun laitteistomme ja koodimme on valmis, on aika testata projektiamme. Lataa koodi Arduinoon ja käynnistä se, käytän vain mikro-USB-porttia projektin virran saamiseksi. Käynnistyksen yhteydessä meidän pitäisi nähdä intro-viesti nestekidenäytöltä ja sen pitäisi näyttää "Hi!..". Tämä tarkoittaa, että FPS on valmis etsimään sormea. Jos mitä tahansa rekisteröidylle sormelle painetaan, se sanoisi "Tervetuloa" ja sen jälkeen kyseisen sormen tunnistenumeron alla olevan kuvan mukaisesti.
Jos uusi sormi on rekisteröitävä, voimme siirtyä rekisteröintitilaan painikkeella ja rekisteröidä sormi seuraamalla nestekidenäytön ohjeita. Kun ilmoittautuminen on suoritettu, nestekidenäytössä näkyy uudelleen ”Hi!..”, mikä osoittaa, että se on luettu tunnistamaan sormet uudelleen. Täydellinen työ löytyy videon alla olevan linkin.
Täältä voit kehittää monia mielenkiintoisia juttuja sormenjälkitunnistimen avulla. Toivottavasti ymmärrät opetusohjelman ja nautit jonkin hyödyllisen rakentamisesta, jos sinulla on kysyttävää, jätä ne kommenttiosioon tai käytä foorumeita muihin teknisiin kysymyksiin.