- Nepieciešamās sastāvdaļas
- Projekta apraksts:
- FingerPrint modulis:
- Uz pirkstu nospiedumiem balstītas apmeklējumu sistēmas darbība
- Pirkstu nospiedumu apmeklēšanas sistēmas projekta shēma un apraksts
- Koda skaidrojums:
Apmeklēšanas sistēmas ir parasti izmantotas sistēmas, lai atzīmētu klātbūtni birojos un skolās. Sākot no manuālas apmeklējumu reģistrēšanas apmeklējumu reģistros līdz augsto tehnoloģiju lietojumu un biometrisko sistēmu izmantošanai, šīs sistēmas ir ievērojami uzlabojušās. Iepriekšējos projektos mēs esam apskatījuši dažus citus elektroniskās apmeklēšanas sistēmas projektus, izmantojot RFID un AVR mikrokontrolleru, 8051 un aveņu Pi. Šajā projektā mēs izmantojām pirkstu nospiedumu moduli un Arduino, lai ņemtu un saglabātu apmeklējumu datus un uzskaiti. Izmantojot pirkstu nospiedumu sensoru, sistēma kļūs drošāka lietotājiem. Turpmākajās sadaļās ir izskaidrota tehniskā informācija par to, kā ar pirkstu nospiedumiem balstītu biometrisko apmeklēšanas sistēmu, izmantojot Arduino.
Nepieciešamās sastāvdaļas
- Arduino -1
- Pirkstu apdrukas modulis -1
- Spiedpoga - 4
- Gaismas diodes -1
- 1K rezistors -2
- 2.2K rezistors -1
- Jauda
- Savienojošie vadi
- Kaste
- Buzzer -1
- 16x2 LCD -1
- Maizes dēlis -1
- RTC modulis -1
Projekta apraksts:
Šajā pirkstu nospiedumu apmeklēšanas sistēmas ķēdē mēs izmantojām pirkstu nospiedumu sensora modulilai autentificētu patiesu personu vai darbinieku, veicot pirkstu ievadi sistēmā. Šeit mēs izmantojam 4 spiedpogas, lai reģistrētos, Dzēst, UP / Down. ENROLL un DEL taustiņiem ir trīskāršas funkcijas. ENROLL taustiņu izmanto, lai sistēmā reģistrētu jaunu personu. Tātad, kad lietotājs vēlas reģistrēt jaunu pirkstu, viņam / viņai jānospiež taustiņš ENROLL, pēc tam LCD pieprasa ID, kurā lietotājs vēlas saglabāt pirksta nospieduma attēlu. Ja tagad lietotājs nevēlas turpināt darbu, viņš / viņa var vēlreiz nospiest taustiņu ENROLL, lai atgrieztos. Šoreiz taustiņš ENROLL darbojas kā Atpakaļ, ti, ENROLL taustiņam ir gan reģistrēšanās, gan atpakaļ funkcija. Bez reģistrēšanās atslēga tiek izmantota arī, lai lejupielādētu datus par apmeklējumu, izmantojot seriālo monitoru. Tāpat arī taustiņam DEL / OK ir tāda pati dubultā funkcija kā tad, kad lietotājs reģistrē jaunu pirkstu,tad viņam / viņai jāizvēlas pirksta ID, izmantojot vēl divus taustiņus, proti, UP un DOWN. Tagad lietotājam jānospiež taustiņš DEL / OK (šoreiz šis taustiņš darbojas kā OK), lai turpinātu atlasītā ID lietošanu. Del taustiņu izmanto datu atiestatīšanai vai dzēšanai no EEPROM no Arduino.
FingerPrint modulis:
Pirkstu nospiedumu sensora modulis uztver pirksta izdrukas attēlu un pēc tam pārveido to līdzvērtīgā veidnē un saglabā tos savā atmiņā, kā norādīts Arduino izvēlētajā ID. Arduino pavēl visu procesu, piemēram, pirkstu nospiedumu attēla uzņemšana, pārveidošana par veidnēm un saglabāšana kā ID utt. Jūs varat pārbaudīt vēl dažus projektus, izmantojot pirkstu nospiedumu moduli:
Drošības sistēma, kuras pamatā ir pirkstu nospiedumi
Uz pirkstu nospiedumiem balstīta biometriskā balsošanas mašīna
Šeit mēs esam pievienojuši dzeltenu gaismas diode, kas norāda, ka pirkstu nospiedumu modulis ir gatavs veikt pirksta attēlu. Dažādām indikācijām tiek izmantots arī skaņas signāls. Arduino ir galvenā šīs sistēmas sastāvdaļa, un tā ir atbildīga par visas sistēmas kontroli.
Uz pirkstu nospiedumiem balstītas apmeklējumu sistēmas darbība
Šī pirkstu nospiedumu apmeklēšanas sistēmas projekta izstrādeir diezgan vienkārši. Pirmkārt, lietotājam ar spiedpogu palīdzību jāreģistrē lietotāja pirkstu nospiedumi. Lai to izdarītu, lietotājam jānospiež ENROLL taustiņš un pēc tam LCD prasa ievadīt pirksta nospieduma ID, lai saglabātu to atmiņā pēc ID nosaukuma. Tāpēc tagad lietotājam jāievada ID, izmantojot taustiņus UP / DOWN. Pēc ID izvēles lietotājam jānospiež taustiņš OK (DEL taustiņš). Tagad LCD lūgs novietot pirkstu virs pirksta nospieduma moduļa. Tagad lietotājam jānovieto pirksts virs pirksta nospieduma moduļa, un pēc tam modulis uzņem pirksta attēlu. Tagad LCD teiks, lai noņemtu pirkstu no pirkstu nospiedumu moduļa, un atkal lūgs vēlreiz ievietot pirkstu. Tagad lietotājam atkal jāpieliek pirksts, un modulis uzņem attēlu, pārveido to par veidnēm un ar atlasīto ID to saglabā pirkstu drukas moduļa atmiņā.Tagad lietotājs tiks reģistrēts un viņš / viņa var apmeklēt apmeklētājus, uzliekot pirkstu uz pirkstu nospiedumu moduļa. Ar to pašu metodi visi lietotāji tiks reģistrēti sistēmā.
Ja lietotājs vēlas noņemt vai izdzēst kādu no saglabātajiem ID vai pirkstu nospiedumiem, viņam / viņai jānospiež taustiņš DEL. Kad izdzēšanas taustiņš būs nospiests, LCD lūgs izvēlēties ID, kas jāizdzēš. Tagad lietotājam jāizvēlas ID un jānospiež taustiņš OK (tas pats DEL taustiņš). Tagad LCD paziņos, ka pirkstu nospiedums ir veiksmīgi izdzēsts.
Kā apmeklējums darbojas šajā pirkstu nospiedumu apmeklēšanas sistēmas projektā:
Ikreiz, kad lietotājs novieto pirkstu virs pirkstu nospiedumu moduļa, pirkstu nospiedumu modulis uztver pirksta attēlu un meklē, vai sistēmā ar šo pirksta nospiedumu ir saistīts kāds ID. Ja tiek noteikts pirksta nospieduma ID, LCD displejā būs redzams reģistrēts apmeklējums un tajā pašā laikā skaņas signāls vienu reizi pīkstēs un gaismas diode izslēgsies, līdz sistēma būs gatava ievadīt vēlreiz.
Kopā ar pirkstu nospiedumu moduli mēs esam izmantojuši arī RTC moduli laikam un datumam. Laiks un datums sistēmā darbojas nepārtraukti. Tātad Arduino prasa laiku un datumu ikreiz, kad īsts lietotājs uzliek pirkstu virs pirksta nospieduma un saglabā tos EEPROM pie atvēlētās atmiņas vietas.
Šeit mēs esam izveidojuši 5 lietotāja vietas šajā sistēmā 30 dienas. Nospiežot pogu ATIESTATĪT Arduino un pēc tam nekavējoties reģistrēšanās atslēga būs atbildīga par apmeklējumu datu lejupielādi, izmantojot seriālo monitoru no Arduino EEPROM atmiņas.
Atmiņas pārvaldība:
Arduino UNO mums ir 1023 baitu atmiņa, no kurām mums ir 1018 baiti datu glabāšanai, un mēs esam ņēmuši 5 lietotāju apmeklējuma datus uz 30 dienām. Katrā apmeklējumā tiks ierakstīts laiks un datums, lai tie kļūtu par 7 baitu datiem.
Tātad kopējā nepieciešamā atmiņa ir
5 * 30 * 7 = 1050, tāpēc šeit mums vajag vairāk 32 baitu
Bet, ja mēs izmantosim četrus lietotājus, mums tas bija nepieciešams
4 * 30 * 7 = 840
Šeit mēs esam veikuši šo projekta demonstrāciju, paņemot 5 lietotāju atmiņu. Ar šo, mēs nevaram uzglabāt 32 baitu vai 5 apmeklētības uzskaiti par 5 th lietotājam.
Varat izmēģināt 4 lietotāji, mainot dažas rindiņas kodā. Es esmu komentējis kodu, kur nepieciešamas izmaiņas.
Pirkstu nospiedumu apmeklēšanas sistēmas projekta shēma un apraksts
Šī uz pirkstu nospiedumiem balstītās apmeklējumu sistēmas projekta shēma, kā parādīts iepriekšējā diagrammā, ir diezgan vienkārša. Tam ir Arduino, lai kontrolētu visu projekta procesu, spiedpoga reģistrēšanai, dzēšanai, ID izvēlei un apmeklēšanai, skaņas signāls brīdināšanai, gaismas diodes indikācijai un LCD, lai pamācītu lietotāju un parādītu izrietošos ziņojumus.
Kā parādīts shēmas diagrammā, spiedpoga ir tieši savienota ar Arinoino tapām A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) attiecībā pret zemi, un dzeltenā gaismas diode ir savienota ar digitālo tapu D7 Arduino attiecībā pret zemi caur 1k rezistoru. Pirkstu nospiedumu moduļa Rx un Tx ir tieši savienoti ar Arduino sērijas tapām D2 un D3 (programmatūras sērija). 5v padevi izmanto pirkstu nospiedumu moduļa darbināšanai, kas ņemts no Arduino dēļa. Pie tapas A5 ir pievienots arī skaņas signāls. 16x2 LCD ir konfigurēts 4 bitu režīmā, un tā RS, EN, D4, D5, D6 un D7 ir tieši savienoti ar Arduino digitālo tapu D13, D12, D11, D10, D9 un D8.
Koda skaidrojums:
Pirkstu nospiedumu apmeklētība sistēma kods Arduino tiek sniegta turpmākajās iedaļās. Lai gan kods ir labi izskaidrots ar komentāriem, mēs šeit apspriežam dažas svarīgas koda daļas. Mēs izmantojām pirkstu nospiedumu bibliotēku, lai pirkstu nospiedumu moduli savienotu ar Arduino dēli.
Pirmkārt, mēs iekļaujam galvenes failu un definējam ievades un izvades tapu un definējam makro un deklarētos mainīgos. Pēc tam iestatīšanas funkcijā mēs dodam virzienu noteiktajai tapai un uzsākam LCD un pirkstu drukas moduli
Pēc tam mums ir jāuzraksta kods apmeklējumu datu lejupielādēšanai.
void setup () {aizkave (1000); lcd.begin (16,2); Sērijas sākums (9600); pinMode (reģistrēties, INPUT_PULLUP); pinMode (uz augšu, INPUT_PULLUP); pinMode (uz leju, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (spēles, INPUT_PULLUP); pinMode (zummer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (zummer, LOW); if (digitalRead (reģistrēties) == 0) {digitalWrite (buzzer, HIGH); kavēšanās (500); digitalWrite (zummer, LOW); lcd.clear (); lcd.print ("Lūdzu, uzgaidiet"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Pēc tam mums ir jāraksta kods, lai notīrītu apmeklējumu datus no EEPROM.
ja (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Lūdzu, uzgaidiet"); lcd.setCursor (0,1); lcd.print ("Notiek atiestatīšana….."); par (int i = 1000; i <1005; i ++) EEPROM. rakstīt (i, 0); par (int i = 0; i <841; i ++) EEPROM. rakstīt (i, 0xff); lcd.clear (); lcd.print ("Sistēmas atiestatīšana"); kavēšanās (1000); }
Pēc tam mēs uzsākam pirkstu nospiedumu moduli, parādot sveiciena ziņojumu pa LCD un arī inicializētu RTC moduli.
Pēc tā, cilpas funkcijā, mēs esam izlasījuši RTC laiku un parādījuši to LCD
void loop () {tagad = rtc.now (); lcd.setCursor (0,0); lcd.print ("Laiks->"); lcd.print (tagad.stunda (), DEC); lcd.print (':'); lcd.print (tagad.minūte (), DEC); lcd.print (':'); lcd.print (tagad.sekunde (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Datums->"); lcd.print (tagad.diena (), DEC); lcd.print ('/'); lcd.print (tagad.mēnesis (), DEC); lcd.print ('/'); lcd.print (tagad.gads (), DEC);
Pēc tam gaida pirkstu nospiedumu, lai veiktu ievadi un salīdzinātu uzņemtā attēla ID ar saglabātajiem ID. Ja rodas neatbilstība, veiciet nākamo darbību. Un pārbaudot arī reģistrēšanas del taustiņus
int rezultāts = getFingerprintIDez (); if (rezultāts> 0) {digitalWrite (indFinger, LOW); digitalWrite (zummeris, HIGH); kavēšanās (100); digitalWrite (zummer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (rezultāts); lcd.setCursor (0,1); lcd.print ("Lūdzu, uzgaidiet…."); kavēšanās (1000); apmeklējums (rezultāts); lcd.clear (); lcd.print ("Apmeklējums"); lcd.setCursor (0,1); lcd.print ("Reģistrēts"); kavēšanās (1000); digitalWrite (indFinger, HIGH); atgriešanās; }
Ņemot vērā void checkKeys (), tiek izmantota funkcija, lai pārbaudītu, vai taustiņš Enroll vai DEL ir nospiests vai nav, un kā rīkoties, ja tiek nospiests. Ja nospiedis taustiņu ENROLL, tiek izsaukta funkcija Reģistrēties () un nospiežot DEL taustiņu, tiek izsaukta dzēšanas () funkcija.
funkcija void delet () tiek izmantota, lai ievadītu dzēšamo ID un izsauktu funkciju uint8_t deleteFingerprint (uint8_t id) , kas izdzēsīs pirkstu no ierakstiem.
Attiecīgā funkcija tiek izmantota, lai uzņemtu pirkstu nospiedumu attēlu un pārveidotu tos par veidni un pēc atlasītā ID saglabātu arī pirkstu nospiedumu moduļa atmiņā.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("pirksta ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Vietas pirksts"); kavēšanās (2000); kamēr (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Dotā funkcija tiek izmantota apmeklējuma laika un datuma glabāšanai paredzētajā EEPROM slotā
tukšs apmeklējums (int id) {int lietotājs = 0, eepLoc = 0; ja (id == 1) {eepLoc = 0; lietotājs = lietotājs1 ++; } else if (id == 2) {eepLoc = 210; lietotājs = lietotājs2 ++; } else if (id == 3)………….
Dotā funkcija tiek izmantota datu iegūšanai no EEPROM un nosūtīšanai uz seriālo monitoru
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); ja (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); ja (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….