- Požadované komponenty
- Popis projektu:
- Modul FingerPrint:
- Fungovanie dochádzkového systému založeného na odtlačkoch prstov
- Schéma zapojenia a opis pre projekt dochádzkového systému odtlačkov prstov
- Vysvetlenie kódu:
Dochádzkové systémy sú bežne používané systémy na označenie prítomnosti v kanceláriách a školách. Od ručného označovania dochádzky v dochádzkových registroch až po používanie špičkových technológií a biometrických systémov sa tieto systémy výrazne zlepšili. V našich predchádzajúcich projektoch sme pokryli niekoľko ďalších projektov elektronického dochádzkového systému pomocou mikrokontroléra RFID a AVR, 8051 a raspberry Pi. V tomto projekte sme pomocou modulu odtlačkov prstov a Arduina zaznamenávali a uchovávali údaje o dochádzke a záznamy. Použitím snímača odtlačkov prstov sa systém stane pre používateľov bezpečnejším. Nasledujúca časť vysvetľuje technické podrobnosti výroby biometrického dochádzkového systému založeného na odtlačkoch prstov pomocou Arduina.
Požadované komponenty
- Arduino -1
- Modul odtlačkov prstov -1
- Tlačidlo - 4
- LED diódy -1
- 1K rezistor -2
- 2,2K rezistor -1
- Moc
- Pripojovacie vodiče
- Krabica
- Bzučiak -1
- 16 x 2 LCD -1
- Chlebová doska -1
- RTC modul -1
Popis projektu:
V tomto okruhu dochádzkového systému odtlačkov prstov sme použili modul Snímač odtlačkov prstovna autentifikáciu skutočnej osoby alebo zamestnanca výberom prsta v systéme. Tu používame na zapísanie 4 tlačidlá, Delete, UP / Down. Kláves ENROLL a DEL má tri funkcie. Kľúč ENROLL sa používa na prihlásenie novej osoby do systému. Takže ak chce užívateľ zaregistrovať nový prst, musí stlačiť tlačidlo ZAPISOVAŤ, potom sa na LCD displeji zobrazí výzva na zadanie ID, kam chce užívateľ uložiť odtlačok prsta. Ak teraz užívateľ nechce pokračovať, môže sa vrátiť späť stlačením klávesu ZADAŤ. Tentokrát sa kláves ENROLL chová ako kláves Back, tj kláves ENROLL má funkciu registrácie aj späť. Okrem registračného kľúča sa tiež používa na stiahnutie dochádzkových údajov cez sériový monitor. Podobne má kláves DEL / OK rovnakú dvojitú funkciu, ako keď používateľ zaregistruje nový prst,potom musí zvoliť ID prsta pomocou ďalších dvoch klávesov, a to HORE a DOLE. Teraz musí užívateľ stlačiť kláves DEL / OK (tentokrát sa chová ako OK), aby mohol pokračovať s vybraným ID. A kláves Del sa používa na resetovanie alebo odstránenie údajov z EEPROM Arduina.
Modul FingerPrint:
Modul snímača odtlačkov prstov zachytáva tlačený obrázok prsta a potom ho prevádza do ekvivalentnej šablóny a ukladá ich do svojej pamäte podľa zvoleného ID od spoločnosti Arduino. Celý proces ovláda Arduino, ako napríklad snímanie odtlačkov prstov, ich prevádzanie do šablón a ich ukladanie ako ID atď. Pomocou modulu odtlačkov prstov môžete skontrolovať ďalšie projekty:
Bezpečnostný systém založený na odtlačkoch prstov
Biometrické hlasovacie zariadenie založené na odtlačkoch prstov
Tu sme pridali žltú žiarovku LED, ktorá označuje, že modul odtlačkov prstov je pripravený na snímanie obrázka prsta. Na rôzne indikácie sa používa aj bzučiak. Arduino je hlavnou súčasťou tohto systému a je zodpovedné za riadenie celého systému.
Fungovanie dochádzkového systému založeného na odtlačkoch prstov
Fungovanie tohto projektu dochádzkového systému pre odtlačky prstovje dosť jednoduché. V prvom rade je potrebné, aby si užívateľ zaregistroval odtlačky prstov pomocou tlačidiel. Aby ste to dosiahli, musíte stlačiť kláves ENROLL a potom sa na LCD displeji zobrazí výzva na zadanie ID pre odtlačok prsta, ktorý ho uloží do pamäte pod menom ID. Teraz teda musí používateľ zadať ID pomocou klávesov NAHOR / NADOL. Po výbere ID musí užívateľ stlačiť kláves OK (klávesa DEL). Teraz sa na LCD displeji zobrazí výzva na vloženie prsta nad modul odtlačkov prstov. Teraz musí používateľ položiť prst na modul pre tlač prstov a potom modul nasníma obrázok prsta. Teraz sa na displeji LCD zobrazí správa, že je potrebné odobrať prst z modulu odtlačkov prstov, a znova sa zobrazí výzva na vloženie prsta. Teraz musí užívateľ znovu vložiť prst a modul odfotí obrázok, ktorý prevedie do šablón a uloží ho podľa zvoleného ID do pamäte modulu odtlačkov prstov.Teraz bude používateľ zaregistrovaný a bude môcť kŕmiť dochádzku vložením modulu prsta cez odtlačok prsta. Rovnakým spôsobom budú do systému zaregistrovaní všetci používatelia.
Ak chce používateľ teraz odstrániť alebo vymazať uložené ID alebo odtlačky prstov, musí stlačiť kláves DEL. Po stlačení klávesu vymazať vás LCD požiada o výber ID, ktoré je potrebné vymazať. Teraz musí používateľ zvoliť ID a stlačiť kláves OK (rovnaké tlačidlo DEL). Teraz vás LCD bude informovať, že odtlačok prsta bol úspešne vymazaný.
Ako funguje dochádzka v tomto projekte dochádzkového systému s odtlačkami prstov:
Kedykoľvek používateľ položí prst na modul odtlačkov prstov, potom modul odtlačkov prstov zaznamená obrázok prsta a vyhľadá, či je s týmto odtlačkom prsta v systéme spojené nejaké ID. Ak je zistené ID odtlačku prsta, na LCD displeji sa zobrazí Attendance registered a súčasne bzučiak raz pípne a LED dióda zhasne, kým nie je systém pripravený znovu prijať vstup.
Spolu s modulom odtlačkov prstov sme pre čas a dátum použili aj modul RTC. Čas a dátum v systéme bežia nepretržite. Arduinu teda záleží na dátume a čase, kedykoľvek skutočný používateľ priloží prst na odtlačok prsta, a uloží ich do EEPROM v pridelenom slote pamäte.
Tu sme v tomto systéme vytvorili 5 používateľských priestorov na 30 dní. Stlačením tlačidla RESET v Arduine a následným okamžitým zaregistrovaním bude kľúč zodpovedný za stiahnutie údajov o dochádzke cez sériový monitor z pamäte EEPROM Arduino.
Správa pamäte:
V Arduino UNO máme 1023 bajtovú pamäť, z ktorej máme 1018 bajtov na ukladanie údajov a na 30 dní sme brali 5 údajov o dochádzke používateľov. A každá dochádzka zaznamená čas a dátum, takže sa z nich stanú 7-bajtové údaje.
Celková požadovaná pamäť je teda
5 * 30 * 7 = 1050, takže tu potrebujeme ďalších 32 bajtov
Ak ale použijeme 4 používateľov, požadovali sme
4 * 30 * 7 = 840
Tu sme demonštráciu projektu vykonali tak, že sme zobrali pamäť 5 používateľov. Tým, že nebudeme môcť uložiť 32 bajtov alebo 5 evidencie dochádzky na 5 -tého používateľa.
Môžete to vyskúšať 4 používateľmi zmenou niektorých riadkov v kóde. V kóde som uviedol komentáre, kde sú potrebné zmeny.
Schéma zapojenia a opis pre projekt dochádzkového systému odtlačkov prstov
Okruh tohto projektu dochádzkového systému založeného na odtlačkoch prstov, ako je znázornené na obrázku vyššie, je celkom jednoduchý. Má Arduino pre riadenie celého procesu projektu, tlačidlo pre registráciu, mazanie, výber ID a pre dochádzku, bzučiak pre varovanie, LED pre indikáciu a LCD pre poučenie používateľa a zobrazovanie výsledných správ.
Ako je znázornené na schéme zapojenia, tlačidlo je priamo spojené s pinmi A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) modulu Arduino vzhľadom na zem a žltá LED je pripojená k digitálnemu pinu D7. Arduina vzhľadom na zem cez rezistor 1k. Rx a Tx modulu odtlačkov prstov priamo pripojené na sériový pin D2 a D3 (softvérové sériové rozhranie) Arduina. Na napájanie modulu odtlačkov prstov odobratých z dosky Arduino sa používa 5V zdroj. Na kolíku A5 je tiež pripojený bzučiak. 16x2 LCD je nakonfigurovaný v 4-bitovom režime a jeho RS, EN, D4, D5, D6 a D7 sú priamo pripojené na digitálne piny D13, D12, D11, D10, D9 a D8 spoločnosti Arduino.
Vysvetlenie kódu:
Systémový kód odtlačkov prstov dochádzky pre Arduino sú uvedené v nasledujúcich kapitolách. Aj keď je kód vysvetlený dobre pomocou komentárov, diskutujeme tu o niekoľkých dôležitých častiach kódu. Knižnicu odtlačkov prstov sme použili na prepojenie modulu odtlačkov prstov s doskou Arduino.
Najskôr zahrnieme hlavičkový súbor a definujeme vstupný a výstupný pin a definujeme makro a deklarované premenné. Potom vo funkcii nastavenia dáme smer definovanému kolíku a spustíme modul LCD a odtlačok prsta
Potom musíme napísať kód na stiahnutie dochádzkových údajov.
void setup () {oneskorenie (1000); lcd.začiatok (16,2); Serial.begin (9600); pinMode (registrácia, INPUT_PULLUP); pinMode (hore, INPUT_PULLUP); pinMode (dole, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (zhoda, INPUT_PULLUP); pinMode (bzučiak, VÝSTUP); pinMode (indFinger, OUTPUT); digitalWrite (bzučiak, LOW); if (digitalRead (enroll) == 0) {digitalWrite (bzučiak, VYSOKÝ); oneskorenie (500); digitalWrite (bzučiak, LOW); lcd.clear (); lcd.print ("Prosím čakajte"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Potom musíme napísať kód na vymazanie dochádzkových údajov z EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Prosím čakajte"); lcd.setCursor (0,1); lcd.print ("Resetovanie….."); pre (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); pre (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Reset systému"); oneskorenie (1 000); }
Potom spustíme modul pre odtlačky prstov, ktorý zobrazuje uvítaciu správu cez LCD a tiež iniciovaný modul RTC.
Potom sme vo funkcii slučky načítali čas RTC a zobrazili ho na LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Čas->"); lcd.print (teraz.hodina (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Dátum->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (teraz.mesiac (), DEC); lcd.print ('/'); lcd.print (teraz.rok (), DEC);
Potom čaká na zadanie odtlačku prsta a porovnanie ID zachyteného obrázka s uloženými ID. Ak dôjde k nesúladu, pokračujte ďalším krokom. A tiež kontrola zápisu del kľúčov
int výsledok = getFingerprintIDez (); if (výsledok> 0) {digitalWrite (indFinger, LOW); digitalWrite (bzučiak, VYSOKÝ); oneskorenie (100); digitalWrite (bzučiak, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (výsledok); lcd.setCursor (0,1); lcd.print ("Prosím čakajte…."); oneskorenie (1 000); dochádzka (výsledok); lcd.clear (); lcd.print ("Účasť"); lcd.setCursor (0,1); lcd.print („Registrovaný“); oneskorenie (1 000); digitalWrite (indFinger, HIGH); návrat; }
Daná void funkcia checkKeys () sa používa na kontrolu, či je alebo nie je stlačená klávesa Enroll alebo DEL a čo robiť, ak je stlačená. Ak je stlačené tlačidlo ENROLL, volá sa funkcia Enroll () a je stlačené tlačidlo DEL, potom sa volá funkcia delete () .
funkcia void delet () slúži na zadanie ID, ktoré sa má vymazať, a na vyvolanie funkcie uint8_t deleteFingerprint (uint8_t id), ktorá vymaže prst zo záznamov.
Daná funkcia je zvyknutá na snímanie odtlačkov prstov a ich prevedenie do šablóny a tiež uloženie pomocou zvoleného ID do pamäte modulu odtlačkov prstov.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID prsta:"); lcd.print (id); lcd.setCursor (0,1); lcd.print („umiestniť prst“); meškanie (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Daná funkcia slúži na ukladanie dochádzkového času a dátumu do prideleného slotu EEPROM
neplatná dochádzka (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; užívateľ = užívateľ1 ++; } else if (id == 2) {eepLoc = 210; užívateľ = užívateľ2 ++; } else if (id == 3)………….
Daná funkcia sa používa na načítanie dát z EEPROM a ich odoslanie na sériový monitor
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….