Sommario:

Macchina per il voto biometrico basata su impronte digitali con Arduino: 4 passaggi (con immagini)
Macchina per il voto biometrico basata su impronte digitali con Arduino: 4 passaggi (con immagini)

Video: Macchina per il voto biometrico basata su impronte digitali con Arduino: 4 passaggi (con immagini)

Video: Macchina per il voto biometrico basata su impronte digitali con Arduino: 4 passaggi (con immagini)
Video: Fingerprint Based Biometric Smart Electronic Voting Machine Using Arduino 2024, Novembre
Anonim
Macchina per il voto biometrico basata su impronte digitali che utilizza Arduino
Macchina per il voto biometrico basata su impronte digitali che utilizza Arduino

Siamo tutti consapevoli della macchina per il voto elettronico esistente in cui l'utente deve premere un pulsante per esprimere il voto. Ma queste macchine sono state criticate per la tempra sin dall'inizio. Quindi il governo sta pianificando di introdurre una macchina per il voto basata sulle impronte digitali in cui gli utenti possono esprimere il voto in base alla propria impronta digitale. Questo sistema non solo eliminerà la possibilità di voti duplicati, ma impedirà anche qualsiasi tipo di manipolazione.

Quindi, in questo progetto, costruiremo un prototipo di una macchina per il voto biometrico utilizzando Arduino Uno, display TFT e sensore di impronte digitali. In precedenza abbiamo utilizzato il sensore di impronte digitali R305 con NodeMCU per costruire un sistema di rilevazione presenze biometrico, ma qui utilizzeremo l'avanzato sensore di impronte digitali GT-511C3 con Arduino.

Passaggio 1: componenti necessari per costruire una macchina per il voto biometrico

  • Arduino Uno
  • Schermo LCD TFT da 2,4"
  • Sensore di impronte digitali GT-511C3

Questo display TFT da 2,4 pollici è stato precedentemente utilizzato con Arduino per creare un sistema di ordinazione di menu per ristoranti basato su IoT.

Passaggio 2: Schema del circuito per la macchina per il voto biometrico con Arduino

Schema del circuito per la macchina per il voto biometrico con Arduino
Schema del circuito per la macchina per il voto biometrico con Arduino

Il diagramma del circuito per questo progetto è molto semplice poiché stiamo collegando solo il display TFT e il modulo del sensore di impronte digitali con Arduino Uno. I pin VCC e GND del sensore di impronte digitali sono collegati ai pin 5V e GND di Arduino mentre i pin TX e RX sono collegati ai pin digitali 11 e 12 di Arduino Uno.

Lo schermo LCD TFT da 2,4 pollici è un Arduino Shield e può essere montato direttamente su Arduino Uno, come mostrato nell'immagine sottostante. Il display TFT ha 28 pin che si adattano perfettamente ad Arduino Uno, quindi ho dovuto saldare il sensore di impronte digitali sul retro di Arduino.

Passaggio 3: codice sorgente e spiegazione passo passo del codice

Il codice completo per questo progetto di sistema di voto per impronte digitali utilizzando Arduino è fornito alla fine dell'articolo; qui spieghiamo alcune importanti funzioni del codice.

Il codice utilizza le librerie SPFD5408, Software Serial e FPS_GT511C3. La libreria SPFD5408 è la versione modificata della libreria Adafruit originale. Questi file di libreria possono essere scaricati dai collegamenti indicati di seguito:

  • Libreria SPFD5408
  • Software seriale
  • FPS_GT511C3

Dopo aver inserito le librerie e definito alcuni parametri importanti, possiamo entrare nella parte di programmazione. Ci sono tre sezioni coinvolte in questo programma. Uno è creare un'interfaccia utente di una macchina per il voto, il secondo è ottenere i punti di contatto per i pulsanti e rilevare i pulsanti in base al tocco e infine calcolare i risultati e salvarli nella memoria di Arduino.

1. Creazione dell'interfaccia utente:

Ho creato una semplice interfaccia utente con tre pulsanti e il nome del progetto. La libreria del display TFT ti consente di disegnare linee, rettangoli, cerchi, caratteri, stringhe e molto altro di qualsiasi colore e dimensione preferiti. Qui vengono creati due pulsanti rettangolari utilizzando le funzioni fillRoundRect e drawRoundRect. La sintassi per la funzione tft.drawRoundRect è riportata di seguito:

tft.drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raggio, uint16_t colore)

In cui si:

x0= coordinata X del punto di partenza del rettangolo

y0= coordinata Y del punto iniziale del rettangolo

w = Larghezza del rettangolo

h = Altezza del Rettangolare

raggio= Raggio dell'angolo arrotondato

color = Colore della Rett.

void drawHome()

{

tft.fillScreen(BIANCO);

tft.drawRoundRect(0, 0, 319, 240, 8, BIANCO); //Bordo pagina

tft.fillRoundRect(10, 70, 220, 50, 8, ORO);

tft.drawRoundRect(10, 70, 220, 50, 8, BIANCO); //Votazione

tft.fillRoundRect(10, 160, 220, 50, 8, ORO);

tft.drawRoundRect(10, 160, 220, 50, 8, BIANCO); //Iscriversi

tft.fillRoundRect(10, 250, 220, 50, 8, ORO); //Risultato

tft.drawRoundRect(10, 250, 220, 50, 8, BIANCO);

tft.setCursor(65, 5);

tft.setTextSize(3);

tft.setTextColor(CIANO);

tft.print("Voto");

tft.setCursor(57, 29);

tft.print("Macchina");

tft.setTextSize(3);

tft.setTextColor(BIANCO);

tft.setCursor(25, 82);

tft.print("Candidato 1");

tft.setCursor(25, 172);

tft.print("Candidato 2");

tft.setCursor(25, 262);

tft.print("Candidato 3");

}

2. Ottenere i punti di contatto e i pulsanti di rilevamento:

Ora, nella seconda sezione del codice, rileveremo i punti di contatto del pulsante e quindi utilizzeremo questi punti per prevedere il pulsante. La funzione ts.getPoint() viene utilizzata per rilevare il tocco dell'utente sul display TFT. ts.getPoint fornisce i valori Raw ADC per l'area toccata. Questi valori RAW ADC vengono quindi convertiti in coordinate pixel utilizzando la funzione mappa.

TSPoint p = ts.getPoint();

if (p.z > ts.pressionThreshhold)

{

p.x = map(p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = map(p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X:");

//Serial.print(p.x);

//Serial.print("Y:");

//Serial.print(p.y);

Ora, poiché conosciamo le coordinate X e Y per ciascun pulsante, possiamo prevedere dove l'utente ha toccato utilizzando l'istruzione "if".

if (p.x > 70 && p.x 10 && p.y PRESSIONE MIN && p.z < PRESSIONE MAX)

{

Serial.println("Candidato 1");

Quando un elettore preme il pulsante del candidato, gli verrà chiesto di scansionare il dito sul sensore di impronte digitali. Se il finger ID è autorizzato, l'elettore può votare. Se un utente non registrato desidera votare, il modulo impronte digitali non rileverà il suo ID nel sistema e il display mostrerà "Scusa, non puoi votare".

if (fps. IsPressFinger())

{

fps. CaptureFinger(false);

int id = fps. Identify1_N();

se (id <200)

{

msg = "Candidato 1";

voto1++;

EEPROM.write(0, voto1);

tft.setCursor(42, 170);

tft.print("Grazie");

ritardo (3000);

drawHome();

3. Risultato:

L'ultimo passo è ottenere il conteggio dei voti dalla memoria EEPROM e confrontare i voti di tutti e tre i candidati. Vince il candidato che ottiene i voti più alti. Il risultato è accessibile solo dal monitor seriale e non verrà visualizzato sullo schermo TFT.

vote1=EEPROM.read(0);

vote2=EEPROM.read(1);

vote3=EEPROM.read(2);

se (voto)

{

if((voto1 > voto2 && voto1 > voto3))

{

Serial.print("Can1 vince");

ritardo (2000);

}

Passaggio 4: test del sistema di voto delle impronte digitali utilizzando Arduino

Per testare il progetto, collega Arduino Uno al laptop e carica il codice indicato. Una volta caricato il codice, il display TFT dovrebbe visualizzare il nome del candidato. Quando qualcuno tocca il nome di un candidato, la macchina chiederà di scansionare lo scanner di impronte digitali. Se l'impronta digitale è valida, verrà conteggiato il voto dell'utente, ma nel caso in cui il modello non corrisponda ai record del database, verrà negato l'accesso per esprimere un voto. Il numero totale di voti per ogni candidato sarà memorizzato in EEPROM e vincerà il candidato che avrà il maggior numero di voti.

Spero che il tutorial ti sia piaciuto e che tu abbia imparato qualcosa di utile. Se hai domande, faccelo sapere nella sezione commenti qui sotto e seguici anche su Instructable per progetti più interessanti.

Consigliato: