Cuprins:

Mașină de vot biometric pe bază de amprentă digitală folosind Arduino: 4 pași (cu imagini)
Mașină de vot biometric pe bază de amprentă digitală folosind Arduino: 4 pași (cu imagini)

Video: Mașină de vot biometric pe bază de amprentă digitală folosind Arduino: 4 pași (cu imagini)

Video: Mașină de vot biometric pe bază de amprentă digitală folosind Arduino: 4 pași (cu imagini)
Video: 10.000 Euro pentru soluții în pandemie - #IGDLCC #DEACASĂ 2024, Iulie
Anonim
Aparat de vot biometric bazat pe amprentă digitală care utilizează Arduino
Aparat de vot biometric bazat pe amprentă digitală care utilizează Arduino

Cu toții suntem conștienți de aparatul de vot electronic existent în care utilizatorul trebuie să apese un buton pentru a vota. Dar aceste mașini au fost criticate pentru temperare încă de la început. Așadar, guvernul intenționează să introducă o mașină de vot pe bază de amprentă în care utilizatorii să poată vota pe baza impresiei sale de amprentă. Acest sistem nu numai că va elimina posibilitatea duplicării voturilor, ci va preveni orice fel de manipulare.

Deci, în acest proiect, vom construi un prototip de mașină de vot biometrică utilizând Arduino Uno, afișaj TFT și senzor de amprentă digitală. Am folosit anterior senzorul de amprentă R305 cu NodeMCU pentru a construi un sistem de prezență bazat pe biometrie, dar aici vom folosi senzorul avansat de amprentă GT-511C3 cu Arduino.

Pasul 1: Componente necesare pentru a construi un aparat de vot biometric

  • Arduino Uno
  • Ecran LCD TFT de 2,4”
  • Senzor de amprentă GT-511C3

Acest afișaj TFT de 2,4 inci este folosit anterior cu Arduino pentru a construi un sistem de comandă a meniului restaurantului bazat pe IoT.

Pasul 2: Diagrama circuitului pentru aparatul de vot biometric folosind Arduino

Diagrama circuitului pentru aparatul de vot biometric care utilizează Arduino
Diagrama circuitului pentru aparatul de vot biometric care utilizează Arduino

Diagrama circuitului pentru acest proiect este foarte simplă, deoarece conectăm doar afișajul TFT și modulul senzorului de amprentă digitală cu Arduino Uno. Pinii VCC și GND ai senzorului de amprentă sunt conectați la pinii 5V și GND ai Arduino, în timp ce pinii TX și RX sunt conectați la pinii digitali 11 și 12 din Arduino Uno.

Ecranul LCD TFT de 2,4”este un Arduino Shield și poate fi montat direct pe Arduino Uno, așa cum se arată în imaginea de mai jos. Afișajul TFT are 28 de pini care se potrivesc perfect în Arduino Uno, așa că a trebuit să lipesc senzorul de amprentă de pe partea din spate a Arduino.

Pasul 3: Cod sursă și explicație pas cu pas

Codul complet pentru acest proiect de sistem de votare cu amprentă digitală care utilizează Arduino este dat la sfârșitul articolului; aici explicăm câteva funcții importante ale codului.

Codul utilizează bibliotecile SPFD5408, Software Serial și FPS_GT511C3. Biblioteca SPFD5408 este versiunea modificată a bibliotecii originale Adafruit. Aceste fișiere de bibliotecă pot fi descărcate de pe linkurile date mai jos:

  • Biblioteca SPFD5408
  • Software serial
  • FPS_GT511C3

După includerea bibliotecilor și definirea unor parametri importanți, putem intra în partea de programare. Există trei secțiuni implicate în acest program. Unul este crearea unui UI al unui aparat de votat, al doilea este obținerea punctelor de atingere pentru butoane și detectarea butoanelor bazate pe atingere și în cele din urmă calcularea rezultatelor și salvarea lor în memoria Arduino.

1. Crearea UI:

Am creat o interfață simplă cu trei butoane și numele proiectului. Biblioteca de afișare TFT vă permite să desenați linii, dreptunghi, cercuri, caractere, șiruri și multe altele din orice culoare și dimensiune preferată. Aici sunt create două butoane dreptunghiulare folosind funcțiile fillRoundRect și drawRoundRect. Sintaxa pentru funcția tft.drawRoundRect este dată mai jos:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t rază, uint16_t culoare)

