- Vereiste componenten
- Projectbeschrijving:
- Vingerafdrukmodule:
- Werking van op vingerafdrukken gebaseerd aanwezigheidssysteem
- Schakelschema en beschrijving voor project voor vingerafdrukbeheersysteem
- Code Verklaring:
Aanwezigheidssystemen zijn veelgebruikte systemen om de aanwezigheid in kantoren en scholen te markeren. Van het handmatig markeren van de aanwezigheidsregisters tot het gebruik van hoogtechnologische toepassingen en biometrische systemen, deze systemen zijn aanzienlijk verbeterd. In onze vorige projecten hebben we enkele andere projecten voor elektronische aanwezigheidssystemen behandeld met RFID- en AVR-microcontroller, 8051 en Raspberry Pi. In dit project hebben we een vingerafdrukmodule en Arduino gebruikt om aanwezigheidsgegevens en records op te nemen en bij te houden. Door een vingerafdruksensor te gebruiken, wordt het systeem veiliger voor de gebruikers. De volgende secties leggen de technische details uit van het maken van een op vingerafdrukken gebaseerd biometrisch aanwezigheidssysteem met Arduino.
Vereiste componenten
- Arduino -1
- Vingerafdrukmodule -1
- Drukknop - 4
- LED's -1
- 1K weerstand -2
- 2.2K weerstand -1
- Kracht
- Draden aansluiten
- Doos
- Zoemer -1
- 16x2 LCD -1
- Broodplank -1
- RTC-module -1
Projectbeschrijving:
In dit circuit van het aanwezigheidssysteem voor vingerafdrukken hebben we een vingerafdruksensormodule gebruiktom een echte persoon of werknemer te authenticeren door hun vingerinvoer in het systeem te nemen. Hier gebruiken we 4 druktoetsen om in te schrijven, Verwijderen, UP / Down. ENROLL en DEL-toets heeft drievoudige functies. ENROLL-toets wordt gebruikt voor het inschrijven van een nieuwe persoon in het systeem. Dus wanneer de gebruiker een nieuwe vinger wil registreren, moet hij / zij op de ENROLL-toets drukken en vervolgens vraagt het LCD om de ID, waar de gebruiker de afbeelding van de vingerafdruk wil opslaan. Als de gebruiker op dit moment niet verder wil gaan, kan hij / zij nogmaals op de INLEREN toets drukken om terug te gaan. Deze keer gedraagt de ENROLL-toets zich als de Back-toets, dwz de ENROLL-toets heeft zowel de registratie- als de terugfunctie. Naast de registratiesleutel wordt ook de aanwezigheidsgegevens via een seriële monitor gedownload. Evenzo heeft DEL / OK-toets dezelfde dubbele functie als wanneer de gebruiker een nieuwe vinger inschrijft,dan moet hij / zij de vinger-ID selecteren door nog twee andere toetsen te gebruiken, namelijk UP en DOWN. Nu moet de gebruiker op de DEL / OK-toets drukken (deze keer gedraagt deze toets zich als OK) om verder te gaan met de geselecteerde ID. En de Del-toets wordt gebruikt voor het resetten of verwijderen van gegevens uit EEPROM van Arduino.
Vingerafdrukmodule:
De vingerafdruksensormodule legt de afbeelding van de vingerafdruk vast en converteert deze naar de equivalente sjabloon en slaat ze op in het geheugen volgens de door Arduino geselecteerde ID. Al het proces wordt aangestuurd door Arduino, zoals het maken van een foto van een vingerafdruk, deze omzetten in sjablonen en opslaan als ID enz. Je kunt nog meer projecten controleren met de vingerafdrukmodule:
Op vingerafdruk gebaseerd beveiligingssysteem
Op vingerafdruk gebaseerde biometrische stemmachine
Hier hebben we een gele LED toegevoegd die aangeeft dat de vingerafdrukmodule klaar is om een afbeelding van de vinger te maken. Een zoemer wordt ook gebruikt voor verschillende indicaties. Arduino is het belangrijkste onderdeel van dit systeem, het is verantwoordelijk voor de besturing van het hele systeem.
Werking van op vingerafdrukken gebaseerd aanwezigheidssysteem
Werking van dit project voor aanwezigheidssysteem voor vingerafdrukkenis vrij eenvoudig. Allereerst moet de gebruiker vingerafdrukken van de gebruiker registreren met behulp van drukknoppen. Om dit te doen, moet de gebruiker op de ENROLL-toets drukken en vervolgens vraagt het LCD om het invoeren van een ID voor de vingerafdruk om deze op ID-naam in het geheugen op te slaan. Dus nu moet de gebruiker de ID invoeren met de UP / DOWN-toetsen. Na het selecteren van ID, moet de gebruiker op de OK-toets (DEL-toets) drukken. Nu vraagt het LCD-scherm om een vinger over de vingerafdrukmodule te plaatsen. Nu moet de gebruiker zijn vinger over de vingerafdrukmodule plaatsen en vervolgens neemt de module een vingerbeeld. Nu zal het LCD-scherm zeggen om de vinger van de vingerafdrukmodule te verwijderen en opnieuw vragen om de vinger opnieuw te plaatsen. Nu moet de gebruiker zijn vinger opnieuw plaatsen en de module neemt een afbeelding en converteert deze naar sjablonen en slaat deze op met de geselecteerde ID op in het geheugen van de vingerafdrukmodule.Nu wordt de gebruiker geregistreerd en kan hij / zij de aanwezigheid voeden door de vinger over de vingerafdrukmodule te plaatsen. Op dezelfde manier worden alle gebruikers in het systeem geregistreerd.
Als de gebruiker nu een opgeslagen ID of vingerafdruk wil verwijderen of verwijderen, moet hij / zij op de DEL-toets drukken. Zodra de delete-toets is ingedrukt, zal het LCD-scherm vragen om de ID te selecteren die moet worden verwijderd. Nu moet de gebruiker ID selecteren en op de OK-toets drukken (dezelfde DEL-toets). Nu zal het LCD-scherm u laten weten dat de vingerafdruk met succes is verwijderd.
Hoe Attendance werkt in dit Fingerprint Attendance System-project:
Telkens wanneer de gebruiker zijn vinger over de vingerafdrukmodule plaatst, legt de vingerafdrukmodule een vingerbeeld vast en zoekt hij of er een ID is gekoppeld aan deze vingerafdruk in het systeem. Als een vingerafdruk-ID wordt gedetecteerd, toont het LCD-scherm Aanwezigheid geregistreerd en tegelijkertijd piept de zoemer één keer en gaat de LED uit totdat het systeem klaar is om weer invoer te nemen.
Naast de vingerafdrukmodule hebben we ook een RTC-module voor Tijd en datum gebruikt. Tijd en datum lopen continu in het systeem. Dus Arduino neemt de tijd en datum wanneer een echte gebruiker zijn vinger over de vingerafdruk plaatst en slaat deze op in de EEPROM op de toegewezen geheugenplaats.
Hier hebben we gedurende 30 dagen 5 gebruikersruimte in dit systeem gecreëerd. Door op de RESET-knop in Arduino te drukken en vervolgens de onmiddellijke registratiesleutel, is het verantwoordelijk voor het downloaden van aanwezigheidsgegevens via een seriële monitor van het Arduino EEPROM-geheugen.
Geheugen management:
We hebben 1023 bytes geheugen in Arduino UNO, waarvan we 1018 bytes hebben om gegevens op te slaan en we hebben gedurende 30 dagen 5 aanwezigheidsgegevens van gebruikers verzameld. En elke aanwezigheid registreert tijd en datum, zodat dit gegevens van 7 bytes worden.
Het totale benodigde geheugen is dus
5 * 30 * 7 = 1050 dus hier hebben we meer 32 bytes nodig
Maar als we 4 gebruikers gebruiken, hebben we nodig
4 * 30 * 7 = 840
Hier hebben we deze projectdemonstratie gedaan door 5 gebruikersgeheugen te gebruiken. Door deze, zullen we niet in staat zijn om 32 byte of 5 presentielijsten van de 5 op te slaan e gebruiker.
U kunt het door 4 gebruikers proberen door enkele regels in de code te wijzigen. Ik heb de opmerkingen in de code gemaakt waar de wijzigingen nodig zijn.
Schakelschema en beschrijving voor project voor vingerafdrukbeheersysteem
Het circuit van dit op vingerafdrukken gebaseerde aanwezigheidssysteemproject, zoals weergegeven in het bovenstaande diagram, is vrij eenvoudig. Het heeft Arduino voor het besturen van het hele proces van het project, een drukknop voor het registreren, verwijderen, selecteren van ID's en voor aanwezigheid, een zoemer voor waarschuwing, LED's voor indicatie en LCD om de gebruiker te instrueren en de resulterende berichten te tonen.
Zoals te zien is in het schakelschema, is een drukknop direct verbonden met pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) van Arduino met betrekking tot de grond en gele LED is verbonden met digitale pin D7 van Arduino met betrekking tot aarde via een 1k-weerstand. Vingerafdrukmodule's Rx en Tx rechtstreeks verbonden met seriële pin D2 en D3 (Software Serial) van Arduino. 5v-voeding wordt gebruikt voor het voeden van de vingerafdrukmodule van het Arduino-bord. Op pin A5 is ook een zoemer aangesloten. Een 16x2 LCD-scherm is geconfigureerd in 4-bit-modus en de RS, EN, D4, D5, D6 en D7 zijn rechtstreeks verbonden met digitale pin D13, D12, D11, D10, D9 en D8 van Arduino.
Code Verklaring:
De code voor het aanwezigheidssysteem van vingerafdrukken voor arduino wordt in de volgende secties gegeven. Hoewel de code met commentaar goed wordt uitgelegd, bespreken we hier enkele belangrijke onderdelen van de code. We gebruikten een vingerafdrukbibliotheek voor het koppelen van een vingerafdrukmodule met een Arduino-bord.
Allereerst nemen we het headerbestand op en definiëren we de invoer- en uitvoerpin en definiëren we de macro en gedeclareerde variabelen. Hierna geven we in de setup-functie richting aan de gedefinieerde pin en starten we de LCD- en vingerafdrukmodule
Daarna moeten we code schrijven om aanwezigheidsgegevens te downloaden.
void setup () {vertraging (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (inschrijven, INPUT_PULLUP); pinMode (omhoog, INPUT_PULLUP); pinMode (omlaag, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (match, INPUT_PULLUP); pinMode (zoemer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (zoemer, LOW); if (digitalRead (enroll) == 0) {digitalWrite (buzzer, HIGH); vertraging (500); digitalWrite (zoemer, LOW); lcd.clear (); lcd.print ("Even geduld aub"); lcd.setCursor (0,1); lcd.print ("Gegevens downloaden");
Daarna moeten we code schrijven om aanwezigheidsgegevens uit EEPROM te wissen.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Even geduld aub"); lcd.setCursor (0,1); lcd.print ("Reseting….."); voor (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); voor (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Systeemreset"); vertraging (1000); }
Hierna starten we een vingerafdrukmodule, met een welkomstbericht op het LCD-scherm en ook een geïnitieerde RTC-module.
Daarna hebben we in de loop-functie de RTC-tijd gelezen en op het LCD-scherm weergegeven
void loop () {nu = rtc.now (); lcd.setCursor (0,0); lcd.print ("Tijd->"); 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);
Daarna wachten op de vingerafdruk om invoer te nemen en de vastgelegde afbeelding-ID te vergelijken met opgeslagen ID's. Als er een overeenkomst optreedt, gaat u verder met de volgende stap. En ook het controleren van geregistreerde del-sleutels
int resultaat = getFingerprintIDez (); if (resultaat> 0) {digitalWrite (indFinger, LOW); digitalWrite (zoemer, HIGH); vertraging (100); digitalWrite (zoemer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (resultaat); lcd.setCursor (0,1); lcd.print ("Even geduld…"); vertraging (1000); aanwezigheid (resultaat); lcd.clear (); lcd.print ("Aanwezigheid"); lcd.setCursor (0,1); lcd.print ("Geregistreerd"); vertraging (1000); digitalWrite (indFinger, HIGH); terugkeren; }
Gegeven ongeldig wordt de functie checkKeys () gebruikt om te controleren of de toets Inschrijven of DEL-toets is ingedrukt of niet en wat te doen als erop wordt gedrukt. Als de ENROLL-toets wordt ingedrukt, wordt de Enroll () -functie opgeroepen en wordt de DEL-toets ingedrukt en vervolgens wordt de delete () -functie aangeroepen.
void delet () functie wordt gebruikt voor het invoeren van een ID die moet worden verwijderd en het aanroepen van uint8_t deleteFingerprint (uint8_t id) functie die vinger uit records zal verwijderen.
De gegeven functie wordt gebruikt om een vingerafdrukafbeelding te maken en deze om te zetten in de sjabloon en ook op te slaan door een geselecteerde ID in het geheugen van de vingerafdrukmodule.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("vinger-ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Plaatsvinger"); vertraging (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
De gegeven functie wordt gebruikt voor het opslaan van de aanwezigheidstijd en -datum in het toegewezen slot van EEPROM
ongeldige aanwezigheid (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; gebruiker = user1 ++; } else if (id == 2) {eepLoc = 210; gebruiker = user2 ++; } else if (id == 3)………….
De gegeven functie wordt gebruikt om gegevens van EEPROM op te halen en naar een seriële monitor te sturen
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 ++));………….