Innehållsförteckning:

Fingeravtrycksbaserad biometrisk röstmaskin med Arduino: 4 steg (med bilder)
Fingeravtrycksbaserad biometrisk röstmaskin med Arduino: 4 steg (med bilder)

Video: Fingeravtrycksbaserad biometrisk röstmaskin med Arduino: 4 steg (med bilder)

Video: Fingeravtrycksbaserad biometrisk röstmaskin med Arduino: 4 steg (med bilder)
Video: ”Spotify har ingen glamourvärdering” | Börslunch 10 april 2024, December
Anonim
Fingeravtrycksbaserad biometrisk röstmaskin med Arduino
Fingeravtrycksbaserad biometrisk röstmaskin med Arduino

Vi är alla medvetna om den befintliga elektroniska röstmaskinen där användaren måste trycka på en knapp för att rösta. Men dessa maskiner har kritiserats för härdning sedan början. Så regeringen planerar att införa en fingeravtrycksbaserad röstmaskin där användare kan avge omröstningen baserat på hans/hennes fingeravtrycksavtryck. Detta system kommer inte bara att ta bort möjligheten till dubblettröster utan också förhindra någon form av manipulation.

Så i detta projekt ska vi bygga en prototyp av en biometrisk röstmaskin med Arduino Uno, TFT -display och fingeravtryckssensor. Vi använde tidigare R305 fingeravtryckssensor med NodeMCU för att bygga ett biometriskt baserat närvarosystem men här kommer vi att använda den avancerade GT-511C3 fingeravtryckssensorn med Arduino.

Steg 1: Komponenter som krävs för att bygga biometrisk röstmaskin

  • Arduino Uno
  • 2,4”TFT LCD -skärm
  • GT-511C3 fingeravtryckssensor

Denna 2,4 -tums TFT -skärm har tidigare använts med Arduino för att bygga IoT -baserat restaurangmenybeställningssystem.

Steg 2: Kretsdiagram för biometrisk röstmaskin med Arduino

Kretsdiagram för biometrisk röstmaskin med Arduino
Kretsdiagram för biometrisk röstmaskin med Arduino

Kretsdiagram för detta projekt är mycket enkelt eftersom vi bara ansluter TFT -skärmen och fingeravtryckssensormodulen med Arduino Uno. VCC- och GND -stiften på fingeravtryckssensorn är anslutna till 5V- och GND -stiften på Arduino medan TX- och RX -stiften är anslutna till den digitala stift 11 & 12 på Arduino Uno.

2,4”TFT LCD -skärmen är en Arduino Shield och kan monteras direkt på Arduino Uno, som visas på bilden nedan. TFT -skärmen har 28 stift som passar perfekt in i Arduino Uno, så jag var tvungen att löda fingeravtryckssensorn på baksidan av Arduino.

Steg 3: Källkod och Steg för steg kod Förklaring

Den fullständiga koden för detta fingeravtrycksröstningssystemprojekt med Arduino ges i slutet av artikeln; här förklarar vi några viktiga funktioner i koden.

Koden använder biblioteken SPFD5408, Software Serial och FPS_GT511C3. SPFD5408 -biblioteket är den modifierade versionen av det ursprungliga Adafruit -biblioteket. Dessa biblioteksfiler kan laddas ner från länkarna nedan:

  • SPFD5408 bibliotek
  • Programvara Seriell
  • FPS_GT511C3

Efter att ha inkluderat biblioteken och definierat några viktiga parametrar kan vi komma in i programmeringsdelen. Det finns tre sektioner involverade i detta program. Det ena skapar ett användargränssnitt för en röstmaskin, det andra är att få kontaktpunkter för knappar och upptäcka knapparna baserat på beröringen och slutligen beräkna resultaten och spara dem i Arduinos minne.

1. Skapa användargränssnitt:

Jag har skapat ett enkelt användargränssnitt med tre knappar och projektets namn. TFT -skärmbiblioteket låter dig rita linjer, rektangel, cirklar, tecken, strängar och mycket mer av vilken färg och storlek som helst. Här skapas två rektangulära knappar med funktionerna fillRoundRect och drawRoundRect. Syntax för tft.drawRoundRect -funktionen ges nedan:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radie, uint16_t färg)

Var:

x0 = X-koordinat för rektangulär startpunkt

y0 = Y -koordinat för rektangulär startpunkt

w = Rektangulär bredd

h = Rektangulärets höjd

radie = Radie av det runda hörnet

color = Rectens färg.

void drawHome ()

{

tft.fillScreen (VIT);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); // Sidgräns

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

tft.drawRoundRect (10, 70, 220, 50, 8, VIT); //Rösta

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

tft.drawRoundRect (10, 160, 220, 50, 8, VIT); //Skriva in

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Röstning");

tft.setCursor (57, 29);

tft.print ("maskin");

tft.setTextSize (3);

tft.setTextColor (VIT);

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å kontaktpunkter och upptäcka knappar:

Nu i den andra delen av koden kommer vi att upptäcka knappens beröringspunkter och sedan använda dessa punkter för att förutsäga knappen. ts.getPoint () -funktionen används för att upptäcka användarens beröring på TFT -skärmen. ts.getPoint ger Raw ADC -värden för det rörda området. Dessa RAW ADC -värden konverteras sedan till Pixel -koordinater med hjälp av kartfunktionen.

TSPoint p = ts.getPoint ();

om (p.z> ts.pressureThreshhold)

{

p.x = karta (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, eftersom vi känner till X- och Y -koordinaterna för varje knapp, kan vi förutsäga var användaren har rört genom att använda 'if' -satsen.

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

{

Serial.println ("Kandidat 1");

När en väljare trycker på kandidatknappen kommer han att bli ombedd att skanna fingret på fingeravtryckssensorn. Om finger -ID är godkänt får väljaren rösta. Om någon icke-registrerad användare vill rösta kommer fingeravtrycksmodulen inte att identifiera sitt ID i systemet och displayen visar "Sorry You Can't Rote".

if (fps. IsPressFinger ())

{

fps. CaptureFinger (falskt);

int id = fps. Identify1_N ();

om (id <200)

{

msg = "Kandidat 1";

omröstning1 ++;

EEPROM.write (0, omröstning1);

tft.setCursor (42, 170);

tft.print ("Tack");

fördröjning (3000);

drawHome ();

3. Resultat:

Det sista steget är att få rösträkningen från EEPROM -minne och jämföra rösterna för alla tre kandidaterna. En kandidat med de högsta rösterna vinner. Resultatet kan endast nås från den seriella bildskärmen och visas inte på TFT -skärmen.

vote1 = EEPROM.read (0);

omröstning2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

om (rösta)

{

if ((röst1> röst2 && röst1> röst3))

{

Serial.print ("Can1 Wins");

fördröjning (2000);

}

Steg 4: Testa fingeravtrycksröstningssystemet med Arduino

För att testa projektet, anslut Arduino Uno till den bärbara datorn och ladda upp den angivna koden. När koden har laddats upp ska TFT -skärmen visa kandidatens namn. När någon trycker på ett kandidatnamn kommer maskinen att be att skanna fingeravtrycksläsaren. Om fingeravtrycket är giltigt kommer användarens röst att räknas, men om mönstret inte stämmer med databasens poster, nekas åtkomst för att rösta. Det totala antalet röster för varje kandidat kommer att lagras i EEPROM och en kandidat som har det högsta antalet röster vinner.

Jag hoppas att du gillade handledningen och lärde dig något användbart. Om du har några frågor, vänligen meddela oss i kommentarsfältet nedan och följ oss också på Instructable för fler sådana intressanta projekt.

Rekommenderad: