Obsah:

Biometrický hlasovací prístroj založený na odtlačkoch prstov pomocou Arduina: 4 kroky (s obrázkami)
Biometrický hlasovací prístroj založený na odtlačkoch prstov pomocou Arduina: 4 kroky (s obrázkami)

Video: Biometrický hlasovací prístroj založený na odtlačkoch prstov pomocou Arduina: 4 kroky (s obrázkami)

Video: Biometrický hlasovací prístroj založený na odtlačkoch prstov pomocou Arduina: 4 kroky (s obrázkami)
Video: Why Biometric Voting Is Prohibited When Bank Transactions Are Allowed? #shorts 2024, Júl
Anonim
Biometrický hlasovací stroj na báze odtlačkov prstov využívajúci Arduino
Biometrický hlasovací stroj na báze odtlačkov prstov využívajúci Arduino

Všetci vieme o existujúcom elektronickom hlasovacom zariadení, kde musí používateľ hlasovať stlačením tlačidla. Tieto stroje sú však od začiatku kritizované kvôli temperovaniu. Vláda preto plánuje zavedenie hlasovacieho zariadenia založeného na odtlačkoch prstov, kde budú môcť používatelia hlasovať na základe svojho odtlačku prsta. Tento systém nielenže odstráni možnosť duplicitných hlasov, ale tiež zabráni akejkoľvek manipulácii.

V tomto projekte teda postavíme prototyp biometrického hlasovacieho zariadenia s použitím Arduino Uno, TFT displeja a snímača odtlačkov prstov. Predtým sme použili snímač odtlačkov prstov R305 s NodeMCU na vybudovanie biometrického dochádzkového systému, ale tu použijeme pokročilý snímač odtlačkov prstov GT-511C3 s Arduino.

Krok 1: Komponenty potrebné na stavbu biometrického hlasovacieho zariadenia

  • Arduino Uno
  • 2,4 "TFT LCD displej
  • Snímač odtlačkov prstov GT-511C3

Tento 2,4 -palcový TFT displej sa v minulosti používal s Arduinom na zostavenie systému objednávania jedál v reštaurácii založenom na IoT.

Krok 2: Schéma zapojenia biometrického hlasovacieho zariadenia pomocou Arduina

Schéma zapojenia biometrického hlasovacieho zariadenia využívajúceho Arduino
Schéma zapojenia biometrického hlasovacieho zariadenia využívajúceho Arduino

Schéma zapojenia pre tento projekt je veľmi jednoduchá, pretože pripájame iba modul TFT displeja a snímača odtlačkov prstov k Arduino Uno. VCC a GND piny snímača odtlačkov prstov sú pripojené k 5V a GND pinom Arduina, zatiaľ čo TX a RX piny sú pripojené k digitálnym pinom 11 a 12 Arduino Uno.

2,4 palcový TFT LCD displej je štít Arduino a je možné ho priamo namontovať na Arduino Uno, ako je znázornené na obrázku nižšie. TFT displej má 28 pinov, ktoré sa perfektne hodia do Arduino Uno, takže som musel spájkovať snímač odtlačkov prstov na zadnej strane Arduina.

Krok 3: Zdrojový kód a vysvetlenie kódu krok za krokom

Úplný kód tohto projektu systému hlasovania pomocou odtlačkov prstov pomocou Arduina je uvedený na konci článku; Tu vysvetľujeme niektoré dôležité funkcie kódu.

Kód používa knižnice SPFD5408, Software Serial a FPS_GT511C3. Knižnica SPFD5408 je upravenou verziou pôvodnej knižnice Adafruit. Tieto súbory knižnice je možné stiahnuť z nižšie uvedených odkazov:

  • Knižnica SPFD5408
  • Sériový softvér
  • FPS_GT511C3

Po zahrnutí knižníc a definovaní niektorých dôležitých parametrov sa môžeme dostať do programovacej časti. Do tohto programu sú zapojené tri sekcie. Prvým je vytvorenie používateľského rozhrania hlasovacieho zariadenia, druhým je získanie dotykových bodov pre tlačidlá a detekcia tlačidiel na základe dotyku a nakoniec výpočet výsledkov a ich uloženie do pamäte Arduina.

1. Vytvorenie používateľského rozhrania:

Vytvoril som jednoduché používateľské rozhranie s tromi tlačidlami a názvom projektu. Knižnica displeja TFT vám umožňuje kresliť čiary, obdĺžniky, kruhy, znaky, reťazce a oveľa viac ľubovoľnej preferovanej farby a veľkosti. Tu sa pomocou funkcií fillRoundRect a drawRoundRect vytvoria dve obdĺžnikové tlačidlá. Syntax pre funkciu tft.drawRoundRect je uvedená nižšie:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t farba)

Kde:

x0 = X súradnica východiskového bodu obdĺžnika

y0 = súradnica Y východiskového bodu obdĺžnika

w = Šírka obdĺžnika

h = výška obdĺžnika

polomer = polomer zaobleného rohu

farba = farba obd.

prázdne kreslenieHome ()

{

tft.fillScreen (BIELY);

tft.drawRoundRect (0, 0, 319, 240, 8, BIELY); // Okraj stránky

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

tft.drawRoundRect (10, 70, 220, 50, 8, BIELY); // Hlasujte

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

tft.drawRoundRect (10, 160, 220, 50, 8, BIELY); // Zaregistrujte sa

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Výsledok

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print („hlasovanie“);

tft.setCursor (57, 29);

tft.print („stroj“);

tft.setTextSize (3);

tft.setTextColor (BIELY);

tft.setCursor (25, 82);

tft.print ("Kandidát 1");

tft.setCursor (25, 172);

tft.print („kandidát 2“);

tft.setCursor (25, 262);

tft.print („kandidát 3“);

}

2. Získanie dotykových bodov a detekčných tlačidiel:

Teraz v druhej časti kódu zistíme dotykové body tlačidiel a potom ich použijeme na predpovedanie tlačidla. Funkcia ts.getPoint () sa používa na detekciu dotyku používateľa na TFT displeji. ts.getPoint uvádza nespracované hodnoty ADC pre dotknutú oblasť. Tieto hodnoty RAW ADC sa potom pomocou funkcie mapy prevedú na súradnice pixelov.

TSPoint p = ts.getPoint ();

ak (p.z> ts.pressureThreshhold)

{

p.x = mapa (s.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);

Keďže poznáme súradnice X a Y pre každé tlačidlo, pomocou príkazu „ak“môžeme predpovedať, kde sa používateľ dotkol.

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

{

Serial.println ("kandidát 1");

Keď volič stlačí tlačidlo kandidáta, požiada ho, aby naskenoval prst na snímači odtlačkov prstov. Ak je autorizovaný identifikátor prsta, volič môže hlasovať. Ak chce neregistrovaný používateľ hlasovať, modul odtlačkov prstov nezistí v systéme svoje ID a na displeji sa zobrazí „Prepáčte, nemôžete hlasovať“.

ak (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

ak (id <200)

{

msg = "Kandidát 1";

hlasujte1 ++;

EEPROM.write (0, hlas1);

tft.setCursor (42, 170);

tft.print („Ďakujem“);

oneskorenie (3000);

drawHome ();

3. Výsledok:

Posledným krokom je načítanie hlasov z pamäte EEPROM a porovnanie hlasov všetkých troch kandidátov. Vyhráva kandidát s najvyšším počtom hlasov. K výsledku je možné získať prístup iba zo sériového monitora a nezobrazí sa na obrazovke TFT.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

ak (hlasujte)

{

ak ((hlasujte1> hlasujte2 && hlasujte1> hlasujte3))

{

Serial.print („Can1 vyhráva“);

oneskorenie (2000);

}

Krok 4: Testovanie hlasovacieho systému pomocou odtlačkov prstov pomocou Arduina

Na otestovanie projektu pripojte Arduino Uno k notebooku a nahrajte daný kód. Po nahraní kódu by mal displej TFT zobrazovať meno kandidáta. Keď niekto klepne na meno kandidáta, zariadenie požiada o skenovanie skenera odtlačkov prstov. Ak je odtlačok prsta platný, hlas používateľa sa započíta, ale v prípade, že sa vzor nezhoduje so záznamami databázy, prístup k odovzdaniu hlasu bude odmietnutý. Celkový počet hlasov pre každého kandidáta bude uložený v EEPROM a kandidát s najvyšším počtom hlasov vyhrá.

Dúfam, že sa vám návod páčil a naučili ste sa niečo užitočné. Ak máte akékoľvek otázky, dajte nám vedieť v sekcii komentárov nižšie a tiež nás sledujte na stránke Instructable, kde nájdete ďalšie zaujímavé projekty.

Odporúča: