- Nödvändiga komponenter
- Projekt beskrivning:
- FingerPrint-modul:
- Arbeta med fingeravtrycksbaserat närvarosystem
- Kretsschema och beskrivning för fingeravtrycksdeltagarsystemprojekt
- Kodförklaring:
Närvarosystem är vanligt förekommande system för att markera närvaron på kontor och skolor. Från att manuellt markera närvaron i närvaroregister till att använda högteknologiska applikationer och biometriska system har dessa system förbättrats avsevärt. I våra tidigare projekt har vi täckt några andra elektroniska närvaroprojekt med RFID- och AVR-mikrokontroller, 8051 och raspberry Pi. I det här projektet använde vi fingeravtrycksmodul och Arduino för att ta och behålla närvarodata och register. Genom att använda fingeravtryckssensorn blir systemet säkrare för användarna. Följande avsnitt förklarar tekniska detaljer för att skapa ett fingeravtrycksbaserat biometriskt närvarosystem med Arduino.
Nödvändiga komponenter
- Arduino -1
- Fingeravtrycksmodul -1
- Tryckknapp - 4
- Lysdioder -1
- 1K Motstånd -2
- 2,2K motstånd -1
- Kraft
- Anslutande ledningar
- Låda
- Summer -1
- 16x2 LCD -1
- Brödbräda -1
- RTC-modul -1
Projekt beskrivning:
I denna systemkrets för fingeravtrycksanvändning använde vi Fingerprint Sensor-modulenför att autentisera en riktig person eller anställd genom att ta med fingerinmatningen i systemet. Här använder vi fyra tryckknappar för att registrera, Radera, UPP / NER. ENROLL- och DEL-tangenten har tre funktioner. ENROLL-nyckel används för att registrera en ny person i systemet. Så när användaren vill registrera ett nytt finger måste han / hon trycka på ENROLL-tangenten och sedan frågar LCD om ID, där användaren vill lagra fingeravtrycksbilden. Om användaren vid den här tiden inte vill gå vidare kan han / hon trycka på ENROLL-knappen igen för att gå tillbaka. Den här gången beter sig ENROLL-tangenten som bakåtknappen, dvs. ENROLL-tangenten har både inskrivnings- och bakfunktion. Förutom registreringsnyckeln används också för att ladda ner närvarodata över seriell bildskärm. På samma sätt har DEL / OK-tangenten också samma dubbla funktion som när användaren registrerar nytt finger,då måste han / hon välja finger-ID genom att använda en annan två-tangent, nämligen UPP och NER. Nu måste användaren trycka på DEL / OK-tangenten (den här gången fungerar denna tangent som OK) för att fortsätta med valt ID. Och Del-tangenten används för att återställa eller radera data från EEPROM i Arduino.
FingerPrint-modul:
Fingeravtryckssensormodulen fångar fingeravtrycksbilden och konverterar den sedan till motsvarande mall och sparar dem i sitt minne enligt valt ID av Arduino. Hela processen styrs av Arduino som att ta en bild av fingeravtryck, konvertera den till mallar och lagra som ID etc. Du kan kontrollera några fler projekt med hjälp av fingeravtrycksmodulen:
Fingeravtrycksbaserat säkerhetssystem
Fingeravtrycksbaserad biometrisk röstmaskin
Här har vi lagt till en gul lysdiod som indikerar att fingeravtrycksmodulen är redo att ta en bild av fingret. En summer används också för olika indikationer. Arduino är huvudkomponenten i detta system och ansvarar för kontrollen av hela systemet.
Arbeta med fingeravtrycksbaserat närvarosystem
Arbetet med detta fingeravtryckssystemsprojektär ganska enkelt. Först och främst måste användaren registrera fingeravtryck från användaren med hjälp av tryckknappar. För att göra detta måste användaren trycka på ENROLL-tangenten och sedan ber LCD om att ange ID för fingeravtrycket för att spara det i minnet efter ID-namn. Så nu måste användaren ange ID med UPP / NER-tangenterna. Efter att ha valt ID måste användaren trycka på OK-tangenten (DEL-tangenten). Nu kommer LCD att be om att placera fingret över fingeravtrycksmodulen. Nu måste användaren placera fingret över fingeravtrycksmodulen och sedan tar modulen fingerbild. Nu säger LCD-skärmen att du ska ta bort fingret från fingeravtrycksmodulen och återigen be om att placera fingret igen. Nu måste användaren sätta fingret igen och modulen tar en bild och konverterar den till mallar och lagrar den med valt ID i fingeravtrycksmodulens minne.Nu kommer användaren att registreras och han / hon kan mata närvaro genom att sätta fingret över fingeravtrycksmodulen. På samma sätt registreras alla användare i systemet.
Om användaren nu vill ta bort eller ta bort något av det lagrade ID: n eller fingeravtrycket måste han / hon trycka på DEL-tangenten. När du har tryckt på Delete-tangenten kommer LCD att be att välja ID som måste raderas. Nu måste användaren välja ID och trycka på OK-tangenten (samma DEL-tangent). Nu kommer LCD att meddela dig att fingeravtryck har tagits bort.
Hur närvaro fungerar i detta projekt för fingeravtrycksdeltagarsystem:
Närhelst användaren lägger fingret över fingeravtrycksmodulen så fångar fingeravtrycksmodulen fingerbild och söker om något ID är associerat med detta fingeravtryck i systemet. Om fingeravtrycks-ID detekteras kommer LCD att visa registrerad närvaro och samtidigt piper en summer och LED kommer att stängas av tills systemet är redo att ta in igen.
Tillsammans med fingeravtrycksmodulen har vi också använt en RTC-modul för tid och datum. Tid och datum körs kontinuerligt i systemet. Så Arduino tar tid och datum när en riktig användare lägger fingret över fingeravtrycket och sparar dem i EEPROM vid den tilldelade minnesplatsen.
Här har vi skapat 5 användarutrymmen i detta system i 30 dagar. Genom att trycka på RESET-knappen i Arduino och sedan omedelbart registrera kommer nyckeln att vara ansvarig för att ladda ner närvarodata över seriell bildskärm från Arduino EEPROM-minnet.
Minneshantering:
Vi har 1023 byte-minne i Arduino UNO, varav vi har 1018 byte för att lagra data och vi har tagit 5 användardeltagardata i 30 dagar. Och varje närvaro registrerar tid och datum så detta blir 7-byte-data.
Så det krävs totalt minne
5 * 30 * 7 = 1050 så här behöver vi fler 32 byte
Men om vi kommer att använda fyra användare så krävde vi
4 * 30 * 7 = 840
Här har vi gjort detta projekt demonstration genom att ta 5 användare minne. Genom detta kommer vi inte att kunna lagra 32 byte eller 5 närvaroposter för den femte användaren.
Du kan prova det av fyra användare genom att ändra några rader i kod. Jag har gjort kommentarerna i koden där ändringarna behövs.
Kretsschema och beskrivning för fingeravtrycksdeltagarsystemprojekt
Kretsen för detta fingeravtrycksbaserade närvarosystemsprojekt, som visas i ovanstående diagram är ganska enkel. Den har Arduino för att styra hela processen i projektet, tryckknapp för att registrera, radera, välja ID och för närvaro, en summer för varning, lysdioder för indikering och LCD för att instruera användaren och visa de resulterande meddelandena.
Som visas i kopplingsschemat är en tryckknapp direkt ansluten till stift A0 (ENROLL), A1 (DEL), A2 (UPP), A3 (DOWN) av Arduino i förhållande till marken och gul LED är ansluten vid Digital stift D7 av Arduino med avseende på mark genom ett 1k motstånd. Fingeravtrycksmodulens Rx och Tx direkt anslutna vid Serial pin D2 och D3 (Software Serial) i Arduino. 5v-matning används för att driva fingeravtrycksmodulen från Arduino-kortet. En summer är också ansluten vid stift A5. En 16x2 LCD är konfigurerad i 4-bitars läge och dess RS, EN, D4, D5, D6 och D7 är direktanslutna på Digital pin D13, D12, D11, D10, D9 och D8 i Arduino.
Kodförklaring:
Den fingeravtryck närvaro systemkoden för Arduino ges i de efterföljande avsnitten. Även om koden förklaras bra med kommentarer diskuterar vi här några viktiga delar av koden. Vi använde fingeravtrycksbiblioteket för att koppla fingeravtrycksmodul med Arduino-kortet.
Först och främst inkluderar vi rubrikfilen och definierar in- och utgångsstift och definierar makro och deklarerade variabler. Efter detta, i installationsfunktionen, ger vi riktning till definierad stift och initierar LCD- och fingeravtrycksmodul
Efter det måste vi skriva kod för nedladdning av närvarodata.
ogiltig installation () {fördröjning (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (registrera, INPUT_PULLUP); pinMode (upp, INPUT_PULLUP); pinMode (ner, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (matchning, INPUT_PULLUP); pinMode (summer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (summer, LOW); om (digitalRead (registrera) == 0) {digitalWrite (summer, HÖG); fördröjning (500); digitalWrite (summer, LOW); lcd.clear (); lcd.print ("Vänligen vänta"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Efter det måste vi skriva kod för att rensa närvarodata från EEPROM.
om (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Vänligen vänta"); lcd.setCursor (0,1); lcd.print ("Återställer….."); för (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); för (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Systemåterställning"); fördröjning (1000); }
Efter det initierar vi fingeravtrycksmodul, visar välkomstmeddelande över LCD och även initeised RTC-modul.
Efter det, i loopfunktion, har vi läst RTC-tid och visat den på LCD
ogiltig slinga () {nu = rtc.now (); lcd.setCursor (0,0); lcd.print ("Time->"); 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 ("Date->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Efter det väntar du på att fingeravtrycket tar in och jämför inspelad bild-ID med lagrade ID. Om matchning uppstår fortsätter du med nästa steg. Och kontrollera även registrera delnycklar
int resultat = getFingerprintIDez (); om (resultat> 0) {digitalWrite (indFinger, LOW); digitalWrite (summer, HÖG); fördröjning (100); digitalWrite (summer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (resultat); lcd.setCursor (0,1); lcd.print ("Vänligen vänta…."); fördröjning (1000); närvaro (resultat); lcd.clear (); lcd.print ("Närvaro"); lcd.setCursor (0,1); lcd.print ("Registed"); fördröjning (1000); digitalWrite (indFinger, HIGH); lämna tillbaka; }
Givet void checkKeys () -funktion används för att kontrollera Enroll eller DEL-tangenten trycks in eller inte och vad man ska göra om man trycker på den. Om ENROLL-tangenten trycks in anropas Enroll () -funktionen och DEL-tangenten trycks sedan raderas () -funktionen.
void delet () -funktionen används för att ange ID som ska raderas och anropa uint8_t deleteFingerprint (uint8_t id) -funktion som tar bort finger från poster.
Given funktion används för att ta en fingeravtrycksbild och konvertera dem till mallen och spara också med valt ID i fingeravtrycksmodulens minne.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger-ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Placera finger"); fördröjning (2000); medan (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Angiven funktion används för att lagra närvarotid och datum i den tilldelade platsen för EEPROM
ogiltig närvaro (int id) {int användare = 0, eepLoc = 0; om (id == 1) {eepLoc = 0; användare = användare1 ++; } annat om (id == 2) {eepLoc = 210; användare = användare2 ++; } annat om (id == 3)………….
Angiven funktion används för att hämta data från EEPROM och skicka till seriell bildskärm
ogiltig nedladdning (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); om (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); om (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….