Përmbajtje:

Makina votuese biometrike e bazuar në gjurmët e gishtave duke përdorur Arduino: 4 hapa (me fotografi)
Makina votuese biometrike e bazuar në gjurmët e gishtave duke përdorur Arduino: 4 hapa (me fotografi)

Video: Makina votuese biometrike e bazuar në gjurmët e gishtave duke përdorur Arduino: 4 hapa (me fotografi)

Video: Makina votuese biometrike e bazuar në gjurmët e gishtave duke përdorur Arduino: 4 hapa (me fotografi)
Video: Leap Motion SDK 2024, Korrik
Anonim
Makinë votimi biometrike e bazuar në gjurmët e gishtërinjve duke përdorur Arduino
Makinë votimi biometrike e bazuar në gjurmët e gishtërinjve duke përdorur Arduino

Ne të gjithë jemi të vetëdijshëm për makinën elektronike ekzistuese të votimit, ku përdoruesi duhet të shtypë një buton për të votuar. Por këto makina janë kritikuar për kalitje që në fillim. Kështu që qeveria po planifikon të prezantojë një makinë votimi të bazuar në gjurmët e gishtërinjve ku përdoruesit mund të votojnë bazuar në përshtypjen e tij/saj të gjurmëve të gishtërinjve. Ky sistem jo vetëm që do të heqë mundësinë e kopjimit të votave, por gjithashtu do të parandalojë çdo lloj manipulimi.

Pra, në këtë projekt, ne do të ndërtojmë një prototip të një makine votimi Biometrike duke përdorur Arduino Uno, ekranin TFT dhe Sensorin e Gjurmëve të Gishtave. Ne kemi përdorur më parë Sensorin e Gjurmëve të gishtërinjve R305 me NodeMCU për të ndërtuar një Sistem të Pjesëmarrjes me bazë Biometrike, por këtu do të përdorim sensorin e avancuar të gjurmëve të gishtërinjve GT-511C3 me Arduino.

Hapi 1: Komponentët e kërkuar për të ndërtuar një makinë votimi biometrike

  • Arduino Uno
  • Mburoja e ekranit LCD 2.4 "TFT
  • Sensori i gjurmëve të gishtave GT-511C3

Ky ekran 2.4 inç TFT është përdorur më parë me Arduino për të ndërtuar Sistemin e Renditjes së Menysë së Restorantit të bazuar në IoT.

Hapi 2: Diagrami i Qarkut për Makinën Biometrike të Votimit duke Përdorur Arduino

Diagrami i qarkut për makinën biometrike të votimit duke përdorur Arduino
Diagrami i qarkut për makinën biometrike të votimit duke përdorur Arduino

Diagrami i Qarkut për këtë projekt është shumë i thjeshtë pasi ne po lidhim vetëm ekranin TFT dhe modulin e sensorit të gjurmëve të gishtërinjve me Arduino Uno. Kunjat VCC dhe GND të sensorit të gjurmëve të gishtërinjve janë të lidhur me kunjat 5V dhe GND të Arduino ndërsa kunjat TX dhe RX janë të lidhur me kunjat dixhitale 11 & 12 të Arduino Uno.

Ekrani 2.4”TFT LCD është një Arduino Shield dhe mund të montohet drejtpërdrejt në Arduino Uno, siç tregohet në imazhin më poshtë. Ekrani TFT ka 28 kunja që përshtaten në mënyrë të përkryer në Arduino Uno, kështu që më duhej të lidhja sensorin e gjurmëve të gishtërinjve në pjesën e pasme të Arduino.

Hapi 3: Kodi Burimor dhe Shpjegimi Kodi Hap pas Hapi

Kodi i plotë për këtë Projekt të Sistemit të Votimit të Gjurmëve të Gishtave duke përdorur Arduino jepet në fund të artikullit; këtu po shpjegojmë disa funksione të rëndësishme të kodit.

Kodi përdor bibliotekat SPFD5408, Seriali i Softuerit dhe FPS_GT511C3. Biblioteka SPFD5408 është versioni i modifikuar i Bibliotekës origjinale Adafruit. Këto skedarë bibliotekash mund të shkarkohen nga lidhjet e dhëna më poshtë:

  • Biblioteka SPFD5408
  • Seriali i softuerit
  • FPS_GT511C3

Pas përfshirjes së bibliotekave dhe përcaktimit të disa parametrave të rëndësishëm, mund të futemi në pjesën e programimit. Janë tre seksione të përfshira në këtë program. Njëra është krijimi i një UI të një makine votimi, e dyta është marrja e pikave të prekjes për butonat dhe zbulimi i butonave në bazë të prekjes dhe më në fund llogaritja e rezultateve dhe ruajtja e tyre në kujtesën e Arduino.

1. Krijimi i UI:

Unë kam krijuar një UI të thjeshtë me tre butona dhe emrin e projektit. Biblioteka e ekranit TFT ju lejon të vizatoni Linja, Drejtkëndësh, Qarqe, Karaktere, Vargje dhe shumë më tepër të çdo ngjyre dhe madhësie të preferuar. Këtu krijohen dy butona drejtkëndëshe duke përdorur funksionet fillRoundRect dhe drawRoundRect. Sintaksa për funksionin tft.drawRoundRect është dhënë më poshtë:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, rreze int16_t, ngjyra uint16_t)

Ku:

x0 = X koordinatë e pikës së fillimit të drejtkëndëshit

y0 = Y koordinata e pikës së fillimit të drejtkëndëshit

w = Gjerësia e drejtkëndëshit

h = Lartësia e Drejtkëndëshit

rreze = Rrezja e këndit të rrumbullakët

ngjyra = Ngjyra e Rektit.

void drawHome ()

{

tft.fillScreen (E BARDH);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // Kufiri i faqes

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

tft.drawRoundRect (10, 70, 220, 50, 8, E BARDH); // Votoni

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

tft.drawRoundRect (10, 160, 220, 50, 8, E BARDH); // Regjistrohu

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Votimi");

tft.setCursor (57, 29);

tft.print ("Makinë");

tft.setTextSize (3);

tft.setTextColor (E BARDH);

tft.setCursor (25, 82);

tft.print ("Kandidati 1");

tft.setCursor (25, 172);

tft.print ("Kandidati 2");

tft.setCursor (25, 262);

tft.print ("Kandidati 3");

}

2. Marrja e pikave prekëse dhe zbulimi i butonave:

Tani në pjesën e dytë të kodit, ne do të zbulojmë pikat e prekjes të butonit dhe pastaj do t'i përdorim këto pika për të parashikuar butonin. funksioni ts.getPoint () përdoret për të zbuluar prekjen e përdoruesit në ekranin TFT. ts.getPoint jep vlerat e para ADC për zonën e prekur. Këto vlera RAW ADC konvertohen më pas në Koordinatat Pixel duke përdorur funksionin e hartës.

TSPoint p = ts.getPoint ();

nëse (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);

Tani, meqenëse ne i njohim koordinatat X dhe Y për secilin buton, ne mund të parashikojmë se ku ka prekur përdoruesi duke përdorur deklaratën 'nëse'.

nëse (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Kandidati 1");

Kur një votues shtyp butonin e kandidatit, atij do t'i kërkohet të skanojë gishtin në sensorin e gjurmëve të gishtërinjve. Nëse ID e gishtit është e autorizuar atëherë zgjedhësi lejohet të votojë. Nëse ndonjë përdorues i paregjistruar dëshiron të votojë, atëherë moduli i gjurmëve të gishtërinjve nuk do të zbulojë ID-në e tij në sistem dhe ekrani do të shfaqë 'Na vjen keq që nuk mund të votoni'.

nëse (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

nëse (id <200)

{

msg = "Kandidati 1";

voto1 ++;

EEPROM.shkruani (0, vota1);

tft.setCursor (42, 170);

tft.print ("Faleminderit");

vonesë (3000);

drawHome ();

3. Rezultati:

Hapi i fundit është marrja e numërimit të votave nga kujtesa e EEPROM dhe krahasimi i votave të të tre kandidatëve. Fiton një kandidat me votat më të larta. Rezultati mund të arrihet vetëm nga monitori serik dhe nuk do të shfaqet në ekranin TFT.

vota1 = EEPROM.lexo (0);

vota2 = EEPROM.lexo (1);

vote3 = EEPROM.lexoni (2);

nëse (voto)

{

nëse ((vota1> vota2 && vota1> vota3))

{

Serial.print ("Can1 Fiton");

vonesa (2000);

}

Hapi 4: Testimi i sistemit të votimit të gjurmëve të gishtërinjve duke përdorur Arduino

Për të testuar projektin, lidhni Arduino Uno me laptopin dhe ngarkoni kodin e dhënë. Pasi të ngarkohet kodi, ekrani TFT duhet të shfaq emrin e kandidatit. Kur dikush prek emrin e një kandidati, makina do të kërkojë të skanojë skanerin e gjurmëve të gishtërinjve. Nëse gjurma e gishtit është e vlefshme, atëherë vota e përdoruesit do të numërohet, por në rast se modeli nuk përputhet me regjistrimet e bazës së të dhënave, qasja për të votuar do të mohohet. Numri i përgjithshëm i votave për secilin kandidat do të ruhet në EEPROM dhe një kandidat që ka numrin më të madh të votave do të fitojë.

Shpresoj se ju ka pëlqyer mësimi dhe keni mësuar diçka të dobishme. Nëse keni ndonjë pyetje, ju lutemi na tregoni në pjesën e komenteve më poshtë, dhe gjithashtu na ndiqni në Instructable për më shumë projekte të tilla interesante.

Recommended: