Índice:
- Etapa 1: componentes necessários para construir uma máquina de votação biométrica
- Etapa 2: Diagrama de circuito para máquina de votação biométrica usando Arduino
- Etapa 3: Código-fonte e explicação do código passo a passo
- Etapa 4: Testar o sistema de votação por impressão digital usando o Arduino
Vídeo: Máquina de votação biométrica baseada em impressão digital usando Arduino: 4 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
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
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:
Impressão de cheques sem software especial ou impressora com MS Excel (impressão de cheques bancários): 6 etapas
Impressão de cheques sem software especial ou impressora com MS Excel (impressão de cheques bancários): Esta é uma pasta de trabalho simples do Excel, que será muito útil para qualquer empresa escrever muitos cheques bancários em segundo lugar para seus fornecedores. Você não precisa de impressora ou software especial, você só precisa de um computador com MS Excel e impressora normal. Sim, agora você pode
Sistema online de votação por impressão digital (FVOS): 5 etapas
Sistema Online de Votação por Impressão Digital (FVOS): O Sistema Online de Votação por Impressão Digital permite que os eleitores votem de forma totalmente digitalizada, coletando e confirmando suas informações por meio da digitalização da impressão digital no dispositivo e salvando os dados em um Servidor. Possui G amigável ao usuário
Gesture Hawk: robô controlado por gestos manuais usando interface baseada em processamento de imagens: 13 etapas (com imagens)
Gesture Hawk: Robô controlado por gestos manuais usando uma interface baseada em processamento de imagem: Gesture Hawk foi apresentado no TechEvince 4.0 como uma interface homem-máquina baseada em processamento de imagem simples. Sua utilidade reside no fato de que nenhum sensor adicional ou vestível, exceto uma luva, é necessário para controlar o carro robótico que funciona em diferentes
Máquina de tocador de flauta baseada em Arduino: 10 etapas (com imagens)
Máquina de flauta baseada em Arduino: Neste instrutível, estou tentando apresentar um projeto que combina arte com engenharia. Uma máquina que toca flauta. Ele controla as notas usando o Arduino. Várias melodias ou músicas podem ser programadas no Arduino, que o Arduino toca na flauta. Não há
Máquina ATM usando Arduino (impressão digital + cartão RFID): 4 etapas (com imagens)
Máquina ATM usando Arduino (impressão digital + cartão RFID): Olá amigos, volto com uma nova ideia de máquina ATM usando Arduino. Pode ser útil em áreas rurais onde os serviços sem dinheiro não são possíveis. É uma pequena ideia. Espero você gostou. Vamos começar