- Vaaditut komponentit:
- Sormenjälkitunnistinmoduuli äänestyskoneessa:
- Työselitys:
- Piirin selitys:
- Ohjelman selitys:
Olemme kaikki hyvin perehtyneet sähköisiin äänestyskoneisiin, joissa äänesi rekisteröidään sähköisesti eikä sinun tarvitse käyttää äänestyslipua äänestettäessä vaaleissa. Nykyään turvallisuus on suuri huolenaihe, ja on myös varmistettava, että joku ei voi äänestää kahdesti, joten tämä ongelma voidaan ratkaista ottamalla käyttöön sormenjälkipohjainen äänestys, jossa henkilölle voidaan antaa lupa sormenjälkien perusteella. Tämä lopettaa myös väärennetyt äänestykset. Joten tänään rakennamme FingerPrint-pohjaista biometristä äänestyskonetta Arduinolla.
Tarkista myös aiemmat elektroniset äänestyskoneprojektimme käyttämällä erilaisia mikro-ohjaimia:
- Elektroninen äänestyskone, jossa käytetään Vadelma Pi: tä
- RFID-pohjainen äänestyskone
- AVR-mikrokontrolleripohjainen elektroninen äänestyskonehanke
- Elektroninen äänestyskone Arduinoa käyttäen
Vaaditut komponentit:
- Arduino Uno
- Sormenjälkitunnistinmoduuli
- Painikkeet
- LEDit -2
- 1K vastus -3
- 2.2K vastus
- Teho
- Johtojen liittäminen
- Summeri
- 16x2 LCD
- Leipälauta
Sormenjälkitunnistinmoduuli äänestyskoneessa:
Sormenjälkitunnistinmoduuli tai sormenjälkitunnistin on moduuli, joka sieppaa sormenjälkikuvan ja muuntaa sen sitten vastaavaksi malliksi ja tallentaa ne muistiinsa Arduinon valitsemalle tunnukselle (sijainti). Täällä Arduino komentaa kaiken prosessin, kuten kuvan ottaminen sormenjäljestä, muuntaminen malliksi ja sijainnin tallentaminen jne.
Tässä FingerPrint-äänestyskytkentäpiirissä olemme käyttäneet sormenjälkitunnistinmoduulia todentamaan todellisen äänestäjän ottamalla sormen syötteen järjestelmään. Täällä käytämme 5 painonappia Match, Enroll / back, Delete / OK, UP ja Down. Rekisteröinti- ja Del-näppäimillä on tässä kaksoisominaisuudet. Rekisteröintinäppäintä käytetään uuden sormenjäljen rekisteröimiseen järjestelmään ja selkätoimintoon. Tarkoittaa, kun käyttäjä haluaa rekisteröidä uuden sormen, hänen on painettava rekisteröintinäppäintä ja LCD kysyy tunnusta tai sijaintia, johon käyttäjä haluaa tallentaa sormenjäljen. Jos nyt käyttäjä ei halua edetä pidemmälle, hän voi palata takaisin painamalla rekisteröintinäppäintä uudelleen (tällä kertaa rekisteröintinäppäin käyttäytyy Takaisin-näppäimenä). Tarkoittaa, että rekisteröintinäppäimellä on sekä ilmoittautumis- että takaisin-toiminto. DEL / OK-näppäin on myös sama kaksoistoiminto kuin silloin, kun käyttäjä rekisteröi uuden sormen, hänen on valittava sormen tunnus tai sijainti käyttämällä kahta toista näppäintä eli YLÖS JA ALAS nyt käyttäjän on painettava DEL / OK-näppäintä (tällä kertaa tämä näppäin toimii kuten OK) jatka valittua tunnusta tai sijaintia. Otteluavainta käytetään aina kun äänestäjä haluaa äänestää, hänen on ensin todennettava todellinen äänestäjä pitämällä sormea sormenjälkitunnistimessa, jos hän on läpäissyt tämän todennuksen, hän voi äänestää.
Saat lisätietoja ilmoittautumalla sormenjäljet ja muita asioita, Tsekkaa edellinen opetusohjelma vuorovaikutuksessa Sormenjäljetön anturi Arduino ja myös tarkistaa Demo Video lopussa tämä opetusohjelma.
Työselitys:
Tämän biometrisen äänestysjärjestelmän toiminta vaaleja varten on hieman monimutkainen aloittelijoille. Ensinnäkin käyttäjän on rekisteröitävä sormi tai äänestäjät (tässä koodissa äänestäjän enimmäisraja on 25) painikkeilla / näppäimillä. Tätä varten käyttäjän on painettava ENROLL-näppäintä ja sitten LCD pyytää syöttämään sijainnin / tunnuksen, jossa sormi on myymälä. Joten käyttäjän on nyt syötettävä tunnus (sijainti) käyttämällä YLÖS / ALAS-näppäimiä. Kun olet valinnut Sijainti / tunnus, käyttäjän on painettava OK-näppäintä (DEL-näppäin). Nyt LCD pyytää asettamaan sormen sormenjälkimoduulin päälle. Nyt käyttäjän on laitettava sormensa sormenjälkimoduulin päälle. Tämän jälkeen LCD pyytää poistamaan sormen sormenjälkimoduulista ja pyytää jälleen sormen asettamista. Nyt käyttäjän on laitettava sormensa uudelleen sormenjälkimoduulin päälle. Nyt sormenjälkimoduuli ottaa kuvan ja muuntaa sen malleiksi ja tallentaa sen valitulla tunnuksella sormenjälkimoduulin muistiin.Nyt äänestäjä rekisteröidään ja hän voi äänestää. Samalla menetelmällä kaikki äänestäjät voidaan rekisteröidä järjestelmään.
Jos käyttäjä haluaa poistaa tai poistaa minkä tahansa tallennetusta tunnuksesta, hänen on painettava DEL-näppäintä. Kun olet painanut DEL-näppäintä, LCD pyytää valitsemaan sijaintitiedot valitsemalla poistettavan ID: n. Nyt käyttäjän on valittava tunnus ja painettava OK-näppäintä (sama DEL-näppäin). Nyt LCD ilmoittaa, että sormi on poistettu onnistuneesti.
Äänestysprosessi:
Nyt kun käyttäjä haluaa äänestää, hänen on painettava ottelunäppäintä ja sitten summeri antaa äänimerkin ja LED-valo syttyy ja LCD pyytää paikkaa sormen sormenjälkimoduulin päälle. Nyt Arduino antaa sinulle kolme yritystä laittaa sormesi. Kun sormi on asetettu sormenjälkimoduulin päälle, sormenjälkimoduuli sieppaa sormikuvan ja löytää sen tunnukset järjestelmässä. Jos sormen tunniste havaitaan, nestekidenäytössä näkyy valtuutettu äänestäjä. Se tarkoittaa, että käyttäjällä on lupa äänestää. Ja sitten järjestelmä siirtyy seuraavaan vaiheeseen äänestystä varten. Nyt vihreä LED palaa, mikä tarkoittaa, että äänestäjä voi nyt äänestää ehdokkaitaan painamalla asiaankuuluvaa näppäintä (RED-leipätaululta tässä mielenosoituksessa). Jos sama äänestäjä haluaa äänestää uudelleen, järjestelmä näyttää sille 'jo äänestänyt' . Eli sama äänestäjä ei voi äänestää uudelleen ja summeri piippaa 5 sekunnin ajan. Jos joku rekisteröimätön käyttäjä haluaa äänestää, sormenjälkimoduuli ei tunnista tunnusta järjestelmään ja nestekidenäytössä näkyy Ei sormenjälkeä löydetty .
CAN1, CAN2, CAN3 edustavat tässä ehdokkaita 1, ehdokkaita 2 ja 3, jotka ovat ehdolla vaaleissa.
Piirin selitys:
Tämän FingerPrint-pohjaisen äänestyskonehankkeen piiri on hyvin yksinkertainen, ja se sisältää Arduinon koko projektin prosessin hallintaan, painikkeen rekisteröintiä, poistamista, tunnusten valitsemista ja äänestystarkoitusta varten, summerin hälytykseen, LED-merkkivaloja ja 16x2 LCD-ohjausta Äänestäjä ja myös tuloksen näyttäminen. Keltainen LED osoittaa, että sormenjälkimoduuli on valmis ottamaan kuvan sormesta ja vihreä LED osoittaa, että järjestelmä on valmis äänestämään tai näkemään tuloksia.
Painike on kytketty suoraan napoihin A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) ja A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Tulos) Arduinosta suhteessa maahan. Keltainen LED on kytketty Arduinon digitaaliseen tapiin D7 maadoituksen suhteen 1k-vastuksen kautta ja vihreä LED on kytketty Arduinon D6: een samalla menetelmällä. Sormenjälkimoduulin Rx ja Tx kytketty suoraan Arduinon sarjaliittimiin Tx ja Rx. 5v-syöttöä käytetään Arduino-kortilta otetun sormenjälkimoduulin virransaantiin. A5: ään on kytketty myös summeri. 16x2-nestekidenäyttö on konfiguroitu 4-bittisessä tilassa ja sen RS, EN, D4, D5, D6 ja D7 on kytketty suoraan Arduinon digitaalisiin nastoihin D13, D12, D11, D10, D9 ja D8.
Ohjelman selitys:
Yhdessä ohjelmassa olemme käyttäneet Adafruit Fingerprint Sensor Library -sovellusta sormenjälkimoduulin liittämiseen Arduino-korttiin. Voit tarkistaa koko koodin alla. Tässä selitämme Arduino-ohjelman päätoimintoja.
Asetustoiminnossa olemme antaneet ohjeet määritetyille nastoille ja aloittaneet LCD- ja sormenjälkimoduulin.
Sen jälkeen, void loop () -toiminnossa, olemme odottaneet tarkistusnäppäintä ja painamalla Match-näppäintä aloittaaksesi sormenjäljen ottamaan syötteitä ja vertaamaan kaapatun kuvan tunnusta tallennettuihin tunnuksiin. Jos ottelu tapahtuu, jatka seuraavasta vaiheesta.
void loop () {lcd.setCursor (0,0); lcd.print ("Press Match Key"); lcd.setCursor (0,1); lcd.print ("järjestelmän käynnistys"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (ottelu) == 0) {digitalWrite (summeri, HIGH); viive (200); digitalWrite (summeri, LOW); digitalWrite (indFinger, HIGH); varten (int i = 0; i <3; i ++)…………………
Annettua void checkKeys () -toimintoa käytetään tarkistamaan, että rekisteröinti- tai DEL-näppäintä painetaan tai ei, ja mitä tehdä, jos sitä painetaan. Jos ENROLL-näppäintä painettiin, kutsutaan Enroll () -toiminto ja DEL-näppäimen painallus, sitten poistetaan () -toiminto.
void checkKeys () {if (digitalRead (rekisteröidy) == 0) {lcd.clear (); lcd.print ("Odota hetki"); viive (1000); while (digitalRead (rekisteröidy) == 0); Ilmoittaudu (); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Odota hetki"); viive (1000); poista (); }}
Annettua toimintoa käytetään poistettavan tunnuksen syöttämiseen ja uint8_t deleteFingerprint (uint8_t id) -toiminnon kutsumiseen, joka poistaa sormen tietueista.
void delet () {int count = 0; lcd.clear (); lcd.print ("Poista sormi"); lcd.setCursor (0,1); lcd.print ("Sijainti:"); kun taas (1) {lcd.setCursor (9,1); lcd.print (määrä); if (digitalRead (ylös) == 0) {count ++; jos (määrä> 25) määrä = 0; viive (500); }……………….
Annettua toimintoa käytetään poistamaan sormenjälki valitun tunnuksen tietueesta.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Odota hetki"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Poistettu!"); lcd.clear (); lcd.print ("Figer poistettu"); lcd.setCursor (0,1); lcd.print ("Onnistuneesti"); viive (1000); } else {Serial.print ("Jotain väärää"); lcd.clear (); lcd.print ("Jotain väärää"); lcd.setCursor (0,1); lcd.print ("Yritä myöhemmin uudelleen"); viive (2000); paluu p; }}
Annettua toimintoa käytetään ottamaan sormenjälkikuva ja muuntamaan ne malliksi ja tallentamaan se valitulla tunnuksella sormenjälkimoduulin muistiin.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("sormen tunnus:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Paikkasormi"); viive (2000); kun (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Annettua toimintoa käytetään äänestykseen ja tulosten näyttämiseen:
mitätön Äänestys () {lcd.clear (); lcd.print ("Ole hyvä ja aseta"); lcd.setCursor (0,1); lcd.print ("Sinun äänesi"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (summeri, HIGH); viive (500); digitalWrite (summeri, LOW); viive (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Tarkista koko koodi ja esittelyvideo alla.