Sisällysluettelo:

Sormenjälkiin perustuva biometrinen äänestyskone Arduinolla: 4 vaihetta (kuvilla)
Sormenjälkiin perustuva biometrinen äänestyskone Arduinolla: 4 vaihetta (kuvilla)

Video: Sormenjälkiin perustuva biometrinen äänestyskone Arduinolla: 4 vaihetta (kuvilla)

Video: Sormenjälkiin perustuva biometrinen äänestyskone Arduinolla: 4 vaihetta (kuvilla)
Video: Sormenjälki PIN-koodin jalanjäljillä 2024, Heinäkuu
Anonim
Sormenjälkiin perustuva biometrinen äänestyskone, jossa käytetään Arduinoa
Sormenjälkiin perustuva biometrinen äänestyskone, jossa käytetään Arduinoa

Olemme kaikki tietoisia nykyisestä sähköisestä äänestyskoneesta, jossa käyttäjän on painettava painiketta äänestääkseen. Mutta näitä koneita on kritisoitu karkaisusta alusta lähtien. Hallitus aikoo siis ottaa käyttöön sormenjälkipohjaisen äänestyskoneen, jossa käyttäjät voivat äänestää hänen sormenjälkensä perusteella. Tämä järjestelmä poistaa paitsi päällekkäisten äänestysten mahdollisuuden myös estää kaikenlaisen manipuloinnin.

Joten tässä projektissa aiomme rakentaa biometrisen äänestyskoneen prototyypin käyttämällä Arduino Unoa, TFT -näyttöä ja sormenjälkitunnistinta. Aiemmin käytimme R305-sormenjälkitunnistinta NodeMCU: n kanssa biometriseen pohjaiseen läsnäolojärjestelmään, mutta täällä käytämme edistynyttä GT-511C3-sormenjälkitunnistinta Arduinon kanssa.

Vaihe 1: Biometrisen äänestyskoneen rakentamiseen tarvittavat komponentit

  • Arduino Uno
  • 2,4 tuuman TFT LCD -näytön suojus
  • GT-511C3-sormenjälkitunnistin

Tätä 2,4 tuuman TFT -näyttöä on aiemmin käytetty Arduinon kanssa IoT -pohjaisen ravintolavalikon tilausjärjestelmän rakentamiseen.

Vaihe 2: Piirikaavio biometriselle äänestyskoneelle Arduinolla

Piirikaavio biometriselle äänestyskoneelle, joka käyttää Arduinoa
Piirikaavio biometriselle äänestyskoneelle, joka käyttää Arduinoa

Tämän projektin piirikaavio on hyvin yksinkertainen, koska yhdistämme vain TFT -näytön ja sormenjälkitunnistinmoduulin Arduino Unoon. Sormenjälkitunnistimen VCC- ja GND -nastat on kytketty Arduinon 5V- ja GND -nastoihin, kun taas TX- ja RX -nastat on liitetty Arduino Unon digitaalisiin nastoihin 11 ja 12.

2,4 tuuman TFT -LCD -näyttö on Arduino Shield, ja se voidaan asentaa suoraan Arduino Unoon, kuten alla olevassa kuvassa näkyy. TFT -näytössä on 28 nastaa, jotka sopivat täydellisesti Arduino Unoon, joten minun piti juottaa sormenjälkitunnistin Arduinon takana.

Vaihe 3: Lähdekoodi ja vaihe vaiheen koodi Selitys

Tämän sormenjälkiäänestysjärjestelmäprojektin täydellinen koodi Arduinoa käyttäen on artikkelin lopussa; tässä selitämme koodin tärkeitä toimintoja.

Koodi käyttää SPFD5408-, Software Serial- ja FPS_GT511C3 -kirjastoja. SPFD5408 -kirjasto on alkuperäisen Adafruit -kirjaston muokattu versio. Nämä kirjastotiedostot voi ladata alla olevista linkeistä:

  • SPFD5408 -kirjasto
  • Ohjelmistosarja
  • FPS_GT511C3

Kun olemme sisällyttäneet kirjastot ja määrittäneet joitain tärkeitä parametreja, voimme päästä ohjelmointiosaan. Tässä ohjelmassa on kolme osaa. Yksi on äänestyskoneen käyttöliittymän luominen, toinen painikkeiden kosketuspisteiden saaminen ja painikkeiden tunnistaminen kosketuksen perusteella ja lopulta tulosten laskeminen ja tallentaminen Arduinon muistiin.

1. Käyttöliittymän luominen:

Olen luonut yksinkertaisen käyttöliittymän, jossa on kolme painiketta ja projektin nimi. TFT -näyttökirjaston avulla voit piirtää viivoja, suorakulmioita, ympyröitä, merkkejä, merkkijonoja ja paljon muuta haluamaasi väriä ja kokoa. Tässä kaksi suorakulmaista painiketta luodaan fillRoundRect- ja drawRoundRect -funktioilla. Tft.drawRoundRect -funktion syntaksi on annettu alla:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t säde, uint16_t väri)

Missä:

x0 = X-koordinaatti suorakulmaisen aloituspisteestä

y0 = suorakulmaisen lähtöpisteen Y -koordinaatti

w = suorakulmion leveys

h = Suorakulmion korkeus

säde = pyöreän kulman säde

väri = oikeuden väri.

tyhjä piirtääKoti ()

{

tft.fillScreen (VALKOINEN);

tft.drawRoundRect (0, 0, 319, 240, 8, VALKOINEN); // Sivun reuna

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

tft.drawRoundRect (10, 70, 220, 50, 8, VALKOINEN); //Äänestys

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

tft.drawRoundRect (10, 160, 220, 50, 8, VALKOINEN); // Ilmoittaudu

tft.fillRoundRect (10, 250, 220, 50, 8, KULTA); //Tulos

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Äänestys");

tft.setCursor (57, 29);

tft.print ("Kone");

tft.setTextSize (3);

tft.setTextColor (VALKOINEN);

tft.setCursor (25, 82);

tft.print ("Ehdokas 1");

tft.setCursor (25, 172);

tft.print ("Ehdokas 2");

tft.setCursor (25, 262);

tft.print ("Ehdokas 3");

}

2. Kosketuspisteiden ja tunnistuspainikkeiden hankkiminen:

Nyt koodin toisessa osassa havaitsemme painikkeiden kosketuspisteet ja käytämme näitä pisteitä painikkeen ennustamiseen. ts.getPoint () -toimintoa käytetään tunnistamaan käyttäjän kosketus TFT -näytöllä. ts.getPoint antaa Raw ADC -arvot kosketetulle alueelle. Nämä RAW ADC -arvot muunnetaan sitten pikselikoordinaateiksi karttatoiminnon avulla.

TSPoint p = ts.getPoint ();

jos (pz> ts.pressureThreshhold)

{

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

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

//Sarja.juliste ("X: ");

// Sarjanjälki (px);

//Sarja.jälki ("Y: ");

//Sarjanjälki (p.y);

Nyt kun tiedämme kunkin painikkeen X- ja Y -koordinaatit, voimme ennustaa, mihin käyttäjä on koskenut käyttämällä "jos" -lausetta.

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

{

Serial.println ("Ehdokas 1");

Kun äänestäjä painaa ehdokaspainiketta, häntä pyydetään skannaamaan sormenjälkitunnistimen sormi. Jos sormitunnus on sallittu, äänestäjä saa äänestää. Jos joku rekisteröimätön käyttäjä haluaa äänestää, sormenjälkimoduuli ei tunnista tunnustaan järjestelmään ja näytössä näkyy "Sorry You Can not Äänestää".

jos (fps. IsPressFinger ())

{

fps. CaptureFinger (epätosi);

int id = fps. Identify1_N ();

jos (id <200)

{

msg = "Ehdokas 1";

ääni1 ++;

EEPROM.write (0, ääni1);

tft.setCursor (42, 170);

tft.print ("Kiitos");

viive (3000);

drawHome ();

3. Tulos:

Viimeinen vaihe on saada äänimäärät EEPROM -muistista ja vertailla kaikkien kolmen ehdokkaan ääniä. Eniten ääniä saanut ehdokas voittaa. Tulos on käytettävissä vain sarjamonitorista, eikä sitä näytetä TFT -näytöllä.

ääni1 = EEPROM.read (0);

ääni2 = EEPROM.read (1);

ääni3 = EEPROM.read (2);

jos (äänestä)

{

jos ((äänestys1> ääni2 && äänestys1> ääni3))

{

Serial.print ("Can1 voittaa");

viive (2000);

}

Vaihe 4: Sormenjälkiäänestysjärjestelmän testaaminen Arduinolla

Testaa projektia liittämällä Arduino Uno kannettavaan tietokoneeseen ja lataamalla annettu koodi. Kun koodi on ladattu, TFT -näytössä pitäisi näkyä ehdokkaan nimi. Kun joku napauttaa ehdokkaan nimeä, laite pyytää skannaamaan sormenjälkitunnistimen. Jos sormenjälki on kelvollinen, käyttäjän ääni lasketaan, mutta jos kuvio ei vastaa tietokannan tietueita, äänioikeus evätään. Kunkin ehdokkaan äänien kokonaismäärä tallennetaan EEPROMiin ja eniten ääniä saanut ehdokas voittaa.

Toivottavasti pidit opetusohjelmasta ja opit jotain hyödyllistä. Jos sinulla on kysyttävää, ilmoita siitä meille alla olevassa kommenttiosassa ja seuraa meitä myös Instructable -sivustossa saadaksesi lisää tällaisia mielenkiintoisia projekteja.

Suositeltava: