- Zahtevane komponente:
- Modul senzorja za prstni odtis v glasovalni napravi:
- Delovna razlaga:
- Pojasnilo vezja:
- Pojasnilo programa:
Vsi dobro poznamo elektronske glasovalne stroje, kjer se vaš glas registrira elektronsko in vam ni treba uporabiti glasovnice za glasovanje na volitvah. Danes je varnost glavna skrb, prav tako pa je treba zagotoviti, da nekdo ne more glasovati dvakrat, zato je to težavo mogoče rešiti z uvedbo glasovanja na osnovi prstnih odtisov, kjer lahko osebo pooblastite na podlagi prstnega odtisa. To bo tudi ustavilo lažno glasovanje. Tako danes z uporabo Arduina gradimo biometrični glasovalni stroj na osnovi FingerPrint.
Preverite tudi naše prejšnje projekte elektronskih glasovalnih strojev z uporabo različnih mikrokrmilnikov:
- Elektronski glasovalni stroj z uporabo Raspberry Pi
- RFID glasovalni stroj
- Projekt elektronskega glasovalnega stroja na osnovi mikrokrmilnika AVR
- Elektronski glasovalni stroj z uporabo Arduina
Zahtevane komponente:
- Arduino Uno
- Modul senzorja za prstni odtis
- Gumbi
- LED-diode -2
- 1K upor -3
- 2.2K upor
- Moč
- Priključne žice
- Zvočni signal
- 16x2 LCD
- Odbor za kruh
Modul senzorja za prstni odtis v glasovalni napravi:
Modul senzorja za prstni odtis ali optični bralnik prstnih odtisov je modul, ki zajame sliko prstnega odtisa, nato pa jo pretvori v enakovredno predlogo in jih shrani v svoj pomnilnik na izbrani ID (lokaciji), ki jo izda Arduino. Tu ves postopek zapoveduje Arduino, na primer fotografiranje prstnih odtisov, pretvorba v predloge in shranjevanje lokacije itd.
V tem vezju FingerPrint Voting Machine smo s senzorskim modulom za tiskanje prstov potrdili pristnost pravega volivca, tako da smo v sistem vnesli njihov prst. Tukaj uporabljamo 5 tipk za Match, Enroll / back, Delete / OK, UP in Down. Tukaj sta dvojni funkciji tipka za vpis in Del. Tipka za vpis se uporablja tudi za vpis novega odtisa prsta v sistem in nazaj. Pomeni, ko želi uporabnik vpisati nov prst, nato mora pritisniti tipko za vpis, nato LCD vpraša ID ali lokacijo, kamor želi uporabnik shraniti izpis prstov. Če uporabnik trenutno ne želi nadaljevati, lahko za vrnitev znova pritisne tipko za vpis (tokrat se tipka za vpis obnaša kot tipka za nazaj). Pomeni vpisna tipka ima funkcijo za vpis in nazaj. Tipka DEL / OK ima tudi enako dvojno funkcijo, kot ko uporabnik vpiše nov prst, potem mora izbrati ID prsta ali lokacijo s pomočjo dveh dveh tipk, in sicer GOR IN DOL, zdaj mora uporabnik pritisniti tipko DEL / OK (tokrat se ta tipka obnaša kot OK), da nadaljujte z izbranim ID-jem ali lokacijo. Ključ ujemanja se uporablja, kadar koli volivec želi glasovati, potem mora najprej preveriti pristnost pravega volivca, tako da drži prst na senzorju za prstni odtis, če je opravil to avtentikacijo, potem lahko glasuje.
Če želite izvedeti več o vpisovanju prstnih odtisov in drugih stvareh, si oglejte našo prejšnjo vadnico o povezovanju senzorja za prstni odtis z Arduino in na koncu te vadnice tudi naš predstavitveni video.
Delovna razlaga:
Delovanje tega biometričnega volilnega sistema je malo zapleteno za začetnike. Najprej mora uporabnik s pomočjo tipk / tipk vpisati prst ali volivce (v tej kodi je najvišja meja volivca 25). Če želite to narediti, mora uporabnik pritisniti tipko ENROLL in nato LCD vpraša za vnos lokacije / ID, kjer bo prst trgovina. Zdaj mora uporabnik vnesti ID (Lokacija) s tipkami GOR / DOL. Po izbiri lokacije / ID mora uporabnik pritisniti tipko OK (tipka DEL). Zdaj bo LCD zahteval, da položite prst nad modul za tiskanje prstov. Zdaj mora uporabnik položiti prst na modul za tiskanje prstov. Nato bo LCD prosil, da odstranite prst iz modula za tiskanje prstov, in spet prosil za namestitev prsta. Zdaj mora uporabnik spet položiti prst čez modul za tiskanje prstov. Zdaj modul za prstni odtis posname sliko, jo pretvori v predloge in shrani z izbranim ID-jem v pomnilnik modula za prstni odtis.Zdaj bo volivec registriran in bo lahko glasoval. Na enak način je mogoče v sistem prijaviti vse volivce.
Zdaj, če želi uporabnik odstraniti ali izbrisati kateri koli shranjeni ID, mora pritisniti tipko DEL. Po pritisku tipke DEL bo LCD vprašal za izbrano lokacijo, kar pomeni, da je treba ID izbrisati. Zdaj mora uporabnik izbrati ID in pritisniti tipko OK (ista tipka DEL). Zdaj vas bo LCD obvestil, da je bil prst uspešno izbrisan.
Postopek glasovanja:
Zdaj, ko uporabnik želi glasovati, mora pritisniti tipko za ujemanje, nato pa bo zaslišal zvočni signal in LED bo tudi zasvetil, LCD pa bo zahteval, da s prstom postavite modul prstnih odtisov. Zdaj vam bo Arduino trikrat poskusil vstaviti prst. Ko položite prst na modul prstnih odtisov, modul prstnih odtisov zajame sliko prsta in v sistemu je prisoten njen ID Če je zaznan ID prsta, bo LCD prikazal pooblaščenega volivca. To pomeni, da je uporabnik pooblaščen za glasovanje. Nato se sistem premakne na naslednjo stopnjo glasovanja. Zdaj sveti zelena LED, kar pomeni, da lahko volivec zdaj voli svoje kandidate s pritiskom na spuščeno tipko (na RDEČI plošči za kruh v tej predstavitvi). Zdaj, če želi isti volivec znova glasovati, bo sistem prikazal "Že glasovalo" . To pomeni, da isti volivec ne more znova glasovati in zvočni signal oglasi 5 sekund. Če kateri koli neregistriran uporabnik želi glasovati, potem modul za prstni odtis ne bo zaznal svojega ID-ja v sistemu in na LCD-prikazovalniku bo prikazano ' No Fingerprint Found' .
CAN1, CAN2, CAN3 tukaj predstavlja kandidata 1, kandidata 2 in kandidata 3, ki so kandidirali na volitvah.
Pojasnilo vezja:
Vezje tega projekta za glasovalne stroje na osnovi FingerPrint je zelo preprosto, saj vsebuje Arduino za nadzor celotnega procesa projekta, gumb za vpis, brisanje, izbiro osebnih dokumentov in namen glasovanja, zvočni signal za opozorilo, LED za indikacijo in 16x2 LCD za navodila Volilec in kaže tudi rezultat. Rumena LED označuje, da je modul prstnih odtisov pripravljen za fotografiranje prsta, zelena LED pa, da je sistem pripravljen glasovati ali videti rezultate.
Gumb je neposredno povezan z zatiči A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOL) in A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Rezultat) Arduina glede na zemljo. Rumena LED je povezana z digitalnim zatičem D7 Arduina glede na zemljo prek 1k upora, zelena LED pa z enako metodo na D6 Arduino. Rx in Tx modula prstnih odtisov sta neposredno povezana s serijskima pinoma Tx in Rx Arduina. Napajanje 5v se uporablja za napajanje modula za odtis prstov, prevzetega s plošče Arduino. Na A5 je priključen tudi zvočni signal. LCD 16x2 je konfiguriran v 4-bitnem načinu, njegovi RS, EN, D4, D5, D6 in D7 pa so neposredno povezani na digitalni pin D13, D12, D11, D10, D9 in D8 Arduina.
Pojasnilo programa:
V programu smo uporabili knjižnico senzorjev za prstne odtise Adafruit za povezovanje modula prstnih odtisov s ploščo Arduino. Spodaj lahko preverite celotno kodo. Tukaj razlagamo glavne funkcije programa Arduino.
V nastavitveni funkciji smo podali navodila za določene nožice in sprožili modul LCD in Fingerprint.
Po njej smo v funkciji void loop () počakali na kontrolno tipko in pritisnili tipko Match, da začnemo s prstnim odtisom, da vnesemo in primerjamo ID zajete slike s shranjenimi ID-ji. Če pride do ujemanja, nadaljujte z naslednjim korakom.
void loop () {lcd.setCursor (0,0); lcd.print ("Pritisnite tipko za ujemanje"); lcd.setCursor (0,1); lcd.print ("za zagon sistema"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (brenčalo, VISOKO); zamuda (200); digitalWrite (brenčalo, LOW); digitalWrite (indFinger, HIGH); za (int i = 0; i <3; i ++)…………………
Funkcija void checkKeys () se uporablja za preverjanje, ali je tipka za vpis ali pritisnjena ali ne in kaj storiti, če pritisnete Če pritisnete tipko ENROLL, pritisnete funkcijo Enroll () in pritisnete tipko DEL, nato pa funkcijo delete () .
void checkKeys () {if (digitalRead (enroll) == 0) {lcd.clear (); lcd.print ("Prosim počakajte"); zamuda (1000); while (digitalRead (enroll) == 0); Vpis (); } sicer če (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Prosim počakajte"); zamuda (1000); delet (); }}
Dana funkcija se uporablja za vnos ID-ja, ki ga želite izbrisati, in za klic funkcije uint8_t deleteFingerprint (uint8_t id), ki bo izbrisala prst iz zapisov.
void delet () {int count = 0; lcd.clear (); lcd.print ("Delete Finger"); lcd.setCursor (0,1); lcd.print ("Lokacija:"); while (1) {lcd.setCursor (9,1); lcd.print (štetje); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; zamuda (500); }……………….
Dana funkcija se uporablja za brisanje prstnih odtisov iz zapisa izbranega ID-ja.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Prosim počakajte"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Izbrisano!"); lcd.clear (); lcd.print ("Slika izbrisana"); lcd.setCursor (0,1); lcd.print ("Uspešno"); zamuda (1000); } else {Serial.print ("Nekaj je narobe"); lcd.clear (); lcd.print ("Nekaj je narobe"); lcd.setCursor (0,1); lcd.print ("Poskusi znova pozneje"); zamuda (2000); vrnitev p; }}
Podana funkcija se uporablja za fotografiranje prstnih odtisov, njihovo pretvorbo v predlogo in shranjevanje z izbranim ID-jem v pomnilnik modula za prstni odtis.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID prsta:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Place Finger"); zamuda (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Dana funkcija se uporablja za glasovanje in prikaz rezultatov:
void Vote () {lcd.clear (); lcd.print ("Prosimo, postavite"); lcd.setCursor (0,1); lcd.print ("Vaš glas"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (brenčalo, VISOKO); zamuda (500); digitalWrite (brenčalo, LOW); zamuda (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Preverite celotno kodo in predstavitveni video spodaj.