Kazalo:

Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina: 4 koraki (s slikami)
Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina: 4 koraki (s slikami)

Video: Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina: 4 koraki (s slikami)

Video: Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina: 4 koraki (s slikami)
Video: Побег Марка 2024, Julij
Anonim
Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina
Biometrični glasovalni stroj na osnovi prstnih odtisov z uporabo Arduina

Vsi se zavedamo obstoječega elektronskega glasovalnega stroja, kjer mora uporabnik za oddajo glasu pritisniti gumb. Toda ti stroji so bili že od začetka kritizirani zaradi kaljenja. Zato vlada načrtuje uvedbo glasovalnega stroja na podlagi prstnih odtisov, kjer lahko uporabniki glasujejo na podlagi njegovega vtisa prstnega odtisa. Ta sistem ne bo le odpravil možnosti podvojenih glasov, ampak tudi preprečil kakršne koli manipulacije.

Tako bomo v tem projektu izdelali prototip biometričnega glasovalnega stroja z uporabo Arduino Uno, TFT zaslona in senzorja prstnih odtisov. Prej smo uporabili senzor prstnih odtisov R305 z NodeMCU za izdelavo biometričnega sistema prisotnosti, tukaj pa bomo uporabili napredni senzor prstnih odtisov GT-511C3 z Arduinom.

Korak: Komponente, potrebne za izdelavo biometričnega glasovalnega stroja

  • Arduino Uno
  • 2,4 -palčni TFT LCD zaslon
  • Senzor prstnih odtisov GT-511C3

Ta 2,4 -palčni zaslon TFT se je prej uporabljal z Arduinom za izdelavo sistema naročanja v meniju restavracij na osnovi IoT.

2. korak: Shema vezja za biometrični glasovalni stroj z uporabo Arduina

Shema vezja za biometrični glasovalni stroj z uporabo Arduina
Shema vezja za biometrični glasovalni stroj z uporabo Arduina

Shema vezja za ta projekt je zelo preprosta, saj povezujemo samo zaslon TFT in modul senzorja prstnih odtisov z Arduino Uno. Zatiči VCC in GND senzorja prstnih odtisov so priključeni na nožice 5V in GND Arduina, medtem ko so nožici TX in RX priključeni na digitalni pin 11 in 12 Arduino Uno.

2,4 -palčni zaslon TFT LCD je Arduino Shield in ga je mogoče neposredno namestiti na Arduino Uno, kot je prikazano na spodnji sliki. TFT zaslon ima 28 zatičev, ki se popolnoma prilegajo Arduino Uno, zato sem moral spajkati senzor prstnih odtisov na hrbtni strani Arduina.

3. korak: izvorna koda in razlaga kode po korakih

Celotna koda za ta projekt glasovanja o prstnih odtisih z uporabo Arduina je podana na koncu članka; tukaj razlagamo nekatere pomembne funkcije kode.

Koda uporablja knjižnice SPFD5408, Software Serial in FPS_GT511C3. Knjižnica SPFD5408 je spremenjena različica izvirne knjižnice Adafruit. Te datoteke knjižnice lahko prenesete s spodnjih povezav:

  • Knjižnica SPFD5408
  • Serijska programska oprema
  • FPS_GT511C3

Po vključitvi knjižnic in določitvi nekaterih pomembnih parametrov lahko preidemo na programski del. V tem programu so trije oddelki. Eden je ustvarjanje uporabniškega vmesnika glasovalnega stroja, drugi je pridobivanje stičnih točk za gumbe in zaznavanje gumbov na podlagi dotika ter končno izračun rezultatov in shranjevanje v Arduinov spomin.

1. Ustvarjanje uporabniškega vmesnika:

Ustvaril sem preprost uporabniški vmesnik s tremi gumbi in imenom projekta. Knjižnica zaslona TFT vam omogoča risanje črt, pravokotnikov, krogov, znakov, nizov in še veliko več poljubnih barv in velikosti. Tu sta s funkcijami fillRoundRect in drawRoundRect ustvarjena dva pravokotna gumba. Sintaksa za funkcijo tft.drawRoundRect je podana spodaj:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, polmer int16_t, barva uint16_t)

Kje:

x0 = X koordinata začetne točke pravokotnika

y0 = Y koordinata začetne točke pravokotnika

w = širina pravokotnika

h = Višina pravokotnika

radius = Polmer okroglega vogala

barva = Barva rekta.

void drawHome ()

{

tft.fillScreen (BELO);

tft.drawRoundRect (0, 0, 319, 240, 8, BELO); // meja strani

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

tft.drawRoundRect (10, 70, 220, 50, 8, BELO); // Glasovanje

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

tft.drawRoundRect (10, 160, 220, 50, 8, BELO); // Včlanite se

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Glasovanje");

tft.setCursor (57, 29);

tft.print ("Stroj");

tft.setTextSize (3);

tft.setTextColor (BELO);

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. Pridobivanje dodirnih točk in gumbov za zaznavanje:

Zdaj bomo v drugem delu kode zaznali stične točke gumba in nato te točke uporabili za napovedovanje gumba. Funkcija ts.getPoint () se uporablja za zaznavanje uporabnikovega dotika na zaslonu TFT. ts.getPoint podaja surove vrednosti ADC za območje, ki se ga dotakne. Te vrednosti ADC RAW se nato s funkcijo zemljevida pretvorijo v koordinate pikslov.

TSPoint p = ts.getPoint ();

če (p.z> ts.pritiskTreg)

{

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

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

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

//Serial.print(p.x);

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

//Serial.print(p.y);

Zdaj, ko poznamo koordinate X in Y za vsak gumb, lahko s stavkom 'if' predvidimo, kje se je uporabnik dotaknil.

če (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Kandidat 1");

Ko volivec pritisne gumb kandidata, bo pozvan, da skenira prst na senzorju prstnih odtisov. Če je dovoljena identifikacija prsta, lahko volivec voli. Če želi kateri koli neregistriran uporabnik glasovati, modul prstnih odtisov ne bo zaznal svojega ID-ja v sistemu, na zaslonu pa bo prikazano »Žal ne morete glasovati«.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

če (id <200)

{

msg = "Kandidat 1";

glasovanje1 ++;

EEPROM.write (0, glasovanje1);

tft.setCursor (42, 170);

tft.print ("Hvala");

zamuda (3000);

drawHome ();

3. Rezultat:

Zadnji korak je pridobivanje števila glasov iz pomnilnika EEPROM in primerjava glasov vseh treh kandidatov. Zmaga kandidat z največ glasovi. Do rezultata lahko dostopate samo iz serijskega monitorja in ne bo prikazan na zaslonu TFT.

vote1 = EEPROM.preberi (0);

vote2 = EEPROM.preberi (1);

vote3 = EEPROM.preberi (2);

če (glasovanje)

{

če ((glasovanje1> glasovanje2 && glasovanje1> glasovanje3))

{

Serial.print ("Can1 zmaga");

zamuda (2000);

}

4. korak: Preizkus sistema glasovanja s prstnimi odtisi z uporabo Arduina

Če želite preizkusiti projekt, priključite Arduino Uno na prenosni računalnik in naložite podano kodo. Ko je koda naložena, mora na zaslonu TFT prikazati ime kandidata. Ko se nekdo dotakne imena kandidata, bo naprava zahtevala skeniranje bralnika prstnih odtisov. Če je prstni odtis veljaven, se bo glasovanje uporabnika štelo, če pa se vzorec ne ujema z zapisi baze podatkov, bo dostop do glasovanja zavrnjen. Skupno število glasov za vsakega kandidata bo shranjeno v EEPROM -u, zmagal pa bo kandidat z največjim številom glasov.

Upam, da ste uživali v vadnici in se naučili kaj koristnega. Če imate kakršna koli vprašanja, nam to sporočite v spodnjem razdelku za komentarje in nas spremljajte na Instructable za več takšnih zanimivih projektov.

Priporočena: