- Componentes necessários:
- Módulo sensor de impressão digital na máquina de votação:
- Explicação de trabalho:
- Explicação do circuito:
- Explicação do programa:
Todos nós estamos familiarizados com as Máquinas de Votação Eletrônica, onde seu voto é registrado eletronicamente e você não precisa usar o boletim de voto para votar na eleição. Hoje, a segurança é uma grande preocupação e também precisa ser garantida que alguém não possa votar duas vezes, então esse problema pode ser resolvido introduzindo a votação baseada em impressão digital, em que uma pessoa pode ser autorizada com base em sua impressão digital. Isso também interromperá a votação falsa. Portanto, hoje estamos construindo uma máquina de votação biométrica baseada em impressão digital usando o Arduino.
Verifique também nossos projetos anteriores de máquina de votação eletrônica usando diferentes microcontroladores:
- Máquina de votação eletrônica usando Raspberry Pi
- Máquina de votação baseada em RFID
- Projeto de máquina de votação eletrônica baseada em microcontrolador AVR
- Máquina de votação eletrônica usando Arduino
Componentes necessários:
- Arduino Uno
- Módulo sensor de impressão digital
- Apertar botões
- LEDs -2
- 1K Resistor -3
- Resistor 2.2K
- Poder
- Fios de conexão
- Buzzer
- LCD 16x2
- Tábua de pão
Módulo sensor de impressão digital na máquina de votação:
O Módulo Sensor de Impressão Digital ou Scanner de Impressão Digital é um módulo que captura a imagem da impressão digital e a converte no modelo equivalente e os salva em sua memória no ID selecionado (local) pelo Arduino. Aqui, todo o processo é comandado pelo Arduino, como tirar uma imagem da impressão digital, convertê-la em modelos e armazenar a localização, etc.
Neste circuito de máquina de votação de impressão digital, usamos o módulo sensor de impressão digital para autenticar o eleitor verdadeiro, obtendo a entrada do dedo no sistema. Aqui estamos usando 5 botões para combinar, registrar / voltar, excluir / OK, para cima e para baixo. As teclas Enroll e Del têm recursos duplos aqui. A tecla de registro é usada para registrar uma nova impressão digital no sistema e também na função posterior. Significa que quando o usuário deseja registrar um novo dedo, ele precisa pressionar a tecla de registro e, em seguida, o LCD pede a ID ou localização onde o usuário deseja armazenar a saída da impressão digital. Agora, se neste momento o usuário não quiser prosseguir, ele / ela pode pressionar a tecla de registro novamente para voltar (desta vez, a chave de registro se comporta como tecla Voltar). Significa que a chave de inscrição tem função de inscrição e retorno. Tecla DEL / OK também tem a mesma função dupla, como quando o usuário registra um novo dedo, então ele / ela precisa selecionar a ID do dedo ou Localização usando outras duas teclas, nomeadamente PARA CIMA E PARA BAIXO, agora o usuário precisa pressionar a tecla DEL / OK (desta vez, esta tecla se comporta como OK) para prossiga com o ID ou local selecionado. A chave de correspondência é usada sempre que o eleitor deseja votar, então ele / ela precisa primeiro se autenticar para o verdadeiro eleitor, mantendo o dedo no sensor de impressão digital, se ele / ela passou nesta autenticação, ele / ela pode votar.
Para saber mais sobre como registrar impressões digitais e outras coisas, verifique nosso tutorial anterior sobre a interface do sensor de impressão digital com o Arduino e também verifique nosso vídeo de demonstração no final deste tutorial.
Explicação de trabalho:
Funcionamento deste Sistema de Votação Biométrica para Eleições é um pouco complexo para iniciantes. Em primeiro lugar, o usuário precisa cadastrar o dedo ou eleitores (neste código, o limite máximo do eleitor é 25) com a ajuda de botões / teclas. Para fazer isso, o usuário precisa pressionar a tecla ENROLL e, em seguida, o LCD pede para inserir o local / ID onde o dedo será uma loja. Portanto, agora o usuário precisa inserir o ID (localização) usando as teclas UP / DOWN. Depois de selecionar Localização / ID, o usuário precisa pressionar uma tecla OK (tecla DEL). Agora o LCD pedirá para colocar o dedo sobre o módulo de impressão digital. Agora o usuário precisa colocar o dedo sobre o módulo de impressão digital. Em seguida, o LCD pedirá para remover o dedo do módulo de impressão digital e novamente pedirá para colocar o dedo. Agora o usuário precisa colocar o dedo novamente sobre o módulo de impressão digital. Agora, o módulo de impressão digital pega uma imagem e a converte em modelos e a armazena por ID selecionada na memória do módulo de impressão digital.Agora o eleitor estará registrado e poderá votar. Pelo mesmo método, todos os eleitores podem ser registrados no sistema.
Agora, se o usuário deseja remover ou excluir qualquer um dos IDs armazenados, ele precisa pressionar a tecla DEL, após pressionar a tecla DEL, o LCD irá pedir para selecionar o local, significa selecionar o ID a ser excluído. Agora o usuário precisa selecionar o ID e pressionar a tecla OK (mesma tecla DEL). Agora o LCD informará que o dedo foi excluído com sucesso.
Processo de votação:
Agora, quando o usuário deseja votar, ele precisa pressionar a tecla de correspondência e, em seguida, a campainha emitirá um bipe e o LED também acenderá e o LCD pedirá para colocar o dedo sobre o módulo de impressão digital. Agora, o Arduino lhe dará três tentativas para colocar o seu dedo. Depois de colocar um dedo sobre o módulo de impressão digital, o módulo de impressão digital captura a imagem do dedo e descobre que seus IDs estão presentes no sistema. Se a identificação do dedo for detectada, o LCD mostrará o eleitor autorizado. Isso significa que o usuário está autorizado a votar. E então o sistema passa para o próximo estágio de votação. Agora o LED verde acenderá, o que significa que o eleitor pode votar em seus candidatos pressionando uma tecla reletida (da placa de pão VERMELHA nesta demonstração). Agora, se o mesmo eleitor quiser votar novamente, o sistema mostrará 'Já votou' . Significa que o mesmo eleitor não pode votar novamente e a campainha soará por 5 segundos. 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 LCD mostrará ' Nenhuma impressão digital encontrada' .
CAN1, CAN2, CAN3 representa aqui o Candidato 1, o Candidato 2 e o Candidato 3, que se candidataram.
Explicação do circuito:
O circuito deste projeto de máquina de votação baseada em impressão digital é muito simples que contém Arduino para controlar todo o processo do projeto, botão para cadastrar, deletar, selecionar IDs e propósito de votação, um buzzer para alerta, LEDs para indicação e LCD 16x2 para instruir Eleitor e mostrando o resultado também. O LED amarelo indica que o módulo de impressão digital está pronto para obter uma imagem do dedo e o LED verde indica que o sistema está pronto para fazer uma votação ou ver os resultados.
O botão de pressão é conectado diretamente ao pino A0 (INSCRIÇÃO), A1 (DEL), A2 (PARA CIMA), A3 (PARA BAIXO) e A4 (Combinar), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Resultado) do Arduino em relação ao solo. O LED amarelo é conectado no pino digital D7 do Arduino com relação ao aterramento por meio de um resistor de 1k e o LED verde é conectado ao D6 do Arduino com o mesmo método. Rx e Tx do módulo de impressão digital diretamente conectado ao pino serial Tx e Rx do Arduino. A alimentação 5v é usada para alimentar o módulo de impressão digital retirado da placa Arduino. Uma campainha também está conectada em A5. Um LCD 16x2 é configurado no modo de 4 bits e seus RS, EN, D4, D5, D6 e D7 são conectados diretamente no pino digital D13, D12, D11, D10, D9 e D8 do Arduino.
Explicação do programa:
Em um programa, usamos a Adafruit Fingerprint Sensor Library para fazer a interface do módulo de impressão digital com a placa Arduino. Você pode verificar o Código completo abaixo. Aqui, explicamos as principais funções do programa Arduino.
Na função de configuração, demos instruções para os pinos definidos e iniciamos o módulo LCD e impressão digital.
Depois disso, na função void loop () , esperamos pela tecla de verificação e pressione a tecla Match para iniciar a impressão digital para obter a entrada e comparar a id da imagem capturada com as IDs armazenadas. Se ocorrer uma correspondência, prossiga para a próxima etapa.
loop void () {lcd.setCursor (0,0); lcd.print ("Pressione a tecla Match"); lcd.setCursor (0,1); lcd.print ("para iniciar o sistema"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (buzzer, HIGH); atraso (200); digitalWrite (campainha, LOW); digitalWrite (indFinger, HIGH); para (int i = 0; i <3; i ++)…………………
A função void checkKeys () é usada para verificar se a tecla Inscrever ou DEL está pressionada ou não e o que fazer se pressionada. Se a tecla ENROLL pressionada, a função Enroll () é chamada e a tecla DEL pressionada, a função delete () é chamada.
void checkKeys () {if (digitalRead (matricular) == 0) {lcd.clear (); lcd.print ("Aguarde"); atraso (1000); enquanto (digitalRead (inscrever) == 0); Inscrever-se (); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Aguarde"); atraso (1000); delet (); }}
A função fornecida é usada para inserir o ID a ser excluído e chamar a função uint8_t deleteFingerprint (uint8_t id) que excluirá o dedo dos registros.
void delet () {int count = 0; lcd.clear (); lcd.print ("Excluir dedo"); lcd.setCursor (0,1); lcd.print ("Local:"); enquanto (1) {lcd.setCursor (9,1); lcd.print (contagem); if (digitalRead (up) == 0) {count ++; if (contagem> 25) contagem = 0; atraso (500); }……………….
A função dada é usada para excluir a impressão digital do registro da ID selecionada.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Aguarde"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Excluído!"); lcd.clear (); lcd.print ("Figer Deleted"); lcd.setCursor (0,1); lcd.print ("Com sucesso"); atraso (1000); } else {Serial.print ("algo errado"); lcd.clear (); lcd.print ("Algo errado"); lcd.setCursor (0,1); lcd.print ("Tente novamente mais tarde"); atraso (2000); return p; }}
A função fornecida é usada para pegar a imagem da impressão digital e convertê-la no modelo e salvá-la por ID selecionado na memória do módulo de impressão digital.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID do dedo:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Coloque o dedo"); atraso (2000); enquanto (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
A função dada é usada para votação e exibição de resultados:
void Vote () {lcd.clear (); lcd.print ("Coloque"); lcd.setCursor (0,1); lcd.print ("Seu voto"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (campainha, ALTO); atraso (500); digitalWrite (campainha, LOW); atraso (1000); enquanto (1) {if (digitalRead (sw1) == 0)…………………
Verifique o código completo e o vídeo de demonstração abaixo.