Obsah:

Biometrický hlasovací stroj na bázi otisku prstu využívající Arduino: 4 kroky (s obrázky)
Biometrický hlasovací stroj na bázi otisku prstu využívající Arduino: 4 kroky (s obrázky)

Video: Biometrický hlasovací stroj na bázi otisku prstu využívající Arduino: 4 kroky (s obrázky)

Video: Biometrický hlasovací stroj na bázi otisku prstu využívající Arduino: 4 kroky (s obrázky)
Video: Why Biometric Voting Is Prohibited When Bank Transactions Are Allowed? #shorts 2024, Listopad
Anonim
Biometrický hlasovací stroj na bázi otisků prstů využívající Arduino
Biometrický hlasovací stroj na bázi otisků prstů využívající Arduino

Všichni víme o existujícím elektronickém hlasovacím zařízení, kde uživatel musí hlasovat stisknutím tlačítka. Ale tyto stroje byly od počátku kritizovány pro temperování. Vláda proto plánuje zavést hlasovací zařízení založené na otiscích prstů, kde by uživatelé mohli hlasovat na základě otisku prstu. Tento systém nejenže odstraní možnost duplicitních hlasů, ale také zabrání jakémukoli druhu manipulace.

V tomto projektu tedy postavíme prototyp biometrického hlasovacího zařízení pomocí Arduino Uno, TFT displeje a snímače otisku prstu. Dříve jsme použili snímač otisků prstů R305 s NodeMCU k vybudování biometrického docházkového systému, ale zde použijeme pokročilý snímač otisků prstů GT-511C3 s Arduino.

Krok 1: Součásti potřebné k sestavení biometrického hlasovacího zařízení

  • Arduino Uno
  • 2,4 "TFT LCD displej
  • Snímač otisků prstů GT-511C3

Tento 2,4palcový TFT displej se dříve používal s Arduinem k vytváření objednávkového systému pro restaurace založené na IoT.

Krok 2: Schéma zapojení pro biometrické hlasovací zařízení využívající Arduino

Schéma zapojení pro biometrický hlasovací stroj využívající Arduino
Schéma zapojení pro biometrický hlasovací stroj využívající Arduino

Schéma zapojení pro tento projekt je velmi jednoduché, protože připojujeme pouze modul TFT displeje a snímače otisků prstů k Arduino Uno. VCC a GND piny snímače otisku prstu jsou připojeny k 5V a GND pinům Arduina, zatímco TX a RX piny jsou připojeny k digitálnímu pinu 11 a 12 Arduino Uno.

2,4 “TFT LCD obrazovka je Arduino Shield a lze ji přímo namontovat na Arduino Uno, jak ukazuje následující obrázek. TFT displej má 28 pinů, které se perfektně hodí do Arduino Uno, takže jsem musel připájet snímač otisků prstů na zadní straně Arduina.

Krok 3: Zdrojový kód a vysvětlení kódu krok za krokem

Úplný kód tohoto projektu hlasovacího systému pro otisky prstů pomocí Arduina je uveden na konci článku; zde vysvětlujeme některé důležité funkce kódu.

Kód používá knihovny SPFD5408, Software Serial a FPS_GT511C3. Knihovna SPFD5408 je upravenou verzí původní knihovny Adafruit. Tyto soubory knihovny lze stáhnout z níže uvedených odkazů:

  • Knihovna SPFD5408
  • Sériový software
  • FPS_GT511C3

Po zahrnutí knihoven a definování některých důležitých parametrů se můžeme dostat do programovací části. Do tohoto programu jsou zapojeny tři sekce. Jedním z nich je vytvoření uživatelského rozhraní hlasovacího zařízení, druhým je získání dotykových bodů pro tlačítka a detekce tlačítek na základě dotyku a nakonec výpočet výsledků a jejich uložení do paměti Arduina.

1. Vytvoření uživatelského rozhraní:

Vytvořil jsem jednoduché uživatelské rozhraní se třemi tlačítky a názvem projektu. Knihovna displeje TFT vám umožňuje kreslit čáry, obdélníky, kruhy, znaky, řetězce a mnoho dalších libovolných preferovaných barev a velikostí. Zde jsou pomocí funkcí fillRoundRect a drawRoundRect vytvořena dvě obdélníková tlačítka. Syntaxe pro funkci tft.drawRoundRect je uvedena níže:

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

Kde:

x0 = X souřadnice počátečního bodu obdélníku

y0 = souřadnice Y počátečního bodu obdélníku

w = Šířka obdélníku

h = výška obdélníku

radius = poloměr zaobleného rohu

color = Color of the Rect.

void drawHome ()

{

tft.fillScreen (BÍLÁ);

tft.drawRoundRect (0, 0, 319, 240, 8, BÍLÁ); // Okraj stránky

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

tft.drawRoundRect (10, 70, 220, 50, 8, BÍLÁ); //Hlasování

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

tft.drawRoundRect (10, 160, 220, 50, 8, BÍLÁ); //Zapsat

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); //Výsledek

tft.drawRoundRect (10, 250, 220, 50, 8, BÍLÁ);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print („Hlasování“);

tft.setCursor (57, 29);

tft.print („Stroj“);

tft.setTextSize (3);

tft.setTextColor (BÍLÁ);

tft.setCursor (25, 82);

tft.print („Kandidát 1“);

tft.setCursor (25, 172);

tft.print („Kandidát 2“);

tft.setCursor (25, 262);

tft.print („Kandidát 3“);

}

2. Získání dotykových bodů a detekčních tlačítek:

Nyní ve druhé části kódu zjistíme dotykové body tlačítek a poté je použijeme k předpovědi tlačítka. Funkce ts.getPoint () se používá k detekci dotyku uživatele na displeji TFT. ts.getPoint uvádí nezpracované hodnoty ADC pro dotykovou oblast. Tyto hodnoty RAW ADC jsou poté převedeny na pixelové souřadnice pomocí funkce mapy.

TSPoint p = ts.getPoint ();

if (p.z> ts.pressureThreshhold)

{

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

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

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

//Serial.print(p.x);

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

//Serial.print(p.y);

Nyní, protože známe souřadnice X a Y pro každé tlačítko, můžeme předpovědět, kde se uživatel dotkl, pomocí příkazu „if“.

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

{

Serial.println ("Kandidát 1");

Když volič stiskne tlačítko kandidáta, bude požádán, aby naskenoval prst na senzoru otisku prstu. Pokud je povoleno ID prstu, volič může hlasovat. Pokud chce jakýkoli neregistrovaný uživatel hlasovat, modul otisku prstu nezjistí v systému své ID a na displeji se zobrazí „Litujeme, nemůžete hlasovat“.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

int id = fps. Identify1_N ();

if (id <200)

{

msg = "Kandidát 1";

hlasujte1 ++;

EEPROM.write (0, hlas1);

tft.setCursor (42, 170);

tft.print („Děkuji“);

zpoždění (3000);

drawHome ();

3. Výsledek:

Posledním krokem je získání počtu hlasů z paměti EEPROM a porovnání hlasů všech tří kandidátů. Vyhrává kandidát s nejvyšším počtem hlasů. Výsledek je přístupný pouze ze sériového monitoru a nebude zobrazen na obrazovce TFT.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

pokud (hlasovat)

{

if ((hlasovat1> hlasovat2 && hlasovat1> hlasovat3))

{

Serial.print („Can1 vyhrává“);

zpoždění (2000);

}

Krok 4: Testování hlasovacího systému otisků prstů pomocí Arduina

Chcete -li projekt otestovat, připojte Arduino Uno k notebooku a nahrajte daný kód. Jakmile je kód nahrán, na displeji TFT by se mělo zobrazit jméno kandidáta. Když někdo klepne na jméno kandidáta, zařízení požádá o naskenování skeneru otisků prstů. Pokud je otisk prstu platný, bude započítán hlas uživatele, ale v případě, že se vzor neshoduje se záznamy v databázi, přístup k odevzdání hlasu bude odepřen. Celkový počet hlasů pro každého kandidáta bude uložen do EEPROM a vyhraje kandidát s nejvyšším počtem hlasů.

Doufám, že se vám návod líbil a dozvěděli jste se něco užitečného. Pokud máte nějaké dotazy, dejte nám prosím vědět v sekci komentáře níže a také nás sledujte na Instructable pro další podobné zajímavé projekty.

Doporučuje: