- Nödvändiga komponenter:
- Fingeravtryckssensormodul i röstmaskinen:
- Arbetsförklaring:
- Kretsförklaring:
- Programförklaring:
Vi är alla ganska bekanta med elektroniska röstmaskiner, där din röst registreras elektroniskt och du inte behöver använda valurnan för att rösta i valet. Idag är säkerhet ett stort problem och det måste också säkerställas att någon inte kan rösta två gånger, så detta problem kan lösas genom att införa röstning med fingeravtryck, där en person kan godkännas utifrån sitt fingeravtryck. Detta kommer också att stoppa falsk omröstning. Så idag bygger vi FingerPrint-baserad biometrisk röstmaskin med Arduino.
Kontrollera också våra tidigare elektroniska röstmaskinprojekt med olika mikrokontroller:
- Elektronisk röstmaskin med Raspberry Pi
- RFID-baserad röstmaskin
- AVR Microcontroller-baserat elektroniskt röstmaskinprojekt
- Elektronisk röstmaskin med Arduino
Nödvändiga komponenter:
- Arduino Uno
- Modul för fingeravtryckssensor
- Trycka på knappar
- Lysdioder -2
- 1K Motstånd -3
- 2,2K motstånd
- Kraft
- Anslutande ledningar
- Summer
- 16x2 LCD
- Brödbräda
Fingeravtryckssensormodul i röstmaskinen:
Finger Print Sensor Module eller Finger Print Scanner är en modul som fångar fingeravtrycksbilden och sedan konverterar den till motsvarande mall och sparar dem i sitt minne på valt ID (plats) av Arduino. Här styrs hela processen av Arduino som att ta en bild av fingeravtryck, konvertera den till mallar och lagra plats etc.
I denna FingerPrint Voting Machine Circuit har vi använt Finger Print Sensor Module för att autentisera sann väljare genom att ta med fingerinmatningen i systemet. Här använder vi 5 tryckknappar för att matcha, registrera / bakåt, radera / OK, UPP och NER. Enroll och Del-tangenten har dubbla funktioner här. Enroll-tangenten används för att registrera ett nytt fingeravtryck i systemet och tillbaka-funktionen. Betyder när användaren vill registrera ett nytt finger då måste han / hon trycka på inskrivningsknappen och sedan frågar LCD om ID eller plats där användaren vill lagra fingeravtrycksutmatningen. Om användaren vid den här tiden inte vill gå vidare kan han / hon trycka på registret igen för att gå tillbaka (den här gången registrerar sig nyckeln beter sig som bakåt). Medelregistreringsnyckel har både inskrivnings- och bakfunktion. DEL / OK-tangenten har också samma dubbla funktion som när användaren registrerar ett nytt finger då måste han / hon välja finger-ID eller plats genom att använda en annan två-tangent, nämligen UPP OCH NED, nu måste användaren trycka på DEL / OK-tangenten (den här gången fungerar denna tangent som OK) för fortsätt med valt ID eller plats. Match-tangenten används för när väljaren vill rösta måste han / hon först autentisera för sann väljare genom att hålla fingret på fingeravtryckssensorn. Om han / hon godkände denna autentisering kan han / hon rösta.
För att lära dig mer om att registrera fingeravtryck och andra saker, kolla vår tidigare handledning om gränssnitt för fingeravtryckssensor med Arduino, och kolla även vår demo- video i slutet av denna handledning.
Arbetsförklaring:
Arbetet med detta biometriska röstningssystem för val är lite komplex för nybörjare. Först och främst måste användaren registrera finger eller väljare (i den här koden är maxgränsen för väljaren 25) med hjälp av tryckknappar / knappar. För att göra detta måste användaren trycka på ENROLL-tangenten och sedan frågar LCD om att ange plats / ID där finger kommer att vara en butik. Så nu måste användaren ange ID (plats) med UPP / NER-tangenterna. Efter att ha valt Plats / ID måste användaren trycka på en OK-tangent (DEL-tangent). Nu kommer LCD att be om att placera fingret över fingeravtrycksmodulen. Nu måste användaren lägga fingret över fingeravtrycksmodulen. Då kommer LCD att be om att ta bort fingret från fingeravtrycksmodulen och be om att placera fingret igen. Nu måste användaren sätta fingret igen över fingeravtrycksmodulen. Nu tar fingeravtrycksmodulen en bild och konverterar den till mallar och lagrar den med valt ID i fingeravtrycksmodulens minne.Nu kommer väljaren att registreras och han / hon kan rösta. Med samma metod kan alla väljare registreras i systemet.
Om användaren nu vill ta bort eller ta bort något av de lagrade ID-erna måste han / hon trycka på DEL-tangenten, efter att ha tryckt på DEL-tangenten kommer LCD att be om vald plats betyder att välja ID som ska raderas. Nu måste användaren välja ID och trycka på OK-tangenten (samma DEL-tangent). Nu meddelar LCD dig att fingret har raderats framgångsrikt.
Röstningsprocess:
Nu när användaren vill rösta måste han / hon trycka på matchningsknappen och sedan kommer en ljudsignal att ljuda och lysdioden lyser också och LCD-skärmen ber om att placera fingret över fingeravtrycksmodulen. Nu kommer Arduino att ge dig tre försök att sätta fingret. Efter att ha placerat ett finger över fingeravtrycksmodulen fångar fingeravtrycksmodulen fingerbilden och hittar dess ID: n finns i systemet. Om finger-ID upptäcks kommer LCD att visa auktoriserad väljare. Det betyder att användaren har rätt att rösta. Och sedan går systemet till nästa steg för omröstning. Nu lyser den gröna lysdioden, det betyder att väljaren kan rösta på sina kandidater genom att trycka på en nyckel (från RÖDT brödbräda i denna demonstration). Om samma väljare nu vill rösta igen kommer systemet att visa det 'redan röstat' . Betyder att samma väljare inte kan rösta igen och summern piper i 5 sekunder. Om någon icke-registrerad användare vill rösta kommer fingeravtrycksmodulen inte att upptäcka sitt ID i systemet och LCD visar " No Fingerprint Found" .
CAN1, CAN2, CAN3 representerar här kandidaten 1, kandidaten 2 och kandidaten 3, som har ställt sig till val.
Kretsförklaring:
Kretsen för detta FingerPrint-baserade röstmaskinprojekt är väldigt enkelt och innehåller Arduino för att styra hela projektets process, tryckknapp för registrering, radering, val av ID och röstningsändamål, en summer för varning, lysdioder för indikering och 16x2 LCD för instruktioner Väljare och visar också resultatet. Gul lysdiod indikerar att fingeravtrycksmodulen är redo att ta en bild av fingret och grön lysdiod indikerar att systemet är redo att rösta eller se resultat.
Tryckknappen är direkt ansluten till stift A0 (ENROLL), A1 (DEL), A2 (UPP), A3 (DOWN) och A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Resultat) av Arduino med avseende på mark. Gul lysdiod är ansluten till den digitala stiftet D7 i Arduino med avseende på jord genom ett 1k-motstånd och den gröna lysdioden är ansluten till D6 i Arduino med samma metod. Fingeravtrycksmodulens Rx och Tx direkt anslutna vid Serial pin Tx och Rx av Arduino. 5v-matning används för att driva fingeravtrycksmodulen från Arduino-kortet. En summer är också ansluten till A5. En 16x2 LCD är konfigurerad i 4-bitars läge och dess RS, EN, D4, D5, D6 och D7 är direktanslutna på Digital stift D13, D12, D11, D10, D9 och D8 i Arduino.
Programförklaring:
I ett program har vi använt Adafruit Fingerprint Sensor Library för att koppla fingeravtrycksmodul med Arduino-kortet. Du kan kontrollera hela koden nedan. Här förklarar vi huvudfunktionerna i Arduino-programmet.
I installationsfunktionen har vi gett anvisningar till definierade stift och har initierat LCD- och fingeravtrycksmodulen.
Efter det, i void loop () -funktionen, har vi väntat på kontrolltangenten och tryck på Match-tangenten för att starta fingeravtrycket för att ta inmatning och jämföra inspelad bild-ID med lagrade ID. Om en matchning inträffar fortsätter du med nästa steg.
ogiltig slinga () {lcd.setCursor (0,0); lcd.print ("Press Match Key"); lcd.setCursor (0,1); lcd.print ("för att starta systemet"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (summer, HÖG); fördröjning (200); digitalWrite (summer, LOW); digitalWrite (indFinger, HIGH); för (int i = 0; i <3; i ++)…………………
Givet void checkKeys () -funktion används för att kontrollera Enroll eller DEL-tangenten trycks in eller inte och vad man ska göra om man trycker på den. Om ENROLL-tangenten trycks in anropas Enroll () -funktionen och DEL-tangenten trycks sedan raderas () -funktionen.
ogiltiga checkKeys () {if (digitalRead (registrera) == 0) {lcd.clear (); lcd.print ("Vänligen vänta"); fördröjning (1000); medan (digitalRead (registrera) == 0); Skriva in(); } annat om (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Vänligen vänta"); fördröjning (1000); radera (); }}
Angiven funktion används för att ange ID som ska raderas och ringa till uint8_t deleteFingerprint (uint8_t id) -funktion som tar bort finger från poster.
ogiltig radering () {int antal = 0; lcd.clear (); lcd.print ("Radera finger"); lcd.setCursor (0,1); lcd.print ("Plats:"); medan (1) {lcd.setCursor (9,1); lcd.print (count); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; fördröjning (500); }……………….
Angiven funktion används för att radera fingeravtryck från registreringen av valt ID.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Vänligen vänta"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Borttagen!"); lcd.clear (); lcd.print ("Figer borttagen"); lcd.setCursor (0,1); lcd.print ("framgångsrikt"); fördröjning (1000); } annat {Serial.print ("Något fel"); lcd.clear (); lcd.print ("Något fel"); lcd.setCursor (0,1); lcd.print ("Försök igen senare"); fördröjning (2000); returnera p; }}
Given funktion används för att ta en fingeravtrycksbild och konvertera dem till mallen och spara den med valt ID i fingeravtrycksmodulens minne.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("finger-ID:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Placera finger"); fördröjning (2000); medan (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Angiven funktion används för att rösta och visa resultat:
ogiltig Rösta () {lcd.clear (); lcd.print ("Vänligen placera"); lcd.setCursor (0,1); lcd.print ("Din röst"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (summer, HÖG); fördröjning (500); digitalWrite (summer, LOW); fördröjning (1000); medan (1) {if (digitalRead (sw1) == 0)…………………
Kolla hela koden och demonstrationsvideon nedan.