INHOUDSOPGAWE:

Vingerafdrukgebaseerde biometriese stemmasjien met Arduino: 4 stappe (met foto's)
Vingerafdrukgebaseerde biometriese stemmasjien met Arduino: 4 stappe (met foto's)

Video: Vingerafdrukgebaseerde biometriese stemmasjien met Arduino: 4 stappe (met foto's)

Video: Vingerafdrukgebaseerde biometriese stemmasjien met Arduino: 4 stappe (met foto's)
Video: Startup Friday - Biometrics 2024, Desember
Anonim
Vingerafdrukgebaseerde biometriese stemmasjien met behulp van Arduino
Vingerafdrukgebaseerde biometriese stemmasjien met behulp van Arduino

Ons is almal bewus van die bestaande elektroniese stemmasjien waar die gebruiker op 'n knoppie moet druk om die stem uit te bring. Maar hierdie masjiene word sedert die begin gekritiseer omdat dit getemper is. Die regering beplan dus om 'n vingerafdruk-gebaseerde stemmasjien in te stel waar gebruikers die stem kan uitbring op grond van sy/haar vingerafdruk-indruk. Hierdie stelsel verwyder nie net die moontlikheid van dubbele stemme nie, maar voorkom ook manipulasie.

In hierdie projek gaan ons dus 'n prototipe bou van 'n biometriese stemmasjien met behulp van die Arduino Uno, TFT -skerm en vingerafdruksensor. Ons het voorheen R305-vingerafdruksensor met NodeMCU gebruik om 'n biometriese gebaseerde bywoningstelsel te bou, maar hier gebruik ons die gevorderde GT-511C3 vingerafdruksensor met Arduino.

Stap 1: Vereiste komponente vir die bou van biometriese stemmasjiene

  • Arduino Uno
  • 2.4”TFT LCD -skerm
  • GT-511C3 vingerafdruksensor

Hierdie 2,4 duim TFT -skerm word voorheen saam met Arduino gebruik om 'n IoT -gebaseerde restaurant -bestelstelsel te bou.

Stap 2: Kringdiagram vir biometriese stemmasjien met behulp van Arduino

Kringdiagram vir biometriese stemmasjien met behulp van Arduino
Kringdiagram vir biometriese stemmasjien met behulp van Arduino

Kringdiagram vir hierdie projek is baie eenvoudig, aangesien ons slegs die TFT -skerm en vingerafdruksensormodule verbind met Arduino Uno. VCC- en GND -penne van die vingerafdruksensor is gekoppel aan 5V- en GND -penne van Arduino, terwyl TX- en RX -penne gekoppel is aan die digitale pen 11 en 12 van Arduino Uno.

Die 2.4”TFT LCD -skerm is 'n Arduino -skild en kan direk op Arduino Uno gemonteer word, soos in die onderstaande prent getoon. Die TFT -skerm het 28 penne wat perfek in die Arduino Uno pas, so ek moes die vingerafdruksensor aan die agterkant van Arduino soldeer.

Stap 3: Bronkode en Stap vir stap kodeverklaring

Die volledige kode vir hierdie vingerafdrukstemstelselprojek met behulp van Arduino word aan die einde van die artikel gegee; hier verduidelik ons 'n paar belangrike funksies van die kode.

Die kode gebruik die SPFD5408-, Software Serial- en FPS_GT511C3 -biblioteke. SPFD5408 biblioteek is die gewysigde weergawe van die oorspronklike Adafruit -biblioteek. Hierdie biblioteeklêers kan afgelaai word vanaf die onderstaande skakels:

  • SPFD5408 Biblioteek
  • Seriële sagteware
  • FPS_GT511C3

Nadat ons die biblioteke ingesluit het en 'n paar belangrike parameters gedefinieer het, kan ons by die programmeergedeelte ingaan. Daar is drie afdelings betrokke by hierdie program. Die een maak 'n gebruikersinterface van 'n stemmasjien, die tweede is om die raakpunte vir knoppies te kry en die knoppies op te spoor op grond van die aanraking en uiteindelik die resultate te bereken en dit in die geheue van Arduino op te slaan.

1. UI skep:

Ek het 'n eenvoudige UI met drie knoppies en die naam van die projek geskep. Met die TFT -skermbiblioteek kan u lyne, reghoek, sirkels, tekens, snare en nog baie meer van enige kleur en grootte teken. Hier word twee reghoekige knoppies geskep met behulp van fillRoundRect en drawRoundRect funksies. Sintaksis vir tft.drawRoundRect funksie word hieronder gegee:

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

Waar:

x0 = X koördinaat van die beginpunt van reghoek

y0 = Y koördinaat van die beginpunt van reghoek

w = Breedte van die reghoek

h = Hoogte van die reghoek

radius = Radius van die ronde hoek

kleur = Kleur van die rekt.

leegte trek tuis ()

{

tft.fillScreen (WIT);

tft.drawRoundRect (0, 0, 319, 240, 8, WIT); // Bladsygrens

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

tft.drawRoundRect (10, 70, 220, 50, 8, WIT); // Stem

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

tft.drawRoundRect (10, 160, 220, 50, 8, WIT); //Inskryf

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Stem");

tft.setCursor (57, 29);

tft.print ("masjien");

tft.setTextSize (3);

tft.setTextColor (WIT);

tft.setCursor (25, 82);

tft.print ("Kandidaat 1");

tft.setCursor (25, 172);

tft.print ("Kandidaat 2");

tft.setCursor (25, 262);

tft.print ("Kandidaat 3");

}

2. Die raakpunte kry en knoppies opspoor:

Nou in die tweede afdeling van die kode, sal ons die raakpunte van die knoppie opspoor en dan hierdie punte gebruik om die knoppie te voorspel. ts.getPoint () -funksie word gebruik om die aanraking van die gebruiker op TFT -skerm op te spoor. ts.getPoint gee die rou ADC -waardes vir die aangeraakte gebied. Hierdie RAW ADC -waardes word dan omgeskakel na Pixel -koördinate met behulp van die kaartfunksie.

TSPoint p = ts.getPoint ();

as (p.z> ts.pressureThreshhold)

{

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

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

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

// Serial.print(p.x);

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

// Serial.print(p.y);

Aangesien ons die X- en Y -koördinate vir elke knoppie ken, kan ons voorspel waar die gebruiker geraak het deur die 'as' -stelling te gebruik.

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

{

Serial.println ("Kandidaat 1");

As 'n kieser op die kandidaatknoppie druk, sal hy gevra word om die vinger op die vingerafdruksensor te skandeer. As vinger -ID gemagtig is, mag die kieser stem. As 'n gebruiker wat nie geregistreer is nie, wil stem, sal die vingerafdrukmodule nie sy ID in die stelsel opspoor nie en die skerm sal 'Sorry You Cann't Vote' wys.

as (fps. IsPressFinger ())

{

fps. CaptureFinger (vals);

int id = fps. Identify1_N ();

as (id <200)

{

msg = "Kandidaat 1";

stem1 ++;

EEPROM.write (0, stem1);

tft.setCursor (42, 170);

tft.print ("Dankie");

vertraging (3000);

drawHome ();

3. Uitslag:

Die laaste stap is om die aantal stemme uit die EEPROM -geheue te kry en die stemme van al drie kandidate te vergelyk. 'N Kandidaat met die hoogste stemme wen. Die uitslag kan slegs verkry word vanaf die seriële monitor en word nie op die TFT -skerm vertoon nie.

stem1 = EEPROM.read (0);

stem2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

as (stem)

{

as ((stem1> stem2 && stem1> stem3))

{

Serial.print ("Can1 Wins");

vertraging (2000);

}

Stap 4: Toets die stemafdrukstelsel met vingerafdruk met behulp van Arduino

Om die projek te toets, koppel die Arduino Uno aan die skootrekenaar en laai die gegewe kode op. Sodra die kode opgelaai is, moet die TFT -skerm die naam van die kandidaat vertoon. As iemand op 'n kandidaatnaam tik, sal die masjien vra om die vingerafdrukskandeerder te skandeer. As die vingerafdruk geldig is, word die gebruikersstem getel, maar as die patroon nie ooreenstem met die rekords van die databasis nie, word toegang tot stemming geweier. Die totale aantal stemme vir elke kandidaat word in EEPROM gestoor en 'n kandidaat met die meeste stemme sal wen.

Ek hoop dat u die tutoriaal geniet het en dat u iets nuttigs geleer het. As u enige vrae het, laat weet ons dit in die kommentaarafdeling hieronder, en volg ons ook op Instructable vir meer sulke interessante projekte.

Aanbeveel: