- Erforderliche Komponenten
- Projektbeschreibung:
- FingerPrint-Modul:
- Funktion des Fingerabdruck-basierten Anwesenheitssystems
- Schaltplan und Beschreibung für das Fingerprint Attendance System-Projekt
- Code Erläuterung:
Anwesenheitssysteme sind häufig verwendete Systeme, um die Präsenz in Büros und Schulen zu kennzeichnen. Von der manuellen Kennzeichnung der Anwesenheit in Anwesenheitsregistern bis zur Verwendung von High-Tech-Anwendungen und biometrischen Systemen haben sich diese Systeme erheblich verbessert. In unseren vorherigen Projekten haben wir nur wenige andere Projekte für elektronische Anwesenheitssysteme mit RFID- und AVR-Mikrocontroller 8051 und Himbeer-Pi behandelt. In diesem Projekt haben wir Fingerabdruckmodul und Arduino verwendet, um Anwesenheitsdaten und -aufzeichnungen zu erfassen und zu speichern. Durch die Verwendung eines Fingerabdrucksensors wird das System für die Benutzer sicherer. In den folgenden Abschnitten werden technische Details zur Erstellung eines auf Fingerabdrücken basierenden biometrischen Anwesenheitssystems mit Arduino erläutert.
Erforderliche Komponenten
- Arduino -1
- Fingerabdruckmodul -1
- Druckknopf - 4
- LEDs -1
- 1K Widerstand -2
- 2,2 K Widerstand -1
- Leistung
- Kabel anschließen
- Box
- Summer -1
- 16x2 LCD -1
- Brotbrett -1
- RTC-Modul -1
Projektbeschreibung:
In dieser Schaltung des Anwesenheitssystems für Fingerabdrücke verwendeten wir das Modul Fingerabdrucksensorum eine echte Person oder einen Mitarbeiter zu authentifizieren, indem ihre Fingereingaben in das System eingegeben werden. Hier verwenden wir 4 Drucktasten zum Registrieren, Löschen, AUF / Ab. Die Tasten ENROLL und DEL verfügen über drei Funktionen. Die ENROLL-Taste wird für die Registrierung einer neuen Person im System verwendet. Wenn der Benutzer einen neuen Finger registrieren möchte, muss er die ENROLL-Taste drücken. Das LCD fragt dann nach der ID, in der der Benutzer das Fingerabdruckbild speichern möchte. Wenn der Benutzer zu diesem Zeitpunkt nicht weiter fortfahren möchte, kann er die ENROLL-Taste erneut drücken, um zurückzukehren. Diesmal verhält sich die ENROLL-Taste wie die Zurück-Taste, dh die ENROLL-Taste hat sowohl die Registrierungs- als auch die Zurück-Funktion. Außerdem wird der Registrierungsschlüssel auch zum Herunterladen von Anwesenheitsdaten über den seriellen Monitor verwendet. In ähnlicher Weise hat die DEL / OK-Taste dieselbe Doppelfunktion wie beim Registrieren eines neuen Fingers durch den Benutzer.Dann muss er / sie die Finger-ID mit zwei weiteren Tasten auswählen, nämlich UP und DOWN. Jetzt muss der Benutzer die Taste ENTF / OK drücken (diesmal verhält sich diese Taste wie OK), um mit der ausgewählten ID fortzufahren. Die Entf-Taste wird zum Zurücksetzen oder Löschen von Daten aus dem EEPROM von Arduino verwendet.
FingerPrint-Modul:
Das Fingerabdrucksensormodul erfasst das Fingerabdruckbild, konvertiert es dann in die entsprechende Vorlage und speichert sie gemäß der von Arduino ausgewählten ID in seinem Speicher. Der gesamte Vorgang wird von Arduino gesteuert, z. B. das Aufnehmen eines Bilds eines Fingerabdrucks, das Konvertieren in Vorlagen und das Speichern als ID usw. Sie können weitere Projekte mit dem Fingerabdruckmodul überprüfen:
Fingerabdruck-basiertes Sicherheitssystem
Biometrische Abstimmungsmaschine auf Fingerabdruckbasis
Hier haben wir eine gelbe LED hinzugefügt, die anzeigt, dass das Fingerabdruckmodul bereit ist, ein Bild des Fingers aufzunehmen. Ein Summer wird auch für verschiedene Indikationen verwendet. Arduino ist die Hauptkomponente dieses Systems, das für die Steuerung des gesamten Systems verantwortlich ist.
Funktion des Fingerabdruck-basierten Anwesenheitssystems
Arbeiten an diesem Projekt zum Anwesenheitssystem für Fingerabdrückeist ziemlich einfach. Zunächst muss der Benutzer Fingerabdrücke des Benutzers mit Hilfe von Drucktasten registrieren. Dazu muss der Benutzer die ENROLL-Taste drücken. Anschließend fordert das LCD zur Eingabe der ID für den Fingerabdruck auf, um ihn anhand des ID-Namens im Speicher zu speichern. Jetzt muss der Benutzer die ID mit den Tasten UP / DOWN eingeben. Nach Auswahl der ID muss der Benutzer die OK-Taste (DEL-Taste) drücken. Jetzt werden Sie vom LCD aufgefordert, den Finger über das Fingerabdruckmodul zu legen. Jetzt muss der Benutzer seinen Finger über das Fingerabdruckmodul legen und dann nimmt das Modul ein Fingerbild auf. Jetzt zeigt das LCD an, dass der Finger vom Fingerabdruckmodul entfernt werden soll, und fordert Sie erneut auf, den Finger erneut zu platzieren. Jetzt muss der Benutzer seinen Finger erneut legen und das Modul nimmt ein Bild auf, konvertiert es in Vorlagen und speichert es anhand der ausgewählten ID im Speicher des Fingerabdruckmoduls.Jetzt wird der Benutzer registriert und er kann die Teilnahme füttern, indem er seinen Finger über das Fingerabdruckmodul legt. Auf dieselbe Weise werden alle Benutzer im System registriert.
Wenn der Benutzer nun eine der gespeicherten IDs oder Fingerabdrücke entfernen oder löschen möchte, muss er die ENTF-Taste drücken. Sobald die Löschtaste gedrückt wird, werden Sie vom LCD aufgefordert, die ID auszuwählen, die gelöscht werden soll. Jetzt muss der Benutzer die ID auswählen und die OK-Taste drücken (dieselbe DEL-Taste). Jetzt zeigt LCD an, dass der Fingerabdruck erfolgreich gelöscht wurde.
So funktioniert die Teilnahme in diesem Projekt des Fingerabdruck-Anwesenheitssystems:
Immer wenn der Benutzer seinen Finger über das Fingerabdruckmodul legt, erfasst das Fingerabdruckmodul das Fingerbild und sucht, ob diesem Fingerabdruck im System eine ID zugeordnet ist. Wenn eine Fingerabdruck-ID erkannt wird, zeigt das LCD die registrierte Anwesenheit an und gleichzeitig piept der Summer einmal und die LED erlischt, bis das System bereit ist, erneut Eingaben vorzunehmen.
Neben dem Fingerabdruckmodul haben wir auch ein RTC-Modul für Uhrzeit und Datum verwendet. Uhrzeit und Datum laufen kontinuierlich im System. Arduino nimmt sich also Zeit und Datum, wenn ein echter Benutzer seinen Finger über den Fingerabdruck legt, und speichert sie im EEPROM am zugewiesenen Speicherplatz.
Hier haben wir 30 Tage lang 5 Benutzerbereiche in diesem System erstellt. Durch Drücken der RESET-Taste in Arduino und anschließende sofortige Registrierungstaste werden die Anwesenheitsdaten über den seriellen Monitor aus dem Arduino EEPROM-Speicher heruntergeladen.
Speicherverwaltung:
Wir haben 1023 Byte Speicher in Arduino UNO, von denen wir 1018 Byte zum Speichern von Daten haben, und wir haben 30 Tage lang 5 Benutzeranwesenheitsdaten genommen. Bei jeder Teilnahme werden Uhrzeit und Datum aufgezeichnet, sodass dies zu 7-Byte-Daten wird.
Der gesamte benötigte Speicher ist also
5 * 30 * 7 = 1050, also brauchen wir hier mehr 32 Bytes
Aber wenn wir 4 Benutzer verwenden, dann haben wir benötigt
4 * 30 * 7 = 840
Hier haben wir diese Projektdemonstration durchgeführt, indem wir 5 Benutzer Speicher genommen haben. Dadurch werden wir 32 Byte oder 5 Anwesenheitslisten der 5 zu speichern, nicht in der Lage ten Benutzer.
Sie können es von 4 Benutzern versuchen, indem Sie einige Codezeilen ändern. Ich habe die Kommentare im Code gemacht, in denen die Änderungen benötigt werden.
Schaltplan und Beschreibung für das Fingerprint Attendance System-Projekt
Die Schaltung dieses auf Fingerabdrücken basierenden Anwesenheitssystems, wie im obigen Diagramm gezeigt, ist recht einfach. Es verfügt über Arduino zur Steuerung des gesamten Projektprozesses, einen Druckknopf zum Registrieren, Löschen, Auswählen von IDs und zur Teilnahme, einen Summer zum Warnen, LEDs zur Anzeige und ein LCD, um den Benutzer anzuweisen und die resultierenden Nachrichten anzuzeigen.
Wie im Schaltplan gezeigt, ist ein Druckknopf direkt mit Pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) von Arduino in Bezug auf Masse verbunden, und die gelbe LED ist an Digital-Pin D7 angeschlossen von Arduino in Bezug auf Masse durch einen 1k Widerstand. Rx und Tx des Fingerabdruckmoduls sind direkt an den seriellen Pins D2 und D3 (Software Serial) von Arduino angeschlossen. Die 5-V-Versorgung dient zur Stromversorgung des Fingerabdruckmoduls von der Arduino-Platine. Ein Summer ist ebenfalls an Pin A5 angeschlossen. Ein 16x2-LCD ist im 4-Bit-Modus konfiguriert und seine RS, EN, D4, D5, D6 und D7 sind direkt an den digitalen Pins D13, D12, D11, D10, D9 und D8 von Arduino angeschlossen.
Code Erläuterung:
Der Code des Fingerabdruck-Anwesenheitssystems für Arduino wird in den folgenden Abschnitten angegeben. Obwohl der Code mit Kommentaren gut erklärt wird, diskutieren wir hier einige wichtige Teile des Codes. Wir haben die Fingerabdruckbibliothek verwendet, um das Fingerabdruckmodul mit der Arduino-Karte zu verbinden.
Zunächst schließen wir die Header-Datei ein und definieren den Eingabe- und Ausgabepin sowie das Makro und die deklarierten Variablen. Danach geben wir in der Setup-Funktion dem definierten Pin die Richtung und initiieren das LCD- und Fingerabdruckmodul
Danach müssen wir Code zum Herunterladen von Anwesenheitsdaten schreiben.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (registriere, INPUT_PULLUP); pinMode (up, INPUT_PULLUP); pinMode (down, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (match, INPUT_PULLUP); pinMode (Summer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (Summer, LOW); if (digitalRead (registriere) == 0) {digitalWrite (Summer, HIGH); Verzögerung (500); digitalWrite (Summer, LOW); lcd.clear (); lcd.print ("Bitte warten"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
Danach müssen wir Code schreiben, um die Anwesenheitsdaten aus dem EEPROM zu löschen.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Bitte warten"); lcd.setCursor (0,1); lcd.print ("Zurücksetzen….."); 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 Reset"); Verzögerung (1000); }}
Danach starten wir das Fingerabdruckmodul und zeigen eine Begrüßungsnachricht über das LCD sowie das eingeleitete RTC-Modul an.
Danach haben wir in der Schleifenfunktion die RTC-Zeit gelesen und auf dem LCD angezeigt
void loop () {now = 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 ("Datum->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Warten Sie danach, bis der Fingerabdruck eingegeben und die erfasste Bild-ID mit den gespeicherten IDs verglichen wurde. Wenn eine Übereinstimmung auftritt, fahren Sie mit dem nächsten Schritt fort. Und überprüfen Sie auch die Del-Schlüssel für die Registrierung
int result = getFingerprintIDez (); if (Ergebnis> 0) {digitalWrite (indFinger, LOW); digitalWrite (Summer, HIGH); Verzögerung (100); digitalWrite (Summer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (Ergebnis); lcd.setCursor (0,1); lcd.print ("Bitte warten…"); Verzögerung (1000); Teilnahme (Ergebnis); lcd.clear (); lcd.print ("Anwesenheit"); lcd.setCursor (0,1); lcd.print ("registriert"); Verzögerung (1000); digitalWrite (indFinger, HIGH); Rückkehr; }}
Die angegebene Funktion void checkKeys () wird verwendet, um zu überprüfen, ob die Registrierungs- oder ENTF-Taste gedrückt ist oder nicht und was zu tun ist, wenn sie gedrückt wird. Wenn die Taste ENROLL gedrückt wird, wird die Funktion Enroll () aufgerufen und die Taste DEL gedrückt, dann wird die Funktion delete () aufgerufen.
Die Funktion void delet () wird verwendet, um die zu löschende ID einzugeben und die Funktion uint8_t deleteFingerprint (uint8_t id) aufzurufen , mit der Finger aus Datensätzen gelöscht werden.
Die angegebene Funktion wird verwendet, um ein Fingerabdruckbild aufzunehmen und in die Vorlage zu konvertieren sowie durch ausgewählte ID im Speicher des Fingerabdruckmoduls zu speichern.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Finger platzieren"); Verzögerung (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Die angegebene Funktion wird zum Speichern der Anwesenheitszeit und des Anwesenheitsdatums im zugewiesenen Steckplatz des EEPROM verwendet
Nichtige Teilnahme (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; user = user1 ++; } else if (id == 2) {eepLoc = 210; user = user2 ++; } else if (id == 3)………….
Die angegebene Funktion wird zum Abrufen von Daten aus dem EEPROM und zum Senden an den seriellen Monitor verwendet
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 ++));………….