- Componente necesare:
- Modul senzor de amprentă digitală în aparatul de vot:
- Explicație de lucru:
- Explicația circuitului:
- Explicația programului:
Cu toții suntem familiarizați cu mașinile de vot electronice, unde votul dvs. este înregistrat electronic și nu este nevoie să folosiți buletinul de vot pentru a vota în alegeri. Astăzi securitatea este o preocupare majoră și trebuie, de asemenea, să ne asigurăm că cineva nu poate vota de două ori, astfel încât această problemă poate fi rezolvată prin introducerea votului pe amprentă digitală, unde o persoană poate fi autorizată pe baza amprentei sale. Acest lucru va opri, de asemenea, votul fals. Așadar, astăzi construim un aparat de vot biometric bazat pe FingerPrint folosind Arduino.
Verificați, de asemenea, proiectele noastre anterioare de mașini de vot electronice folosind diferite microcontrolere:
- Mașină de vot electronic folosind Raspberry Pi
- Mașină de vot RFID
- Proiectul mașinii de vot electronic electronice bazate pe microcontroler AVR
- Mașină de vot electronic folosind Arduino
Componente necesare:
- Arduino Uno
- Modul senzor de amprentă digitală
- Apasa butoanele
- LED-uri -2
- Rezistor 1K -3
- Rezistor 2.2K
- Putere
- Conectarea firelor
- Buzzer
- 16x2 LCD
- Pâine
Modul senzor de amprentă digitală în aparatul de vot:
Finger Print Sensor Module sau Finger Print Scanner este un modul care captează imaginea cu amprentă digitală și apoi o convertește în șablonul echivalent și le salvează în memoria sa pe ID-ul selectat (locație) de către Arduino. Aici tot procesul este comandat de Arduino, cum ar fi luarea unei imagini de amprentă digitală, transformarea ei în șabloane și stocarea locației etc.
În acest circuit al mașinii de votare FingerPrint, am folosit modulul senzorului de amprentă digitală pentru a autentifica alegătorul adevărat luând intrarea degetului în sistem. Aici folosim 5 butoane pentru a se potrivi, Enroll / back, Delete / OK, UP și Down. Înscrierea și tasta Del au aici caracteristici duble. Tasta de înscriere este utilizată și pentru înscrierea de noi amprente deget în funcția de sistem și înapoi. Înseamnă că utilizatorul dorește să înregistreze un deget nou, atunci el / ea trebuie să apese tasta de înregistrare, apoi LCD-ul solicită ID-ul sau locația în care utilizatorul dorește să stocheze ieșirea de amprentă. Acum, dacă în acest moment utilizatorul nu dorește să continue mai departe, el / ea poate apăsa din nou tasta de înscriere pentru a reveni (de data aceasta tasta de înscriere se comportă ca tasta Înapoi). Cheia de înregistrare înseamnă atât funcția de înscriere, cât și funcția de revenire. Tasta DEL / OK are, de asemenea, aceeași funcție dublă ca atunci când utilizatorul înregistrează un deget nou, atunci el / ea trebuie să selecteze ID-ul degetului sau locația utilizând alte două taste, respectiv SUS ȘI JOS, acum utilizatorul trebuie să apese tasta DEL / OK (de această dată această tastă se comportă ca OK) continuați cu ID-ul sau locația selectată. Tasta de potrivire este utilizată pentru ori de câte ori alegătorul vrea să voteze, atunci el / ea trebuie să se autentifice mai întâi pentru alegătorul adevărat, ținând degetul pe senzorul de amprentă digitală, dacă a trecut în această autentificare atunci el / ea poate vota.
Pentru a afla mai multe despre înregistrarea amprentelor digitale și a altor lucruri, consultați tutorialul nostru anterior privind interfața senzorului de amprentă digitală cu Arduino și, de asemenea, verificați videoclipul nostru demonstrativ la sfârșitul acestui tutorial.
Explicație de lucru:
Funcționarea acestui sistem de vot biometric pentru alegeri este un pic complex pentru începători. În primul rând, utilizatorul trebuie să înregistreze degetul sau alegătorii (în acest cod, limita maximă a alegătorului este de 25) cu ajutorul butoanelor / tastelor. Pentru a face acest lucru, utilizatorul trebuie să apese tasta ENROLL și apoi LCD-ul solicită introducerea locației / ID-ului unde degetul va fi un magazin. Deci, acum utilizatorul trebuie să introducă ID-ul (Locație) utilizând tastele SUS / JOS. După selectarea Locație / ID, utilizatorul trebuie să apese o tastă OK (tasta DEL). Acum LCD va solicita plasarea degetului peste modulul de amprentă. Acum utilizatorul trebuie să pună degetul peste modulul de amprentă. Apoi, LCD va cere să scoateți degetul din modulul de amprentă și, din nou, să cereți plasarea degetului. Acum utilizatorul trebuie să pună degetul din nou peste modulul de amprentă. Acum modulul de amprentă digitală ia o imagine și o convertește în șabloane și o stochează prin ID-ul selectat în memoria modulului de amprentă digitală.Acum alegătorul va fi înregistrat și el / ea poate vota. Prin aceeași metodă, toți alegătorii pot fi înregistrați în sistem.
Acum, dacă utilizatorul dorește să elimine sau să șteargă oricare dintre ID-urile stocate, atunci trebuie să apese tasta DEL, după ce a apăsat tasta DEL, LCD-ul va solicita locația selectată înseamnă selectarea ID-ului care trebuie șters. Acum utilizatorul trebuie să selecteze ID și să apese tasta OK (aceeași tastă DEL). Acum, LCD-ul vă va informa că degetul a fost șters cu succes.
Procesul de vot:
Acum, când utilizatorul dorește să voteze, el / ea trebuie să apese tasta de potrivire, apoi buzzerul va emite un semnal sonor, LED-ul va aprinde și LCD-ul va solicita plasarea degetului peste modulul de amprentă digitală. Acum Arduino vă va oferi trei încercări de a pune degetul. După plasarea unui deget peste modulul de amprentă, modulul de amprentă captează imaginea degetului, identificarea ID-urilor sale este prezentă în sistem. Dacă ID-ul degetului este detectat, LCD va afișa alegătorul autorizat. Înseamnă că utilizatorul este autorizat să voteze. Și apoi sistemul trece la etapa următoare pentru votare. Acum LED-ul verde va aprinde înseamnă că acum alegătorul poate vota pentru candidații lor apăsând o tastă relectată (de pe placa de pâine RED în această demonstrație). Acum, dacă același alegător dorește să voteze din nou, atunci sistemul îi va arăta „Deja am votat” . Înseamnă că același alegător nu poate vota din nou, iar buzzerul va emite 5 secunde. Dacă un utilizator neînregistrat dorește să voteze, modulul de amprentă nu va detecta ID-ul acestuia în sistem și LCD va afișa „ Nu s-a găsit amprentă digitală” .
CAN1, CAN2, CAN3 reprezintă aici candidatul 1, candidatul 2 și candidatul 3, care au candidat la alegeri.
Explicația circuitului:
Circuitul acestui proiect de mașină de votare FingerPrint este foarte simplu, care conține Arduino pentru controlul întregului proces al proiectului, buton pentru înscriere, ștergere, selectarea ID-urilor și scopul votului, un buzzer pentru alertă, LED-uri pentru indicație și 16x2 LCD pentru instruire Alegător și care arată și rezultatul. LED-ul galben indică faptul că modulul de amprentă este gata să facă o imagine a degetului, iar LED-ul verde indică faptul că sistemul este gata să voteze sau să vadă rezultatele.
Butonul este conectat direct la pinul A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) și A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Rezultatul) Arduino cu privire la sol. LED-ul galben este conectat la pinul digital D7 al Arduino cu privire la masă printr-un rezistor de 1k, iar LED-ul verde este conectat la D6 al Arduino cu aceeași metodă. Rx și Tx ale modulului de amprentă digitală conectate direct la pinul Serial Tx și Rx din Arduino. Alimentarea cu 5V este utilizată pentru alimentarea modulului de amprentă digitală preluat de pe placa Arduino. Un buzzer este, de asemenea, conectat la A5. Un ecran LCD de 16x2 este configurat în modul 4 biți, iar RS, EN, D4, D5, D6 și D7 sunt conectate direct la pinul digital D13, D12, D11, D10, D9 și D8 al Arduino.
Explicația programului:
Într-un program, am folosit Adafruit Fingerprint Sensor Library pentru interfațarea modulului de amprentă digitală cu placa Arduino. Puteți verifica codul complet de mai jos. Aici explicăm funcțiile principale ale programului Arduino.
În funcția de configurare, am dat instrucțiuni pinilor definiți și am inițiat modulul LCD și amprenta digitală.
După aceasta, în funcția de buclă nulă () , am așteptat tasta de verificare și apăsăm tasta Match pentru a porni amprenta digitală pentru a intra și a compara ID-ul imaginii capturate cu ID-urile stocate. Dacă apare o potrivire, continuați cu pasul următor.
bucla void () {lcd.setCursor (0,0); lcd.print („Apăsați tasta de potrivire”); lcd.setCursor (0,1); lcd.print („pentru a porni sistemul”); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (buzzer, HIGH); întârziere (200); digitalWrite (buzzer, LOW); digitalWrite (indFinger, HIGH); pentru (int i = 0; i <3; i ++)…………………
Având în vedere nule checkKeys () funcție este utilizată pentru verificarea înroleze sau DEL este apăsată tasta sau nu și ce să facă dacă este apăsat. Dacă se apasă tasta ENROLL, se apelează funcția Enroll () și se apasă tasta DEL, apoi se apelează funcția Delete () .
void checkKeys () {if (digitalRead (enroll) == 0) {lcd.clear (); lcd.print („Vă rugăm să așteptați”); întârziere (1000); while (digitalRead (enroll) == 0); Înscrieți-vă (); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print („Vă rugăm să așteptați”); întârziere (1000); delet (); }}
Funcția dată este utilizată pentru introducerea ID-ului care trebuie șters și apelarea funcției uint8_t deleteFingerprint (uint8_t id) care va șterge degetul din înregistrări.
void delet () {int count = 0; lcd.clear (); lcd.print („Șterge degetul”); lcd.setCursor (0,1); lcd.print („Locație:”); while (1) {lcd.setCursor (9,1); lcd.print (număr); if (digitalRead (up) == 0) {count ++; if (număr> 25) număr = 0; întârziere (500); }……………….
Funcția dată este utilizată pentru ștergerea amprentei din înregistrarea ID-ului selectat.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print („Vă rugăm să așteptați”); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Șters!"); lcd.clear (); lcd.print ("Figer șters"); lcd.setCursor (0,1); lcd.print („Cu succes”); întârziere (1000); } else {Serial.print („Ceva greșit”); lcd.clear (); lcd.print („Ceva greșit”); lcd.setCursor (0,1); lcd.print („Încercați din nou mai târziu”); întârziere (2000); retur p; }}
Funcția dată este folosită pentru a face o imagine cu amprentă și a le converti în șablon și a o salva prin ID-ul selectat în memoria modulului de amprentă.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID-ul degetului:"); lcd.print (id); lcd.setCursor (0,1); lcd.print („Plasați degetul”); întârziere (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Funcția dată este utilizată pentru votare și afișarea rezultatelor:
void Vote () {lcd.clear (); lcd.print („Vă rugăm să plasați”); lcd.setCursor (0,1); lcd.print („Votul tău”); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); întârziere (500); digitalWrite (buzzer, LOW); întârziere (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Verificați codul complet și videoclipul demonstrativ de mai jos.