- Απαιτούμενα συστατικά
- Περιγραφή Έργου:
- Ενότητα FingerPrint:
- Εργασία συστήματος παρακολούθησης βάσει δακτυλικών αποτυπωμάτων
- Διάγραμμα κυκλώματος και περιγραφή του έργου συστήματος δακτυλικών αποτυπωμάτων
- Επεξήγηση κώδικα:
Τα συστήματα παρακολούθησης είναι συνήθως συστήματα που σηματοδοτούν την παρουσία σε γραφεία και σχολεία. Από τη μη αυτόματη σήμανση της παρουσίας σε μητρώα παρακολούθησης έως τη χρήση εφαρμογών υψηλής τεχνολογίας και βιομετρικών συστημάτων, αυτά τα συστήματα έχουν βελτιωθεί σημαντικά. Στα προηγούμενα έργα μας, έχουμε καλύψει λίγα άλλα έργα ηλεκτρονικών συστημάτων παρακολούθησης χρησιμοποιώντας RFID και AVR μικροελεγκτή, 8051 και raspberry Pi. Σε αυτό το έργο, χρησιμοποιήσαμε το δακτυλικό αποτύπωμα Module και το Arduino για να πάρουμε και να κρατήσουμε δεδομένα και αρχεία παρακολούθησης. Χρησιμοποιώντας τον αισθητήρα δακτυλικών αποτυπωμάτων, το σύστημα θα γίνει πιο ασφαλές για τους χρήστες. Οι ακόλουθες ενότητες εξηγούν τεχνικές λεπτομέρειες για τη δημιουργία ενός βιομετρικού συστήματος παρακολούθησης με βάση τα δακτυλικά αποτυπώματα χρησιμοποιώντας το Arduino.
Απαιτούμενα συστατικά
- Arduino -1
- Μονάδα δακτυλικών αποτυπωμάτων -1
- Κουμπί Push - 4
- LED -1
- 1Κ Αντίσταση -2
- 2.2K αντίσταση -1
- Εξουσία
- Σύνδεση καλωδίων
- Κουτί
- Buzzer -1
- 16x2 LCD -1
- Πίνακας ψωμιού -1
- Ενότητα RTC -1
Περιγραφή Έργου:
Σε αυτό το κύκλωμα συστήματος παρακολούθησης δακτυλικών αποτυπωμάτων, χρησιμοποιήσαμε τη μονάδα αισθητήρα δακτυλικών αποτυπωμάτωνγια τον έλεγχο ταυτότητας ενός πραγματικού ατόμου ή υπαλλήλου, λαμβάνοντας την είσοδο δακτύλου τους στο σύστημα. Εδώ χρησιμοποιούμε 4 κουμπιά για εγγραφή, Διαγραφή, Πάνω / Κάτω. Το πλήκτρο ENROLL και DEL έχει τριπλά χαρακτηριστικά. Το κλειδί ENROLL χρησιμοποιείται για την εγγραφή ενός νέου ατόμου στο σύστημα. Έτσι, όταν ο χρήστης θέλει να εγγράψει νέο δάχτυλο, τότε πρέπει να πατήσει το πλήκτρο ENROLL και στη συνέχεια η LCD ζητά το αναγνωριστικό, όπου ο χρήστης θέλει να αποθηκεύσει την εικόνα δακτυλικών αποτυπωμάτων. Τώρα, εάν αυτή τη στιγμή ο χρήστης δεν θέλει να προχωρήσει περαιτέρω, μπορεί να πατήσει ξανά το πλήκτρο ENROLL για να επιστρέψει. Αυτή τη φορά το κλειδί ENROLL συμπεριφέρεται ως πλήκτρο Back, δηλαδή το κλειδί ENROLL έχει λειτουργία εγγραφής και πίσω. Εκτός από το κλειδί εγγραφής χρησιμοποιείται επίσης για τη λήψη δεδομένων παρακολούθησης μέσω της σειριακής οθόνης. Ομοίως, το πλήκτρο DEL / OK έχει επίσης την ίδια διπλή λειτουργία όπως όταν ο χρήστης εγγράφει νέο δάχτυλο,Τότε πρέπει να επιλέξει το αναγνωριστικό δακτύλου χρησιμοποιώντας άλλα δύο πλήκτρα, δηλαδή UP και DOWN. Τώρα ο χρήστης πρέπει να πατήσει το πλήκτρο DEL / OK (αυτή τη φορά αυτό το κλειδί συμπεριφέρεται σαν OK) για να προχωρήσει με το επιλεγμένο αναγνωριστικό. Και το πλήκτρο Del χρησιμοποιείται για επαναφορά ή διαγραφή δεδομένων από το EEPROM του Arduino.
Ενότητα FingerPrint:
Η μονάδα αισθητήρα δακτυλικών αποτυπωμάτων συλλαμβάνει την εικόνα εκτύπωσης του δακτύλου και στη συνέχεια τη μετατρέπει σε ισοδύναμο πρότυπο και τα αποθηκεύει στη μνήμη της σύμφωνα με το επιλεγμένο αναγνωριστικό του Arduino. Όλη η διαδικασία διοικείται από τον Arduino, όπως η λήψη μιας εικόνας του δακτύλου, η μετατροπή της σε πρότυπα και η αποθήκευση ως αναγνωριστικό κ.λπ. Μπορείτε να ελέγξετε μερικά περισσότερα έργα χρησιμοποιώντας τη μονάδα δακτυλικών αποτυπωμάτων:
Σύστημα ασφαλείας βάσει δακτυλικών αποτυπωμάτων
Βιομετρική μηχανή ψηφοφορίας με βάση δακτυλικά αποτυπώματα
Εδώ έχουμε προσθέσει ένα κίτρινο LED που δείχνει ότι η μονάδα δακτυλικών αποτυπωμάτων είναι έτοιμη να τραβήξει μια εικόνα του δακτύλου. Ένας βομβητής χρησιμοποιείται επίσης για διάφορες ενδείξεις. Το Arduino είναι το κύριο συστατικό αυτού του συστήματος και είναι υπεύθυνο για τον έλεγχο ολόκληρου του συστήματος.
Εργασία συστήματος παρακολούθησης βάσει δακτυλικών αποτυπωμάτων
Εργασία αυτού του έργου συστήματος παρακολούθησης δακτυλικών αποτυπωμάτωνείναι αρκετά απλό. Πρώτα απ 'όλα, ο χρήστης πρέπει να εγγράψει δακτυλικά αποτυπώματα του χρήστη με τη βοήθεια των πλήκτρων. Για να γίνει αυτό, ο χρήστης πρέπει να πατήσει το πλήκτρο ENROLL και έπειτα η LCD ζητά να εισαγάγει το αναγνωριστικό για το δακτυλικό αποτύπωμα για να το αποθηκεύσει στη μνήμη με το όνομα ταυτότητας. Τώρα λοιπόν ο χρήστης πρέπει να εισάγει ID χρησιμοποιώντας τα πλήκτρα ΠΑΝΩ / ΚΑΤΩ. Αφού επιλέξει το αναγνωριστικό, ο χρήστης πρέπει να πατήσει το πλήκτρο OK (πλήκτρο DEL). Τώρα η LCD θα ζητήσει να τοποθετήσει το δάχτυλό σας πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Τώρα ο χρήστης πρέπει να τοποθετήσει το δάχτυλό του πάνω από τη μονάδα δακτυλικών αποτυπωμάτων και έπειτα η ενότητα λαμβάνει εικόνα δακτύλου. Τώρα η οθόνη LCD θα πει να αφαιρέσετε το δάχτυλο από τη μονάδα δακτυλικών αποτυπωμάτων και να ζητήσετε ξανά να τοποθετήσετε ξανά το δάχτυλό σας. Τώρα ο χρήστης πρέπει να βάλει ξανά το δάχτυλό του και η ενότητα παίρνει μια εικόνα και να τη μετατρέψει σε πρότυπα και να την αποθηκεύσει με επιλεγμένο αναγνωριστικό στη μνήμη της μονάδας δακτυλικών αποτυπωμάτων.Τώρα ο χρήστης θα εγγραφεί και αυτός / αυτή μπορεί να τροφοδοτήσει την παρουσία βάζοντας το δάχτυλό του πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Με την ίδια μέθοδο, όλοι οι χρήστες θα εγγραφούν στο σύστημα.
Τώρα, εάν ο χρήστης θέλει να αφαιρέσει ή να διαγράψει οποιοδήποτε από τα αποθηκευμένα αναγνωριστικά ή το δακτυλικό αποτύπωμα, τότε πρέπει να πατήσει το πλήκτρο DEL. Μόλις πατηθεί το πλήκτρο διαγραφής, το LCD θα σας ζητήσει να επιλέξετε το αναγνωριστικό που πρέπει να διαγραφεί. Τώρα ο χρήστης πρέπει να επιλέξει ID και να πατήσει το πλήκτρο OK (ίδιο πλήκτρο DEL). Τώρα το LCD θα σας ενημερώσει ότι το δακτυλικό αποτύπωμα έχει διαγραφεί με επιτυχία.
Πώς λειτουργεί το Attendance σε αυτό το έργο συστήματος δακτυλικών αποτυπωμάτων:
Κάθε φορά που ο χρήστης τοποθετεί το δάχτυλό του πάνω από τη μονάδα δακτυλικών αποτυπωμάτων, τότε η μονάδα δακτυλικών αποτυπωμάτων καταγράφει την εικόνα δακτύλου και αναζητά αν υπάρχει κάποιο ID με αυτό το δακτυλικό αποτύπωμα στο σύστημα. Εάν εντοπιστεί αναγνωριστικό δακτυλικού αποτυπώματος, τότε η οθόνη LCD θα εμφανίζει την παρουσία καταχωρημένη και ταυτόχρονα ο βομβητής θα ηχήσει μία φορά και το LED θα σβήσει έως ότου το σύστημα είναι έτοιμο να λάβει ξανά είσοδο.
Μαζί με τη μονάδα δακτυλικών αποτυπωμάτων, έχουμε χρησιμοποιήσει επίσης μια μονάδα RTC για ώρα και ημερομηνία. Η ώρα και η ημερομηνία εκτελούνται συνεχώς στο σύστημα. Έτσι, ο Arduino παίρνει χρόνο και ημερομηνία κάθε φορά που ένας αληθινός χρήστης τοποθετεί το δάχτυλό του πάνω από το δακτυλικό αποτύπωμα και αποθηκεύστε τα στο EEPROM στην εκχωρημένη υποδοχή μνήμης.
Εδώ έχουμε δημιουργήσει 5 χώρους χρήστη σε αυτό το σύστημα για 30 ημέρες. Πατώντας το κουμπί RESET στο Arduino και στη συνέχεια αμέσως το κλειδί εγγραφής θα είναι υπεύθυνο για τη λήψη δεδομένων παρακολούθησης μέσω σειριακής οθόνης από τη μνήμη Arduino EEPROM.
Διαχείριση μνήμης:
Έχουμε μνήμη 1023 byte στο Arduino UNO, εκ των οποίων έχουμε 1018 byte για αποθήκευση δεδομένων και έχουμε λάβει 5 δεδομένα παρακολούθησης χρηστών για 30 ημέρες. Και κάθε συμμετοχή θα καταγράφει την ώρα και την ημερομηνία, ώστε να γίνεται δεδομένα 7 byte.
Επομένως, απαιτείται συνολική μνήμη
5 * 30 * 7 = 1050, οπότε εδώ χρειαζόμαστε περισσότερα 32 byte
Αλλά αν θα χρησιμοποιήσουμε 4 χρήστες τότε χρειαζόμασταν
4 * 30 * 7 = 840
Εδώ κάναμε αυτήν την επίδειξη του έργου λαμβάνοντας μνήμη 5 χρηστών. Με τον τρόπο αυτό, δεν θα είναι σε θέση να αποθηκεύσει 32 byte ή 5 παρουσιολογίου του 5 ου χρήστη.
Μπορείτε να το δοκιμάσετε από 4 χρήστες αλλάζοντας μερικές γραμμές στον κώδικα. Έχω κάνει τα σχόλια στον κώδικα όπου χρειάζονται οι αλλαγές.
Διάγραμμα κυκλώματος και περιγραφή του έργου συστήματος δακτυλικών αποτυπωμάτων
Το κύκλωμα αυτού του έργου συστήματος παρακολούθησης βάσει δακτυλικών αποτυπωμάτων, όπως φαίνεται στο παραπάνω διάγραμμα είναι αρκετά απλό. Διαθέτει Arduino για τον έλεγχο όλης της διαδικασίας του έργου, το πλήκτρο για την εγγραφή, τη διαγραφή, την επιλογή αναγνωριστικών και για την παρουσία, έναν βομβητή για ειδοποίηση, LED για ένδειξη και LCD για να καθοδηγήσει τον χρήστη και να εμφανίσει τα προκύπτοντα μηνύματα.
Όπως φαίνεται στο διάγραμμα κυκλώματος, ένα μπουτόν συνδέεται απευθείας στους ακροδέκτες A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) του Arduino σε σχέση με τη γείωση και το κίτρινο LED είναι συνδεδεμένο στον ψηφιακό πείρο D7 του Arduino σε σχέση με τη γείωση μέσω μιας αντίστασης 1k. Οι μονάδες δακτυλικών αποτυπωμάτων Rx και Tx συνδέονται απευθείας στους σειριακούς ακροδέκτες D2 και D3 (λογισμικό σειριακός) του Arduino. Η τροφοδοσία 5v χρησιμοποιείται για την τροφοδοσία της μονάδας δακτυλικών αποτυπωμάτων που έχει ληφθεί από την πλακέτα Arduino. Ένας βομβητής συνδέεται επίσης στον ακροδέκτη A5. Μια οθόνη LCD 16x2 έχει διαμορφωθεί σε λειτουργία 4-bit και οι RS, EN, D4, D5, D6 και D7 συνδέονται απευθείας στις ψηφιακές ακίδες D13, D12, D11, D10, D9 και D8 του Arduino.
Επεξήγηση κώδικα:
Ο κωδικός συστήματος παρακολούθησης δακτυλικών αποτυπωμάτων για το arduino δίνεται στις επόμενες ενότητες. Αν και ο κώδικας εξηγείται καλά με σχόλια, συζητάμε εδώ μερικά σημαντικά μέρη του κώδικα. Χρησιμοποιήσαμε βιβλιοθήκη δακτυλικών αποτυπωμάτων για διασύνδεση της μονάδας δακτυλικών αποτυπωμάτων με την πλακέτα Arduino.
Πρώτα απ 'όλα, συμπεριλαμβάνουμε το αρχείο κεφαλίδας και ορίζουμε το pin εισόδου και εξόδου και καθορίζουμε τις μεταβλητές μακροεντολών και δηλώσεων. Μετά από αυτό, στη λειτουργία ρύθμισης, δίνουμε κατεύθυνση σε καθορισμένο πείρο και ξεκινάμε την ενότητα LCD και δακτυλικών αποτυπωμάτων
Μετά από αυτό, πρέπει να γράψουμε κώδικα για τη λήψη δεδομένων παρακολούθησης.
άκυρη ρύθμιση () {καθυστέρηση (1000) · lcd.begin (16,2); Serial.begin (9600); pinMode (εγγραφή, INPUT_PULLUP); pinMode (επάνω, INPUT_PULLUP); pinMode (κάτω, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (αγώνα, INPUT_PULLUP); pinMode (βομβητής, ΕΞΟΔΟΣ); pinMode (indFinger, OUTPUT); digitalWrite (βομβητής, LOW); if (digitalRead (εγγραφή) == 0) {digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (500) digitalWrite (βομβητής, LOW); lcd.clear (); lcd.print ("Παρακαλώ περιμένετε"); lcd.setCursor (0,1); lcd.print ("Δεδομένα Downloding");
Μετά, πρέπει να γράψουμε κώδικα για την εκκαθάριση των δεδομένων συμμετοχής από το EEPROM
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Παρακαλώ περιμένετε"); lcd.setCursor (0,1); lcd.print ("Επαναφορά….."); για (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); για (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Επαναφορά συστήματος"); καθυστέρηση (1000) }
Μετά από αυτό, ξεκινάμε τη μονάδα δακτυλικών αποτυπωμάτων, εμφανίζοντας μήνυμα καλωσορίσματος μέσω LCD και επίσης ενοποιημένη μονάδα RTC.
Μετά από αυτό, σε λειτουργία βρόχου, έχουμε διαβάσει το χρόνο RTC και το εμφανίσαμε σε LCD
void loop () {τώρα = 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 ("Ημερομηνία->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (τώρα. έτος (), DEC);
Μετά από αυτό, περιμένοντας τη λήψη δακτυλικών αποτυπωμάτων και τη σύγκριση του καταγεγραμμένου αναγνωριστικού εικόνας με τα αποθηκευμένα ID. Εάν συμβεί amatch, συνεχίστε με το επόμενο βήμα. Και ελέγχοντας τα κλειδιά del del επίσης
int αποτέλεσμα = getFingerprintIDez (); εάν (αποτέλεσμα> 0) {digitalWrite (indFinger, LOW); digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (100); digitalWrite (βομβητής, LOW); lcd.clear (); lcd.print ("Αναγνωριστικό:"); lcd.print (αποτέλεσμα); lcd.setCursor (0,1); lcd.print ("Παρακαλώ περιμένετε…."); καθυστέρηση (1000) συμμετοχή (αποτέλεσμα) lcd.clear (); lcd.print ("Συμμετοχή"); lcd.setCursor (0,1); lcd.print ("Εγγεγραμμένο"); καθυστέρηση (1000) digitalWrite (indFinger, HIGH); ΕΠΙΣΤΡΟΦΗ; }
Δεδομένου άκυρου checkKeys () χρησιμοποιείται η λειτουργία για τον έλεγχο Εγγραφή ή το πλήκτρο DEL πιέζεται ή όχι και τι πρέπει να κάνετε εάν πατηθεί. Εάν πατηθεί το πλήκτρο ENROLL , καλείται η συνάρτηση Enroll () και πατήστε το πλήκτρο DEL και καλείται η λειτουργία διαγραφής () .
Η λειτουργία void delet () χρησιμοποιείται για την καταχώριση του ID που θα διαγραφεί και την κλήση της συνάρτησης uint8_t deleteFingerprint (uint8_t id) που θα διαγράψει το δάχτυλο από τις εγγραφές.
Το δεδομένο Function χρησιμοποιείται για τη λήψη εικόνας δακτυλικών αποτυπωμάτων και τη μετατροπή τους στο πρότυπο και την αποθήκευση, επίσης, με επιλεγμένο αναγνωριστικό στη μνήμη της μονάδας δακτυλικών αποτυπωμάτων.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("αναγνωριστικό δακτύλου:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Place Finger"); καθυστέρηση (2000); ενώ (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Η δεδομένη συνάρτηση χρησιμοποιείται για την αποθήκευση της ώρας και της ημερομηνίας συμμετοχής στον εκχωρημένο κουλοχέρη του EEPROM
άκυρη συμμετοχή (int id) {int user = 0, eepLoc = 0; εάν (id == 1) {eepLoc = 0; χρήστης = χρήστης1 ++; } αλλιώς εάν (id == 2) {eepLoc = 210; χρήστης = χρήστης2 ++; } αλλιώς εάν (id == 3)………….
Η δεδομένη λειτουργία χρησιμοποιείται για την ανάκτηση δεδομένων από το EEPROM και την αποστολή σε σειριακή οθόνη
άκυρη λήψη (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); εάν (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); εάν (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….