- Reikalingi komponentai:
- Pirštų atspaudų jutiklio modulis balsavimo mašinoje:
- Darbinis paaiškinimas:
- Grandinės paaiškinimas:
- Programos paaiškinimas:
Mes visi esame gerai susipažinę su elektroninėmis balsavimo mašinomis, kuriose jūsų balsas registruojamas elektroniniu būdu ir jums nereikia naudoti balsavimo biuletenio balsuojant rinkimuose. Šiandien saugumas kelia didelį rūpestį, taip pat reikia užtikrinti, kad kas nors negalėtų balsuoti du kartus, todėl šią problemą galima išspręsti įvedant balsavimą pirštų atspaudais, kai asmeniui gali būti suteiktas leidimas remtis pirštų atspaudais. Tai taip pat sustabdys netikrą balsavimą. Taigi šiandien mes statome „ FingerPrint“ pagrįstą biometrinį balsavimo aparatą naudodami „Arduino“.
Taip pat patikrinkite ankstesnius mūsų elektroninių balsavimo mašinų projektus naudodami skirtingus mikrovaldiklius:
- Elektroninė balsavimo mašina, naudojant „Raspberry Pi“
- RDA pagrindu veikianti balsavimo mašina
- „AVR“ mikrovaldikliu pagrįsto elektroninio balsavimo aparato projektas
- Elektroninis balsavimo aparatas naudojant „Arduino“
Reikalingi komponentai:
- Arduino Uno
- Pirštų atspaudų jutiklio modulis
- Mygtukai
- Šviesos diodai -2
- 1K rezistorius -3
- 2.2K rezistorius
- Galia
- Jungiamieji laidai
- Buzeris
- 16x2 LCD ekranas
- Bandomoji Lenta
Pirštų atspaudų jutiklio modulis balsavimo mašinoje:
Pirštų atspaudų jutiklio modulis arba „Finger Print Scanner“ yra modulis, kuris užfiksuoja piršto atspaudo vaizdą, tada paverčia jį į lygiavertį šabloną ir išsaugo juos savo atmintyje, pasirinkdamas „Arduino“ ID (vietą). Čia „Arduino“ komanduoja visą procesą, pavyzdžiui, pirštų atspaudų atvaizdą, pavertimą šablonais ir vietos saugojimą ir pan.
Šioje „ FingerPrint“ balsavimo mašinos grandinėje mes naudojome „Finger Print Sensor Module“, kad patvirtintume tikrąjį rinkėją, įvedant pirštu į sistemą. Čia mes naudojame 5 mygtukus, norėdami suderinti, registruoti / grįžti, ištrinti / gerai, aukštyn ir žemyn. „Enroll“ ir „Del“ klavišas čia turi dvigubas funkcijas. Užregistravimo mygtukas naudojamas norint įrašyti naują piršto įspūdį į sistemą ir nugaros funkciją. Reiškia, kai vartotojas nori užregistruoti naują pirštą, tada jis / ji turi paspausti registracijos mygtuką, tada LCD prašo įvesti ID arba vietą, kurioje vartotojas nori išsaugoti pirštų atspaudų išvestį. Dabar, jei šiuo metu vartotojas nenori tęsti toliau, jis / ji gali dar kartą paspausti registracijos mygtuką, kad grįžtumėte atgal (šį kartą registracijos raktas elgiasi kaip grįžimo raktas). Reiškia registracijos klavišas turi ir registracijos, ir atgal funkciją. DEL / OK klavišas taip pat turi tą pačią dvigubą funkciją, pvz., kai vartotojas užregistruoja naują pirštą, tada jis / ji turi pasirinkti piršto ID arba vietą naudodamas dar du klavišus, ty aukštyn ir žemyn, dabar vartotojui reikia paspausti DEL / OK klavišą (šį kartą šis klavišas veikia kaip gerai) tęskite pasirinktą ID arba vietą. Rungtynių raktas naudojamas tada, kai rinkėjas nori balsuoti, tada jis / ji pirmiausia turi patvirtinti tikrąjį rinkėją, laikydamas pirštą ant pirštų atspaudų jutiklio, jei jis / ji išlaikė šį autentifikavimą, jis / ji gali balsuoti.
Norėdami sužinoti daugiau apie pirštų atspaudų ir kitų dalykų registravimą, patikrinkite mūsų ankstesnę instrukciją apie pirštų atspaudų jutiklio sąsają su „Arduino“, taip pat patikrinkite mūsų demonstracinį vaizdo įrašą šios pamokos pabaigoje.
Darbinis paaiškinimas:
Šios biometrinės rinkimų sistemos veikimas yra šiek tiek sudėtingas pradedantiesiems. Visų pirma vartotojas turi užregistruoti pirštus ar rinkėjus (šiame kode maksimali rinkėjų riba yra 25) paspaudus mygtukus / mygtukus. Norėdami tai padaryti, turite paspausti mygtuką ENROLL, tada LCD prašo įvesti vietą / ID, kurioje bus pirštas. Taigi dabar vartotojas turi įvesti ID (vietą) naudodamas aukštyn / žemyn klavišus. Pasirinkę Vieta / ID, vartotojas turi paspausti mygtuką Gerai (DEL). Dabar LCD paprašys uždėti pirštą ant piršto spausdinimo modulio. Dabar vartotojas turi uždėti pirštą ant piršto spausdinimo modulio. Tada LCD paprašys išimti pirštą iš piršto spausdinimo modulio ir vėl paprašys įdėti pirštą. Dabar vartotojas turi vėl uždėti pirštą ant piršto spausdinimo modulio. Dabar pirštų atspaudų modulis paima vaizdą, paverčia jį šablonais ir pagal pasirinktą ID įrašo į pirštų atspaudų modulio atmintį.Dabar rinkėjas bus užregistruotas ir jis galės balsuoti. Tuo pačiu metodu visi rinkėjai gali būti užregistruoti sistemoje.
Dabar, jei vartotojas nori pašalinti arba ištrinti kurį nors iš išsaugotų ID, jis / ji turi paspausti DEL mygtuką, paspaudus DEL mygtuką, LCD paprašys pasirinkti vietą, tai reiškia, kad pasirinkite ID, kurį norite ištrinti. Dabar vartotojas turi pasirinkti ID ir paspausti mygtuką OK (tas pats DEL klavišas). Dabar LCD praneš, kad pirštas buvo sėkmingai ištrintas.
Balsavimo procesas:
Dabar, kai vartotojas nori balsuoti, jis / ji turi paspausti atitikties klavišą, tada garsinis signalas pypsės, šviesos diodas taip pat šviečia, o LCD paprašys uždėti pirštą ant piršto atspaudo modulio. Dabar „Arduino“ duos tris bandymus įdėti pirštą. Uždėjus pirštą ant pirštų atspaudų modulio, pirštų atspaudų modulis užfiksuoja piršto atvaizdą, o jo ID yra sistemoje. Jei aptikta piršto ID, LCD bus rodomas įgaliotas rinkėjas. Tai reiškia, kad vartotojas turi teisę balsuoti. Tada sistema pereina į kitą balsavimo etapą. Dabar šviečia žalias šviesos diodas, tai reiškia, kad dabar rinkėjas gali balsuoti už savo kandidatus paspausdamas susijusį klavišą (iš RED duonos lentos šioje demonstracijoje). Jei tas pats rinkėjas nori balsuoti dar kartą, sistema jam parodys „Jau balsavo“ . Reiškia, kad tas pats rinkėjas nebegali balsuoti dar kartą, o garsinis signalas pypsės 5 sekundes. Jei kuris nors neregistruotas vartotojas nori balsuoti, pirštų atspaudų modulis neaptiks jo ID sistemoje, o LCD ekrane bus rodoma „ Nerasta piršto antspaudo“ .
CAN1, CAN2, CAN3 čia reiškia 1 kandidatą, 2 kandidatą ir 3 kandidatą, kurie dalyvavo rinkimuose.
Grandinės paaiškinimas:
Šio „ FingerPrint“ pagrindu veikiančio balsavimo aparato projekto grandinė yra labai paprasta, kurioje yra „Arduino“ viso projekto procesui valdyti, mygtukas registravimui, ištrynimui, ID pasirinkimui ir balsavimo tikslui, įspėjamasis signalas, šviesos diodai indikacijai ir 16x2 LCD ekranas nurodymui Rinkėjas ir rezultato rodymas taip pat. Geltonas šviesos diodas rodo, kad piršto antspaudo modulis yra pasirengęs fotografuoti pirštą, o žalias šviesos diodas rodo, kad sistema yra pasirengusi balsuoti ar matyti rezultatus.
Mygtukas yra tiesiogiai prijungtas prie kaiščių A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) ir A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 („Arduino“ rezultatas žemės atžvilgiu. Geltonas šviesos diodas yra prijungtas prie „Arduino“ skaitmeninio kaiščio D7 žemės atžvilgiu per 1k rezistorių, o žalias šviesos diodas yra prijungtas prie „Arduino“ D6 tuo pačiu metodu. Pirštų atspaudų modulio „Rx“ ir „Tx“ tiesiogiai prijungti prie „Arduino“ serijos kaiščių „Tx“ ir „Rx“. 5v maitinimas naudojamas pirštų atspaudų moduliui, paimtam iš „Arduino“ plokštės, maitinti. A5 taške taip pat prijungtas garsinis signalas. 16x2 skystųjų kristalų ekranas sukonfigūruotas 4 bitų režimu, o jo RS, EN, D4, D5, D6 ir D7 yra tiesiogiai prijungti prie „Arduino“ skaitmeninių kaiščių D13, D12, D11, D10, D9 ir D8.
Programos paaiškinimas:
Programoje „Adafruit Fingerprint Sensor Library“ naudojome pirštų atspaudų moduliui susieti su „Arduino“ plokšte. Žemiau galite patikrinti visą kodą. Čia mes paaiškiname pagrindines „Arduino“ programos funkcijas.
Sąrankos funkcijoje mes pateikėme nurodytų kaiščių nurodymus ir inicijavome LCD ir pirštų atspaudų modulį.
Po jo, naudodamiesi funkcija void loop () , laukėme patikrinimo klavišo ir paspauskite klavišą „Match“, kad pradėtumėte pirštų atspaudus, kad būtų galima įvestis ir palyginti užfiksuoto vaizdo ID su išsaugotais ID. Jei įvyksta rungtis, tęskite kitą žingsnį.
void loop () {lcd.setCursor (0,0); lcd.print („Spaudos atitikties raktas“); lcd.setCursor (0,1); lcd.print ("paleisti sistemą"); „digitalWrite“ (indVote, LOW); „digitalWrite“ (indFinger, LOW); if (digitalRead (atitikimas) == 0) {digitalWrite (zumeris, AUKŠTAS); vėlavimas (200); digitalWrite (zumeris, LOW); „digitalWrite“ (indFinger, HIGH); už (int i = 0; i <3; i ++)…………………
Atsižvelgiant į negaliojančią funkciją checkKeys () funkcija naudojama patikrinti, ar paspaustas mygtukas Užregistruoti arba DEL, ir ką daryti paspaudus. Jei paspaudus mygtuką ENROLL, iškviečiama funkcija Užregistruoti () ir paspaudus mygtuką DEL, tada iškviečiama ištrynimo () funkcija.
void checkKeys () {if (digitalRead (užsiregistruoti) == 0) {lcd.clear (); lcd.print ("Prašau palaukti"); vėlavimas (1000); while (digitalRead (užsiregistruoti) == 0); Registruotis (); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Prašau palaukti"); vėlavimas (1000); ištrinti (); }}
Pateikta funkcija naudojama norint įvesti ištrinamą ID ir paskambinti uint8_t deleteFingerprint (uint8_t id) funkcijai, kuri ištrins pirštą iš įrašų.
negaliojantis ištrinti () {int skaičius = 0; lcd.clear (); lcd.print ("Ištrinti pirštą"); lcd.setCursor (0,1); lcd.print ("Vieta:"); o (1) {lcd.setCursor (9,1); lcd.print (skaičius); if (digitalRead (up) == 0) {count ++; jei (skaičius> 25) skaičius = 0; vėlavimas (500); }……………….
Nurodyta funkcija naudojama pirštų atspaudams ištrinti iš pasirinkto ID įrašo.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Prašome palaukti"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Ištrinta!"); lcd.clear (); lcd.print („Figeris ištrintas“); lcd.setCursor (0,1); lcd.print („Sėkmingai“); vėlavimas (1000); } else {Serial.print ("Kažkas negerai"); lcd.clear (); lcd.print („Kažkas ne taip“); lcd.setCursor (0,1); lcd.print („Vėliau bandykite dar kartą“); vėlavimas (2000); grįžti p; }}
„Given Funkcija“ naudojama imant piršto atspaudo vaizdą ir konvertuojant jį į šabloną bei išsaugant jį pasirinktu ID į pirštų atspaudų modulio atmintį.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("piršto ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print („Vietos pirštas“); vėlavimas (2000); o (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Pateikta funkcija naudojama balsuojant ir rodant rezultatus:
negaliojantis Balsuoti () {lcd.clear (); lcd.print („Prašau įdėti“); lcd.setCursor (0,1); lcd.print („Jūsų balsas“); „digitalWrite“ (indVote, HIGH); „digitalWrite“ (indFinger, LOW); „digitalWrite“ (garsinis signalas, AUKŠTAS); vėlavimas (500); digitalWrite (zumeris, LOW); vėlavimas (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Patikrinkite visą kodą ir žemiau pateiktą demonstracinį vaizdo įrašą.