Turinys:

Pirštų atspaudų biometrinis balsavimo aparatas naudojant „Arduino“: 4 žingsniai (su paveikslėliais)
Pirštų atspaudų biometrinis balsavimo aparatas naudojant „Arduino“: 4 žingsniai (su paveikslėliais)

Video: Pirštų atspaudų biometrinis balsavimo aparatas naudojant „Arduino“: 4 žingsniai (su paveikslėliais)

Video: Pirštų atspaudų biometrinis balsavimo aparatas naudojant „Arduino“: 4 žingsniai (su paveikslėliais)
Video: Pirštų atspaudai 2024, Liepa
Anonim
Pirštų atspaudais pagrįsta biometrinė balsavimo mašina naudojant „Arduino“
Pirštų atspaudais pagrįsta biometrinė balsavimo mašina naudojant „Arduino“

Visi žinome apie esamą elektroninio balsavimo aparatą, kuriame vartotojas turi paspausti mygtuką balsuoti. Tačiau šios mašinos buvo kritikuojamos dėl grūdinimo nuo pat pradžių. Taigi vyriausybė planuoja įdiegti pirštų atspaudų balsavimo aparatą, kuriame vartotojai galėtų balsuoti pagal jo/jos pirštų atspaudų įspūdį. Ši sistema ne tik pašalins galimybę pakartotinai balsuoti, bet ir užkirs kelią bet kokioms manipuliacijoms.

Taigi šiame projekte mes ketiname sukurti biometrinio balsavimo aparato prototipą, naudodami „Arduino Uno“, TFT ekraną ir pirštų atspaudų jutiklį. Anksčiau naudojome R305 pirštų atspaudų jutiklį su „NodeMCU“, kad sukurtume biometrinę stebėjimo sistemą, tačiau čia naudosime pažangų GT-511C3 pirštų atspaudų jutiklį su „Arduino“.

1 žingsnis: komponentai, reikalingi norint sukurti biometrinį balsavimo aparatą

  • Arduino Uno
  • 2,4 colio TFT LCD ekranas
  • GT-511C3 pirštų atspaudų jutiklis

Šis 2,4 colio TFT ekranas anksčiau buvo naudojamas su „Arduino“kuriant „IoT“pagrįstą restorano meniu užsakymo sistemą.

2 žingsnis: Biometrinio balsavimo aparato schema naudojant „Arduino“

Biometrinio balsavimo aparato, kuriame naudojama „Arduino“, schema
Biometrinio balsavimo aparato, kuriame naudojama „Arduino“, schema

Šio projekto grandinės schema yra labai paprasta, nes mes jungiame tik TFT ekraną ir pirštų atspaudų jutiklio modulį su „Arduino Uno“. Pirštų atspaudų jutiklio VCC ir GND kaiščiai yra prijungti prie „Arduino“5 V ir GND kaiščių, o TX ir RX kaiščiai yra prijungti prie „Arduino Uno“skaitmeninių kaiščių 11 ir 12.

2,4 colio TFT LCD ekranas yra „Arduino Shield“ir gali būti tiesiogiai pritvirtintas prie „Arduino Uno“, kaip parodyta paveikslėlyje žemiau. TFT ekranas turi 28 kaiščius, kurie puikiai tinka „Arduino Uno“, todėl turėjau lituoti pirštų atspaudų jutiklį „Arduino“gale.

3 žingsnis: šaltinio kodas ir žingsnis po žingsnio kodo paaiškinimas

Visas šio pirštų atspaudų balsavimo sistemos projekto, kuriame naudojama „Arduino“, kodas pateiktas straipsnio pabaigoje; čia paaiškiname keletą svarbių kodo funkcijų.

Kodas naudoja SPFD5408, programinės įrangos serijos ir FPS_GT511C3 bibliotekas. SPFD5408 biblioteka yra pakeista originalios „Adafruit“bibliotekos versija. Šiuos bibliotekos failus galima atsisiųsti iš toliau pateiktų nuorodų:

  • SPFD5408 biblioteka
  • Programinės įrangos serija
  • FPS_GT511C3

Įtraukę bibliotekas ir apibrėžę kai kuriuos svarbius parametrus, galime patekti į programavimo dalį. Šioje programoje yra trys skyriai. Vienas iš jų yra balsavimo aparato vartotojo sąsajos sukūrimas, antrasis-mygtukų prisilietimo taškų nustatymas ir mygtukų aptikimas pagal prisilietimą, pagaliau rezultatų apskaičiavimas ir išsaugojimas „Arduino“atmintyje.

1. UI kūrimas:

Aš sukūriau paprastą vartotojo sąsają su trimis mygtukais ir projekto pavadinimu. TFT ekrano biblioteka leidžia piešti linijas, stačiakampius, apskritimus, simbolius, eilutes ir daug daugiau bet kokios spalvos ir dydžio. Čia sukuriami du stačiakampiai mygtukai, naudojant funkcijas fillRoundRect ir drawRoundRect. Funkcijos tft.drawRoundRect sintaksė pateikta žemiau:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t spindulys, uint16_t spalva)

Kur:

x0 = stačiakampio pradžios taško X koordinatė

y0 = stačiakampio pradžios taško Y koordinatė

w = stačiakampio plotis

h = stačiakampio aukštis

spindulys = apvalaus kampo spindulys

spalva = rektato spalva.

void drawHome ()

{

tft.fillScreen (BALTAS);

tft.drawRoundRect (0, 0, 319, 240, 8, BALTAS); // Puslapio kraštinė

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

tft.drawRoundRect (10, 70, 220, 50, 8, BALTAS); //Balsas

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

tft.drawRoundRect (10, 160, 220, 50, 8, BALTAS); // Užsiregistruoti

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print („Balsavimas“);

tft.setCursor (57, 29);

tft.print („Mašina“);

tft.setTextSize (3);

tft.setTextColor (BALTA);

tft.setCursor (25, 82);

tft.print („Kandidatas 1“);

tft.setCursor (25, 172);

tft.print („2 kandidatas“);

tft.setCursor (25, 262);

tft.print („3 kandidatas“);

}

2. Prisilietimo taškų ir aptikimo mygtukų gavimas:

Dabar antrame kodo skyriuje aptiksime mygtukų sąlyčio taškus ir tada panaudosime šiuos taškus mygtukui nuspėti. ts.getPoint () funkcija naudojama aptikti vartotojo prisilietimą TFT ekrane. ts.getPoint pateikia neapdorotas ADC reikšmes paliestai sričiai. Tada šios RAW ADC vertės konvertuojamos į pikselių koordinates naudojant žemėlapio funkciją.

TSPoint p = ts.getPoint ();

jei (p.z> ts.pressureThreshhold)

{

p.x = žemėlapis (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = žemėlapis (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serijinis.spaudas ("X: ");

// serijinis atspaudas (px);

//Serijinis.spaudas ("Y: ");

// serijinis atspaudas (p.y);

Dabar, kai žinome kiekvieno mygtuko X ir Y koordinates, galime nuspėti, kur naudotojas palietė, naudodami teiginį „jei“.

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

{

Serial.println („1 kandidatas“);

Kai rinkėjas paspaus kandidato mygtuką, jo bus paprašyta nuskaityti pirštą ant pirštų atspaudų jutiklio. Jei piršto ID yra įgaliotas, rinkėjui leidžiama balsuoti. Jei bet kuris neregistruotas vartotojas nori balsuoti, pirštų atspaudų modulis neaptiks savo ID sistemoje ir ekrane bus rodoma „Atsiprašome, kad negalite balsuoti“.

jei (fps. IsPressFinger ())

{

fps. CaptureFinger (klaidinga);

int id = fps. Identify1_N ();

jei (id <200)

{

msg = "1 kandidatas";

balsas1 ++;

EEPROM.write (0, balsas1);

tft.setCursor (42, 170);

tft.print („Ačiū“);

vėlavimas (3000);

drawHome ();

3. Rezultatas:

Paskutinis žingsnis yra surinkti balsų skaičių iš EEPROM atminties ir palyginti visų trijų kandidatų balsus. Laimi daugiausiai balsų surinkęs kandidatas. Rezultatą galima pasiekti tik iš serijinio monitoriaus ir jis nebus rodomas TFT ekrane.

balsas1 = EEPROM.read (0);

balsas2 = EEPROM.read (1);

balsas3 = EEPROM.read (2);

jei (balsuoti)

{

jei ((balsas1> balsas2 && balsas1> balsas3))

{

Serial.print („Can1 laimi“);

vėlavimas (2000 m.);

}

4 žingsnis: Pirštų atspaudų balsavimo sistemos testavimas naudojant „Arduino“

Norėdami išbandyti projektą, prijunkite „Arduino Uno“prie nešiojamojo kompiuterio ir įkelkite nurodytą kodą. Įkėlus kodą, TFT ekrane turėtų būti rodomas kandidato vardas. Kai kas nors paliečia kandidato vardą, aparatas paprašys nuskaityti pirštų atspaudų skaitytuvą. Jei piršto antspaudas galioja, vartotojo balsas bus skaičiuojamas, tačiau tuo atveju, jei modelis neatitinka duomenų bazės įrašų, prieiga balsuoti bus uždrausta. Bendras kiekvieno kandidato balsų skaičius bus saugomas EEPROM ir laimės daugiausiai balsų surinkęs kandidatas.

Tikiuosi, kad jums patiko pamoka ir sužinojote kažką naudingo. Jei turite klausimų, praneškite mums žemiau esančiame komentarų skyriuje, taip pat sekite mus „Instructable“, kad gautumėte daugiau tokių įdomių projektų.

Rekomenduojamas: