- Szükséges alkatrészek
- A projekt leírása:
- FingerPrint modul:
- Az ujjlenyomat-alapú jelenléti rendszer működése
- Áramkör és leírás az ujjlenyomat-jelenléti rendszer projekthez
- Kód Magyarázat:
A jelenléti rendszereket általában használják az irodákban és az iskolákban való jelenlét jelzésére. A jelenléti nyilvántartásokban való részvétel manuális megjelölésétől a csúcstechnológiás alkalmazások és biometrikus rendszerek használatáig ezek a rendszerek jelentősen javultak. Korábbi projektjeinkben kevés más elektronikus jelenléti rendszer projektet érintettünk RFID és AVR mikrokontroller, 8051 és málna Pi alkalmazásával. Ebben a projektben ujjlenyomat-modult és Arduino-t használtunk a jelenléti adatok és nyilvántartások felvételére és vezetésére. Az ujjlenyomat-érzékelő használatával a rendszer biztonságosabbá válik a felhasználók számára. A következő szakaszok elmagyarázzák az ujjlenyomat-alapú biometrikus jelenléti rendszer Arduino használatával történő elkészítésének technikai részleteit.
Szükséges alkatrészek
- Arduino -1
- Ujjlenyomat-modul -1
- Nyomógomb - 4
- LED-ek -1
- 1K ellenállás -2
- 2,2K ellenállás -1
- Erő
- Csatlakozó vezetékek
- Doboz
- Zümmögő -1
- 16x2 LCD -1
- Kenyérlap -1
- RTC -1 modul
A projekt leírása:
Ebben az ujjlenyomat-jelenléti rendszer áramkörében Fingerprint Sensor modult használtunkhogy igaz személyt vagy alkalmazottat hitelesítsen azáltal, hogy ujjával beviszi a rendszerbe. Itt négy nyomógomb segítségével regisztrálhatunk, törölhetünk, fel / le. Az ENROLL és a DEL gomboknak háromféle funkciója van. Az ENROLL kulcs új személy beíratására szolgál a rendszerbe. Tehát, amikor a felhasználó új ujjat akar regisztrálni, akkor meg kell nyomnia az ENROLL gombot, majd az LCD kéri az azonosítót, ahol a felhasználó az ujjlenyomat képét tárolni kívánja. Ha most a felhasználó nem akar tovább haladni, akkor újra megnyomhatja az ENROLL gombot. Ezúttal az ENROLL gomb Vissza gombként viselkedik, vagyis az ENROLL kulcsnak mind a regisztráció, mind a vissza funkciója van. A beiratkozási kulcs mellett a jelenléti adatok letöltésére is soros monitoron keresztül kerül sor. Hasonlóképpen, a DEL / OK gombnak ugyanaz a kettős funkciója van, mint amikor a felhasználó új ujjat ír be,akkor ki kell választania az ujjazonosítót egy másik két billentyűvel, nevezetesen az FEL és LE gombokkal. Most a felhasználónak meg kell nyomnia a DEL / OK gombot (ezúttal ez a gomb OK-ként viselkedik) a kiválasztott azonosító folytatásához. A Del kulcsot az adatok alaphelyzetbe állítására vagy törlésére használják az Arduino EEPROM-ból.
FingerPrint modul:
Az ujjlenyomat-érzékelő modul rögzíti az ujjlenyomat képét, majd átalakítja az egyenértékű sablonba, és elmenti a memóriájába az Arduino által kiválasztott azonosító szerint. Az összes folyamatot az Arduino parancsolja, például képet készít az ujjlenyomatról, átalakítja sablonokká és tárolja azonosítóként stb. További néhány projektet ellenőrizhet az ujjlenyomat-modul segítségével:
Ujjlenyomat-alapú biztonsági rendszer
Ujjlenyomat-alapú biometrikus szavazógép
Itt hozzáadtunk egy sárga LED-et, amely jelzi, hogy az ujjlenyomat-modul készen áll arra, hogy képet készítsen az ujjáról. A különféle jelzésekhez hangjelzőt is használnak. Az Arduino a rendszer fő alkotóeleme, ezért felelős az egész rendszer irányításáért.
Az ujjlenyomat-alapú jelenléti rendszer működése
Az ujjlenyomat-nyilvántartási rendszer projektjének kidolgozásameglehetősen egyszerű. Először is, a felhasználónak nyomógombok segítségével regisztrálnia kell a felhasználó ujjlenyomatát. Ehhez a felhasználónak meg kell nyomnia az ENROLL gombot, majd az LCD kéri az ujjlenyomat azonosítójának megadását, hogy azonosítónév szerint mentse a memóriába. Tehát most a felhasználónak meg kell adnia az azonosítót a FEL / LE billentyűk használatával. Az ID kiválasztása után a felhasználónak meg kell nyomnia az OK gombot (DEL gomb). Most az LCD megkéri, hogy tegye az ujját az ujjlenyomat-modulra. Most a felhasználónak az ujjlenyomat-modul fölé kell helyeznie az ujját, majd a modul ujjképet készít. Most az LCD azt mondja, hogy távolítsa el az ujját az ujjlenyomat-modulról, és ismét megkéri, hogy tegye vissza az ujját. Most a felhasználónak újra be kell tennie az ujját, és a modul elkészít egy képet, sablonokká alakítja át, és a kiválasztott azonosító szerint tárolja az ujjlenyomat-modul memóriájában.Most a felhasználó regisztrálásra kerül, és az ujjlenyomat-modul fölé helyezve táplálhatja a részvételt. Ugyanezzel a módszerrel az összes felhasználót regisztrálják a rendszerbe.
Ha a felhasználó el akarja távolítani vagy törölni a tárolt azonosítót vagy ujjlenyomatot, akkor meg kell nyomnia a DEL gombot. A törlés gomb megnyomása után az LCD kérni fogja a törlendő azonosító kiválasztását. Most a felhasználónak ki kell választania az azonosítót, és meg kell nyomnia az OK gombot (ugyanaz a DEL gomb). Most az LCD értesíti Önt arról, hogy az ujjlenyomat sikeresen törölve lett.
Hogyan működik a részvétel ebben az ujjlenyomat-figyelő rendszer projektben:
Amikor a felhasználó az ujját az ujjlenyomat-modul fölé helyezi, akkor az ujjlenyomat-modul rögzíti az ujj képét, és megkeresi, ha van-e valamilyen azonosító az ujjlenyomathoz a rendszerben. Ha ujjlenyomat-azonosítót észlel, az LCD-n megjelenik a Részvétel regisztrálva, és ezzel egyidőben a hangjelzés sípol, és a LED kialszik, amíg a rendszer készen áll a bevitel ismételt elvégzésére.
Az ujjlenyomat-modullal együtt RTC-modult is használtunk az Idő és a Dátum számára. Az idő és a dátum folyamatosan fut a rendszerben. Tehát Arduino időt és dátumot vesz igénybe, valahányszor egy igazi felhasználó az ujját az ujjlenyomat fölé helyezi, és elmenti az EEPROM-ba a kijelölt memóriahelyen.
Itt 5 felhasználói helyet hoztunk létre ebben a rendszerben 30 napig. Ha megnyomja a RESET gombot az Arduino-ban, majd azonnal beiratkozik, akkor a felelősség a jelenléti adatok soros monitoron keresztüli letöltése az Arduino EEPROM memóriából.
Memóriakezelés:
1023 bájt memóriával rendelkezünk az Arduino UNO-ban, amelyből 1018 bájt áll rendelkezésünkre az adatok tárolására, és 5 felhasználói jelenléti adatot vettünk 30 napig. És minden részvétel rögzíti az időt és a dátumot, így ezek 7 bájtos adatokká válnak.
Tehát a teljes memória szükséges
5 * 30 * 7 = 1050, tehát itt további 32 bájtra van szükségünk
De ha 4 felhasználót fogunk használni, akkor szükségünk volt rá
4 * 30 * 7 = 840
Itt elvégeztük ezt a projektbemutatót úgy, hogy 5 felhasználó memóriáját vettük fel. Ezzel nem fogunk képes tárolni 32 byte vagy 5 ívet az 5 th felhasználó.
Megpróbálhatja 4 felhasználó, megváltoztatva néhány sort a kódban. A megjegyzéseket a kódban tettem, ahol szükségesek a változtatások.
Áramkör és leírás az ujjlenyomat-jelenléti rendszer projekthez
Ennek az ujjlenyomat alapú jelenléti rendszer projektnek az áramköre, amint azt a fenti ábra mutatja, meglehetősen egyszerű. Arduino-val rendelkezik a projekt összes folyamatának vezérléséhez, nyomógomb a regisztrációhoz, törléshez, azonosítók kiválasztásához és a részvételhez, egy hangjelző a riasztáshoz, a LED-ek a jelzéshez és az LCD-k a felhasználó utasításához és a kapott üzenetek megjelenítéséhez.
Amint az áramköri ábra mutatja, egy nyomógomb közvetlenül csatlakozik az Arduino A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) csatlakozóihoz a talajhoz viszonyítva, és a sárga LED a D7 digitális érintkezőhöz csatlakozik az Arduino talajához képest 1k ellenállással. Az ujjlenyomat-modul Rx és Tx közvetlenül csatlakozik az Arduino D2 és D3 (szoftver soros) soros csatlakozóihoz. Az 5v-os tápegységet az Arduino kártyáról vett ujjlenyomat-modul táplálásához használják. Az A5 érintkezőnél egy hangjelző is csatlakozik. A 16x2 LCD 4 bites módban van konfigurálva, és RS, EN, D4, D5, D6 és D7 közvetlenül csatlakozik az Arduino D13, D12, D11, D10, D9 és D8 digitális érintkezőihez.
Kód Magyarázat:
Az arduino ujjlenyomat-nyilvántartási rendszerének kódja a következő szakaszokban található. Bár a kódot kommentekkel jól magyarázzák, itt a kód néhány fontos részét tárgyaljuk. Ujjlenyomat-könyvtárat használtunk az ujjlenyomat- modul Arduino táblával való összekapcsolására.
Először is belefoglaljuk a fejlécfájlt, meghatározzuk a bemeneti és kimeneti tűt, valamint meghatározzuk a makrót és a deklarált változókat. Ezt követően a beállítási funkcióban irányt adunk a meghatározott tűnek, és elindítjuk az LCD-t és az ujjlenyomat-modult
Utána kódot kell írnunk a jelenléti adatok letöltéséhez.
void setup () {delay (1000); lcdbegin (16,2); Serial.begin (9600); pinMode (regisztráció, INPUT_PULLUP); pinMode (fel, INPUT_PULLUP); pinMode (lefelé, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (egyezés, INPUT_PULLUP); pinMode (hangjelző, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (hangjelző, LOW); if (digitalRead (beiratkozás) == 0) {digitalWrite (hangjelző, HIGH); késés (500); digitalWrite (hangjelző, LOW); lcd.clear (); lcd.print ("Kérjük, várjon"); lcd.setCursor (0,1); lcd.print ("Adatok letöltése");
Utána kódot kell írnunk az EEPROM részvételi adatainak törléséhez.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Kérjük, várjon"); lcd.setCursor (0,1); lcd.print ("Visszaállítás….."); for (int i = 1000; i <1005; i ++) EEPROM.írja (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Rendszer-visszaállítás"); késés (1000); }
Ezt követően kezdeményezzük az ujjlenyomat-modult, amely megjeleníti az üdvözlő üzenetet az LCD-n keresztül, valamint a kezdeményezett RTC modult.
Ezt követően a ciklus funkcióban leolvastuk az RTC időt és megjelenítettük az LCD-n
void loop () {most = rtc.now (); lcd.setCursor (0,0); lcd.print ("Idő->"); lcd.print (most.óra (), DEC); lcd.print (':'); lcd.print (most.minute (), DEC); lcd.print (':'); lcd.print (most.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Dátum->"); lcd.print (most.nap (), DEC); lcd.print ('/'); lcd.print (most.hónap (), DEC); lcd.print ('/'); lcd.print (most.év (), DEC);
Utána várja, hogy az ujjlenyomat bevegye a képet, és összehasonlítsa a rögzített képazonosítót a tárolt azonosítókkal. Ha amatch történik, folytassa a következő lépéssel. És ellenőrizze a beiratkozási del billentyűket is
int eredmény = getFingerprintIDez (); if (eredmény> 0) {digitalWrite (indFinger, LOW); digitalWrite (hangjelző, HIGH); késés (100); digitalWrite (hangjelző, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (eredmény); lcd.setCursor (0,1); lcd.print ("Kérjük, várjon…"); késés (1000); részvétel (eredmény); lcd.clear (); lcd.print ("Részvétel"); lcd.setCursor (0,1); lcd.print ("Regisztrált"); késés (1000); digitalWrite (indFinger, HIGH); Visszatérés; }
Adott void checkKeys () függvény segítségével ellenőrizhetjük, hogy az Enroll vagy a DEL billentyűt lenyomják-e vagy sem, és mi a teendő, ha megnyomjuk. Ha az ENROLL gombot megnyomta, az Enroll () funkció meghívásra kerül, és a DEL gomb megnyomása, majd a törlés () funkció meghívása.
A void delet () függvény a törlendő azonosító megadásához és az uint8_t deleteFingerprint (uint8_t id) függvény hívásához használható , amely törli az ujját a rekordokból.
A Given Function használatával ujjlenyomat-képeket készít, átalakítja azokat sablonokká, és a kiválasztott azonosítókkal elmenti az ujjlenyomat-modul memóriájába.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ujj azonosító:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Hely ujj"); késés (2000); míg (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Az adott funkció a jelenléti idő és dátum tárolására szolgál az EEPROM kijelölt résében
érvénytelen részvétel (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; felhasználó = felhasználó1 ++; } else if (id == 2) {eepLoc = 210; felhasználó = felhasználó2 ++; } else if (id == 3)………….
Az adott funkció az adatok lekérésére szolgál az EEPROM-ból és elküldésre a soros monitorra
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Soros.nyomtatás ('0'); Serial.print (EEPROM.read (eepIndex ++)); Soros.nyomtatás (':'); if (EEPROM.read (eepIndex) <10) Soros.nyomtatás ('0'); Serial.print (EEPROM.read (eepIndex ++));………….