Innholdsfortegnelse:

Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino: 4 trinn (med bilder)
Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino: 4 trinn (med bilder)

Video: Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino: 4 trinn (med bilder)

Video: Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino: 4 trinn (med bilder)
Video: Война на денежные средства 2024, November
Anonim
Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino
Fingeravtrykkbasert biometrisk stemmemaskin som bruker Arduino

Vi er alle klar over den eksisterende elektroniske stemmemaskinen der brukeren må trykke på en knapp for å avgi stemmen. Men disse maskinene har blitt kritisert for herding siden begynnelsen. Så regjeringen planlegger å introdusere en fingeravtrykksbasert stemmemaskin der brukerne kan avgi stemmen basert på fingeravtrykkavtrykket hans. Dette systemet vil ikke bare fjerne muligheten for dupliserte stemmer, men også forhindre enhver form for manipulasjon.

Så i dette prosjektet skal vi bygge en prototype av en biometrisk stemmemaskin ved hjelp av Arduino Uno, TFT -skjerm og fingeravtrykkssensor. Vi brukte tidligere R305 fingeravtrykkssensor med NodeMCU for å bygge et biometrisk basert oppmøte system, men her vil vi bruke den avanserte GT-511C3 fingeravtrykkssensoren med Arduino.

Trinn 1: Komponenter som kreves for å bygge biometrisk stemmemaskin

  • Arduino Uno
  • 2,4”TFT LCD -skjerm
  • GT-511C3 fingeravtrykkssensor

Denne 2,4 -tommers TFT -skjermen ble tidligere brukt sammen med Arduino for å bygge IoT -basert restaurantmenysystem.

Trinn 2: Kretsdiagram for biometrisk stemmemaskin som bruker Arduino

Kretsdiagram for biometrisk stemmemaskin som bruker Arduino
Kretsdiagram for biometrisk stemmemaskin som bruker Arduino

Kretsdiagram for dette prosjektet er veldig enkelt, ettersom vi bare kobler TFT -skjermen og fingeravtrykkssensormodulen til Arduino Uno. VCC- og GND -pinner på fingeravtrykkssensoren er koblet til 5V- og GND -pinnene på Arduino mens TX- og RX -pinnene er koblet til den digitale pinnen 11 og 12 på Arduino Uno.

2,4”TFT LCD -skjermen er et Arduino -skjold og kan monteres direkte på Arduino Uno, som vist på bildet nedenfor. TFT -skjermen har 28 pinner som passer perfekt inn i Arduino Uno, så jeg måtte lodde fingeravtrykkssensoren på baksiden av Arduino.

Trinn 3: Kildekode og trinnvis kode forklaring

Den komplette koden for dette fingeravtrykksstemmeprosjektet ved bruk av Arduino er gitt i slutten av artikkelen; her forklarer vi noen viktige funksjoner i koden.

Koden bruker bibliotekene SPFD5408, Software Serial og FPS_GT511C3. SPFD5408 -biblioteket er den modifiserte versjonen av det originale Adafruit -biblioteket. Disse bibliotekfilene kan lastes ned fra koblingene nedenfor:

  • SPFD5408 bibliotek
  • Programvare seriell
  • FPS_GT511C3

Etter å ha inkludert bibliotekene og definert noen viktige parametere, kan vi komme inn på programmeringsdelen. Det er tre seksjoner involvert i dette programmet. Den ene lager et brukergrensesnitt for en stemmemaskin, det andre er å få berøringspunktene for knapper og oppdage knappene basert på berøring og til slutt beregne resultatene og lagre dem i Arduinos minne.

1. Opprette brukergrensesnitt:

Jeg har laget et enkelt brukergrensesnitt med tre knapper og navnet på prosjektet. TFT -skjermbiblioteket lar deg tegne linjer, rektangler, sirkler, tegn, strenger og mye mer av hvilken som helst foretrukket farge og størrelse. Her opprettes to rektangulære knapper med funksjonene fillRoundRect og drawRoundRect. Syntaks for tft.drawRoundRect -funksjonen er gitt nedenfor:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t farge)

Hvor:

x0 = X-koordinat for startpunktet for rektangulær

y0 = Y -koordinat for startpunktet for rektangulær

w = Bredden på den rektangulære

h = Rektangulær høyde

radius = Radius av det runde hjørnet

color = Color of the Rect.

void drawHome ()

{

tft.fillScreen (HVIT);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // Sidekant

tft.fillRoundRect (10, 70, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 70, 220, 50, 8, WHITE); //Stemme

tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 160, 220, 50, 8, WHITE); //Registrere

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); //Resultat

tft.drawRoundRect (10, 250, 220, 50, 8, WHITE);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Stemme");

tft.setCursor (57, 29);

tft.print ("Maskin");

tft.setTextSize (3);

tft.setTextColor (HVIT);

tft.setCursor (25, 82);

tft.print ("Kandidat 1");

tft.setCursor (25, 172);

tft.print ("Kandidat 2");

tft.setCursor (25, 262);

tft.print ("Kandidat 3");

}

2. Få berøringspunktene og oppdage knapper:

Nå i den andre delen av koden, vil vi oppdage knappens berøringspunkter og deretter bruke disse punktene til å forutsi knappen. ts.getPoint () -funksjonen brukes til å oppdage brukerens berøring på TFT -skjermen. ts.getPoint gir Raw ADC -verdiene for det berørte området. Disse RAW ADC -verdiene konverteres deretter til Pixel -koordinater ved hjelp av kartfunksjonen.

TSPoint p = ts.getPoint ();

hvis (p.z> ts.pressureThreshhold)

{

p.x = kart (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = map (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

Siden vi kjenner X- og Y -koordinatene for hver knapp, kan vi forutsi hvor brukeren har rørt ved å bruke ‘if’ -setningen.

hvis (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Kandidat 1");

Når en velger trykker på kandidatknappen, blir han bedt om å skanne fingeren på fingeravtrykkssensoren. Hvis finger -ID er godkjent, har velgeren lov til å stemme. Hvis en ikke-registrert bruker vil stemme, vil ikke fingeravtrykkmodulen oppdage ID-en i systemet, og displayet vil vise "Beklager at du ikke kan stemme".

hvis (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

hvis (id <200)

{

msg = "Kandidat 1";

stemme1 ++;

EEPROM.write (0, stemme1);

tft.setCursor (42, 170);

tft.print ("Takk");

forsinkelse (3000);

drawHome ();

3. Resultat:

Det siste trinnet er å få stemmetallet fra EEPROM -minne og sammenligne stemmene til alle tre kandidatene. En kandidat med flest stemmer vinner. Resultatet kan bare nås fra den serielle skjermen og vises ikke på TFT -skjermen.

stemme1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

hvis (stemme)

{

hvis ((stemme1> stemme2 && stemme1> stemme3))

{

Serial.print ("Can1 Wins");

forsinkelse (2000);

}

Trinn 4: Testing av fingeravtrykksstemmesystemet ved hjelp av Arduino

For å teste prosjektet, koble Arduino Uno til den bærbare datamaskinen og last opp den oppgitte koden. Når koden er lastet opp, skal TFT -skjermen vise kandidatens navn. Når noen trykker på et kandidatnavn, vil maskinen be om å skanne fingeravtrykkskanneren. Hvis fingeravtrykket er gyldig, teller brukerstemmen, men i tilfelle mønsteret ikke stemmer overens med postene i databasen, vil tilgang til å avgi stemme bli nektet. Totalt antall stemmer for hver kandidat vil bli lagret i EEPROM og en kandidat som har det høyeste antallet stemmer vil vinne.

Jeg håper du likte opplæringen og lærte noe nyttig. Hvis du har spørsmål, vennligst gi oss beskjed i kommentarfeltet nedenfor, og følg oss også på Instructable for flere slike interessante prosjekter.

Anbefalt: