- Vaaditut komponentit
- Hankkeen kuvaus:
- FingerPrint-moduuli:
- Sormenjälkipohjaisen läsnäolojärjestelmän toiminta
- Piirikaavio ja kuvaus sormenjälkien läsnäolojärjestelmäprojektille
- Koodin selitys:
Läsnäolojärjestelmät ovat yleisesti käytettyjä järjestelmiä toimiston ja koulun läsnäolon merkitsemiseksi. Nämä järjestelmät ovat parantuneet merkittävästi läsnäololistojen läsnäolon manuaalisesta merkitsemisestä korkean teknologian sovellusten ja biometristen järjestelmien käyttöön. Aikaisemmissa projekteissamme olemme käsittäneet muutamia muita sähköisiä läsnäolojärjestelmähankkeita, joissa käytetään RFID- ja AVR-mikrokontrolleria, 8051 ja vadelma Pi: tä. Tässä projektissa käytimme sormenjälkimoduulia ja Arduinoa ottamaan ja pitämään läsnäolotiedot ja -rekisterit. Käyttämällä sormenjälkitunnistinta järjestelmä tulee turvallisemmaksi käyttäjille. Seuraavissa osioissa selitetään tekniset yksityiskohdat sormenjälkipohjaisen biometrisen läsnäolojärjestelmän valmistamiseksi Arduinoa käyttämällä.
Vaaditut komponentit
- Arduino -1
- Sormenjälkimoduuli -1
- Painike - 4
- LEDit -1
- 1K vastus -2
- 2.2K vastus -1
- Teho
- Johtojen liittäminen
- Laatikko
- Summeri -1
- 16x2 LCD -1
- Leipälauta -1
- RTC-moduuli -1
Hankkeen kuvaus:
Tässä sormenjälkitunnistinjärjestelmässä käytimme sormenjälkitunnistinmoduuliatodentaa todellinen henkilö tai työntekijä ottamalla sormen syötteen järjestelmään. Tässä käytämme 4 painonappia rekisteröidäksesi, Poista, YLÖS / ALAS. ENROLL- ja DEL-näppäimillä on kolme ominaisuutta. ENROLL-näppäintä käytetään uuden henkilön rekisteröintiin järjestelmään. Joten kun käyttäjä haluaa rekisteröidä uuden sormen, hänen on painettava ENROLL-näppäintä ja sitten LCD kysyy tunnusta, johon käyttäjä haluaa tallentaa sormenjälkikuvan. Jos nyt käyttäjä ei halua edetä pidemmälle, hän voi palata takaisin painamalla ENROLL-näppäintä uudelleen. Tällä kertaa ENROLL-näppäin käyttäytyy Back-näppäimenä, eli ENROLL-näppäimellä on sekä rekisteröinti- että takaisin-toiminto. Ilmoittautumisavaimen lisäksi käytetään myös läsnäolotietojen lataamista sarjamonitorilla. Vastaavasti DEL / OK-näppäimellä on myös sama kaksoistoiminto kuin silloin, kun käyttäjä rekisteröi uuden sormen,sitten hänen on valittava sormen tunnus kahdella toisella näppäimellä eli YLÖS ja ALAS. Käyttäjän on nyt painettava DEL / OK-näppäintä (tällä kertaa tämä näppäin käyttäytyy kuten OK) jatkaakseen valitun tunnuksen käyttöä. Ja Del-avainta käytetään tietojen palauttamiseen tai poistamiseen Arduinon EEPROMista.
FingerPrint-moduuli:
Sormenjälkitunnistinmoduuli sieppaa sormenjälkikuvan ja muuntaa sen sitten vastaavaksi malliksi ja tallentaa ne muistiinsa Arduinon valitseman ID: n mukaisesti. Arduino komentaa kaiken prosessin, kuten kuvan ottamisen sormenjäljestä, muuntamisen malliksi ja tallennuksen tunnukseksi jne. Voit tarkistaa joitain projekteja sormenjälkimoduulilla:
Sormenjälkiin perustuva turvajärjestelmä
Sormenjälkipohjainen biometrinen äänestyskone
Tässä olemme lisänneet keltaisen LEDin, joka osoittaa, että sormenjälkimoduuli on valmis ottamaan kuvan sormesta. Summeriä käytetään myös erilaisiin tarkoituksiin. Arduino on järjestelmän pääkomponentti, ja se vastaa koko järjestelmän hallinnasta.
Sormenjälkipohjaisen läsnäolojärjestelmän toiminta
Tämän sormenjälkien läsnäolojärjestelmäprojektin työskentelyon melko yksinkertainen. Ensinnäkin käyttäjän on rekisteröitävä käyttäjän sormenjäljet painikkeilla. Tätä varten käyttäjän on painettava ENROLL-näppäintä ja sitten LCD pyytää syöttämään sormenjäljen tunnuksen, jotta se voidaan tallentaa muistiin ID-nimellä. Joten käyttäjän on nyt syötettävä tunnus YLÖS / ALAS-näppäimillä. Kun käyttäjä on valinnut tunnuksen, käyttäjän on painettava OK-näppäintä (DEL-näppäin). Nyt LCD pyytää asettamaan sormen sormenjälkimoduulin päälle. Nyt käyttäjän on asetettava sormensa sormenjälkimoduulin päälle ja moduuli ottaa sitten sormen kuvan. Nyt nestekidenäyttö kehottaa poistamaan sormen sormenjälkimoduulista ja pyytää jälleen asettamaan sormen uudelleen. Nyt käyttäjän on asetettava sormensa uudelleen ja moduuli ottaa kuvan, muuntaa sen malleiksi ja tallentaa sen valitulla tunnuksella sormenjälkimoduulin muistiin.Nyt käyttäjä rekisteröidään ja hän voi ruokkia läsnäoloa asettamalla sormen sormenjälkimoduulin päälle. Samalla menetelmällä kaikki käyttäjät rekisteröidään järjestelmään.
Jos käyttäjä haluaa poistaa tai poistaa minkä tahansa tallennetusta tunnuksesta tai sormenjäljestä, hänen on painettava DEL-näppäintä. Kun poistonäppäintä painetaan, nestekidenäyttö pyytää valitsemaan poistettavan tunnisteen. Nyt käyttäjän on valittava tunnus ja painettava OK-näppäintä (sama DEL-näppäin). Nyt LCD ilmoittaa, että sormenjälki on poistettu onnistuneesti.
Kuinka läsnäolo toimii tässä sormenjälkien läsnäolojärjestelmäprojektissa:
Aina kun käyttäjä asettaa sormensa sormenjälkimoduulin päälle, sormenjälkimoduuli sieppaa sormen kuvan ja etsi, jos järjestelmään liittyy sormenjälkeen mitään tunnusta. Jos sormenjälkitunnus havaitaan, nestekidenäytössä näkyy Läsnäolo rekisteröity ja samaan aikaan summeri piippaa kerran ja LED sammuu, kunnes järjestelmä on valmis ottamaan syötteen uudelleen.
Sormenjälkimoduulin ohella olemme käyttäneet myös RTC-moduulia Aikaa ja päivämäärää varten. Aika ja päivämäärä ovat jatkuvasti käynnissä järjestelmässä. Joten Arduino vie aikaa ja päivämäärää aina, kun todellinen käyttäjä laittaa sormensa sormenjäljen päälle ja tallentaa ne EEPROM-muistiin varattuun muistipaikkaan.
Täällä olemme luoneet tähän järjestelmään 5 käyttäjätilaa 30 päiväksi. Painamalla RESET-painiketta Arduinossa ja sitten heti rekisteröintinäppäin on vastuussa läsnäolotietojen lataamisesta sarjakuvauksen kautta Arduino EEPROM -muistista.
Muistin hallinta:
Meillä on Arduino UNO: ssa 1023 tavua muistia, josta meillä on 1018 tavua tietojen tallentamiseen, ja olemme ottaneet 5 käyttäjän läsnäolotietoa 30 päivän ajan. Ja jokainen läsnäolo tallentaa ajan ja päivämäärän, joten siitä tulee 7-tavuinen data.
Joten vaadittu kokonaismuisti on
5 * 30 * 7 = 1050, joten tässä tarvitaan enemmän 32 tavua
Mutta jos käytämme 4 käyttäjää, vaadimme
4 * 30 * 7 = 840
Tässä olemme tehneet tämän projektiesittelyn ottamalla 5 käyttäjän muistia. Tällä tavoin emme voi tallentaa viidennen käyttäjän 32 tavua tai 5 osallistumistietuetta.
Voit kokeilla sitä 4 käyttäjää muuttamalla joitain rivejä koodissa. Olen kommentoinut koodia, missä muutoksia tarvitaan.
Piirikaavio ja kuvaus sormenjälkien läsnäolojärjestelmäprojektille
Tämän sormenjälkipohjaisen läsnäolojärjestelmäprojektin piiri, kuten yllä olevassa kaaviossa on esitetty, on melko yksinkertainen. Siinä on Arduino projektin kaiken prosessin ohjaamiseksi, painike rekisteröintiä, poistamista, tunnusten valitsemista ja läsnäoloa varten, summeri hälytystä varten, LED-merkkivalot ja nestekidenäyttö ohjaamaan käyttäjää ja näyttämään tuloksena olevat viestit.
Kuten piirikaaviossa on esitetty, painike on kytketty suoraan Arduinon napoihin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) maahan nähden ja keltainen LED on kytketty digitaaliseen tapiin D7 Arduinon maadoituksesta 1k-vastuksen kautta. Sormenjälkimoduulin Rx ja Tx on kytketty suoraan Arduinon sarjaliittimiin D2 ja D3 (ohjelmistosarja). 5v-syöttöä käytetään Arduino-kortilta otetun sormenjälkimoduulin virransaantiin. Nasta A5 on kytketty myös summeri. 16x2-nestekidenäyttö on konfiguroitu 4-bittisessä tilassa ja sen RS, EN, D4, D5, D6 ja D7 on kytketty suoraan Arduinon digitaalisiin nastoihin D13, D12, D11, D10, D9 ja D8.
Koodin selitys:
Sormenjälki läsnäolo järjestelmän koodi Arduino annetaan seuraavissa osissa. Vaikka koodi selitetään hyvin kommenteilla, keskustelemme täällä muutamasta koodin tärkeästä osasta. Käytimme sormenjälkikirjastoa sormenjälkimoduulin liittämiseen Arduino-korttiin.
Ensinnäkin sisällytämme otsikkotiedoston ja määrittelemme syötteen ja lähdön pin ja määrittelemme makron ja ilmoitetut muuttujat. Tämän jälkeen asetustoiminnossa annamme suunnan määritetylle pinille ja aloitamme LCD- ja sormenjälkimoduulin
Sen jälkeen meidän on kirjoitettava koodi läsnäolotietojen lataamista varten.
void setup () {delay (1000); lcd-alku (16,2); Sarjan alku (9600); pinMode (rekisteröidy, INPUT_PULLUP); pinMode (ylös, INPUT_PULLUP); pinMode (alas, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (ottelu, INPUT_PULLUP); pinMode (summeri, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (summeri, LOW); if (digitalRead (rekisteröidy) == 0) {digitalWrite (summeri, HIGH); viive (500); digitalWrite (summeri, LOW); lcd.clear (); lcd.print ("Odota hetki"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Afterit, meidän on kirjoitettava koodi läsnäolotietojen tyhjentämiseksi EEPROM: lta.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Odota hetki"); lcd.setCursor (0,1); lcd.print ("Palautetaan….."); for (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Järjestelmän nollaus"); viive (1000); }
Sen jälkeen aloitamme sormenjälkimoduulin, joka näyttää tervetuloviestin LCD: n kautta ja myös aloitetun RTC-moduulin.
Sen jälkeen silmukkatoiminnossa olemme lukeneet RTC-ajan ja näyttäneet sen LCD-näytöllä
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Aika->"); lcd.print (nyt. tunti (), DEC); lcd.print (':'); lcd.print (nyt.minute (), DEC); lcd.print (':'); lcd.print (nyt toinen (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Päivämäärä->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (nyt kuukausi (), DEC); lcd.print ('/'); lcd.print (nyt vuosi (), DEC);
Sen jälkeen odotetaan, että sormenjälki ottaa syötteen ja vertaa kaapatun kuvan tunnusta tallennettuihin tunnuksiin. Jos kohtaus tapahtuu, jatka seuraavasta vaiheesta. Ja tarkista myös rekisteröinnin del-näppäimet
int tulos = getFingerprintIDez (); if (tulos> 0) {digitalWrite (indFinger, LOW); digitalWrite (summeri, HIGH); viive (100); digitalWrite (summeri, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (tulos); lcd.setCursor (0,1); lcd.print ("Odota hetki…"); viive (1000); läsnäolo (tulos); lcd.clear (); lcd.print ("läsnäolo"); lcd.setCursor (0,1); lcd.print ("rekisteröity"); viive (1000); digitalWrite (indFinger, HIGH); palata; }
Annettua void checkKeys () -toimintoa käytetään tarkistamaan, että rekisteröinti- tai DEL-näppäintä painetaan tai ei, ja mitä tehdä, jos sitä painetaan. Jos ENROLL-näppäintä painettiin, kutsutaan Enroll () -toiminto ja DEL-näppäimen painallus, sitten poistetaan () -toiminto.
void delet () -toimintoa käytetään poistettavan tunnuksen syöttämiseen ja uint8_t deleteFingerprint (uint8_t id) -toiminnon kutsumiseen, joka poistaa sormen tietueista.
Annettua toimintoa käytetään ottamaan sormenjälkikuva ja muuntamaan ne malliksi ja tallentamaan myös valitulla tunnuksella sormenjälkimoduulin muistiin.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("sormen tunnus:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Paikkasormi"); viive (2000); kun (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Annettua toimintoa käytetään läsnäoloajan ja päivämäärän tallentamiseen EEPROMin varattuun paikkaan
mitätön läsnäolo (int id) {int käyttäjä = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; käyttäjä = käyttäjä1 ++; } else if (id == 2) {eepLoc = 210; käyttäjä = käyttäjä2 ++; } muu jos (id == 3)………….
Annettua toimintoa käytetään tietojen hakemiseen EEPROMista ja lähettämiseen sarjavalvontaan
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Sarja.tulos ("T->"); jos (EEPROM.read (eepIndex) <10) Serial.print ('0'); Sarjaprintti (EEPROM.read (eepIndex ++)); Sarja.tulos (':'); jos (EEPROM.read (eepIndex) <10) Serial.print ('0'); Sarjaprintti (EEPROM.read (eepIndex ++));………….