Πίνακας περιεχομένων:

Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino: 4 βήματα (με εικόνες)
Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino: 4 βήματα (με εικόνες)

Βίντεο: Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino: 4 βήματα (με εικόνες)

Βίντεο: Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino: 4 βήματα (με εικόνες)
Βίντεο: «Φακέλωμα του πολίτη» οι νέες ταυτότητες. Ενημερωτική εκδήλωση της NIKHΣ στο ΣΕΦ 2024, Νοέμβριος
Anonim
Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino
Βιομετρική μηχανή ψηφοφορίας με δακτυλικό αποτύπωμα χρησιμοποιώντας Arduino

Όλοι γνωρίζουμε την υπάρχουσα ηλεκτρονική μηχανή ψηφοφορίας όπου ο χρήστης πρέπει να πατήσει ένα κουμπί για να ψηφίσει. Αλλά αυτά τα μηχανήματα έχουν επικριθεί για το μετριασμό από την αρχή. Έτσι, η κυβέρνηση σχεδιάζει να εισαγάγει ένα μηχάνημα ψηφοφορίας με δακτυλικά αποτυπώματα, όπου οι χρήστες θα μπορούν να ψηφίσουν με βάση την εντύπωση των δακτυλικών αποτυπωμάτων του. Αυτό το σύστημα όχι μόνο θα αφαιρέσει τη δυνατότητα διπλής ψήφου αλλά θα αποτρέψει κάθε είδους χειραγώγηση.

Έτσι, σε αυτό το έργο, πρόκειται να δημιουργήσουμε ένα πρωτότυπο μιας βιομετρικής μηχανής ψηφοφορίας χρησιμοποιώντας το Arduino Uno, την οθόνη TFT και τον αισθητήρα δακτυλικών αποτυπωμάτων. Χρησιμοποιήσαμε προηγουμένως αισθητήρα δακτυλικών αποτυπωμάτων R305 με NodeMCU για να δημιουργήσουμε ένα Βιομετρικό Σύστημα Συμμετοχής, αλλά εδώ θα χρησιμοποιήσουμε τον προηγμένο αισθητήρα δακτυλικών αποτυπωμάτων GT-511C3 με Arduino.

Βήμα 1: Στοιχεία που απαιτούνται για την κατασκευή βιομετρικής μηχανής ψηφοφορίας

  • Arduino Uno
  • Ασπίδα οθόνης TFT LCD 2,4”
  • Αισθητήρας δακτυλικών αποτυπωμάτων GT-511C3

Αυτή η οθόνη 2,4 ιντσών TFT χρησιμοποιήθηκε προηγουμένως με το Arduino για τη δημιουργία συστήματος παραγγελίας μενού εστιατορίου με βάση το IoT.

Βήμα 2: Διάγραμμα κυκλώματος για βιομετρική μηχανή ψηφοφορίας χρησιμοποιώντας Arduino

Διάγραμμα κυκλώματος για βιομετρική μηχανή ψηφοφορίας χρησιμοποιώντας Arduino
Διάγραμμα κυκλώματος για βιομετρική μηχανή ψηφοφορίας χρησιμοποιώντας 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 για περισσότερα τέτοια ενδιαφέροντα έργα.

Συνιστάται: