Πίνακας περιεχομένων:
- Βήμα 1: Στοιχεία που απαιτούνται για την κατασκευή βιομετρικής μηχανής ψηφοφορίας
- Βήμα 2: Διάγραμμα κυκλώματος για βιομετρική μηχανή ψηφοφορίας χρησιμοποιώντας Arduino
- Βήμα 3: Πηγαίος κώδικας και επεξήγηση κώδικα βήμα προς βήμα
- Βήμα 4: Δοκιμή του συστήματος ψηφοφορίας με δακτυλικά αποτυπώματα χρησιμοποιώντας το Arduino
Βίντεο: Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino: 4 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Όλοι γνωρίζουμε την υπάρχουσα ηλεκτρονική μηχανή ψηφοφορίας όπου ο χρήστης πρέπει να πατήσει ένα κουμπί για να ψηφίσει. Αλλά αυτά τα μηχανήματα έχουν επικριθεί για το μετριασμό από την αρχή. Έτσι, η κυβέρνηση σχεδιάζει να εισαγάγει ένα μηχάνημα ψηφοφορίας με δακτυλικά αποτυπώματα, όπου οι χρήστες θα μπορούν να ψηφίσουν με βάση την εντύπωση των δακτυλικών αποτυπωμάτων του. Αυτό το σύστημα όχι μόνο θα αφαιρέσει τη δυνατότητα διπλής ψήφου αλλά θα αποτρέψει κάθε είδους χειραγώγηση.
Έτσι, σε αυτό το έργο, πρόκειται να δημιουργήσουμε ένα πρωτότυπο μιας βιομετρικής μηχανής ψηφοφορίας χρησιμοποιώντας το Arduino Uno, την οθόνη TFT και τον αισθητήρα δακτυλικών αποτυπωμάτων. Χρησιμοποιήσαμε προηγουμένως αισθητήρα δακτυλικών αποτυπωμάτων R305 με NodeMCU για να δημιουργήσουμε ένα Βιομετρικό Σύστημα Συμμετοχής, αλλά εδώ θα χρησιμοποιήσουμε τον προηγμένο αισθητήρα δακτυλικών αποτυπωμάτων GT-511C3 με Arduino.
Βήμα 1: Στοιχεία που απαιτούνται για την κατασκευή βιομετρικής μηχανής ψηφοφορίας
- Arduino Uno
- Ασπίδα οθόνης TFT LCD 2,4”
- Αισθητήρας δακτυλικών αποτυπωμάτων GT-511C3
Αυτή η οθόνη 2,4 ιντσών TFT χρησιμοποιήθηκε προηγουμένως με το Arduino για τη δημιουργία συστήματος παραγγελίας μενού εστιατορίου με βάση το IoT.
Βήμα 2: Διάγραμμα κυκλώματος για βιομετρική μηχανή ψηφοφορίας χρησιμοποιώντας Arduino
Το διάγραμμα κυκλώματος για αυτό το έργο είναι πολύ απλό, καθώς συνδέουμε μόνο την οθόνη TFT και τη μονάδα αισθητήρα δακτυλικών αποτυπωμάτων με το Arduino Uno. Οι ακίδες VCC και GND του αισθητήρα δακτυλικών αποτυπωμάτων συνδέονται με ακίδες 5V και GND του Arduino ενώ οι ακίδες TX και RX συνδέονται με την ψηφιακή ακίδα 11 & 12 του Arduino Uno.
Η οθόνη 2,4”TFT LCD είναι ένα Arduino Shield και μπορεί να τοποθετηθεί απευθείας στο Arduino Uno, όπως φαίνεται στην παρακάτω εικόνα. Η οθόνη TFT έχει 28 ακίδες που ταιριάζουν απόλυτα στο Arduino Uno, οπότε έπρεπε να κολλήσω τον αισθητήρα δακτυλικών αποτυπωμάτων στο πίσω μέρος του Arduino.
Βήμα 3: Πηγαίος κώδικας και επεξήγηση κώδικα βήμα προς βήμα
Ο πλήρης κωδικός για αυτό το έργο του συστήματος ψηφοφορίας με δακτυλικά αποτυπώματα χρησιμοποιώντας το Arduino δίνεται στο τέλος του άρθρου. εδώ εξηγούμε μερικές σημαντικές λειτουργίες του κώδικα.
Ο κώδικας χρησιμοποιεί τις βιβλιοθήκες SPFD5408, Serial Software και FPS_GT511C3. Η βιβλιοθήκη SPFD5408 είναι η τροποποιημένη έκδοση της αρχικής βιβλιοθήκης Adafruit. Μπορείτε να κατεβάσετε αυτά τα αρχεία βιβλιοθήκης από τους παρακάτω συνδέσμους:
- Βιβλιοθήκη SPFD5408
- Σειρά λογισμικού
- FPS_GT511C3
Αφού συμπεριλάβουμε τις βιβλιοθήκες και καθορίσουμε μερικές σημαντικές παραμέτρους, μπορούμε να μπούμε στο τμήμα προγραμματισμού. Σε αυτό το πρόγραμμα συμμετέχουν τρεις ενότητες. Το ένα δημιουργεί ένα περιβάλλον χρήστη μιας μηχανής ψηφοφορίας, το δεύτερο είναι να πάρει τα σημεία επαφής για κουμπιά και να εντοπίσει τα κουμπιά με βάση το άγγιγμα και τελικά να υπολογίσει τα αποτελέσματα και να τα αποθηκεύσει στη μνήμη του Arduino.
1. Δημιουργία διεπαφής χρήστη:
Έχω δημιουργήσει ένα απλό περιβάλλον χρήστη με τρία κουμπιά και το όνομα του έργου. Η βιβλιοθήκη οθόνης TFT σάς επιτρέπει να σχεδιάζετε γραμμές, ορθογώνια, κύκλους, χαρακτήρες, χορδές και πολλά άλλα από οποιοδήποτε προτιμώμενο χρώμα και μέγεθος. Εδώ δημιουργούνται δύο ορθογώνια κουμπιά χρησιμοποιώντας τις λειτουργίες fillRoundRect και drawRoundRect. Η σύνταξη για τη λειτουργία tft.drawRoundRect δίνεται παρακάτω:
tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, ακτίνα int16_t, χρώμα uint16_t)
Οπου:
x0 = X συντεταγμένη του σημείου εκκίνησης του ορθογωνίου
y0 = Y συντεταγμένη του σημείου εκκίνησης του ορθογωνίου
w = Πλάτος του ορθογωνίου
h = ightψος του ορθογωνίου
ακτίνα = Ακτίνα της στρογγυλής γωνίας
χρώμα = Χρώμα του ορθού.
void drawHome ()
{
tft.fillScreen (ΛΕΥΚΟ);
tft.drawRoundRect (0, 0, 319, 240, 8, ΛΕΥΚΟ); // Περίγραμμα σελίδας
tft.fillRoundRect (10, 70, 220, 50, 8, GOLD);
tft.drawRoundRect (10, 70, 220, 50, 8, ΛΕΥΚΟ); //Ψήφος
tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);
tft.drawRoundRect (10, 160, 220, 50, 8, ΛΕΥΚΟ); //Εγγράφω
tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); //Αποτέλεσμα
tft.drawRoundRect (10, 250, 220, 50, 8, ΛΕΥΚΟ);
tft.setCursor (65, 5);
tft.setTextSize (3);
tft.setTextColor (CYAN);
tft.print ("otηφοφορία");
tft.setCursor (57, 29);
tft.print ("Μηχανή");
tft.setTextSize (3);
tft.setTextColor (ΛΕΥΚΟ);
tft.setCursor (25, 82);
tft.print ("Υποψήφιος 1");
tft.setCursor (25, 172);
tft.print ("Υποψήφιος 2");
tft.setCursor (25, 262);
tft.print ("Υποψήφιος 3");
}
2. Λήψη των σημείων αφής και εντοπισμός κουμπιών:
Τώρα στο δεύτερο τμήμα του κώδικα, θα εντοπίσουμε τα σημεία επαφής των κουμπιών και στη συνέχεια θα χρησιμοποιήσουμε αυτά τα σημεία για να προβλέψουμε το κουμπί. Η λειτουργία ts.getPoint () χρησιμοποιείται για την ανίχνευση του αγγίγματος του χρήστη στην οθόνη TFT. Το ts.getPoint δίνει τις τιμές Raw ADC για την περιοχή που αγγίξατε. Αυτές οι τιμές RAW ADC μετατρέπονται στη συνέχεια σε Συντεταγμένες Pixel χρησιμοποιώντας τη συνάρτηση χάρτη.
TSPoint p = ts.getPoint ();
εάν (p.z> ts.pressureThreshhold)
{
p.x = χάρτης (p.x, TS_MAXX, TS_MINX, 0, 320);
p.y = χάρτης (p.y, TS_MAXY, TS_MINY, 0, 240);
//Serial.print("X: ");
//Serial.print(p.x);
//Serial.print("Y: ");
//Serial.print(p.y);
Τώρα, δεδομένου ότι γνωρίζουμε τις συντεταγμένες Χ και Υ για κάθε κουμπί, μπορούμε να προβλέψουμε πού έχει αγγίξει ο χρήστης χρησιμοποιώντας τη δήλωση "αν".
εάν (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)
{
Serial.println ("Υποψήφιος 1");
Όταν ένας ψηφοφόρος πατήσει το κουμπί υποψηφίου, θα του ζητηθεί να σαρώσει το δάχτυλο στον αισθητήρα δακτυλικών αποτυπωμάτων. Εάν το αναγνωριστικό δακτύλου είναι εξουσιοδοτημένο, τότε ο ψηφοφόρος επιτρέπεται να ψηφίσει. Εάν οποιοσδήποτε μη εγγεγραμμένος χρήστης θέλει να ψηφίσει, τότε η μονάδα δακτυλικών αποτυπωμάτων δεν θα εντοπίσει το αναγνωριστικό της στο σύστημα και στην οθόνη θα εμφανιστεί η ένδειξη "Sorry You Can't Vote".
εάν (fps. IsPressFinger ())
{
fps. CaptureFinger (false);
int id = fps. Identify1_N ();
αν (id <200)
{
msg = "Υποψήφιος 1";
ψηφοφορία1 ++;
EEPROM.write (0, ψηφοφορία1);
tft.setCursor (42, 170);
tft.print ("Ευχαριστώ");
καθυστέρηση (3000)?
drawHome ();
3. Αποτέλεσμα:
Το τελευταίο βήμα είναι η καταμέτρηση των ψήφων από τη μνήμη της EEPROM και η σύγκριση των ψήφων και των τριών υποψηφίων. Κερδίζει ένας υποψήφιος με τις περισσότερες ψήφους. Το αποτέλεσμα είναι προσβάσιμο μόνο από τη σειριακή οθόνη και δεν θα εμφανιστεί στην οθόνη TFT.
vote1 = EEPROM.read (0);
vote2 = EEPROM.read (1);
vote3 = EEPROM.read (2);
αν (ψηφίστε)
{
εάν ((ψηφοφορία1> ψήφος2 && ψήφος1> ψήφος3))
{
Serial.print ("Can1 Wins");
καθυστέρηση (2000).
}
Βήμα 4: Δοκιμή του συστήματος ψηφοφορίας με δακτυλικά αποτυπώματα χρησιμοποιώντας το Arduino
Για να δοκιμάσετε το έργο, συνδέστε το Arduino Uno στο φορητό υπολογιστή και ανεβάστε τον δεδομένο κώδικα. Μόλις μεταφορτωθεί ο κωδικός, η οθόνη TFT πρέπει να εμφανίζει το όνομα του υποψηφίου. Όταν κάποιος αγγίζει ένα όνομα υποψηφίου, το μηχάνημα θα ζητήσει να σαρώσει το σαρωτή δακτυλικών αποτυπωμάτων. Εάν το δακτυλικό αποτύπωμα είναι έγκυρο, τότε θα καταμετρηθεί η ψήφος του χρήστη, αλλά σε περίπτωση που το μοτίβο δεν ταιριάζει με τις εγγραφές της βάσης δεδομένων, η πρόσβαση για ψήφο θα αποκλειστεί. Ο συνολικός αριθμός ψήφων για κάθε υποψήφιο θα αποθηκευτεί στην EEPROM και θα κερδίσει ένας υποψήφιος που έχει τον μεγαλύτερο αριθμό ψήφων.
Ελπίζω να σας άρεσε το σεμινάριο και να μάθατε κάτι χρήσιμο. Εάν έχετε ερωτήσεις, ενημερώστε μας στην παρακάτω ενότητα σχολίων και επίσης ακολουθήστε μας στο Instructable για περισσότερα τέτοια ενδιαφέροντα έργα.
Συνιστάται:
Βιομετρική είσοδος αυτοκινήτου - αληθινό αυτοκίνητο χωρίς κλειδί: 4 βήματα
Biometric Car Entry - True Keyless Car: Λίγους μήνες πριν η κόρη μου με ρώτησε, γιατί τα σύγχρονα αυτοκίνητα δεν είναι εξοπλισμένα με βιομετρικό σύστημα εισόδου, όταν το έχει ακόμη και ένα κινητό τηλέφωνο. Από τότε εργαζόμουν στην εφαρμογή του ίδιου και τελικά κατάφερα να εγκαταστήσω και να δοκιμάσω κάτι στο T μου
Διαδικτυακό σύστημα ψηφοφορίας με δακτυλικά αποτυπώματα (FVOS): 5 βήματα
Διαδικτυακό σύστημα ψηφοφορίας δακτυλικών αποτυπωμάτων (FVOS): Το ηλεκτρονικό σύστημα ψηφοφορίας μέσω δακτυλικών αποτυπωμάτων επιτρέπει στους ψηφοφόρους να ψηφίσουν πλήρως ψηφιοποιημένα, συλλέγοντας και επιβεβαιώνοντας τις πληροφορίες του μέσω σάρωσης του δακτυλικού αποτυπώματος μέσω της συσκευής και αποθηκεύοντας τα δεδομένα σε διακομιστή. Διαθέτει φιλικό προς το χρήστη G
SafetyLock: Smart Lock Made With Raspberry Pi (δακτυλικό αποτύπωμα και RFID): 10 βήματα
SafetyLock: ένα Smart Lock Made With Raspberry Pi (Δακτυλικό αποτύπωμα και RFID): Θέλατε ποτέ έναν πιο προσιτό τρόπο για να εξασφαλίσετε το σπίτι σας; Αν ναι, αυτή είναι η λύση για εσάς! Έφτιαξα το SafetyLock, αυτό είναι ένα κλείδωμα που μπορεί να ανοίξει με το δακτυλικό σας αποτύπωμα, ένα σήμα RFID και ακόμη και μέσω ενός ιστότοπου. Χάρη σε αυτή την ιδέα θα
Δακτυλικό αποτύπωμα προστατευμένο κουτί: 4 βήματα
Δακτυλικό αποτύπωμα προστατευμένο κουτί: Χρησιμοποιήστε το σαρωτή δακτυλικών αποτυπωμάτων UART του DFRobot για να αποθηκεύσετε δακτυλικά αποτυπώματα και να επιτρέψετε μόνο σε εξουσιοδοτημένα άτομα να έχουν πρόσβαση στο κουτί
Μηχανή ATM χρησιμοποιώντας Arduino (Δακτυλικό αποτύπωμα+κάρτα RFID): 4 βήματα (με εικόνες)
Μηχανή ATM χρησιμοποιώντας Arduino (Δακτυλικό αποτύπωμα+κάρτα RFID): Γεια σας φίλοι, επιστρέφω με μια νέα ιδέα για μηχανήματα ΑΤΜ χρησιμοποιώντας το Arduino. Μπορεί να είναι χρήσιμο σε αγροτικές περιοχές όπου δεν είναι δυνατές οι υπηρεσίες χωρίς μετρητά. Είναι μια μικρή ιδέα. Ελπίζω το απολαύσατε. Ας ξεκινήσουμε