- Požadované komponenty:
- Modul snímače otisků prstů v hlasovacím zařízení:
- Pracovní vysvětlení:
- Vysvětlení obvodu:
- Vysvětlení programu:
Všichni dobře známe elektronické hlasovací automaty, kde se váš hlas zaregistruje elektronicky a pro hlasování ve volbách nemusíte používat hlasovací lístky. Dnes je bezpečnost hlavním problémem a je také třeba zajistit, aby někdo nemohl hlasovat dvakrát, takže tento problém lze vyřešit zavedením hlasování založeného na otisku prstu, kde může být osoba autorizována na základě otisku prstu. Tím se také zastaví falešné hlasování. Dnes tedy stavíme biometrický hlasovací stroj založený na FingerPrint pomocí Arduina.
Zkontrolujte také naše předchozí projekty elektronických hlasovacích strojů pomocí různých mikrokontrolérů:
- Elektronické hlasovací zařízení využívající Raspberry Pi
- Hlasovací zařízení založené na RFID
- Projekt elektronického hlasovacího zařízení založeného na mikrokontroléru AVR
- Elektronické hlasovací zařízení pomocí Arduina
Požadované komponenty:
- Arduino Uno
- Modul snímače otisků prstů
- Tlačítka
- LED diody -2
- 1K rezistor -3
- 2,2K rezistor
- Napájení
- Připojovací vodiče
- Bzučák
- 16x2 LCD
- Chlebová deska
Modul snímače otisků prstů v hlasovacím zařízení:
Modul snímače otisků prstů nebo snímač otisků prstů je modul, který zachycuje tiskový obrázek prstu a poté jej převádí do ekvivalentní šablony a ukládá je do své paměti na vybrané ID (umístění) od Arduina. Zde celý proces ovládá Arduino, jako je pořizování snímků otisků prstů, jejich převádění na šablony a ukládání umístění atd.
V tomto obvodu hlasovacího zařízení FingerPrint jsme použili modul snímače otisků prstů k ověření pravého voliče tím, že jsme v systému zadali prst. Zde používáme 5 tlačítek pro shodu, registraci / zpět, mazání / OK, NAHORU a DOLŮ. Klíč Enroll a Del zde mají dvojí funkce. Klávesa registrace se používá také pro registraci nového otisku prstu do funkce systému a zpět. Znamená to, že když uživatel chce zaregistrovat nový prst, musí stisknout tlačítko pro registraci a poté se LCD zeptá na ID nebo umístění, kam chce uživatel uložit výstup otisku prstu. Nyní, pokud v tuto chvíli uživatel nechce pokračovat dále, může se stisknutím klávesy pro opětovné přihlášení vrátit zpět (tentokrát se klávesa pro zápis chová jako klávesa Zpět). Znamená, že klíč pro registraci má funkci registrace i zpět. Tlačítko DEL / OK má také stejnou dvojitou funkci, jako když uživatel zaregistruje nový prst, pak musí vybrat ID prstu nebo umístění pomocí dalších dvou kláves, konkrétně NAHORU A DOLŮ, nyní musí uživatel stisknout klávesu DEL / OK (tentokrát se tato klávesa chová jako OK), aby pokračujte vybraným ID nebo umístěním. Klíč shody se používá vždy, když chce volič hlasovat, pak se nejprve potřebuje ověřit pro skutečného voliče podržením prstu na snímači otisku prstu, pokud v tomto ověření prošel, může hlasovat.
Chcete-li se dozvědět více o registraci otisků prstů a dalších věcech, podívejte se na náš předchozí tutoriál o propojení snímače otisků prstů s Arduino a také si přečtěte naše ukázkové video na konci tohoto tutoriálu.
Pracovní vysvětlení:
Fungování tohoto biometrického volebního systému pro volby je pro začátečníky trochu složitější. Nejprve musí uživatel zaregistrovat prst nebo voliče (v tomto kódu je maximální limit voliče 25) pomocí tlačítek / kláves. Za tímto účelem musí uživatel stisknout klávesu ENROLL a poté se LCD zeptá na zadání místa / ID, kde bude prstem úložiště. Nyní tedy uživatel musí zadat ID (umístění) pomocí kláves NAHORU / DOLŮ. Po výběru umístění / ID musí uživatel stisknout klávesu OK (klávesa DEL). Nyní LCD požádá o vložení prstu nad modul otisku prstu. Nyní musí uživatel přiložit prst na modul pro tisk prstů. Poté LCD požádá o odstranění prstu z modulu pro tisk prstů a znovu požádá o vložení prstu. Nyní musí uživatel znovu přiložit prst na modul pro tisk prstů. Nyní modul otisku prstu pořídí obrázek a převede jej do šablon a uloží jej podle zvoleného ID do paměti modulu otisku prstu.Nyní bude volič zaregistrován a bude moci hlasovat. Stejným způsobem lze do systému zaregistrovat všechny voliče.
Nyní, pokud chce uživatel odstranit nebo smazat některý z uložených ID, musí stisknout klávesu DEL, po stisknutí klávesy DEL se na LCD displeji zobrazí výzva k výběru umístění znamená výběr ID, které má být odstraněno. Nyní musí uživatel vybrat ID a stisknout tlačítko OK (stejné tlačítko DEL). Nyní vám LCD dá vědět, že prst byl úspěšně smazán.
Proces hlasování:
Nyní, když chce uživatel hlasovat, musí stisknout klávesu Match a poté bzučák pípne a také bude svítit LED a LCD požádá o vložení modulu prstu přes otisk prstu. Nyní vám Arduino dá tři pokusy o vložení prstu. Po umístění prstu přes modul otisků prstů modul otisků prstů zachytí obraz prstu a v systému se nachází jeho ID. Pokud je detekováno ID prstu, LCD zobrazí oprávněného voliče. To znamená, že uživatel je oprávněn hlasovat. A pak systém přejde do další fáze hlasování. Nyní se rozsvítí zelená LED, což znamená, že nyní může volič hlasovat pro své kandidáty stisknutím zvoleného tlačítka (v této ukázce z RED chlebové desky). Pokud chce tentýž volič hlasovat znovu, systém jej zobrazí „Již hlasovalo“ . Znamená to, že stejný volič nemůže znovu hlasovat a bzučák bude pípat po dobu 5 sekund. Pokud chce neregistrovaný uživatel hlasovat, modul otisků prstů nezjistí své ID v systému a na LCD displeji se zobrazí „ No Fingerprint Found“ .
CAN1, CAN2, CAN3 zde představuje kandidáta 1, kandidáta 2 a kandidáta 3, kteří kandidovali.
Vysvětlení obvodu:
Obvod tohoto projektu hlasovacího stroje založeného na FingerPrint je velmi jednoduchý, který obsahuje Arduino pro ovládání celého procesu projektu, tlačítko pro registraci, mazání, výběr ID a účel hlasování, bzučák pro výstrahu, LED pro indikaci a 16x2 LCD pro instrukci Volič a také výsledek. Žlutá kontrolka LED označuje, že modul otisků prstů je připraven pořídit snímek prstu a zelená kontrolka LED znamená, že je systém připraven hlasovat nebo zobrazit výsledky.
Tlačítko je přímo připojeno k pinům A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) a A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Výsledek) Arduina vzhledem k zemi. Žlutá LED je připojena na digitální pin D7 Arduina vzhledem k zemi přes odpor 1k a zelená LED je připojena k D6 Arduina stejnou metodou. Rx a Tx modulu otisků prstů jsou přímo připojeny na sériový pin Tx a Rx Arduina. Napájení 5 V se používá k napájení modulu otisku prstu odebraného z desky Arduino. Na A5 je také připojen bzučák. 16x2 LCD je konfigurován ve 4bitovém režimu a jeho RS, EN, D4, D5, D6 a D7 jsou přímo připojeny na digitální piny D13, D12, D11, D10, D9 a D8 společnosti Arduino.
Vysvětlení programu:
V programu jsme použili rozhraní Adafruit Fingerprint Sensor Library pro propojení modulu otisků prstů s deskou Arduino. Celý kód můžete zkontrolovat níže. Zde vysvětlujeme hlavní funkce programu Arduino.
Ve funkci nastavení jsme dali pokyny k definovaným pinům a spustili jsme LCD a Fingerprint modul.
Poté jsme ve funkci void loop () čekali na kontrolní klávesu a stisknutím klávesy Match spustili otisk prstu, aby provedli vstup a porovnali ID zachyceného obrázku s uloženými ID. Pokud dojde ke shodě, pokračujte dalším krokem.
void loop () {lcd.setCursor (0,0); lcd.print ("Stiskněte klávesu Match Match"); lcd.setCursor (0,1); lcd.print ("spustit systém"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (bzučák, VYSOKÝ); zpoždění (200); digitalWrite (bzučák, NÍZKÝ); digitalWrite (indFinger, HIGH); pro (int i = 0; i <3; i ++)…………………
Daná funkce void checkKeys () se používá ke kontrole, zda je nebo není stisknuto tlačítko Zapsat nebo DEL a co dělat, pokud je stisknuto. Pokud stisknete klávesu ENROLL, vyvolá se funkce Enroll () a stiskne se klávesa DEL, pak se vyvolá funkce delete () .
void checkKeys () {if (digitalRead (enroll) == 0) {lcd.clear (); lcd.print ("Počkejte prosím"); zpoždění (1000); while (digitalRead (enroll) == 0); Zapsat(); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Počkejte prosím"); zpoždění (1000); delet (); }}
Daná funkce se používá pro zadání ID, které má být odstraněno a volání funkce uint8_t deleteFingerprint (uint8_t id), která odstraní prst ze záznamů.
void delet () {int count = 0; lcd.clear (); lcd.print ("Odstranit prst"); lcd.setCursor (0,1); lcd.print ("Umístění:"); while (1) {lcd.setCursor (9,1); lcd.print (počet); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; zpoždění (500); }……………….
Daná funkce se používá pro mazání otisku prstu ze záznamu vybraného ID.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Čekejte prosím"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Smazáno!"); lcd.clear (); lcd.print („Figer Deleted“); lcd.setCursor (0,1); lcd.print ("Úspěšně"); zpoždění (1000); } else {Serial.print ("Něco špatného"); lcd.clear (); lcd.print („Něco špatného“); lcd.setCursor (0,1); lcd.print ("Zkuste to znovu později"); zpoždění (2000); návrat p; }}
Daná funkce se používá k pořizování snímků otisků prstů a jejich převodu do šablony a uložení podle zvoleného ID do paměti modulu otisků prstů.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID prstu:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Umístit prst"); zpoždění (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Daná funkce se používá pro hlasování a zobrazení výsledků:
void Hlasování () {lcd.clear (); lcd.print („Prosím, vložte“); lcd.setCursor (0,1); lcd.print („Váš hlas“); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (bzučák, VYSOKÝ); zpoždění (500); digitalWrite (bzučák, NÍZKÝ); zpoždění (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Zkontrolujte celý kód a ukázkové video níže.