- Reikalingi komponentai
- Projekto aprašymas:
- „FingerPrint“ modulis:
- Pirštų atspaudais pagrįstos lankomumo sistemos darbas
- Pirštų atspaudų lankomumo sistemos projekto schema ir aprašas
- Kodo paaiškinimas:
Lankomumo sistemos yra dažniausiai naudojamos sistemos, žyminčios buvimą biuruose ir mokyklose. Nuo rankinio lankomumo žymėjimo lankomumo registruose iki aukštųjų technologijų programų ir biometrinių sistemų naudojimo - šios sistemos žymiai pagerėjo. Ankstesniuose savo projektuose aptarėme keletą kitų elektroninių lankomumo sistemų projektų, kuriuose buvo naudojamas RFID ir AVR mikrovaldiklis 8051 ir avietinė Pi. Šiame projekte mes naudojome pirštų atspaudų modulį ir „Arduino“, kad imtume ir saugotume lankomumo duomenis ir įrašus. Naudojant pirštų atspaudų jutiklį, sistema taps saugesnė vartotojams. Tolesniuose skyriuose paaiškinama techninė informacija apie biometrinių duomenų kontrolę naudojant pirštus, naudojant „Arduino“.
Reikalingi komponentai
- Arduino -1
- Pirštų atspaudų modulis -1
- Mygtukas - 4
- Šviesos diodai -1
- 1K rezistorius -2
- 2.2K rezistorius -1
- Galia
- Jungiamieji laidai
- Dėžė
- Buzzer -1
- 16x2 LCD -1
- Duonos lenta -1
- RTC -1 modulis
Projekto aprašymas:
Šioje pirštų atspaudų lankymo sistemos grandinėje mes naudojome „ Pirštų atspaudų jutiklio“ modulįpatvirtinti tikrąjį asmenį ar darbuotoją pirštu įvedant sistemą. Čia mes naudojame 4 mygtukus norėdami užregistruoti, ištrinti, aukštyn / žemyn. ENROLL ir DEL klavišai turi trigubas funkcijas. ENROLL raktas naudojamas norint įtraukti naują asmenį į sistemą. Taigi, kai vartotojas nori užregistruoti naują pirštą, jis / ji turi paspausti mygtuką ENROLL, tada LCD prašo įvesti ID, kur vartotojas nori būti išsaugojęs piršto atspaudo vaizdą. Jei šiuo metu vartotojas nenori tęsti toliau, jis gali dar kartą paspausti ENROLL mygtuką, kad grįžtumėte atgal. Šį kartą klavišas ENROLL veikia kaip atgalinis klavišas, ty klavišas ENROLL turi ir registravimo, ir atgal funkciją. Be registracijos raktas taip pat naudojamas lankomumo duomenims atsisiųsti per nuoseklųjį monitorių. Panašiai DEL / OK klavišas taip pat turi tą pačią dvigubą funkciją, kaip ir tada, kai vartotojas užregistruoja naują pirštą,tada jis / ji turi pasirinkti piršto ID naudodamas dar du klavišus, ty aukštyn ir žemyn. Dabar vartotojas turi paspausti DEL / OK klavišą (šį kartą šis klavišas elgiasi kaip gerai), kad galėtumėte tęsti pasirinktą ID. „Del“ klavišas naudojamas norint iš naujo nustatyti ar ištrinti duomenis iš „Arduino“ EEPROM.
„FingerPrint“ modulis:
Pirštų atspaudų jutiklio modulis užfiksuoja piršto atspaudo vaizdą, tada paverčia jį į lygiavertį šabloną ir išsaugo juos savo atmintyje pagal „Arduino“ pasirinktą ID. Visam procesui vadovauja „Arduino“, pavyzdžiui, fotografuoti piršto atspaudą, paversti jį šablonais ir saugoti kaip ID ir kt. Galite patikrinti dar keletą projektų naudodami pirštų atspaudų modulį:
Pirštų atspaudais pagrįsta apsaugos sistema
Pirštų atspaudų pagrindu sukurta biometrinė balsavimo mašina
Čia pridėjome geltoną šviesos diodą, kuris rodo, kad pirštų atspaudų modulis yra pasirengęs fotografuoti pirštą. Skambutis taip pat naudojamas įvairioms indikacijoms. „Arduino“ yra pagrindinis šios sistemos komponentas, jis yra atsakingas už visos sistemos valdymą.
Pirštų atspaudais pagrįstos lankomumo sistemos darbas
Šio pirštų atspaudų lankomumo sistemos projekto kūrimasyra gana paprasta. Visų pirma, vartotojas turi užregistruoti vartotojo pirštų atspaudus mygtukų pagalba. Norėdami tai padaryti, vartotojas turi paspausti mygtuką ENROLL ir tada LCD prašo įvesti piršto atspaudo ID, kad jis būtų išsaugotas atmintyje pagal ID vardą. Taigi dabar vartotojas turi įvesti ID naudodamas aukštyn / žemyn klavišus. Pasirinkęs ID, vartotojas turi paspausti mygtuką OK (DEL). Dabar LCD paprašys uždėti pirštą virš piršto atspaudo modulio. Dabar vartotojas turi uždėti pirštą ant piršto spausdinimo modulio, o tada modulis paima piršto atvaizdą. Dabar skystųjų kristalų ekranas pasakys, kad reikia pašalinti pirštą iš pirštų atspaudų modulio, ir vėl paprašys vėl uždėti pirštą. Dabar vartotojui reikia vėl uždėti pirštą, o modulis paima vaizdą, paverčia jį šablonais ir pagal pasirinktą ID saugo jį pirštų spausdinimo modulio atmintyje.Dabar vartotojas bus užregistruotas ir jis galės maitinti lankomumą uždėdamas pirštą ant pirštų atspaudų modulio. Tuo pačiu metodu visi vartotojai bus užregistruoti sistemoje.
Dabar, jei vartotojas nori pašalinti ar ištrinti kurį nors iš išsaugotų ID ar pirštų atspaudų, jis / ji turi paspausti DEL mygtuką. Paspaudus trynimo klavišą, LCD paprašys pasirinkti ID, kurį reikia ištrinti. Dabar vartotojas turi pasirinkti ID ir paspausti mygtuką OK (tas pats DEL klavišas). Dabar LCD praneš, kad pirštų atspaudai buvo sėkmingai ištrinti.
Kaip lankomumas veikia šiame „Fingerprint Attendance System“ projekte:
Kai vartotojas uždeda pirštą ant pirštų atspaudų modulio, pirštų atspaudų modulis užfiksuoja piršto atvaizdą ir ieško, ar sistemoje su šiuo piršto antspaudu yra susietas koks nors ID. Jei aptinkamas piršto antspaudo ID, LCD ekrane rodomas registruotas dalyvavimas, tuo pačiu metu garsinis signalas vieną kartą pypsės ir šviesos diodas išsijungs, kol sistema bus pasirengusi vėl įvesti įvestį.
Kartu su pirštų atspaudų moduliu mes taip pat naudojome RTC modulį Laikai ir datai. Laikas ir data sistemoje nuolat veikia. Taigi „Arduino“ reikia laiko ir datos, kai tikrasis vartotojas uždeda pirštą ant piršto atspaudo ir išsaugo juos EEPROM skirtoje atminties vietoje.
Čia sukūrėme 5 vartotojo vietas šioje sistemoje 30 dienų. Paspaudus mygtuką RESET „Arduino“ ir iškart užregistravus klavišą, turėsite atsisiųsti lankomumo duomenis per serijinį monitorių iš „Arduino EEPROM“ atminties.
Atminties valdymas:
„Arduino UNO“ turime 1023 baitų atmintį, iš kurių turime 1018 baitų duomenims saugoti, ir mes 30 dienų paėmėme 5 naudotojų lankomumo duomenis. Kiekvienas apsilankymas įrašys laiką ir datą, taigi tai taps 7 baitų duomenimis.
Taigi visa reikalinga atmintis yra
5 * 30 * 7 = 1050, taigi čia mums reikia daugiau 32 baitų
Bet jei mes naudosime 4 vartotojus, tada mums reikėjo
4 * 30 * 7 = 840
Čia mes atlikome šį projekto demonstravimą, paimdami 5 vartotojų atmintį. Tokiu būdu negalėsime išsaugoti 5 -ojo vartotojo 32 baitų ar 5 lankomumo įrašų.
Galite išbandyti 4 vartotojai, pakeisdami kai kurias eilutes kode. Pateikiau komentarus kode, kur reikalingi pakeitimai.
Pirštų atspaudų lankomumo sistemos projekto schema ir aprašas
Šio pirštų atspaudais pagrįstos lankomumo sistemos projekto schema, kaip parodyta aukščiau pateiktoje diagramoje, yra gana paprasta. Jame yra „Arduino“, skirtas valdyti visą projekto procesą, mygtukas registravimui, ištrynimui, ID pasirinkimui ir dalyvavimui, garsinis signalas, įspėjimo signalas, šviesos diodai indikacijai ir skystųjų kristalų ekranas, nurodantis vartotojui ir rodantis gautus pranešimus.
Kaip parodyta grandinės schemoje, mygtukas yra tiesiogiai prijungtas prie „Arduino“ A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) kaiščių žemės atžvilgiu, o geltonas šviesos diodas yra prijungtas prie skaitmeninio kaiščio D7 Arduino žemės atžvilgiu per 1k rezistorių. Pirštų atspaudų modulio Rx ir Tx tiesiogiai prijungti prie „Arduino“ serijos kaiščių D2 ir D3 (programinės įrangos serijos). 5v maitinimas naudojamas pirštų atspaudų moduliui, paimtam iš „Arduino“ plokštės, maitinti. Prie A5 kaiščio taip pat prijungtas garsinis signalas. 16x2 skystųjų kristalų ekranas sukonfigūruotas 4 bitų režimu, o jo RS, EN, D4, D5, D6 ir D7 yra tiesiogiai prijungti prie „Arduino“ skaitmeninių kaiščių D13, D12, D11, D10, D9 ir D8.
Kodo paaiškinimas:
„ Arduino “ pirštų atspaudų sistemos kodas pateikiamas tolesniuose skyriuose. Nors kodas gerai paaiškinamas komentarais, čia aptariame keletą svarbių kodo dalių. Pirštų atspaudų biblioteką naudojome pirštų atspaudų moduliui susieti su „Arduino“ lenta.
Visų pirma, mes įtraukiame antraštės failą, apibrėžiame įvesties ir išvesties kaiščius ir apibrėžiame makrokomandas ir deklaruotus kintamuosius. Po to, nustatymo funkcijoje, mes suteikiame kryptį apibrėžtam kaiščiui ir inicijuojame LCD ir pirštų spausdinimo modulį
Po jo turime parašyti lankomumo duomenų atsisiuntimo kodą.
void setup () {delsa (1000); lcd.prade (16,2); Serijos pradžia (9600); pinMode (užsiregistruoti, INPUT_PULLUP); pinMode (aukštyn, INPUT_PULLUP); pinMode (žemyn, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (rungtynės, INPUT_PULLUP); pinMode (zumeris, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (zumeris, LOW); if (digitalRead (užsiregistruoti) == 0) {digitalWrite (zumeris, AUKŠTAS); vėlavimas (500); digitalWrite (zumeris, LOW); lcd.clear (); lcd.print ("Prašome palaukti"); lcd.setCursor (0,1); lcd.print („Duomenų perkėlimas“);
Po to mes turime parašyti kodą, kad pašalintume lankomumo duomenis iš EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Prašau palaukti"); lcd.setCursor (0,1); lcd.print ("Reseting….."); už (int i = 1000; i <1005; i ++) EEPROM. parašykite (i, 0); už (int i = 0; i <841; i ++) EEPROM. parašykite (i, 0xff); lcd.clear (); lcd.print („Sistemos atstatymas“); vėlavimas (1000); }
Po to mes inicijuojame pirštų atspaudų modulį, rodantį pasveikinimo pranešimą per LCD, taip pat inicijuojamą RTC modulį.
Po jo, ciklo funkcija, mes perskaitėme RTC laiką ir parodėme jį LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Laikas->"); lcd.print (dabar.valanda (), DEC); lcd.print (':'); lcd.print (dabar.minute (), DEC); lcd.print (':'); lcd.print (dabar. antra (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Data->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (dabar.month (), DEC); lcd.print ('/'); lcd.print (dabar.metai (), DEC);
Po to laukiama, kol piršto atspaudas įves ir palygins užfiksuoto vaizdo ID su išsaugotais ID. Jei įvyksta neatitikimas, tęskite kitą žingsnį. Taip pat patikrinkite registracijos del raktus
int rezultatas = getFingerprintIDez (); if (rezultatas> 0) {digitalWrite (indFinger, LOW); „digitalWrite“ (garsinis signalas, AUKŠTAS); vėlavimas (100); digitalWrite (zumeris, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (rezultatas); lcd.setCursor (0,1); lcd.print ("Prašau palaukti…"); vėlavimas (1000); lankomumas (rezultatas); lcd.clear (); lcd.print („Dalyvavimas“); lcd.setCursor (0,1); lcd.print ("Registruotas"); vėlavimas (1000); „digitalWrite“ (indFinger, HIGH); grįžti; }
Atsižvelgiant į negaliojančią funkciją checkKeys () funkcija naudojama patikrinti, ar paspaustas mygtukas Užregistruoti arba DEL, ir ką daryti paspaudus. Jei paspaudus mygtuką ENROLL, iškviečiama funkcija Užregistruoti () ir paspaudus mygtuką DEL, tada iškviečiama ištrynimo () funkcija.
funkcija void delet () naudojama įvesti trintiną ID ir paskambinti uint8_t deleteFingerprint (uint8_t id) funkcijai, kuri ištrins pirštą iš įrašų.
Nurodyta funkcija naudojama imant piršto atspaudo vaizdą ir paverčiant juos į šabloną bei išsaugant pasirinktą ID į pirštų atspaudų modulio atmintį.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("piršto ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print („Vietos pirštas“); vėlavimas (2000); o (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Pateikta funkcija naudojama lankymo laikui ir datai saugoti numatytame EEPROM lizde
tuščias dalyvavimas (int id) {int vartotojas = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; vartotojas = vartotojas1 ++; } else if (id == 2) {eepLoc = 210; vartotojas = vartotojas2 ++; } else if (id == 3)………….
Pateikta funkcija naudojama duomenims gauti iš EEPROM ir siųsti į nuoseklųjį monitorių
negaliojantis atsisiuntimas (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); jei (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); jei (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….