- Nødvendige komponenter:
- Fingeravtrykkelsessensormodul i stemmemaskin:
- Arbeidsforklaring:
- Kretsforklaring:
- Programforklaring:
Vi er alle ganske kjent med elektroniske stemmemaskiner, der din stemme blir registrert elektronisk og du ikke trenger å bruke stemmeseddelen for å stemme ved valg. I dag er sikkerhet en stor bekymring, og det må også sikres at noen ikke kan stemme to ganger, så dette problemet kan løses ved å innføre fingeravtrykkbasert avstemning, hvor en person kan autoriseres basert på fingeravtrykk. Dette vil også stoppe falske stemmer. Så i dag bygger vi FingerPrint-basert biometrisk stemmemaskin ved hjelp av Arduino.
Sjekk også våre tidligere elektroniske valgmaskinprosjekter ved hjelp av forskjellige mikrokontrollere:
- Elektronisk stemmemaskin ved bruk av Raspberry Pi
- RFID-basert stemmemaskin
- AVR Microcontroller-basert elektronisk valgmaskinprosjekt
- Elektronisk valgmaskin ved hjelp av Arduino
Nødvendige komponenter:
- Arduino Uno
- Fingeravtrykkelsessensormodul
- Trykke knapper
- Lysdioder -2
- 1K Motstand -3
- 2,2K motstand
- Makt
- Koble ledninger
- Summer
- 16x2 LCD
- Brødtavle
Fingeravtrykkelsessensormodul i stemmemaskin:
Fingerprint Sensor Module eller Finger Print Scanner er en modul som fanger fingeravtrykk og deretter konverterer den til tilsvarende mal og lagrer dem i minnet på valgt ID (plassering) av Arduino. Her er hele prosessen kommandert av Arduino som å ta et bilde av fingeravtrykk, konvertere det til maler og lagre plassering etc.
I denne FingerPrint Voting Machine Circuit har vi brukt Finger Print Sensor Module til å autentisere ekte velger ved å ta fingerinngangen i systemet. Her bruker vi 5 trykknapper til Match, Enroll / back, Delete / OK, UP og Down. Enroll og Del-tasten har doble funksjoner her. Enroll-tast brukes også til å registrere et nytt fingerinntrykk i systemet og ryggfunksjonen. Betyr når brukeren vil registrere en ny finger, da må han / hun trykke på registreringstasten, og deretter ber LCD om ID eller plassering der brukeren vil lagre fingeravtrykk. Hvis brukeren på dette tidspunktet ikke ønsker å gå videre, kan han / hun trykke på registreringstasten igjen for å gå tilbake (denne gangen registrerer tasten seg som Back-tasten). Betyr påmeldingsnøkkel har både påmeldings- og ryggfunksjon. DEL / OK-tasten har også samme doble funksjon som når bruker registrerer ny finger, så må han / hun velge finger-ID eller plassering ved å bruke en annen to-tast, nemlig OPP OG NED, nå må brukeren trykke DEL / OK-tasten (denne gangen oppfører denne tasten seg som OK) for fortsett med valgt ID eller plassering. Matchnøkkel brukes til når velgeren vil stemme, så må han / hun først godkjenne for ekte velger ved å holde fingeren på fingeravtrykkssensoren. Hvis han / hun passerte denne godkjenningen, kan han / hun stemme.
For å lære mer om registrering av fingeravtrykk og andre ting, sjekk vår forrige opplæring om grensesnitt fingeravtrykkssensor med Arduino, og sjekk også vår demo- video på slutten av denne opplæringen.
Arbeidsforklaring:
Arbeid med dette biometriske stemmesystemet for valg er litt komplisert for nybegynnere. Først og fremst må brukeren registrere finger eller velgere (i denne koden er maksgrensen for velgeren 25) ved hjelp av trykknapper / taster. For å gjøre dette må brukeren trykke ENROLL-tasten og deretter ber LCD om å oppgi sted / ID der fingeren vil være en butikk. Så nå må brukeren oppgi ID (Location) ved å bruke UP / DOWN-tastene. Etter at du har valgt Sted / ID, må brukeren trykke på en OK-tast (DEL-tast). Nå vil LCD be om å plassere fingeren over fingeravtrykkmodulen. Nå må brukeren sette fingeren over fingeravtrykkmodulen. Deretter vil LCD be om å fjerne fingeren fra fingeravtrykkmodulen og igjen be om å plassere fingeren. Nå må brukeren sette fingeren igjen over fingeravtrykkmodulen. Nå tar fingeravtrykkmodulen et bilde og konverterer det til maler og lagrer det etter valgt ID i fingeravtrykkmodulens minne.Nå vil velgeren bli registrert, og han / hun kan stemme. På samme måte kan alle velgerne registreres i systemet.
Nå hvis brukeren vil fjerne eller slette noe av den lagrede ID-en, må han / hun trykke DEL-tasten, etter å ha trykket på DEL-tasten, vil LCD be om valgt sted, men velg ID som skal slettes. Nå må brukeren velge ID og trykke OK-tasten (samme DEL-tasten). Nå vil LCD gi deg beskjed om at fingeren er slettet.
Stemmeprosess:
Nå når brukeren ønsker å stemme, må han / hun trykke på match-tasten, og så vil lydsignalet pippe, og LED-en vil også lyse, og LCD-skjermen vil be om å plassere finger over fingeravtrykkmodulen. Nå vil Arduino gi deg tre forsøk på å sette fingeren. Etter at du har plassert en finger over fingeravtrykksmodulen, tar fingeravtrykkmodulen et fingerbilde, og finn ID-ene sine i systemet. Hvis finger-ID oppdages, vil LCD vise autorisert velger. Det betyr at brukeren er autorisert til å stemme. Og så går systemet videre til neste trinn for avstemning. Nå vil Green LED lyse, det betyr at velgeren kan stemme på kandidatene sine ved å trykke på en valgt tast (fra RØDT brødbrett i denne demonstrasjonen). Nå hvis den samme velgeren vil stemme igjen, vil systemet vise det 'allerede stemt' . Betyr at samme velger ikke kan stemme igjen, og summeren piper i 5 sekunder. Hvis en ikke-registrert bruker ønsker å stemme, vil fingeravtrykkmodulen ikke oppdage ID-en i systemet, og LCD-skjermen viser " Ingen fingeravtrykk funnet" .
CAN1, CAN2, CAN3 representerer her kandidat 1, kandidat 2 og kandidat 3, som har stilt til valg.
Kretsforklaring:
Kretsen til dette FingerPrint-baserte stemmemaskinprosjektet er veldig enkelt som inneholder Arduino for å kontrollere hele prosessen i prosjektet, trykknapp for å registrere, slette, velge ID-er og stemmeformål, en summer for varsel, lysdioder for indikasjon og 16x2 LCD for instruksjon Velger og viser resultatet også. Gul lysdiode indikerer at fingeravtrykkmodulen er klar til å ta et bilde av fingeren, og den grønne lysdioden indikerer at systemet er klart til å stemme eller se resultater.
Trykknappen er direkte koblet til pin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) og A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Resultat) av Arduino med hensyn til bakken. Gul LED er koblet til Digital pin D7 av Arduino i forhold til bakken gjennom en 1k motstand og Green LED er koblet til D6 av Arduino med samme metode. Fingeravtrykkmodulens Rx og Tx direkte koblet til Serial pin Tx og Rx av Arduino. 5v-forsyning brukes til å drive fingeravtrykkmodul hentet fra Arduino-kortet. En summer er også koblet til på A5. En 16x2 LCD er konfigurert i 4-biters modus og dens RS, EN, D4, D5, D6 og D7 er direkte koblet til Digital pin D13, D12, D11, D10, D9 og D8 av Arduino.
Programforklaring:
I et program har vi brukt Adafruit Fingerprint Sensor Library for å grensesnitt fingeravtrykk modul med Arduino bord. Du kan sjekke hele koden nedenfor. Her forklarer vi hovedfunksjonene til Arduino-programmet.
I oppsettfunksjonen har vi gitt instruksjoner til definerte pinner og har startet LCD- og fingeravtrykkmodulen.
Etter det, i void loop () -funksjonen, har vi ventet på sjekk-tasten og trykk på Match-tasten for å starte fingeravtrykket for å ta inndata og sammenligne fanget bilde-ID med lagrede ID-er. Hvis det oppstår en kamp, fortsett med neste trinn.
ugyldig sløyfe () {lcd.setCursor (0,0); lcd.print ("Press Match Key"); lcd.setCursor (0,1); lcd.print ("for å starte systemet"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); hvis (digitalRead (match) == 0) {digitalWrite (summer, HØY); forsinkelse (200); digitalWrite (summer, LAV); digitalWrite (indFinger, HIGH); for (int i = 0; i <3; i ++)…………………
Gitt ugyldige checkKeys () -funksjonen brukes til å kontrollere Enroll eller DEL-tasten trykkes eller ikke, og hva du skal gjøre hvis du trykker på den. Hvis ENROLL-tasten ble trykket, kalles Enroll () -funksjonen og DEL-tastetrykk, og deretter slettes () -funksjonen.
void checkKeys () {if (digitalRead (roll) == 0) {lcd.clear (); lcd.print ("Vennligst vent"); forsinkelse (1000); mens (digitalRead (registrer) == 0); Registrere(); } annet hvis (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Vennligst vent"); forsinkelse (1000); slette (); }}
Denne funksjonen brukes til å angi ID som skal slettes og ringe til uint8_t deleteFingerprint (uint8_t id) -funksjon som vil slette fingeren fra postene.
ugyldig sletting () {int count = 0; lcd.clear (); lcd.print ("Slett finger"); lcd.setCursor (0,1); lcd.print ("Location:"); mens (1) {lcd.setCursor (9,1); lcd.print (count); hvis (digitalRead (opp) == 0) {count ++; hvis (count> 25) count = 0; forsinkelse (500); }……………….
Denne funksjonen brukes til å slette fingeravtrykk fra registreringen av valgt ID.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Vennligst vent"); p = finger.deleteModel (id); hvis (p == FINGERPRINT_OK) {Serial.println ("Slettet!"); lcd.clear (); lcd.print ("Figer slettet"); lcd.setCursor (0,1); lcd.print ("Vellykket"); forsinkelse (1000); } annet {Serial.print ("Noe galt"); lcd.clear (); lcd.print ("Noe galt"); lcd.setCursor (0,1); lcd.print ("Prøv igjen senere"); forsinkelse (2000); retur p; }}
Gitt funksjon brukes til å ta et fingeravtrykk og konvertere dem til malen og lagre det med valgt ID i minnet til fingeravtrykkmodulen.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Place Finger"); forsinkelse (2000); mens (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Denne funksjonen brukes til å stemme og vise resultater:
ugyldig Stemme () {lcd.clear (); lcd.print ("Vennligst plasser"); lcd.setCursor (0,1); lcd.print ("Your Vote"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (summer, HØY); forsinkelse (500); digitalWrite (summer, LAV); forsinkelse (1000); mens (1) {if (digitalRead (sw1) == 0)…………………
Sjekk hele koden og demonstrasjonsvideoen nedenfor.