Máquina de votação biométrica baseada em impressão digital usando Arduino: 4 etapas (com imagens)
Máquina de votação biométrica baseada em impressão digital usando Arduino: 4 etapas (com imagens)
Anonim
Máquina de votação biométrica baseada em impressão digital usando Arduino
Máquina de votação biométrica baseada em impressão digital usando Arduino

Todos nós conhecemos a urna eletrônica existente, onde o usuário deve pressionar um botão para votar. Mas essas máquinas foram criticadas por temperar desde o início. Portanto, o governo está planejando introduzir uma máquina de votação baseada em impressão digital, onde os usuários podem votar com base em sua impressão digital. Este sistema não só removerá a possibilidade de votos duplicados, mas também evitará qualquer tipo de manipulação.

Portanto, neste projeto, vamos construir um protótipo de uma máquina de votação biométrica usando o Arduino Uno, display TFT e sensor de impressão digital. Anteriormente, usamos o sensor de impressão digital R305 com NodeMCU para construir um sistema de atendimento com base biométrica, mas aqui usaremos o sensor de impressão digital GT-511C3 avançado com Arduino.

Etapa 1: componentes necessários para construir uma máquina de votação biométrica

  • Arduino Uno
  • Protetor de tela TFT LCD de 2,4”
  • Sensor de impressão digital GT-511C3

Este display TFT de 2,4 polegadas é usado anteriormente com o Arduino para construir um sistema de pedidos de menu de restaurante baseado em IoT.

Etapa 2: Diagrama de circuito para máquina de votação biométrica usando Arduino

Diagrama de circuito para máquina de votação biométrica usando Arduino
Diagrama de circuito para máquina de votação biométrica usando Arduino

O diagrama de circuito para este projeto é muito simples, pois estamos apenas conectando o display TFT e o módulo sensor de impressão digital com o Arduino Uno. Os pinos VCC e GND do sensor de impressão digital são conectados aos pinos 5V e GND do Arduino, enquanto os pinos TX e RX são conectados aos pinos digitais 11 e 12 do Arduino Uno.

A tela LCD TFT de 2,4”é um Arduino Shield e pode ser montada diretamente no Arduino Uno, conforme mostrado na imagem abaixo. O display TFT tem 28 pinos que se encaixam perfeitamente no Arduino Uno, então tive que soldar o sensor de impressão digital na parte traseira do Arduino.

Etapa 3: Código-fonte e explicação do código passo a passo

O código completo para este projeto de sistema de votação por impressão digital usando Arduino é fornecido no final do artigo; aqui estamos explicando algumas funções importantes do código.

O código usa as bibliotecas SPFD5408, Software Serial e FPS_GT511C3. A biblioteca SPFD5408 é a versão modificada da Biblioteca Adafruit original. Esses arquivos de biblioteca podem ser baixados dos links abaixo:

  • Biblioteca SPFD5408
  • Software Serial
  • FPS_GT511C3

Depois de incluir as bibliotecas e definir alguns parâmetros importantes, podemos entrar na parte de programação. Existem três seções envolvidas neste programa. Um é criar uma IU de uma máquina de votação, o segundo é obter os pontos de toque para botões e detectar os botões com base no toque e, finalmente, calcular os resultados e salvá-los na memória do Arduino.

1. Criação da IU:

Criei uma IU simples com três botões e o nome do projeto. A biblioteca de exibição TFT permite que você desenhe linhas, retângulo, círculos, caracteres, cordas e muito mais de qualquer cor e tamanho preferido. Aqui, dois botões retangulares são criados usando as funções fillRoundRect e drawRoundRect. A sintaxe para a função tft.drawRoundRect é fornecida a seguir:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t raio, cor uint16_t)

Onde:

x0 = coordenada X do ponto inicial de retangular

y0 = coordenada Y do ponto inicial de retangular

w = largura do retangular

h = Altura do Retangular

raio = Raio do canto redondo

color = Cor do Reto.

void drawHome ()

{

tft.fillScreen (BRANCO);

tft.drawRoundRect (0, 0, 319, 240, 8, BRANCO); //Borda da página

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

tft.drawRoundRect (10, 70, 220, 50, 8, BRANCO); //Voto

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

tft.drawRoundRect (10, 160, 220, 50, 8, BRANCO); //Matricular

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

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

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Votação");

tft.setCursor (57, 29);

tft.print ("Máquina");

tft.setTextSize (3);

tft.setTextColor (WHITE);

tft.setCursor (25, 82);

tft.print ("Candidato 1");

tft.setCursor (25, 172);

tft.print ("Candidato 2");

tft.setCursor (25, 262);

tft.print ("Candidato 3");

}

2. Obtendo os pontos de toque e botões de detecção:

Agora, na segunda seção do código, detectaremos os pontos de contato do botão e, em seguida, usaremos esses pontos para prever o botão. A função ts.getPoint () é usada para detectar o toque do usuário no display TFT. ts.getPoint fornece os valores ADC brutos para a área tocada. Esses valores RAW ADC são então convertidos em coordenadas de pixel usando a função de mapa.

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

Agora, como sabemos as coordenadas X e Y de cada botão, podemos prever onde o usuário tocou usando a instrução 'if'.

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

{

Serial.println ("Candidato 1");

Quando um eleitor pressiona o botão do candidato, ele será solicitado a digitalizar o dedo no sensor de impressão digital. Se a identificação digital for autorizada, o eleitor poderá votar. Se algum usuário não registrado quiser votar, o módulo de impressão digital não detectará sua ID no sistema e o display mostrará ‘Desculpe, você não pode votar’.

if (fps. IsPressFinger ())

{

fps. CaptureFinger (false);

id int = fps. Identify1_N ();

if (id <200)

{

msg = "Candidato 1";

vote1 ++;

EEPROM.write (0, voto1);

tft.setCursor (42, 170);

tft.print ("Obrigado");

atraso (3000);

drawHome ();

3. Resultado:

A última etapa é obter a contagem dos votos da memória da EEPROM e comparar os votos dos três candidatos. Um candidato com o maior número de votos vence. O resultado só pode ser acessado a partir do monitor serial e não será exibido na tela TFT.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

se (votar)

{

if ((vote1> vote2 && vote1> vote3))

{

Serial.print ("Can1 Vitórias");

atraso (2000);

}

Etapa 4: Testar o sistema de votação por impressão digital usando o Arduino

Para testar o projeto, conecte o Arduino Uno ao laptop e carregue o código fornecido. Assim que o código for carregado, o display TFT deve exibir o nome do candidato. Quando alguém toca no nome de um candidato, a máquina pede para digitalizar o scanner de impressão digital. Se a impressão digital for válida, então o voto do usuário será contado, mas caso o padrão não coincida com os registros do banco de dados, o acesso para emitir um voto será negado. O número total de votos de cada candidato será armazenado na EEPROM e o candidato com o maior número de votos será o vencedor.

Espero que tenham gostado do tutorial e aprendido algo útil. Se você tiver alguma dúvida, por favor, deixe-nos saber na seção de comentários abaixo, e também siga-nos no Instructable para mais projetos interessantes.

Recomendado: