Orodha ya maudhui:

Mashine ya kupigia kura ya kidole iliyochaguliwa kwa kidole kutumia Arduino: Hatua 4 (na Picha)
Mashine ya kupigia kura ya kidole iliyochaguliwa kwa kidole kutumia Arduino: Hatua 4 (na Picha)

Video: Mashine ya kupigia kura ya kidole iliyochaguliwa kwa kidole kutumia Arduino: Hatua 4 (na Picha)

Video: Mashine ya kupigia kura ya kidole iliyochaguliwa kwa kidole kutumia Arduino: Hatua 4 (na Picha)
Video: Шаговый секвенсор 2024, Novemba
Anonim
Mashine ya kupigia kura inayotumia Arduino
Mashine ya kupigia kura inayotumia Arduino

Sote tunafahamu mashine iliyopo ya kupigia kura ya elektroniki ambapo mtumiaji anapaswa kubonyeza kitufe cha kupiga kura. Lakini mashine hizi zimekosolewa kwa hasira tangu mwanzo. Kwa hivyo serikali imepanga kuanzisha mashine ya kupiga kura inayotegemea alama za vidole ambapo watumiaji wanaweza kupiga kura kulingana na alama yake ya kidole. Mfumo huu hautaondoa tu uwezekano wa kurudia kura lakini pia kuzuia aina yoyote ya udanganyifu.

Kwa hivyo katika mradi huu, tutaunda mfano wa mashine ya kupiga kura ya Biometriska kwa kutumia Arduino Uno, onyesho la TFT, na Sura ya Kidole cha Kidole. Hapo awali tulikuwa tunatumia sensa ya alama ya vidole ya R305 na NodeMCU kujenga Mfumo wa Mahudhurio ya Biometriska lakini hapa tutatumia sensorer ya alama ya kidole ya GT-511C3 na Arduino.

Hatua ya 1: Vipengele vinahitajika Kuunda Mashine ya Kupiga kura ya Biometri

  • Arduino Uno
  • Ngao ya Kuonyesha LCD ya 2.4 "TFT
  • Sensor ya alama ya vidole ya GT-511C3

Onyesho hili la inchi 2.4 la TFT hapo awali lilitumika na Arduino kujenga Mfumo wa kuagiza Menyu ya Mkahawa wa IoT.

Hatua ya 2: Mchoro wa Mzunguko wa Mashine ya Kupiga Kura ya Biometrisiki Kutumia Arduino

Mchoro wa Mzunguko wa Mashine ya Kupigia Kura ya Biometri Kutumia Arduino
Mchoro wa Mzunguko wa Mashine ya Kupigia Kura ya Biometri Kutumia Arduino

Mchoro wa Mzunguko wa mradi huu ni rahisi sana kwani tunaunganisha tu onyesho la TFT na moduli ya kitambuzi cha vidole na Arduino Uno. Pini za VCC na GND za sensorer ya kidole zimeunganishwa na pini za 5V na GND za Arduino wakati pini za TX na RX zimeunganishwa na pini ya dijiti 11 & 12 ya Arduino Uno.

Skrini ya 2.4 TFT LCD ni Arduino Shield na inaweza kuwekwa moja kwa moja kwenye Arduino Uno, kama inavyoonyeshwa kwenye picha hapa chini. Onyesho la TFT lina pini 28 ambazo zinafaa kabisa katika Arduino Uno, kwa hivyo ilibidi nifunue sensor ya kidole nyuma ya Arduino.

Hatua ya 3: Ufafanuzi wa Nambari ya Chanzo na Hatua kwa Hatua

Nambari kamili ya Mradi huu wa Mfumo wa Upigaji Kura wa Vidole kwa kutumia Arduino umetolewa mwishoni mwa kifungu hicho; hapa tunaelezea kazi kadhaa muhimu za nambari.

Nambari hutumia maktaba ya SPFD5408, Software Serial, na FPS_GT511C3. Maktaba ya SPFD5408 ni toleo lililobadilishwa la Maktaba ya asili ya Adafruit. Faili hizi za maktaba zinaweza kupakuliwa kutoka kwa viungo vilivyopewa hapa chini:

  • Maktaba ya SPFD5408
  • Programu Serial
  • FPS_GT511C3

Baada ya kujumuisha maktaba na kufafanua vigezo kadhaa muhimu, tunaweza kuingia kwenye sehemu ya programu. Kuna sehemu tatu zinazohusika katika mpango huu. Moja ni kuunda UI ya mashine ya kupiga kura, pili ni kupata alama za kugusa kwa vifungo & kugundua vifungo kulingana na mguso na mwishowe kuhesabu matokeo na kuzihifadhi kwenye kumbukumbu ya Arduino.

1. Kuunda UI:

Nimeunda UI rahisi na vifungo vitatu na jina la mradi. Maktaba ya kuonyesha TFT hukuruhusu kuteka Mistari, Mstatili, Miduara, Chati, Kamba na mengi zaidi ya rangi na saizi unayopendelea. Hapa vifungo viwili vya mstatili vimeundwa kwa kutumia kazi za kujazaRoundRect na kutekaRoundRect. Sintaksia ya kazi ya tft.drawRoundRect imepewa hapa chini:

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

Wapi:

x0 = X uratibu wa mwanzo wa mstatili

y0 = Y uratibu wa mwanzo wa mstatili

w = Upana wa mstatili

h = Urefu wa Mstatili

radius = Radius ya kona ya pande zote

rangi = Rangi ya Rect.

chora tupuNyumbani ()

{

tft.fillScreen (NYEUPE);

tft.drawRoundRect (0, 0, 319, 240, 8, NYEUPE); // Mpaka wa Ukurasa

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

tft.drawRoundRect (10, 70, 220, 50, 8, NYEUPE); // Kura

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

tft.drawRoundRect (10, 160, 220, 50, 8, NYEUPE); // Kujiandikisha

tft.fillRoundRect (10, 250, 220, 50, 8, DHAHABU); // Matokeo

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Kupiga kura");

tft.set Mshale (57, 29);

tft.print ("Mashine");

tft.setTextSize (3);

tft.setTextColor (NYEUPE);

tft.set Mshale (25, 82);

tft.print ("Mgombea 1");

tft.set Mshale (25, 172);

tft.print ("Mgombea 2");

tft.set Mshale (25, 262);

tft.print ("Mgombea 3");

}

2. Kupata Vifungo vya Kugusa na Kugundua Vifungo:

Sasa katika sehemu ya pili ya nambari, tutagundua vitufe vya kugusa kisha tutumie alama hizi kutabiri kitufe. ts.getPoint () kazi hutumiwa kugundua kugusa kwa mtumiaji kwenye onyesho la TFT. ts.getPoint inatoa maadili ya Raw ADC kwa eneo lililoguswa. Thamani hizi za RAW ADC hubadilishwa kuwa Uratibu wa Pixel kwa kutumia kazi ya ramani.

TSPoint p = ts. PoPoint ();

ikiwa (p.z> ts. shinikizo la Kinga)

{

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

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

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

//Serial.print (px);

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

//Serial.print (p.y);

Sasa, kwa kuwa tunajua uratibu wa X na Y kwa kila kitufe, tunaweza kutabiri ni wapi mtumiaji amegusa kwa kutumia taarifa ya 'ikiwa'.

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

{

Serial.println ("Mgombea 1");

Wakati mpiga kura akibonyeza kitufe cha mgombea, ataulizwa kuchanganua kidole kwenye kitambuzi cha alama ya kidole. Ikiwa kitambulisho cha kidole kimeidhinishwa basi mpiga kura anaruhusiwa kupiga kura. Ikiwa mtumiaji yeyote ambaye hajasajiliwa anataka kupiga kura basi moduli ya alama za vidole haitagundua kitambulisho chake kwenye mfumo na onyesho litaonyesha 'Samahani Huwezi Kupiga Kura'.

ikiwa (fps. IsPressFinger ())

{

fps. CaptureFinger (uwongo);

id id = fps. Identify1_N ();

ikiwa (id <200)

{

msg = "Mgombea 1";

kura1 ++;

Andika EEPROM (0, kura1);

tft.setCursor (42, 170);

tft.print ("Asante");

kuchelewesha (3000);

choraHome ();

3. Matokeo:

Hatua ya mwisho ni kupata hesabu ya kura kutoka kwa kumbukumbu ya EEPROM na kulinganisha kura za wagombea wote watatu. Mgombea aliye na kura nyingi alishinda. Matokeo yanaweza kupatikana tu kutoka kwa mfuatiliaji wa serial na haitaonyeshwa kwenye skrini ya TFT.

kura1 = soma EEPROM (0);

kura2 = soma EEPROM (1);

kura3 = EEPROM.soma (2);

ikiwa (kura)

{

ikiwa ((vote1> vote2 && vote1> vote3))

{

Serial.print ("Can1 Ushindi");

kuchelewa (2000);

}

Hatua ya 4: Kupima Mfumo wa Upigaji kura wa Alama ya Kidole kwa kutumia Arduino

Ili kujaribu mradi huo, unganisha Arduino Uno na kompyuta ndogo na upakie nambari iliyopewa. Mara tu nambari imepakiwa, onyesho la TFT linapaswa kuonyesha jina la mgombea. Mtu anapogonga jina la mgombea, mashine itauliza skana skana ya vidole. Ikiwa alama ya kidole ni halali, basi kura ya mtumiaji itahesabiwa, lakini ikiwa kesi, muundo haufanani na rekodi za hifadhidata, upatikanaji wa kupiga kura utakataliwa. Jumla ya kura za kila mgombea zitahifadhiwa katika EEPROM na mgombea aliye na idadi kubwa ya kura atashinda.

Natumai ulifurahiya mafunzo na kujifunza kitu muhimu. Ikiwa una maswali yoyote, tafadhali tujulishe katika sehemu ya maoni hapa chini, na pia utufuate kwenye Inayofaa kwa miradi mingine ya kupendeza.

Ilipendekeza: