- Απαιτούμενα συστατικά:
- Ενότητα αισθητήρα δακτυλικών αποτυπωμάτων σε μηχανή ψηφοφορίας:
- Επεξήγηση εργασίας:
- Επεξήγηση κυκλώματος:
- Επεξήγηση προγράμματος:
Όλοι γνωρίζουμε πολύ καλά με τα Ηλεκτρονικά Μηχανήματα Ψήφου, όπου η ψήφος σας εγγράφεται ηλεκτρονικά και δεν χρειάζεται να χρησιμοποιήσετε ψηφοδέλτιο για να ψηφίσετε στις εκλογές. Σήμερα η ασφάλεια αποτελεί μείζονα ανησυχία και πρέπει επίσης να διασφαλιστεί ότι κάποιος δεν μπορεί να ψηφίσει δύο φορές, οπότε αυτό το πρόβλημα μπορεί να επιλυθεί εισάγοντας Ψηφοφορία με βάση τα δακτυλικά αποτυπώματα, όπου ένα άτομο μπορεί να εξουσιοδοτηθεί βάσει του δακτυλίου του. Αυτό θα σταματήσει επίσης την ψεύτικη ψηφοφορία. Έτσι, σήμερα κατασκευάζουμε το FingerPrint Βιομετρικό Voting Machine χρησιμοποιώντας το Arduino.
Ελέγξτε επίσης τα προηγούμενα Έργα Ηλεκτρονικής Ψηφοφορίας με διαφορετικούς μικροελεγκτές:
- Ηλεκτρονική μηχανή ψηφοφορίας που χρησιμοποιεί Raspberry Pi
- Ψηφοφορία με βάση RFID
- Έργο Ηλεκτρονικής Μηχανής Ψηφοφορίας με βάση τον μικροελεγκτή AVR
- Ηλεκτρονική μηχανή ψηφοφορίας με χρήση του Arduino
Απαιτούμενα συστατικά:
- Arduino Uno
- Μονάδα αισθητήρα δακτυλικών αποτυπωμάτων
- Κουμπιά
- LED -2
- 1Κ Αντίσταση -3
- 2.2K αντίσταση
- Εξουσία
- Σύνδεση καλωδίων
- Βομβητής
- LCD 16x2
- Πίνακας ψωμιού
Ενότητα αισθητήρα δακτυλικών αποτυπωμάτων σε μηχανή ψηφοφορίας:
Το Finger Print Sensor Module ή το Finger Print Scanner είναι μια μονάδα που συλλαμβάνει την εικόνα εκτύπωσης του δακτύλου και στη συνέχεια τη μετατρέπει σε ισοδύναμο πρότυπο και τα αποθηκεύει στη μνήμη της σε επιλεγμένο αναγνωριστικό (τοποθεσία) από τον Arduino. Εδώ όλη η διαδικασία διοικείται από τον Arduino, όπως η λήψη μιας εικόνας δακτυλικών αποτυπωμάτων, η μετατροπή της σε πρότυπα και η αποθήκευση τοποθεσίας κ.λπ.
Σε αυτό το FingerPrint Voting Machine Circuit, χρησιμοποιήσαμε το Finger Print Sensor Module για τον έλεγχο ταυτότητας του πραγματικού ψηφοφόρου, λαμβάνοντας τα δάχτυλά τους στο σύστημα. Εδώ χρησιμοποιούμε 5 κουμπιά για ταίριασμα, εγγραφή / επιστροφή, διαγραφή / ΟΚ, ΠΑΝΩ και Κάτω. Το πλήκτρο εγγραφής και Del έχουν διπλά χαρακτηριστικά εδώ. Το πλήκτρο εγγραφής χρησιμοποιείται για την καταχώριση νέων εντυπώσεων στο σύστημα και τη λειτουργία πίσω. Σημαίνει όταν ο χρήστης θέλει να εγγράψει νέο δάχτυλο, τότε πρέπει να πατήσει το πλήκτρο εγγραφής και στη συνέχεια η LCD ζητά το αναγνωριστικό ή την τοποθεσία όπου ο χρήστης θέλει να αποθηκεύσει την έξοδο δακτυλικών αποτυπωμάτων. Τώρα, εάν αυτή τη στιγμή ο χρήστης δεν θέλει να προχωρήσει περαιτέρω, τότε μπορεί να πατήσει ξανά το πλήκτρο εγγραφής για να επιστρέψει (αυτή τη φορά το κλειδί εγγραφής συμπεριφέρεται ως πλήκτρο επιστροφής). Το κλειδί σημαίνει ότι η εγγραφή και η λειτουργία πίσω. Πλήκτρο DEL / OK έχει επίσης την ίδια διπλή λειτουργία όπως όταν ο χρήστης εγγράφει νέο δάχτυλο, τότε πρέπει να επιλέξει το αναγνωριστικό δακτύλου ή την τοποθεσία χρησιμοποιώντας ένα άλλο δύο πλήκτρο, δηλαδή ΕΠΑΝΩ ΚΑΙ ΚΑΤΩ, ο χρήστης πρέπει να πατήσει το πλήκτρο DEL / OK (αυτή τη φορά αυτό το κλειδί συμπεριφέρεται σαν ΟΚ) για προχωρήστε με επιλεγμένο αναγνωριστικό ή τοποθεσία. Το κλειδί αντιστοίχισης χρησιμοποιείται για όποτε ο ψηφοφόρος θέλει να ψηφίσει, τότε θα πρέπει πρώτα να πραγματοποιήσει έλεγχο ταυτότητας για τον πραγματικό ψηφοφόρο, κρατώντας το δάχτυλό του στον αισθητήρα δακτυλικών αποτυπωμάτων, εάν αυτός / αυτή πέρασε σε αυτόν τον έλεγχο ταυτότητας, τότε μπορεί να ψηφίσει.
Για να μάθετε περισσότερα σχετικά με την εγγραφή δακτυλικών αποτυπωμάτων και άλλων πραγμάτων, ελέγξτε το προηγούμενο σεμινάριό μας σχετικά με τη διασύνδεση του αισθητήρα δακτυλικών αποτυπωμάτων με το Arduino και επίσης ελέγξτε το Demo Video στο τέλος αυτού του σεμιναρίου.
Επεξήγηση εργασίας:
Εργασία αυτού του βιομετρικού συστήματος ψηφοφορίας για εκλογές είναι λίγο περίπλοκο για αρχάριους. Πρώτα απ 'όλα, ο χρήστης πρέπει να εγγράψει δάχτυλο ή ψηφοφόρους (σε αυτόν τον κωδικό το μέγιστο όριο του ψηφοφόρου είναι 25) με τη βοήθεια των πλήκτρων / πλήκτρων. Για να γίνει αυτό, ο χρήστης πρέπει να πατήσει το πλήκτρο ENROLL και έπειτα η LCD ζητά να εισαγάγει την τοποθεσία / το ID όπου το δάχτυλο θα είναι κατάστημα. Τώρα λοιπόν ο χρήστης πρέπει να εισάγει ID (Τοποθεσία) χρησιμοποιώντας τα πλήκτρα ΠΑΝΩ / ΚΑΤΩ. Αφού επιλέξετε Τοποθεσία / Αναγνωριστικό, ο χρήστης πρέπει να πατήσει ένα πλήκτρο ΟΚ (πλήκτρο DEL). Τώρα το LCD θα ζητήσει την τοποθέτηση του δακτύλου πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Τώρα ο χρήστης πρέπει να βάλει το δάχτυλό του πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Στη συνέχεια, η LCD θα σας ζητήσει να αφαιρέσετε το δάκτυλο από τη μονάδα δακτυλικών αποτυπωμάτων και να ζητήσετε ξανά την τοποθέτηση του δακτύλου. Τώρα ο χρήστης πρέπει να βάλει ξανά το δάχτυλό του πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Τώρα η μονάδα δακτυλικών αποτυπωμάτων παίρνει μια εικόνα και τη μετατρέπει σε πρότυπα και την αποθηκεύει με επιλεγμένο αναγνωριστικό στη μνήμη της μονάδας δακτυλικών αποτυπωμάτων.Τώρα ο ψηφοφόρος θα εγγραφεί και μπορεί να ψηφίσει. Με την ίδια μέθοδο, όλοι οι ψηφοφόροι μπορούν να εγγραφούν στο σύστημα.
Τώρα, εάν ο χρήστης θέλει να αφαιρέσει ή να διαγράψει οποιοδήποτε αποθηκευμένο αναγνωριστικό, τότε θα πρέπει να πατήσει το πλήκτρο DEL, αφού πατήσει το πλήκτρο DEL, η οθόνη LCD θα ζητήσει επιλεγμένη τοποθεσία σημαίνει επιλογή αναγνωριστικού που θα διαγραφεί Τώρα ο χρήστης πρέπει να επιλέξει ID και να πατήσει το πλήκτρο OK (ίδιο πλήκτρο DEL). Τώρα το LCD θα σας ενημερώσει ότι το δάχτυλο έχει διαγραφεί με επιτυχία.
Διαδικασία ψηφοφορίας:
Τώρα, όταν ο χρήστης θέλει να ψηφίσει, τότε πρέπει να πατήσει το πλήκτρο αντιστοίχισης και στη συνέχεια ο βομβητής θα ηχεί και το LED θα ανάβει και η οθόνη LCD θα ζητήσει τη θέση δακτύλου πάνω από τη μονάδα δακτυλικών αποτυπωμάτων. Τώρα το Arduino θα σας δώσει τρεις προσπάθειες να βάλετε το δάχτυλό σας. Αφού τοποθετήσετε ένα δάχτυλο πάνω από τη μονάδα δακτυλικών αποτυπωμάτων, η μονάδα δακτυλικών αποτυπωμάτων καταγράφει την εικόνα του δακτύλου και εντοπίστε ότι τα αναγνωριστικά της υπάρχουν στο σύστημα. Εάν εντοπιστεί αναγνωριστικό δακτύλου, τότε η οθόνη LCD θα εμφανίσει εξουσιοδοτημένο ψηφοφόρο Αυτό σημαίνει ότι ο χρήστης έχει δικαίωμα ψήφου. Και μετά το σύστημα προχωρά στο επόμενο στάδιο για ψηφοφορία. Τώρα το πράσινο LED θα ανάψει σημαίνει ότι τώρα ο ψηφοφόρος μπορεί να ψηφίσει τους υποψηφίους του πατώντας ένα σχετικό πλήκτρο (από τον πίνακα ψωμιού RED σε αυτήν την επίδειξη). Τώρα, εάν ο ίδιος ψηφοφόρος θέλει να ψηφίσει ξανά, τότε το σύστημα θα το δείξει "Ήδη Ψηφίστηκε" . Αυτό σημαίνει ότι ο ίδιος ψηφοφόρος δεν μπορεί να ψηφίσει ξανά και ο βομβητής θα ηχήσει για 5 δευτερόλεπτα. Εάν κάποιος μη εγγεγραμμένος χρήστης θέλει να ψηφίσει, τότε η μονάδα δακτυλικών αποτυπωμάτων δεν θα εντοπίσει την ταυτότητά της στο σύστημα και η οθόνη LCD θα εμφανίσει « Δεν βρέθηκε δακτυλικό αποτύπωμα» .
CAN1, CAN2, CAN3 εδώ αντιπροσωπεύει τον υποψήφιο 1, τον υποψήφιο 2 και τον υποψήφιο 3, οι οποίοι έχουν υποψηφίσει τις εκλογές.
Επεξήγηση κυκλώματος:
Το κύκλωμα αυτού του έργου με βάση το FingerPrint Machine Voting είναι πολύ απλό, το οποίο περιέχει Arduino για τον έλεγχο ολόκληρης της διαδικασίας του έργου, το πλήκτρο για εγγραφή, τη διαγραφή, την επιλογή αναγνωριστικών και τον σκοπό της ψηφοφορίας, έναν βομβητή για ειδοποίηση, LED για ένδειξη και 16x2 LCD για οδηγίες Ψηφίστε και δείχνοντας το αποτέλεσμα επίσης. Η κίτρινη λυχνία LED δείχνει ότι η μονάδα δακτυλικών αποτυπωμάτων είναι έτοιμη να τραβήξει μια εικόνα του δακτύλου και η πράσινη λυχνία LED δείχνει ότι το σύστημα είναι έτοιμο να λάβει ψηφοφορία ή να δει αποτελέσματα.
Το μπουτόν συνδέεται απευθείας στους ακροδέκτες A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) και A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Αποτέλεσμα) του Arduino σε σχέση με το έδαφος. Το κίτρινο LED συνδέεται στον ψηφιακό πείρο D7 του Arduino σε σχέση με τη γείωση μέσω μιας αντίστασης 1k και το πράσινο LED συνδέεται με το D6 του Arduino με την ίδια μέθοδο. Τα Rx και Tx της μονάδας δακτυλικών αποτυπωμάτων συνδέονται απευθείας στο Serial pin Tx και Rx του Arduino. Η τροφοδοσία 5v χρησιμοποιείται για την τροφοδοσία της μονάδας δακτυλικών αποτυπωμάτων που έχει ληφθεί από την πλακέτα Arduino. Ένας βομβητής είναι επίσης συνδεδεμένος στο A5. Μια οθόνη LCD 16x2 έχει διαμορφωθεί σε λειτουργία 4-bit και οι RS, EN, D4, D5, D6 και D7 συνδέονται απευθείας στις ψηφιακές ακίδες D13, D12, D11, D10, D9 και D8 του Arduino.
Επεξήγηση προγράμματος:
Σε ένα πρόγραμμα, χρησιμοποιήσαμε το Adafruit Fingerprint Sensor Library για τη διασύνδεση της μονάδας δακτυλικών αποτυπωμάτων με την πλακέτα Arduino. Μπορείτε να δείτε τον πλήρη κώδικα παρακάτω. Εδώ εξηγούμε τις κύριες λειτουργίες του προγράμματος Arduino.
Στη λειτουργία εγκατάστασης, έχουμε δώσει οδηγίες σε καθορισμένες ακίδες και ξεκινήσαμε τη μονάδα LCD και δακτυλικών αποτυπωμάτων.
Μετά από αυτό, σε λειτουργία void loop () , περιμέναμε το πλήκτρο ελέγχου και πατήστε το πλήκτρο Match για να ξεκινήσει το δακτυλικό αποτύπωμα για να λάβετε είσοδο και να συγκρίνετε το καταγεγραμμένο αναγνωριστικό εικόνας με τα αποθηκευμένα αναγνωριστικά. Εάν συμβεί ένας αγώνας, προχωρήστε στο επόμενο βήμα.
void loop () {lcd.setCursor (0,0); lcd.print ("Πιέστε το πλήκτρο Match"); lcd.setCursor (0,1); lcd.print ("για εκκίνηση συστήματος"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (200) digitalWrite (βομβητής, LOW); digitalWrite (indFinger, HIGH); για (int i = 0; i <3; i ++)…………………
Δεδομένου άκυρου checkKeys () χρησιμοποιείται η λειτουργία για τον έλεγχο Εγγραφή ή το πλήκτρο DEL πιέζεται ή όχι και τι πρέπει να κάνετε εάν πατηθεί. Εάν πατηθεί το πλήκτρο ENROLL , καλείται η συνάρτηση Enroll () και πατήστε το πλήκτρο DEL και καλείται η λειτουργία διαγραφής () .
void checkKeys () {if (digitalRead (register) == 0) {lcd.clear (); lcd.print ("Παρακαλώ περιμένετε"); καθυστέρηση (1000) ενώ (digitalRead (εγγραφή) == 0); Εγγράφω(); } αλλιώς εάν (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Παρακαλώ περιμένετε"); καθυστέρηση (1000) διαγραφή (); }}
Η δεδομένη συνάρτηση χρησιμοποιείται για την εισαγωγή αναγνωριστικού προς διαγραφή και την κλήση της συνάρτησης uint8_t deleteFingerprint (uint8_t id) που θα διαγράψει το δάχτυλο από τις εγγραφές.
άκυρη διαγραφή () {int count = 0; lcd.clear (); lcd.print ("Διαγραφή δακτύλου"); lcd.setCursor (0,1); lcd.print ("Τοποθεσία:"); ενώ (1) {lcd.setCursor (9,1); lcd.print (πλήθος); if (digitalRead (πάνω) == 0) {count ++; αν (μέτρηση> 25) μέτρηση = 0; καθυστέρηση (500) }……………….
Η δεδομένη λειτουργία χρησιμοποιείται για τη διαγραφή δακτυλικών αποτυπωμάτων από την εγγραφή του επιλεγμένου αναγνωριστικού.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Παρακαλώ περιμένετε"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Διαγράφηκε!"); lcd.clear (); lcd.print ("Το Figer Deleted"); lcd.setCursor (0,1); lcd.print ("Επιτυχής"); καθυστέρηση (1000) } αλλιώς {Serial.print ("Something Wrong"); lcd.clear (); lcd.print ("Κάτι λάθος"); lcd.setCursor (0,1); lcd.print ("Δοκιμάστε ξανά αργότερα"); καθυστέρηση (2000); επιστροφή p; }}
Το δεδομένο 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 ();…………………
Η δεδομένη λειτουργία χρησιμοποιείται για την ψηφοφορία και την εμφάνιση αποτελεσμάτων:
άκυρη Ψήφος () {lcd.clear (); lcd.print ("Παρακαλώ τοποθετήστε"); lcd.setCursor (0,1); lcd.print ("Η ψήφος σας"); digitalWrite (indVote, ΥΨΗΛΗ); digitalWrite (indFinger, LOW); digitalWrite (βομβητής, ΥΨΗΛΟΣ); καθυστέρηση (500) digitalWrite (βομβητής, LOW); καθυστέρηση (1000) ενώ (1) {if (digitalRead (sw1) == 0)…………………
Δείτε τον Πλήρες κώδικα και το βίντεο επίδειξης παρακάτω.