Sadržaj:

Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino: 4 koraka (sa slikama)
Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino: 4 koraka (sa slikama)

Video: Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino: 4 koraka (sa slikama)

Video: Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino: 4 koraka (sa slikama)
Video: Едукативен видео прирачник - Референдум 2018 2024, Jun
Anonim
Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino
Biometrijska mašina za glasanje zasnovana na otiscima prstiju koristeći Arduino

Svi smo svjesni postojeće elektronske mašine za glasanje u kojoj korisnik mora pritisnuti dugme za glasanje. Ali ove mašine su od početka kritikovane zbog kaljenja. Stoga vlada planira uvesti mašinu za glasanje zasnovanu na otiscima prstiju gdje korisnici mogu glasati na osnovu njegovog/njenog otiska prsta. Ovaj sistem neće samo ukloniti mogućnost dupliciranja glasova, već će i spriječiti bilo kakvu manipulaciju.

Tako ćemo u ovom projektu izgraditi prototip biometrijske mašine za glasanje koristeći Arduino Uno, TFT ekran i senzor otiska prsta. Ranije smo koristili senzor otiska prsta R305 sa NodeMCU za izgradnju biometrijskog sistema praćenja, ali ovdje ćemo koristiti napredni senzor otiska prsta GT-511C3 sa Arduinom.

Korak 1: Komponente potrebne za izradu biometrijske glasačke mašine

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

Ovaj 2,4 -inčni TFT ekran ranije se koristio s Arduinom za izgradnju IoT sistema za naručivanje jelovnika.

Korak 2: Dijagram kola za biometrijsku glasačku mašinu pomoću Arduina

Dijagram kola za biometrijsku glasačku mašinu koja koristi Arduino
Dijagram kola za biometrijsku glasačku mašinu koja koristi Arduino

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

2.4 -inčni TFT LCD ekran je Arduino štit i može se direktno 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 kôd i objašnjenje koda po korak

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

Kod koristi biblioteke SPFD5408, Software Serial i FPS_GT511C3. Biblioteka SPFD5408 je izmijenjena verzija originalne biblioteke Adafruit. Ove bibliotečke datoteke možete preuzeti sa donjih veza:

  • Biblioteka SPFD5408
  • Softverski serijski broj
  • FPS_GT511C3

Nakon uključivanja biblioteka i definiranja nekih važnih parametara, možemo ući u programski dio. U ovom programu postoje tri odjeljka. Jedan je stvaranje korisničkog interfejsa mašine za glasanje, drugi je dobijanje dodirnih tačaka za dugmad i otkrivanje dugmadi na osnovu dodira i na kraju izračunavanje rezultata i njihovo čuvanje u Arduinovo pamćenje.

1. Kreiranje korisničkog sučelja:

Napravio sam jednostavan korisnički interfejs sa tri dugmeta i imenom projekta. Biblioteka TFT ekrana 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 tačke pravougaonika

y0 = Y koordinata početne tačke pravougaonika

w = Širina pravokutnika

h = Visina pravokutnika

radius = poluprečnik okruglog ugla

color = Boja rekta.

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); // Glasajte

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

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

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

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. Dobijanje dodirnih točaka i tipki za otkrivanje:

Sada ćemo u drugom odjeljku koda otkriti dodirne točke gumba, a zatim ih upotrijebiti za predviđanje gumba. Funkcija ts.getPoint () koristi se za detekciju dodira korisnika na TFT ekranu. ts.getPoint daje sirove ADC vrijednosti za dodirnuto područje. Ove RAW ADC vrijednosti se zatim konvertiraju u Pixel Coordinates pomoću funkcije map.

TSPoint p = ts.getPoint ();

if (p.z> ts.pregresni prag)

{

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

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

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

//Serial.print(p.x);

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

//Serial.print(p.y);

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

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

{

Serial.println ("Kandidat 1");

Kada birač pritisne dugme kandidata, od njega će se tražiti da skenira prst na senzoru otiska prsta. Ako je identifikovana identifikacija prsta, glasaču je dozvoljeno da glasa. Ako bilo koji neregistrirani korisnik želi glasovati, modul otiska prsta neće otkriti svoj ID u sistemu, a na ekranu ć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";

vote1 ++;

EEPROM.write (0, glas 1);

tft.setCursor (42, 170);

tft.print ("Hvala");

kašnjenje (3000);

drawHome ();

3. Rezultat:

Poslednji korak je prikupljanje glasova iz memorije EEPROM -a i upoređivanje glasova sva tri kandidata. Pobjeđuje kandidat sa 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.čitano (1);

vote3 = EEPROM.čitano (2);

ako (glasaj)

{

if ((glas1> glas2 && glas1> glas3))

{

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

kašnjenje (2000);

}

Korak 4: Testiranje sistema glasanja o otiscima prstiju pomoću Arduina

Da biste testirali projekat, povežite Arduino Uno sa laptopom i prenesite dati kod. Nakon što se kôd učita, na TFT ekranu bi trebalo biti prikazano ime kandidata. Kada neko dodirne ime kandidata, mašina će zatražiti da skenira skener otiska prsta. Ako je otisak prsta valjan, korisnički glas će se prebrojavati, ali u slučaju da se uzorak ne podudara sa zapisima baze podataka, pristup glasanju bit će odbijen. Ukupan broj glasova za svakog kandidata bit će pohranjen u EEPROM -u, a kandidat s najvećim brojem glasova će pobijediti.

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 odjeljku za komentare ispod, a također nas pratite na Instructable -u za još takvih zanimljivih projekata.

Preporučuje se: