Sisukord:

Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil: 4 sammu (piltidega)
Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil: 4 sammu (piltidega)

Video: Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil: 4 sammu (piltidega)

Video: Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil: 4 sammu (piltidega)
Video: Teadlik hingamine. Maatriks 2018 01 12 2024, November
Anonim
Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil
Sõrmejäljel põhinev biomeetriline hääletusmasin Arduino abil

Me kõik teame olemasolevat elektroonilist hääletusmasinat, kus kasutaja peab hääle andmiseks nuppu vajutama. Kuid neid masinaid on algusest peale karastamise pärast kritiseeritud. Seega plaanib valitsus kasutusele võtta sõrmejäljel põhineva hääletusmasina, kus kasutajad saavad hääletada tema sõrmejälgede mulje põhjal. See süsteem ei kõrvalda mitte ainult topelthäälte võimalust, vaid hoiab ära ka igasuguse manipuleerimise.

Nii et selles projektis ehitame biomeetrilise hääletusmasina prototüübi, kasutades Arduino Uno, TFT -ekraani ja sõrmejäljeandurit. Varem kasutasime R305 sõrmejäljeandurit koos NodeMCU-ga, et luua biomeetrilisel põhinevat osavõtusüsteemi, kuid siin kasutame täiustatud GT-511C3 sõrmejäljeandurit koos Arduinoga.

Samm: biomeetrilise hääletusmasina ehitamiseks vajalikud komponendid

  • Arduino Uno
  • 2,4 -tolline TFT LCD -ekraan
  • GT-511C3 sõrmejäljeandur

Seda 2,4 -tollist TFT -ekraani on varem koos Arduinoga kasutatud IoT -põhise restoranimenüü tellimissüsteemi loomiseks.

Samm: biomeetrilise hääletusmasina vooluahela skeem Arduino abil

Arduino kasutava biomeetrilise hääletusmasina vooluahela skeem
Arduino kasutava biomeetrilise hääletusmasina vooluahela skeem

Selle projekti skeem on väga lihtne, kuna ühendame TFT -ekraani ja sõrmejäljeandurimooduli ainult Arduino Unoga. Sõrmejäljeanduri VCC- ja GND -tihvtid on ühendatud Arduino 5V ja GND -tihvtidega, TX- ja RX -tihvtid aga Arduino Uno digitaalsete tihvtidega 11 ja 12.

2,4 -tolline TFT LCD -ekraan on Arduino kilp ja selle saab otse Arduino Unole paigaldada, nagu on näidatud alloleval pildil. TFT -ekraanil on 28 tihvti, mis sobivad ideaalselt Arduino Unosse, nii et pidin jootma sõrmejäljeanduri Arduino tagaküljel.

3. samm: lähtekood ja samm -sammult koodi selgitus

Selle sõrmejälgede hääletamissüsteemi projekti täielik kood Arduino abil on toodud artikli lõpus; siin selgitame koodi mõningaid olulisi funktsioone.

Kood kasutab raamatukogusid SPFD5408, tarkvara jada ja FPS_GT511C3. SPFD5408 raamatukogu on algse Adafruit Library muudetud versioon. Neid raamatukogu faile saab alla laadida järgmistelt linkidelt:

  • SPFD5408 raamatukogu
  • Tarkvara jada
  • FPS_GT511C3

Pärast raamatukogude kaasamist ja mõnede oluliste parameetrite määratlemist võime asuda programmeerimisse. Selles programmis on kolm osa. Üks on hääletusmasina kasutajaliidese loomine, teine nuppude puutepunktide hankimine ja nuppude tuvastamine puute põhjal ning lõpuks tulemuste arvutamine ja Arduino mällu salvestamine.

1. UI loomine:

Olen loonud lihtsa kasutajaliidese, millel on kolm nuppu ja projekti nimi. TFT -ekraaniteek võimaldab joonistada jooni, ristkülikuid, ringe, tähemärke, stringe ja palju muud eelistatud värvi ja suurusega. Siin luuakse funktsioonide fillRoundRect ja drawRoundRect abil kaks ristkülikukujulist nuppu. Funktsiooni tft.drawRoundRect süntaks on toodud allpool:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raadius, uint16_t värv)

Kus:

x0 = ristkülikukujulise alguspunkti X-koordinaat

y0 = ristkülikukujulise alguspunkti Y -koordinaat

w = ristküliku laius

h = Ristküliku kõrgus

raadius = ümmarguse nurga raadius

värv = rekti värv.

void drawHome ()

{

tft.fillScreen (VALGE);

tft.drawRoundRect (0, 0, 319, 240, 8, VALGE); // Lehe ääris

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

tft.drawRoundRect (10, 70, 220, 50, 8, VALGE); // Hääleta

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

tft.drawRoundRect (10, 160, 220, 50, 8, VALGE); // Registreeru

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Hääletamine");

tft.setCursor (57, 29);

tft.print ("Masin");

tft.setTextSize (3);

tft.setTextColor (VALGE);

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. Puutepunktide hankimine ja nuppude tuvastamine:

Nüüd tuvastame koodi teises osas nupu puutepunktid ja kasutame neid punkte nupu ennustamiseks. ts.getPoint () funktsiooni kasutatakse kasutaja puudutuse tuvastamiseks TFT -ekraanil. ts.getPoint annab puudutatud ala töötlemata ADC väärtused. Need RAW ADC väärtused teisendatakse seejärel kaardifunktsiooni abil pikslikoordinaatideks.

TSPoint p = ts.getPoint ();

kui (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);

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

//Seriaalne trükk (px);

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

//Seriaalne trükk (p.y);

Nüüd, kuna me teame iga nupu X- ja Y -koordinaate, saame lauset „kui” kasutades ennustada, kuhu kasutaja on puutunud.

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

{

Serial.println ("Kandidaat 1");

Kui valija vajutab kandidaadi nuppu, palutakse tal sõrmejäljeanduril sõrme skannida. Kui sõrme ID on lubatud, on valijal lubatud hääletada. Kui mõni registreerimata kasutaja soovib hääletada, ei tuvasta sõrmejäljemoodul süsteemis oma ID-d ja ekraanile ilmub teade „Vabandust, et ei saa hääletada”.

kui (fps. IsPressFinger ())

{

fps. CaptureFinger (vale);

int id = fps. Identify1_N ();

kui (id <200)

{

msg = "Kandidaat 1";

hääl1 ++;

EEPROM.write (0, hääl1);

tft.setCursor (42, 170);

tft.print ("Aitäh");

viivitus (3000);

drawHome ();

3. Tulemus:

Viimane samm on häälte lugemine EEPROM -i mälust ja kõigi kolme kandidaadi häälte võrdlemine. Võidab enim hääli saanud kandidaat. Tulemusele pääseb juurde ainult jadamonitorilt ja seda ei kuvata TFT -ekraanil.

hääletus1 = EEPROM.read (0);

hääletus2 = EEPROM.read (1);

hääletus3 = EEPROM.read (2);

kui (hääletama)

{

kui ((hääl1> hääl2 &&hääl1> hääl3))

{

Serial.print ("Can1 võidab");

viivitus (2000);

}

Samm: sõrmejälgede hääletussüsteemi testimine Arduino abil

Projekti testimiseks ühendage Arduino Uno sülearvutiga ja laadige üles antud kood. Kui kood on üles laaditud, peaks TFT -ekraan kuvama kandidaadi nime. Kui keegi puudutab kandidaadi nime, palub masin sõrmejäljeskannerit skannida. Kui sõrmejälg on kehtiv, loetakse kasutaja hääl arvesse, kuid juhul, kui muster ei ühti andmebaasi kirjetega, keelatakse juurdepääs hääle andmisele. Iga kandidaadi häälte koguarv salvestatakse EEPROMis ja võidab kõige rohkem hääli saanud kandidaat.

Loodan, et teile meeldis õpetus ja õppisite midagi kasulikku. Kui teil on küsimusi, andke meile sellest teada allpool olevas kommentaaride jaotises ja järgige meid ka Instructable'is selliste huvitavate projektide jaoks.

Soovitan: