Satura rādītājs:

Uz pirkstu nospiedumiem balstīta biometriskā balsošanas iekārta, izmantojot Arduino: 4 soļi (ar attēliem)
Uz pirkstu nospiedumiem balstīta biometriskā balsošanas iekārta, izmantojot Arduino: 4 soļi (ar attēliem)

Video: Uz pirkstu nospiedumiem balstīta biometriskā balsošanas iekārta, izmantojot Arduino: 4 soļi (ar attēliem)

Video: Uz pirkstu nospiedumiem balstīta biometriskā balsošanas iekārta, izmantojot Arduino: 4 soļi (ar attēliem)
Video: Pazīs pēc pirkstu nospiedumiem 2024, Jūlijs
Anonim
Biometriskā balsošanas iekārta, kas balstīta uz pirkstu nospiedumiem, izmantojot Arduino
Biometriskā balsošanas iekārta, kas balstīta uz pirkstu nospiedumiem, izmantojot Arduino

Mēs visi zinām par esošo elektronisko balsošanas iekārtu, kurā lietotājam jānospiež poga, lai nodotu balsi. Bet šīs mašīnas jau no paša sākuma ir kritizētas par rūdīšanu. Tātad valdība plāno ieviest uz pirkstu nospiedumiem balstītu balsošanas iekārtu, kurā lietotāji var balsot, pamatojoties uz viņa/viņas pirkstu nospiedumu nospiedumu. Šī sistēma ne tikai novērsīs iespēju dublēt balsojumus, bet arī novērsīs jebkāda veida manipulācijas.

Tātad šajā projektā mēs izveidosim biometriskās balsošanas iekārtas prototipu, izmantojot Arduino Uno, TFT displeju un pirkstu nospiedumu sensoru. Mēs iepriekš izmantojām R305 pirkstu nospiedumu sensoru ar NodeMCU, lai izveidotu uz biometriju balstītu apmeklējuma sistēmu, bet šeit mēs izmantosim uzlaboto GT-511C3 pirkstu nospiedumu sensoru ar Arduino.

1. darbība. Biometriskās balsošanas iekārtas izveidei nepieciešamās sastāvdaļas

  • Arduino Uno
  • 2,4 collu TFT LCD displeja vairogs
  • GT-511C3 pirkstu nospiedumu sensors

Šis 2,4 collu TFT displejs iepriekš tika izmantots kopā ar Arduino, lai izveidotu uz IoT balstītu restorānu izvēlņu pasūtīšanas sistēmu.

2. darbība. Biometriskās balsošanas iekārtas shēma, izmantojot Arduino

Biometriskās balsošanas iekārtas shēma, izmantojot Arduino
Biometriskās balsošanas iekārtas shēma, izmantojot Arduino

Šī projekta shēma ir ļoti vienkārša, jo mēs tikai savienojam TFT displeju un pirkstu nospiedumu sensora moduli ar Arduino Uno. Pirkstu nospiedumu sensora VCC un GND tapas ir savienotas ar Arduino 5V un GND tapām, bet TX un RX tapas ir pievienotas Arduino Uno digitālajām tapām 11 un 12.

2,4 collu TFT LCD ekrāns ir Arduino vairogs, un to var tieši uzstādīt uz Arduino Uno, kā parādīts zemāk esošajā attēlā. TFT displejam ir 28 tapas, kas lieliski iederas Arduino Uno, tāpēc man nācās lodēt pirkstu nospiedumu sensoru Arduino aizmugurē.

3. darbība: avota kods un soli pa solim koda skaidrojums

Pilns šī pirkstu nospiedumu balsošanas sistēmas projekta kods, izmantojot Arduino, ir norādīts raksta beigās; šeit mēs izskaidrojam dažas svarīgas koda funkcijas.

Kods izmanto bibliotēkas SPFD5408, programmatūras sērijas un FPS_GT511C3. SPFD5408 bibliotēka ir sākotnējās Adafruit bibliotēkas modificētā versija. Šos bibliotēkas failus var lejupielādēt no tālāk norādītajām saitēm:

  • SPFD5408 bibliotēka
  • Programmatūras sērija
  • FPS_GT511C3

Pēc bibliotēku iekļaušanas un dažu svarīgu parametru noteikšanas mēs varam iekļūt programmēšanas daļā. Šajā programmā ir iesaistītas trīs sadaļas. Viens no tiem ir balsošanas iekārtas lietotāja saskarnes izveide, otrs-pogas pieskārienu punktu iegūšana un pogu noteikšana, pamatojoties uz pieskārienu, un visbeidzot rezultātu aprēķināšana un saglabāšana Arduino atmiņā.

1. UI izveide:

Esmu izveidojis vienkāršu lietotāja interfeisu ar trim pogām un projekta nosaukumu. TFT displeja bibliotēka ļauj zīmēt līnijas, taisnstūri, apļus, rakstzīmes, stīgas un daudz ko citu no jebkuras vēlamās krāsas un izmēra. Šeit tiek izveidotas divas taisnstūrveida pogas, izmantojot funkcijas fillRoundRect un drawRoundRect. Funkcijas tft.drawRoundRect sintakse ir parādīta zemāk:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t rādiuss, uint16_t krāsa)

Kur:

x0 = taisnstūra sākuma punkta X koordināta

y0 = taisnstūra sākuma punkta Y koordināta

w = taisnstūra platums

h = taisnstūra augstums

rādiuss = apaļā stūra rādiuss

krāsa = taisnīguma krāsa.

void drawHome ()

{

tft.fillScreen (BALTS);

tft.drawRoundRect (0, 0, 319, 240, 8, BALTS); // Lapas apmale

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

tft.drawRoundRect (10, 70, 220, 50, 8, BALTS); // Balsošana

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

tft.drawRoundRect (10, 160, 220, 50, 8, BALTS); // Reģistrēties

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // Rezultāts

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Balsošana");

tft.setCursor (57, 29);

tft.print ("Mašīna");

tft.setTextSize (3);

tft.setTextColor (BALTS);

tft.setCursor (25, 82);

tft.print ("1. kandidāts");

tft.setCursor (25, 172);

tft.print ("2. kandidāts");

tft.setCursor (25, 262);

tft.print ("3. kandidāts");

}

2. Kontaktpunktu iegūšana un pogu noteikšana:

Tagad koda otrajā sadaļā mēs noteiksim pogas pieskāriena punktus un pēc tam izmantosim šos punktus, lai prognozētu pogu. ts.getPoint () funkcija tiek izmantota, lai noteiktu lietotāja pieskārienu TFT displejā. ts.getPoint dod neapstrādātas ADC vērtības pieskartajai zonai. Pēc tam šīs RAW ADC vērtības tiek pārveidotas par pikseļu koordinātām, izmantojot kartes funkciju.

TSPoint p = ts.getPoint ();

ja (p.z> ts.pressureThreshhold)

{

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

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

//Sērijas.print ("X: ");

//Sērijas.druka(p.x);

//Sērijas.print ("Y: ");

//Sērijas.druka(p.y);

Tā kā mēs zinām katras pogas X un Y koordinātas, mēs varam paredzēt, kur lietotājs ir pieskāries, izmantojot paziņojumu “ja”.

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

{

Serial.println ("1. kandidāts");

Kad vēlētājs nospiež kandidāta pogu, viņam tiks lūgts skenēt pirkstu uz pirkstu nospiedumu sensora. Ja pirksta ID ir atļauts, vēlētājam ir atļauts balsot. Ja kāds nereģistrēts lietotājs vēlas balsot, tad pirkstu nospiedumu modulis sistēmā neatpazīs savu ID, un displejā parādīsies uzraksts “Atvainojiet, ka nevarat balsot”.

ja (fps. IsPressFinger ())

{

fps. CaptureFinger (nepatiess);

int id = fps. Identificēt1_N ();

ja (id <200)

{

msg = "1. kandidāts";

balsojums1 ++;

EEPROM.write (0, balsojums1);

tft.setCursor (42, 170);

tft.print ("Paldies");

kavēšanās (3000);

drawHome ();

3. Rezultāts:

Pēdējais solis ir iegūt balsu skaitu no EEPROM atmiņas un salīdzināt visu trīs kandidātu balsis. Uzvar kandidāts ar lielāko balsu skaitu. Rezultātam var piekļūt tikai no seriālā monitora, un tas netiks parādīts TFT ekrānā.

balsojums1 = EEPROM.lasījums (0);

balsojums2 = EEPROM.lasījums (1);

balsojums3 = EEPROM.lasījums (2);

ja (balsošana)

{

ja ((balsojums1> balsojums2 &&balss1> balsojums3))

{

Serial.print ("Can1 uzvar");

kavēšanās (2000);

}

4. darbība: pirkstu nospiedumu balsošanas sistēmas pārbaude, izmantojot Arduino

Lai pārbaudītu projektu, pievienojiet Arduino Uno klēpjdatoram un augšupielādējiet norādīto kodu. Kad kods ir augšupielādēts, TFT displejā jāparāda kandidāta vārds. Kad kāds pieskaras kandidāta vārdam, iekārta lūgs skenēt pirkstu nospiedumu skeneri. Ja pirkstu nospiedums ir derīgs, tad lietotāja balss tiks ieskaitīta, bet gadījumā, ja modelis neatbilst datu bāzes ierakstiem, piekļuve balsošanai tiks liegta. Katra kandidāta kopējais balsu skaits tiks saglabāts EEPROM, un uzvarēs kandidāts ar lielāko balsu skaitu.

Es ceru, ka jums patika apmācība un uzzinājāt kaut ko noderīgu. Ja jums ir kādi jautājumi, lūdzu, informējiet mūs zemāk esošajā komentāru sadaļā, kā arī sekojiet mums vietnē Instructable, lai iegūtu vairāk šādu interesantu projektu.

Ieteicams: