Taula de continguts:

Màquina de vot biomètric basada en empremtes digitals que utilitza Arduino: 4 passos (amb imatges)
Màquina de vot biomètric basada en empremtes digitals que utilitza Arduino: 4 passos (amb imatges)

Vídeo: Màquina de vot biomètric basada en empremtes digitals que utilitza Arduino: 4 passos (amb imatges)

Vídeo: Màquina de vot biomètric basada en empremtes digitals que utilitza Arduino: 4 passos (amb imatges)
Vídeo: Побег Марка 2024, Juliol
Anonim
Màquina de vot biomètric basada en empremta digital que utilitza Arduino
Màquina de vot biomètric basada en empremta digital que utilitza Arduino

Tots som conscients de la màquina de votació electrònica existent en què l’usuari ha de prémer un botó per emetre el vot. Però aquestes màquines han estat criticades per temperar-se des del principi. Per tant, el govern té previst introduir una màquina de votar basada en empremtes digitals on els usuaris puguin votar en funció de la seva impressió d’empremtes digitals. Aquest sistema no només eliminarà la possibilitat de duplicar els vots, sinó que també evitarà qualsevol tipus de manipulació.

Per tant, en aquest projecte, construirem un prototip de màquina de votació biomètrica mitjançant l’Arduino Uno, la pantalla TFT i el sensor d’empremta digital. Anteriorment hem utilitzat el sensor d’empremta digital R305 amb NodeMCU per construir un sistema d’assistència basat en biomètric, però aquí utilitzarem el sensor d’empremtes digitals avançat GT-511C3 amb Arduino.

Pas 1: components necessaris per construir una màquina de votació biomètrica

  • Arduino Uno
  • Pantalla LCD TFT de 2,4”
  • Sensor d’empremta digital GT-511C3

Aquesta pantalla TFT de 2,4 polzades s'utilitzava prèviament amb Arduino per crear un sistema de comandes de menús de restaurants basats en IoT.

Pas 2: Esquema de circuits per a màquina de votació biomètrica que utilitza Arduino

Diagrama de circuits per a màquina de votació biomètrica que utilitza Arduino
Diagrama de circuits per a màquina de votació biomètrica que utilitza Arduino

El diagrama de circuits d’aquest projecte és molt senzill, ja que només connectem la pantalla TFT i el mòdul del sensor d’empremta digital amb Arduino Uno. Els pins VCC i GND del sensor d’empremta digital estan connectats als pins 5V i GND d’Arduino mentre que els pins TX i RX estan connectats als pins digitals 11 i 12 d’Arduino Uno.

La pantalla TFT LCD de 2,4 polzades és un Arduino Shield i es pot muntar directament a Arduino Uno, tal com es mostra a la imatge següent. La pantalla TFT té 28 pins que s’adapten perfectament a Arduino Uno, de manera que vaig haver de soldar el sensor d’empremtes digitals a la part posterior d’Arduino.

Pas 3: codi font i explicació del codi pas a pas

El codi complet d’aquest projecte de sistema de votació d’empremtes digitals que utilitza Arduino es dóna al final de l’article; aquí estem explicant algunes funcions importants del codi.

El codi utilitza les biblioteques SPFD5408, Software Serial i FPS_GT511C3. La biblioteca SPFD5408 és la versió modificada de la biblioteca original d'Adafruit. Aquests fitxers de biblioteca es poden descarregar des dels enllaços que s'indiquen a continuació:

  • Biblioteca SPFD5408
  • Programari en sèrie
  • FPS_GT511C3

Després d’incloure les biblioteques i definir alguns paràmetres importants, podem entrar a la part de programació. Aquest programa inclou tres seccions. Un és crear una interfície d’usuari d’una màquina de votar, el segon és obtenir els punts de contacte per als botons i detectar els botons en funció del tacte i, finalment, calcular els resultats i guardar-los a la memòria d’Arduino.

1. Creació de la IU:

He creat una interfície d’usuari senzilla amb tres botons i el nom del projecte. La biblioteca de pantalla TFT us permet dibuixar línies, rectangles, cercles, caràcters, cordes i molt més de qualsevol color i mida preferits. Aquí es creen dos botons rectangulars amb les funcions fillRoundRect i drawRoundRect. A continuació es mostra la sintaxi per a la funció tft.drawRoundRect:

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

On:

x0 = X coordenada del punt inicial de rectangular

y0 = Coordenada Y del punt inicial del rectangle

w = Amplada del rectangle

h = Alçada del Rectangular

radi = radi de la cantonada rodona

color = Color de la recta.

void drawHome ()

{

tft.fillScreen (BLANC);

tft.drawRoundRect (0, 0, 319, 240, 8, BLANC); // Vora de la pàgina

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

tft.drawRoundRect (10, 70, 220, 50, 8, BLANC); // Vota

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

tft.drawRoundRect (10, 160, 220, 50, 8, BLANC); // Inscriu-te

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CIAN);

tft.print ("Votació");

tft.setCursor (57, 29);

tft.print ("Màquina");

tft.setTextSize (3);

tft.setTextColor (BLANC);

tft.setCursor (25, 82);

tft.print ("Candidat 1");

tft.setCursor (25, 172);

tft.print ("Candidat 2");

tft.setCursor (25, 262);

tft.print ("Candidat 3");

}

2. Obtenció dels punts tàctils i detecció de botons:

Ara, a la segona secció del codi, detectarem els punts de contacte del botó i, a continuació, utilitzarem aquests punts per predir el botó. La funció ts.getPoint () s’utilitza per detectar el tacte de l’usuari a la pantalla TFT. ts.getPoint proporciona els valors Raw ADC per a l'àrea tocada. Aquests valors ADC RAW es converteixen a coordenades de píxels mitjançant la funció de mapa.

TSPoint p = ts.getPoint ();

if (p.z> ts.pressureThreshhold)

{

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

py = mapa (py, TS_MAXY, TS_MINY, 0, 240);

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

//Serial.print(p.x);

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

//Serial.print(p.y);

Ara, com que sabem les coordenades X i Y de cada botó, podem predir on ha tocat l’usuari mitjançant l’afirmació ‘si’.

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

{

Serial.println ("Candidat 1");

Quan un votant prem el botó del candidat, se li demanarà que escanegi el dit del sensor d’empremtes digitals. Si s’autoritza la identificació del dit, es pot votar l’elector. Si algun usuari no registrat vol votar, el mòdul d’empremtes digitals no detectarà la seva identificació al sistema i la pantalla mostrarà ‘Disculpeu que no pugueu votar’.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (fals);

int id = fps. Identify1_N ();

si (identificador <200)

{

msg = "Candidat 1";

vot1 ++;

EEPROM.write (0, vot1);

tft.setCursor (42, 170);

tft.print ("Gràcies");

retard (3000);

drawHome ();

3. Resultat:

L’últim pas és obtenir el recompte de vots de la memòria EEPROM i comparar els vots dels tres candidats. Guanya un candidat amb més vots. El resultat només es pot accedir des del monitor sèrie i no es mostrarà a la pantalla TFT.

vot1 = EEPROM.read (0);

vot2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

si (votar)

{

if ((vot1> vot2 && vot1> vot3))

{

Serial.print ("Pot guanyar 1");

endarreriment (2000);

}

Pas 4: provar el sistema de vot per empremta digital mitjançant Arduino

Per provar el projecte, connecteu l'Arduino Uno al portàtil i pengeu el codi donat. Un cop carregat el codi, la pantalla TFT hauria de mostrar el nom del candidat. Quan algú toca el nom d'un candidat, la màquina us demanarà que escanegeu l'escàner d'empremtes digitals. Si l’empremta digital és vàlida, es comptarà el vot de l’usuari, però en cas que el patró no coincideixi amb els registres de la base de dades, es denegarà l’accés per emetre un vot. El nombre total de vots per a cada candidat s’emmagatzemarà a EEPROM i guanyarà un candidat que tingui el major nombre de vots.

Espero que us hagi agradat el tutorial i hàgiu après alguna cosa útil. Si teniu cap pregunta, feu-nos-ho saber a la secció de comentaris que hi ha a continuació i també seguiu-nos a Instructable per obtenir més projectes tan interessants.

Recomanat: