- Požadované komponenty
- Popis projektu:
- Modul FingerPrint:
- Fungování docházkového systému založeného na otiscích prstů
- Schéma zapojení a popis projektu systému docházky otisků prstů
- Vysvětlení kódu:
Docházkové systémy jsou běžně používané systémy k označení přítomnosti v kancelářích a školách. Od ručního značení docházky v docházkových registrech až po používání špičkových aplikací a biometrických systémů se tyto systémy výrazně zlepšily. V našich předchozích projektech jsme pokryli několik dalších projektů elektronických docházkových systémů pomocí mikrokontroléru RFID a AVR, 8051 a raspberry Pi. V tomto projektu jsme použili modul otisků prstů a Arduino k pořizování a uchovávání docházkových dat a záznamů. Díky použití snímače otisků prstů bude systém pro uživatele bezpečnější. Následující části vysvětlují technické podrobnosti výroby biometrického docházkového systému založeného na otisku prstu pomocí Arduina.
Požadované komponenty
- Arduino -1
- Modul pro otisk prstu -1
- Tlačítko - 4
- LED diody -1
- 1K rezistor -2
- 2,2K rezistor -1
- Napájení
- Připojovací vodiče
- Krabice
- Bzučák -1
- 16x2 LCD -1
- Chlebová deska -1
- RTC modul -1
Popis projektu:
V tomto okruhu docházkového systému otisků prstů jsme použili modul snímače otisků prstůk ověření skutečné osoby nebo zaměstnance tím, že v systému zadá prst. Zde používáme 4 tlačítka pro registraci, mazání, NAHORU / DOLŮ. Klávesa ENROLL a DEL má trojí funkce. Klíč ENROLL se používá pro registraci nové osoby do systému. Takže pokud chce uživatel zaregistrovat nový prst, musí stisknout klávesu ENROLL a poté se LCD zeptá na ID, kam chce uživatel uložit otisk prstu. Pokud nyní uživatel nechce pokračovat dále, může se stisknutím klávesy ENROLL vrátit zpět. Tentokrát se klávesa ENROLL chová jako klávesa Zpět, tj. Klávesa ENROLL má funkci registrace i zpět. Kromě klíče registrace se také používá ke stahování dat docházky přes sériový monitor. Podobně má klávesa DEL / OK stejnou dvojitou funkci, jako když uživatel zaregistruje nový prst,pak musí vybrat ID prstu pomocí dalších dvou klíčů, a to NAHORU a DOLŮ. Nyní musí uživatel stisknout klávesu DEL / OK (tentokrát se tato klávesa chová jako OK), aby mohl pokračovat s vybraným ID. A klíč Del se používá k resetování nebo smazání dat z EEPROM Arduina.
Modul FingerPrint:
Modul snímače otisků prstů zachytí otisk prstu a poté jej převede na ekvivalentní šablonu a uloží je do své paměti podle zvoleného ID Arduina. Celý proces ovládá Arduino, jako je pořízení snímku otisku prstu, jeho převedení na šablony a uložení jako ID atd. Pomocí modulu otisků prstů můžete zkontrolovat další projekty:
Bezpečnostní systém založený na otiscích prstů
Biometrický hlasovací stroj založený na otisku prstu
Zde jsme přidali žlutou LED, která označuje, že modul otisků prstů je připraven pořídit snímek prstu. Pro různé indikace se také používá bzučák. Arduino je hlavní součástí tohoto systému a je odpovědné za ovládání celého systému.
Fungování docházkového systému založeného na otiscích prstů
Práce na tomto projektu docházkového systému otisků prstůje poměrně jednoduchý. Nejprve je třeba, aby si uživatel zaregistroval otisky prstů uživatele pomocí tlačítek. Za tímto účelem musí uživatel stisknout klávesu ENROLL a poté se LCD zeptá na zadání ID pro otisk prstu a uložit jej do paměti pomocí ID jména. Nyní tedy uživatel potřebuje zadat ID pomocí kláves NAHORU / DOLŮ. Po výběru ID musí uživatel stisknout klávesu OK (klávesa DEL). Nyní LCD požádá o vložení prstu nad modul otisků prstů. Nyní musí uživatel přiložit prst na modul pro tisk prstů a poté modul pořídí snímek prstu. Nyní LCD řekne odebrat prst z modulu otisků prstů a znovu požádat o vložení prstu znovu. Nyní uživatel potřebuje znovu přiložit prst a modul pořídí obrázek a převede jej na šablony a uloží jej podle zvoleného ID do paměti modulu otisku prstu.Nyní bude uživatel registrován a bude moci krmit docházku vložením modulu prstu přes otisk prstu. Stejnou metodou budou všichni uživatelé zaregistrováni do systému.
Pokud nyní chce uživatel odebrat nebo smazat uložené ID nebo otisky prstů, musí stisknout klávesu DEL. Po stisknutí klávesy pro smazání LCD displej vyzve k výběru ID, které je třeba smazat. Nyní musí uživatel vybrat ID a stisknout tlačítko OK (stejné tlačítko DEL). Nyní vám LCD oznámí, že otisk prstu byl úspěšně odstraněn.
Jak docházka funguje v tomto projektu systému docházky otisků prstů:
Kdykoli uživatel umístí prst na modul otisků prstů, pak modul otisků prstů pořídí snímek prstu a vyhledá, zda je s tímto otiskem prstu v systému spojeno nějaké ID. Pokud je detekováno ID otisku prstu, na LCD displeji se zobrazí Attendance registered a současně bzučák jednou pípne a LED zhasne, dokud není systém připraven znovu přijmout vstup.
Spolu s modulem otisků prstů jsme také použili modul RTC pro čas a datum. Čas a datum v systému běží nepřetržitě. Arduino tedy potřebuje čas a datum, kdykoli skutečný uživatel umístí prst na otisk prstu, a uloží je do EEPROM v přiděleném slotu paměti.
Zde jsme v tomto systému vytvořili 5 uživatelských prostor po dobu 30 dnů. Stisknutím tlačítka RESET v Arduinu a následným okamžitým zaregistrováním bude klíč odpovědný za stahování docházkových dat přes sériový monitor z paměti EEPROM Arduino.
Správa paměti:
V Arduino UNO máme 1023 bajtovou paměť, z čehož máme 1018 bajtů pro ukládání dat a po dobu 30 dnů jsme odebrali 5 údajů o docházce uživatelů. A každá docházka zaznamená čas a datum, takže se z toho stanou 7bajtová data.
Celková požadovaná paměť je tedy
5 * 30 * 7 = 1050, takže zde potřebujeme více 32 bajtů
Ale pokud budeme používat 4 uživatele, pak jsme požadovali
4 * 30 * 7 = 840
Zde jsme provedli demonstraci projektu tím, že jsme si vzali paměť 5 uživatelů. Tím, že nebudeme moci uložit 32 bajtů nebo 5 evidence docházky na 5 -tého uživatele.
Můžete to zkusit 4 uživateli změnou některých řádků v kódu. Udělal jsem komentáře v kódu, kde jsou potřebné změny.
Schéma zapojení a popis projektu systému docházky otisků prstů
Okruh tohoto projektu docházkového systému založeného na otiscích prstů, jak je znázorněno na výše uvedeném diagramu, je poměrně jednoduchý. Má Arduino pro ovládání celého procesu projektu, tlačítko pro registraci, mazání, výběr ID a pro docházku, bzučák pro výstrahu, LED pro indikaci a LCD pro instruování uživatele a zobrazování výsledných zpráv.
Jak je znázorněno na schématu zapojení, tlačítko je přímo připojeno k pinům A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) Arduina vzhledem k zemi a žlutá LED je připojena na Digital pin D7 Arduina vzhledem k zemi přes rezistor 1k. Moduly Rx a Tx modulu otisků prstů přímo připojené na sériový pin D2 a D3 (softwarové sériové rozhraní) Arduina. Napájení 5 V se používá k napájení modulu otisku prstu odebraného z desky Arduino. Na pinu A5 je také připojen bzučák. 16x2 LCD je konfigurován ve 4bitovém režimu a jeho RS, EN, D4, D5, D6 a D7 jsou přímo připojeny na digitální piny D13, D12, D11, D10, D9 a D8 společnosti Arduino.
Vysvětlení kódu:
Systémový kód otisků prstů docházky pro Arduino jsou uvedeny v následujících kapitolách. Ačkoli je kód vysvětlen dobře pomocí komentářů, diskutujeme zde o několika důležitých částech kódu. Knihovnu otisků prstů jsme použili pro propojení modulu otisků prstů s deskou Arduino.
Nejprve zahrneme soubor záhlaví a definujeme vstupní a výstupní pin a definujeme makro a deklarované proměnné. Poté ve funkci nastavení dáme směr definovanému kolíku a zahájíme modul LCD a otisk prstu
Poté musíme napsat kód pro stahování docházkových dat.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (registrace, INPUT_PULLUP); pinMode (nahoru, INPUT_PULLUP); pinMode (dolů, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (shoda, INPUT_PULLUP); pinMode (bzučák, VÝSTUP); pinMode (indFinger, OUTPUT); digitalWrite (bzučák, NÍZKÝ); if (digitalRead (enroll) == 0) {digitalWrite (bzučák, VYSOKÝ); zpoždění (500); digitalWrite (bzučák, NÍZKÝ); lcd.clear (); lcd.print ("Čekejte prosím"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Poté musíme napsat kód pro vymazání údajů o docházce z EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Počkejte prosím"); lcd.setCursor (0,1); lcd.print ("Resetování….."); pro (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); pro (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Reset systému"); zpoždění (1000); }
Poté spustíme modul otisků prstů, který zobrazuje uvítací zprávu přes LCD a také inicializovaný modul RTC.
Poté jsme ve funkci smyčky načetli čas RTC a zobrazili jej na LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Čas->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Datum->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Poté čeká na zadání otisku prstu a porovnání ID zachyceného obrázku s uloženými ID. Pokud dojde ke shodě, pokračujte dalším krokem. A také kontrola zápisu del klíčů
int result = getFingerprintIDez (); if (výsledek> 0) {digitalWrite (indFinger, LOW); digitalWrite (bzučák, VYSOKÝ); zpoždění (100); digitalWrite (bzučák, NÍZKÝ); lcd.clear (); lcd.print ("ID:"); lcd.print (výsledek); lcd.setCursor (0,1); lcd.print ("Počkejte prosím…"); zpoždění (1000); účast (výsledek); lcd.clear (); lcd.print ("Docházka"); lcd.setCursor (0,1); lcd.print („Registrováno“); zpoždění (1000); digitalWrite (indFinger, HIGH); vrátit se; }
Daná funkce void checkKeys () se používá ke kontrole, zda je nebo není stisknuto tlačítko Zapsat nebo DEL a co dělat, pokud je stisknuto. Pokud stisknete klávesu ENROLL, vyvolá se funkce Enroll () a stiskne se klávesa DEL, pak se vyvolá funkce delete () .
funkce void delet () slouží k zadání ID, které má být odstraněno, a volání funkce uint8_t deleteFingerprint (uint8_t id), která odstraní prst ze záznamů.
Daná funkce se používá k pořizování snímků otisků prstů a jejich převodu na šablonu a uložení také pomocí vybraného ID do paměti modulu otisků prstů.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID prstu:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Umístit prst"); zpoždění (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Daná funkce slouží k ukládání docházkového času a data v přiděleném slotu EEPROM
neplatná docházka (int id) {int uživatel = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; uživatel = uživatel1 ++; } else if (id == 2) {eepLoc = 210; uživatel = uživatel2 ++; } else if (id == 3)………….
Daná funkce se používá k načítání dat z EEPROM a odesílání 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 ++));………….