- Zahtevane komponente
- Opis projekta:
- Modul FingerPrint:
- Delovanje sistema za spremljanje na podlagi prstnih odtisov
- Shema vezja in opis za projekt sistema za spremljanje prstnih odtisov
- Razlaga kode:
Obiskovalni sistemi so pogosto uporabljeni sistemi za označevanje prisotnosti v pisarnah in šolah. Ti sistemi so se znatno izboljšali od ročnega označevanja prisotnosti v registrih prisotnosti do uporabe visokotehnoloških aplikacij in biometričnih sistemov. V prejšnjih projektih smo pokrili nekaj drugih projektov elektronskega sistema udeležbe z uporabo mikrokrmilnika RFID in AVR, 8051 in maline Pi. V tem projektu smo uporabili Modul prstnih odtisov in Arduino za zajemanje in vodenje podatkov in evidenc o prisotnosti. Z uporabo senzorja za prstne odtise bo sistem postal varnejši za uporabnike. V naslednjih razdelkih so razložene tehnične podrobnosti izdelave biometričnega sistema prisotnosti na podlagi prstnih odtisov z uporabo Arduina.
Zahtevane komponente
- Arduino -1
- Modul za tiskanje prstov -1
- Gumb - 4
- LED-diode -1
- 1K upor -2
- 2.2K upor -1
- Moč
- Priključne žice
- Škatla
- Zvočni signal -1
- 16x2 LCD -1
- Deska za kruh -1
- RTC modul -1
Opis projekta:
V tem vezju sistema za spremljanje prstnih odtisov smo uporabili modul senzorja za prstne odtiseza preverjanje pristnosti resnične osebe ali zaposlenega z vnosom prstov v sistem. Tukaj uporabljamo 4 tipke za vpis, Delete, UP / Down. Tipka ENROLL in DEL ima tri funkcije. Tipka ENROLL se uporablja za vpis nove osebe v sistem. Torej, ko uporabnik želi vpisati nov prst, mora pritisniti tipko ENROLL, nato LCD vpraša ID, kamor želi uporabnik shraniti sliko prstnega odtisa. Če uporabnik trenutno ne želi nadaljevati, lahko za vrnitev znova pritisne tipko ENROLL. Tokrat se tipka ENROLL obnaša kot tipka Nazaj, tj. Tipka ENROLL ima funkcijo vpisa in nazaj. Poleg vpisne tipke se uporablja tudi za prenos podatkov o prisotnosti preko serijskega monitorja. Podobno ima tipka DEL / OK tudi enako dvojno funkcijo, kot kadar uporabnik vpiše nov prst,nato mora izbrati ID prsta z uporabo dveh tipk GOR in DOL. Zdaj mora uporabnik pritisniti tipko DEL / OK (tokrat se ta tipka obnaša kot OK), da nadaljuje z izbranim ID-jem. Tipka Del se uporablja za ponastavitev ali brisanje podatkov iz EEPROM-a Arduino.
Modul FingerPrint:
Modul senzorja za prstne odtise zajame sliko prstnega odtisa, nato pa jo pretvori v enakovredno predlogo in shrani v svoj pomnilnik, kot je izbral ID Arduino. Ves postopek zapoveduje Arduino, na primer fotografiranje prstnih odtisov, pretvorba v predloge in shranjevanje kot ID itd. Še nekaj projektov lahko preverite z modulom prstnih odtisov:
Varnostni sistem na podlagi prstnih odtisov
Biometrični glasovalni stroj na osnovi prstnih odtisov
Tu smo dodali rumeno LED, ki označuje, da je modul prstnih odtisov pripravljen za fotografiranje prsta. Zvočni signal se uporablja tudi za različne indikacije. Arduino je glavni sestavni del tega sistema, odgovoren je za nadzor celotnega sistema.
Delovanje sistema za spremljanje na podlagi prstnih odtisov
Delovanje tega projekta sistema za obisk prstnih odtisovje dokaj preprosto. Najprej mora uporabnik s pomočjo tipk vnesti prstne odtise uporabnika. Če želite to narediti, mora uporabnik pritisniti tipko ENROLL in nato LCD vpraša za vnos ID-ja za prstni odtis, da ga shrani v pomnilnik z imenom ID-ja. Zdaj mora uporabnik vnesti ID s tipkami GOR / DOL. Po izbiri ID-ja mora uporabnik pritisniti tipko OK (tipka DEL). Zdaj bo LCD prosil, da položite prst na modul prstnih odtisov. Zdaj mora uporabnik položiti prst na modul za tiskanje prstov in nato modul posname sliko prsta. Zdaj bo LCD rekel, da odstranite prst iz modula za prstne odtise, in spet prosil, da ga položite. Zdaj mora uporabnik spet dati prst in modul posname sliko, jo pretvori v predloge in jo shrani z izbranim ID-jem v pomnilnik modula za tiskanje prstov.Zdaj bo uporabnik registriran in se bo lahko udeležil krme, tako da bo položil prst na modul prstnih odtisov. Na enak način bodo vsi uporabniki prijavljeni v sistem.
Zdaj, če želi uporabnik odstraniti ali izbrisati katerega koli shranjenega ID-ja ali prstnega odtisa, mora pritisniti tipko DEL. Ko pritisnete tipko za brisanje, bo LCD pozval, da izberete ID, ki ga je treba izbrisati. Zdaj mora uporabnik izbrati ID in pritisniti tipko OK (ista tipka DEL). Zdaj vas bo LCD obvestil, da je bil prstni odtis uspešno izbrisan.
Kako Attendance deluje v tem projektu sistema za spremljanje prstnih odtisov:
Kadar koli uporabnik položi prst na modul prstnih odtisov, potem modul prstnih odtisov zajame prstno sliko in poišče, ali je v sistemu s tem prstnim odtisom povezan kakšen ID. Če je zaznan ID prstnega odtisa, bo na LCD-prikazovalniku prikazano Udeležba registrirana, hkrati pa bo zvočni signal enkrat zapiskal in lučka LED ugasnila, dokler sistem ne bo spet pripravljen za vnos.
Skupaj z modulom prstnih odtisov smo uporabili tudi modul RTC za čas in datum. Čas in datum se v sistemu neprekinjeno izvajata. Tako Arduino vzame čas in datum, kadar resnični uporabnik položi prst na prstni odtis in jih shrani v EEPROM v dodeljeno režo pomnilnika.
Tu smo v tem sistemu ustvarili 5 uporabniških prostorov za 30 dni. S pritiskom na gumb RESET v Arduinu in nato s takojšnjo vpisno tipko bo odgovoren za prenos podatkov o prisotnosti prek serijskega monitorja iz pomnilnika Arduino EEPROM.
Upravljanje pomnilnika:
V Arduino UNO imamo 1023 bajtov pomnilnika, od tega imamo 1018 bajtov za shranjevanje podatkov in smo vzeli 5 podatkov o prisotnosti uporabnikov za 30 dni. Vsaka udeležba bo zabeležila uro in datum, tako da bodo to 7-bajtni podatki.
Torej je potreben celoten pomnilnik
5 * 30 * 7 = 1050, zato potrebujemo več 32 bajtov
Če pa bomo uporabili 4 uporabnike, potem smo zahtevali
4 * 30 * 7 = 840
Tu smo izvedli predstavitev tega projekta z zajemom 5 uporabniškega pomnilnika. S tem ne bomo mogli shraniti 32 bajt ali 5 sejnin evidenco 5 th uporabnika.
Poskusite lahko 4 uporabniki, tako da spremenite nekaj vrstic v kodi. V kodo sem dal pripombe, kjer so potrebne spremembe.
Shema vezja in opis za projekt sistema za spremljanje prstnih odtisov
Vezje tega projekta sistema prisotnosti na podlagi prstnih odtisov je, kot je prikazano na zgornjem diagramu, precej preprosto. Ima Arduino za nadzor celotnega procesa projekta, gumb za vpis, brisanje, izbiro osebnih dokumentov in za udeležbo, zvočni signal za opozarjanje, LED za indikacijo in LCD, ki uporabnika poučuje in prikazuje nastala sporočila.
Kot je prikazano na shemi vezja, je tipka neposredno priključena na zatič A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOL) Arduina glede na zemljo. Rumena LED je priključena na digitalni zatič D7 Arduino glede na zemljo skozi 1k upor. Rx in Tx modula prstnih odtisov sta neposredno priključena na zaporedni pin D2 in D3 (programski serijski) Arduino. Napajanje 5v se uporablja za napajanje modula za odtis prstov, prevzetega s plošče Arduino. Na pin A5 je priključen tudi zvočni signal. LCD 16x2 je konfiguriran v 4-bitnem načinu, njegovi RS, EN, D4, D5, D6 in D7 pa so neposredno povezani na digitalni pin D13, D12, D11, D10, D9 in D8 Arduina.
Razlaga kode:
Sistem koda prisotnosti prstnih odtisov za arduino je podan v naslednjih poglavjih. Čeprav je koda dobro pojasnjena s komentarji, tukaj razpravljamo o nekaj pomembnih delih kode. Za povezovanje modula za prstni odtis s ploščo Arduino smo uporabili knjižnico prstnih odtisov.
Najprej vključimo glavo in določimo vhodni in izhodni pin ter definiramo makro in deklarirane spremenljivke. Po tem v nastavitveni funkciji damo smer določenemu pinu in sprožimo LCD in modul za tiskanje prstov
Po njem moramo napisati kodo za prenos podatkov o prisotnosti.
void setup () {zamuda (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (vpis, INPUT_PULLUP); pinMode (gor, INPUT_PULLUP); pinMode (navzdol, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (ujemanje, INPUT_PULLUP); pinMode (brenčalo, IZHOD); pinMode (indFinger, OUTPUT); digitalWrite (brenčalo, LOW); if (digitalRead (enroll) == 0) {digitalWrite (brenčalo, VISOKO); zamuda (500); digitalWrite (brenčalo, LOW); lcd.clear (); lcd.print ("Prosim počakajte"); lcd.setCursor (0,1); lcd.print ("Prenašanje podatkov");
Potem moramo napisati kodo za brisanje podatkov o prisotnosti iz EEPROM-a.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Prosim počakajte"); lcd.setCursor (0,1); lcd.print ("Reseting….."); za (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); za (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Ponastavitev sistema"); zamuda (1000); }
Po njem sprožimo modul za tiskanje prstov, ki prikaže pozdravno sporočilo preko LCD-ja in tudi začetni modul RTC.
Po njem smo v funkciji zanke prebrali čas RTC in ga prikazali na LCD-ju
void loop () {zdaj = 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 (zdaj.dan (), DEC); lcd.print ('/'); lcd.print (zdaj.mesec (), DEC); lcd.print ('/'); lcd.print (zdaj.leto (), DEC);
Po njem čakamo, da prstni odtis vnese in primerja ID zajete slike s shranjenimi ID-ji. Če pride do zapiranja, nadaljujte z naslednjim korakom. In preverjanje vpisa del tipk
int rezultat = getFingerprintIDez (); if (rezultat> 0) {digitalWrite (indFinger, LOW); digitalWrite (brenčalo, VISOKO); zamuda (100); digitalWrite (brenčalo, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (rezultat); lcd.setCursor (0,1); lcd.print ("Prosimo, počakajte…."); zamuda (1000); prisotnost (rezultat); lcd.clear (); lcd.print ("Udeležba"); lcd.setCursor (0,1); lcd.print ("Registriran"); zamuda (1000); digitalWrite (indFinger, HIGH); vrnitev; }
Funkcija void checkKeys () se uporablja za preverjanje, ali je tipka za vpis ali pritisnjena ali ne in kaj storiti, če pritisnete Če pritisnete tipko ENROLL, pritisnete funkcijo Enroll () in pritisnete tipko DEL, nato pa funkcijo delete () .
void delet () se uporablja za vnos ID-ja, ki ga je treba izbrisati, in za klic funkcije uint8_t deleteFingerprint (uint8_t id), ki bo izbrisala prst iz zapisov.
Podana funkcija se uporablja za zajemanje slik s prstnim odtisom, njihovo pretvorbo v predlogo in shranjevanje z izbranim ID-jem v pomnilnik modula za tiskanje prstov.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID prsta:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Place Finger"); zamuda (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Dana funkcija se uporablja za shranjevanje ure in datuma prisotnosti v dodeljenem režu EEPROM-a
neveljavna udeležba (int id) {int user = 0, eepLoc = 0; če (id == 1) {eepLoc = 0; uporabnik = uporabnik1 ++; } sicer če (id == 2) {eepLoc = 210; uporabnik = uporabnik2 ++; } sicer če (id == 3)………….
Dana funkcija se uporablja za pridobivanje podatkov iz EEPROM-a in pošiljanje na serijski monitor
prenehanje prenosa (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); če (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); če (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….