Unde:

x0 = coordonata X a punctului de plecare dreptunghiular

y0 = Coordonata Y a punctului de plecare dreptunghiular

w = Lățimea dreptunghiului

h = Înălțimea dreptunghiului

raza = Raza colțului rotund

color = Color of the Rect.

void drawHome ()

{

tft.fillScreen (ALB);

tft.drawRoundRect (0, 0, 319, 240, 8, ALB); // Bordura paginii

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

tft.drawRoundRect (10, 70, 220, 50, 8, ALB); //Vot

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

tft.drawRoundRect (10, 160, 220, 50, 8, ALB); // Înscrieți-vă

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); //Rezultat

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print („Votare”);

tft.setCursor (57, 29);

tft.print („Mașină”);

tft.setTextSize (3);

tft.setTextColor (ALB);

tft.setCursor (25, 82);

tft.print („Candidatul 1”);

tft.setCursor (25, 172);

tft.print („Candidatul 2”);

tft.setCursor (25, 262);

tft.print („Candidatul 3”);

}

2. Obținerea punctelor tactile și detectarea butoanelor:

Acum, în a doua secțiune a codului, vom detecta punctele de atingere ale butonului și apoi vom folosi aceste puncte pentru a prezice butonul. Funcția ts.getPoint () este utilizată pentru a detecta atingerea utilizatorului pe afișajul TFT. ts.getPoint oferă valorile Raw ADC pentru zona atinsă. Aceste valori RAW ADC sunt apoi convertite în coordonate pixel folosind funcția hartă.

TSPoint p = ts.getPoint ();

if (p.z> ts.pressureThreshhold)

{

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

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

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

//Serial.print(p.x);

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

//Serial.print(p.y);

Acum, din moment ce cunoaștem coordonatele X și Y pentru fiecare buton, putem prezice unde a atins utilizatorul folosind instrucțiunea „dacă”.

if (p.x> 70 && p.x 10 && p.y MINPRESIUNE && p.z <MAXPRESIUNE)

{

Serial.println („Candidatul 1”);

Când un alegător apasă butonul candidat, i se va cere să scaneze degetul pe senzorul de amprentă. Dacă ID-ul degetului este autorizat, atunci alegătorul are voie să voteze. Dacă un utilizator neînregistrat dorește să voteze, modulul de amprentă nu își va detecta ID-ul în sistem și pe afișaj va apărea „Scuze că nu poți vota”.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (fals);

int id = fps. Identify1_N ();

if (id <200)

{

msg = "Candidatul 1";

vot1 ++;

EEPROM.write (0, vot1);

tft.setCursor (42, 170);

tft.print („Mulțumesc”);

întârziere (3000);

drawHome ();

3. Rezultat:

Ultimul pas este obținerea numărului de voturi din memoria EEPROM și compararea voturilor tuturor celor trei candidați. Un candidat cu cele mai mari voturi câștigă. Rezultatul poate fi accesat numai de pe monitorul serial și nu va fi afișat pe ecranul TFT.

vot1 = EEPROM.read (0);

vot2 = EEPROM.read (1);

vot3 = EEPROM.read (2);

dacă (vot)

{

if ((vot1> vot2 && vot1> vot3))

{

Serial.print („Poate câștiga 1”);

întârziere (2000);

}

Pasul 4: Testarea sistemului de votare cu amprentă digitală folosind Arduino

Pentru a testa proiectul, conectați Arduino Uno la laptop și încărcați codul dat. Odată ce codul este încărcat, afișajul TFT ar trebui să afișeze numele candidatului. Când cineva atinge numele unui candidat, aparatul va cere să scaneze scanerul de amprentă. Dacă amprenta este validă, atunci votul utilizatorului va fi numărat, dar în cazul în care modelul nu se potrivește cu înregistrările bazei de date, accesul la vot va fi refuzat. Numărul total de voturi pentru fiecare candidat va fi stocat în EEPROM și va câștiga un candidat cu cel mai mare număr de voturi.

Sper că ți-a plăcut tutorialul și ai învățat ceva util. Dacă aveți întrebări, vă rugăm să ne anunțați în secțiunea de comentarii de mai jos și să ne urmăriți și pe Instructable pentru mai multe astfel de proiecte interesante.

Recomandat: