Índice:

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)

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

Vídeo: Máquina de votação biométrica baseada em impressão digital usando Arduino: 4 etapas (com imagens)
Vídeo: Fingerprint Based Biometric Smart Electronic Voting Machine Using Arduino 2024, Novembro
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: