Indholdsfortegnelse:

Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino: 4 trin (med billeder)
Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino: 4 trin (med billeder)

Video: Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino: 4 trin (med billeder)

Video: Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino: 4 trin (med billeder)
Video: Война на денежные средства 2024, Juli
Anonim
Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino
Fingeraftryksbaseret biometrisk stemmemaskine ved hjælp af Arduino

Vi er alle klar over den eksisterende elektroniske stemmeapparat, hvor brugeren skal trykke på en knap for at afgive afstemningen. Men disse maskiner er blevet kritiseret for at hærde siden begyndelsen. Så regeringen planlægger at indføre en fingeraftryksbaseret afstemningsmaskine, hvor brugerne kan afgive afstemningen baseret på hans/hendes fingeraftryksindtryk. Dette system fjerner ikke kun muligheden for dobbeltstemmer, men forhindrer også enhver form for manipulation.

Så i dette projekt skal vi bygge en prototype af en biometrisk stemmemaskine ved hjælp af Arduino Uno, TFT -skærm og fingeraftrykssensor. Vi har tidligere brugt R305 fingeraftrykssensor med NodeMCU til at bygge et biometrisk baseret fremmødesystem, men her vil vi bruge den avancerede GT-511C3 fingeraftrykssensor med Arduino.

Trin 1: Komponenter, der kræves for at bygge biometrisk stemmemaskine

  • Arduino Uno
  • 2,4”TFT LCD -skærm
  • GT-511C3 fingeraftrykssensor

Denne 2,4 tommer TFT -skærm blev tidligere brugt sammen med Arduino til at bygge IoT -baseret restaurantmenusystem.

Trin 2: Kredsløbsdiagram for biometrisk stemmemaskine ved hjælp af Arduino

Kredsløbsdiagram for biometrisk stemmemaskine ved hjælp af Arduino
Kredsløbsdiagram for biometrisk stemmemaskine ved hjælp af Arduino

Kredsløbsdiagram for dette projekt er meget enkelt, da vi kun forbinder TFT -skærmen og fingeraftrykssensormodulet med Arduino Uno. VCC- og GND -benene på fingeraftrykssensoren er forbundet til 5V- og GND -benene på Arduino, mens TX- og RX -benene er forbundet til den digitale pin 11 & 12 i Arduino Uno.

2,4”TFT LCD -skærmen er et Arduino Shield og kan monteres direkte på Arduino Uno, som vist på billedet herunder. TFT -skærmen har 28 ben, der passer perfekt ind i Arduino Uno, så jeg måtte lodde fingeraftrykssensoren på bagsiden af Arduino.

Trin 3: Kildekode og trin for trin Forklaring af kode

Den komplette kode til dette Fingerprint Voting System Project ved hjælp af Arduino er angivet i slutningen af artiklen; her forklarer vi nogle vigtige funktioner i koden.

Koden bruger bibliotekerne SPFD5408, Software Serial og FPS_GT511C3. SPFD5408 -biblioteket er den modificerede version af det originale Adafruit -bibliotek. Disse biblioteksfiler kan downloades fra nedenstående links:

  • SPFD5408 bibliotek
  • Software Seriel
  • FPS_GT511C3

Efter at have inkluderet bibliotekerne og defineret nogle vigtige parametre, kan vi komme ind i programmeringsdelen. Der er tre sektioner involveret i dette program. Det ene er at oprette et brugergrænseflade for en stemmeapparat, det andet er at få berøringspunkterne for knapper og opdage knapperne baseret på berøringen og til sidst beregne resultaterne og gemme dem i Arduinos hukommelse.

1. Oprettelse af brugergrænseflade:

Jeg har oprettet en enkel brugergrænseflade med tre knapper og projektets navn. TFT -skærmbiblioteket giver dig mulighed for at tegne linjer, rektangel, cirkler, tegn, strenge og meget mere af enhver foretrukken farve og størrelse. Her oprettes to rektangulære knapper ved hjælp af fillRoundRect og drawRoundRect funktioner. Syntaks for tft.drawRoundRect funktion er angivet nedenfor:

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

Hvor:

x0 = X-koordinat af rektangulært startpunkt

y0 = Y -koordinat for rektangulært startpunkt

w = Bredden af det rektangulære

h = Rektangulær højde

radius = Radius af det runde hjørne

farve = Rektens farve.

void drawHome ()

{

tft.fillScreen (HVID);

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

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

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

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

tft.drawRoundRect (10, 160, 220, 50, 8, HVID); //Indskrive

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Afstemning");

tft.setCursor (57, 29);

tft.print ("maskine");

tft.setTextSize (3);

tft.setTextColor (HVID);

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. Hentning af berøringspunkterne og registrering af knapper:

Nu i den anden sektion af koden vil vi registrere knappens berøringspunkter og derefter bruge disse punkter til at forudsige knappen. ts.getPoint () -funktionen bruges til at registrere brugerens berøring på TFT -skærm. ts.getPoint giver Raw ADC -værdierne for det berørte område. Disse RAW ADC -værdier konverteres derefter til Pixel -koordinater ved hjælp af kortfunktionen.

TSPoint p = ts.getPoint ();

hvis (p.z> ts.pressureThreshhold)

{

p.x = kort (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);

Nu, da vi kender X- og Y -koordinaterne for hver knap, kan vi forudsige, hvor brugeren har rørt ved at bruge 'if' -sætningen.

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

{

Serial.println ("Kandidat 1");

Når en vælger trykker på kandidatknappen, bliver han bedt om at scanne fingeren på fingeraftrykssensoren. Hvis finger -ID er godkendt, har vælgeren lov til at stemme. Hvis en ikke-registreret bruger ønsker at stemme, vil fingeraftryksmodulet ikke registrere sit ID i systemet, og displayet viser 'Beklager du kan ikke stemme'.

hvis (fps. IsPressFinger ())

{

fps. CaptureFinger (falsk);

int id = fps. Identify1_N ();

hvis (id <200)

{

msg = "Kandidat 1";

stemme1 ++;

EEPROM.write (0, stemme1);

tft.setCursor (42, 170);

tft.print ("Tak");

forsinkelse (3000);

drawHome ();

3. Resultat:

Det sidste trin er at få stemmetallet fra EEPROM -hukommelse og sammenligne stemmerne for alle tre kandidater. En kandidat med de højeste stemmer vinder. Resultatet kan kun tilgås fra den serielle skærm og vises ikke på TFT -skærmen.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

hvis (stemme)

{

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

{

Serial.print ("Can1 Wins");

forsinkelse (2000);

}

Trin 4: Test af fingeraftryksstemmesystemet ved hjælp af Arduino

For at teste projektet skal du slutte Arduino Uno til den bærbare computer og uploade den givne kode. Når koden er uploadet, skal TFT -displayet vise kandidatens navn. Når nogen trykker på et kandidatnavn, vil maskinen bede om at scanne fingeraftryksscanneren. Hvis fingeraftrykket er gyldigt, tælles brugerstemmen, men hvis mønsteret ikke stemmer overens med databasens optegnelser, nægtes adgang til at afgive en stemme. Det samlede antal stemmer for hver kandidat gemmes i EEPROM, og en kandidat, der har det højeste antal stemmer, vinder.

Jeg håber, at du nød tutorialen og lærte noget nyttigt. Hvis du har spørgsmål, så lad os vide det i kommentarfeltet herunder, og følg os også på Instructable for flere sådanne interessante projekter.

Anbefalede: