Sadržaj:

Biometrijski glasački stroj na temelju otisaka prstiju koji koristi Arduino: 4 koraka (sa slikama)
Biometrijski glasački stroj na temelju otisaka prstiju koji koristi Arduino: 4 koraka (sa slikama)

Video: Biometrijski glasački stroj na temelju otisaka prstiju koji koristi Arduino: 4 koraka (sa slikama)

Video: Biometrijski glasački stroj na temelju otisaka prstiju koji koristi Arduino: 4 koraka (sa slikama)
Video: Война на денежные средства 2024, Studeni
Anonim
Biometrijski stroj za glasovanje na temelju otiska prsta pomoću Arduina
Biometrijski stroj za glasovanje na temelju otiska prsta pomoću Arduina

Svi smo svjesni postojećeg elektroničkog glasačkog stroja gdje korisnik mora pritisnuti gumb za glasovanje. No ti su strojevi od početka kritizirani zbog kaljenja. Stoga vlada planira uvesti glasački stroj temeljen na otiscima prstiju gdje korisnici mogu glasovati na temelju njegova/njezinog otiska otiska prsta. Ovaj sustav neće samo ukloniti mogućnost dupliciranja glasova, već će i spriječiti bilo kakve manipulacije.

Tako ćemo u ovom projektu izgraditi prototip biometrijskog glasačkog stroja koristeći Arduino Uno, TFT zaslon i senzor otiska prsta. Ranije smo koristili senzor otiska prsta R305 s NodeMCU za izgradnju biometrijskog sustava praćenja, ali ovdje ćemo koristiti napredni senzor otiska prsta GT-511C3 s Arduinom.

Korak 1: Komponente potrebne za izradu biometrijskog glasačkog stroja

  • Arduino Uno
  • 2,4”TFT LCD zaslon
  • Senzor otiska prsta GT-511C3

Ovaj 2,4 -inčni TFT zaslon prethodno se koristio s Arduinom za izgradnju sustava naručivanja jelovnika na temelju IoT -a.

Korak 2: Dijagram kruga za biometrijski glasački stroj pomoću Arduina

Dijagram sklopa za biometrijski glasački stroj pomoću Arduina
Dijagram sklopa za biometrijski glasački stroj pomoću Arduina

Dijagram kruga za ovaj projekt vrlo je jednostavan jer povezujemo samo TFT zaslon i modul senzora otiska prsta s Arduino Uno. VCC i GND pinovi senzora otiska prsta spojeni su na 5V i GND pinove Arduina, dok su TX i RX pinovi spojeni na digitalni pin 11 i 12 Arduino Uno.

2.4 -inčni TFT LCD zaslon je Arduino štit i može se izravno montirati na Arduino Uno, kao što je prikazano na donjoj slici. TFT zaslon ima 28 pinova koji se savršeno uklapaju u Arduino Uno, pa sam morao lemiti senzor otiska prsta na stražnjoj strani Arduina.

Korak 3: Izvorni kod i Korak po korak objašnjenje koda

Cjeloviti kôd za ovaj projekt sustava glasovanja o otiscima prstiju koji koristi Arduino dan je na kraju članka; ovdje objašnjavamo neke važne funkcije koda.

Kôd koristi biblioteke SPFD5408, Software Serial i FPS_GT511C3. Knjižnica SPFD5408 je izmijenjena verzija izvorne biblioteke Adafruit. Ove datoteke knjižnice mogu se preuzeti s donjih veza:

  • Knjižnica SPFD5408
  • Softverski serijski broj
  • FPS_GT511C3

Nakon uključivanja knjižnica i definiranja nekih važnih parametara, možemo ući u programski dio. U ovom programu postoje tri odjeljka. Jedan je stvaranje korisničkog sučelja stroja za glasovanje, drugi je dobivanje dodirnih točaka za gumbe i otkrivanje gumba na temelju dodira te konačno izračunavanje rezultata i njihovo spremanje u Arduinovu memoriju.

1. Stvaranje korisničkog sučelja:

Napravio sam jednostavno korisničko sučelje s tri gumba i nazivom projekta. Knjižnica TFT zaslona omogućuje vam crtanje linija, pravokutnika, krugova, znakova, nizova i još mnogo toga bilo koje željene boje i veličine. Ovdje se stvaraju dva pravokutna gumba pomoću funkcija fillRoundRect i drawRoundRect. Sintaksa za funkciju tft.drawRoundRect navedena je u nastavku:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radijus, uint16_t boja)

Gdje:

x0 = X koordinata početne točke pravokutnika

y0 = Y koordinata početne točke pravokutnika

w = Širina pravokutnika

h = Visina pravokutnika

radius = Polumjer okruglog ugla

boja = Boja Prave.

void drawHome ()

{

tft.fillScreen (BIJELO);

tft.drawRoundRect (0, 0, 319, 240, 8, BIJELO); // Granica stranice

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

tft.drawRoundRect (10, 70, 220, 50, 8, BIJELO); //Glasanje

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

tft.drawRoundRect (10, 160, 220, 50, 8, BIJELO); //Upisati

tft.fillRoundRect (10, 250, 220, 50, 8, ZLATO); //Proizlaziti

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Glasanje");

tft.setCursor (57, 29);

tft.print ("Stroj");

tft.setTextSize (3);

tft.setTextColor (BIJELO);

tft.setCursor (25, 82);

tft.print ("Kandidat 1");

tft.setCursor (25, 172);

tft.print ("Kandidat 2");

tft.setCursor (25, 262);

tft.print ("Kandidat 3");

}

2. Dobivanje dodirnih točaka i gumba za otkrivanje:

Sada ćemo u drugom odjeljku koda otkriti dodirne točke gumba, a zatim koristiti te točke za predviđanje gumba. Funkcija ts.getPoint () koristi se za otkrivanje dodira korisnika na TFT zaslonu. ts.getPoint daje sirove ADC vrijednosti za dodirnuto područje. Ove se vrijednosti RAW ADC -a zatim pretvaraju u koordinate piksela pomoću funkcije karte.

TSPoint p = ts.getPoint ();

if (p.z> ts.prag praga)

{

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

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

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

//Serijski.tisak(p.x);

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

//Serijski.tisak(p.y);

Sada, budući da znamo koordinate X i Y za svaki gumb, možemo predvidjeti gdje je korisnik dodirnuo pomoću naredbe 'if'.

if (p.x> 70 && p.x 10 && p.y MINPRISAK && p.z <MAXPRESSURE)

{

Serial.println ("Kandidat 1");

Kad birač pritisne gumb kandidata, od njega će se tražiti da skenira prst na senzoru otiska prsta. Ako je ID prsta odobren, biraču je dozvoljeno glasovanje. Ako bilo koji neregistrirani korisnik želi glasovati, modul otiska prsta neće otkriti svoj ID u sustavu, a na zaslonu će se prikazati 'Žao mi je što ne možete glasovati'.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

ako (id <200)

{

msg = "Kandidat 1";

glasati1 ++;

EEPROM.write (0, glas1);

tft.setCursor (42, 170);

tft.print ("Hvala");

kašnjenje (3000);

drawHome ();

3. Rezultat:

Posljednji korak je prikupljanje glasova iz memorije EEPROM -a i usporedba glasova sva tri kandidata. Pobjeđuje kandidat s najvećim brojem glasova. Rezultatu se može pristupiti samo sa serijskog monitora i neće biti prikazan na TFT ekranu.

vote1 = EEPROM.čitano (0);

vote2 = EEPROM.čitaj (1);

vote3 = EEPROM.čitaj (2);

ako (glasovanje)

{

ako ((glasaj1> glasaj2 && glasaj1> glasaj3))

{

Serial.print ("Can1 pobjeđuje");

odgoda (2000);

}

Korak 4: Testiranje sustava glasovanja o otiscima prstiju pomoću Arduina

Da biste testirali projekt, povežite Arduino Uno s prijenosnim računalom i prenesite zadani kod. Nakon što se kôd učita, na TFT zaslonu bi se trebalo prikazati ime kandidata. Kad netko dodirne ime kandidata, stroj će zatražiti skeniranje skenera otiska prsta. Ako je otisak prsta valjan, korisnički glas će se prebrojati, ali u slučaju da se uzorak ne podudara sa zapisima baze podataka, pristup glasovanju bit će odbijen. Ukupan broj glasova za svakog kandidata bit će pohranjen u EEPROM -u, a pobijedit će kandidat koji ima najveći broj glasova.

Nadam se da ste uživali u vodiču i naučili nešto korisno. Ako imate bilo kakvih pitanja, molimo vas da nas obavijestite u donjem odjeljku komentara, a također nas pratite na Instructable za još takvih zanimljivih projekata.

Preporučeni: