- Materiais utilizados
- Módulo Leitor RFID EM18
- Descubra o código exclusivo de 12 dígitos da etiqueta RFID usando o Arduino
- Diagrama de circuito
- Módulo sensor de impressão digital
- Programação para ignição sem chave RFID
Hoje em dia a maior parte do carro vem com entrada sem chave e sistema de ignição por botão, no qual você só precisa levar a chave no bolso e apenas colocar o dedo no sensor capacitivo na maçaneta para abrir a porta do carro. Aqui neste projeto, estamos adicionando mais alguns recursos de segurança a este sistema usando RFID e sensor de impressão digital. O sensor RFID irá validar a licença do usuário e o sensor de impressão digital só permitirá que uma pessoa autorizada no veículo.
Para este sistema de ignição de carro baseado em impressão digital, estamos usando o Arduino com um sensor de impressão digital R305 e um leitor RFID EM18.
Materiais utilizados
- Arduino Nano
- Sensor de impressão digital R305
- Leitor RFID EM18
- 16 * 2 LCD alfanumérico
- Motores DC
- L293D Motor driver IC
- Veroboard ou Breadboard (o que estiver disponível)
- Fios de conexão
- Bateria 12V DC
Módulo Leitor RFID EM18
RFID significa identificação por radiofrequência. Refere-se a uma tecnologia em que os dados digitais são codificados em tags RFID e podem ser decodificados por um leitor RFID usando ondas de rádio. RFID é semelhante ao código de barras no qual os dados de uma etiqueta são decodificados por um dispositivo. A tecnologia RFID é usada em várias aplicações, como sistema de segurança, sistema de atendimento de funcionários, fechadura de porta RFID, máquina de votação baseada em RFID, sistema de cobrança de pedágio, etc.
O EM18 Reader é um módulo que pode ler as informações de ID armazenadas nas tags RFID. As etiquetas RFID armazenam um número exclusivo de 12 dígitos que pode ser decodificado por um módulo leitor EM18, quando a etiqueta vem ao alcance do leitor. Este módulo opera a uma frequência de 125 kHz, que possui uma antena embutida, e é operado com uma fonte de alimentação CC de 5 volts.
Ele fornece uma saída de dados seriais e tem um alcance de 8 a 12 cm. Os parâmetros de comunicação serial são 8 bits de dados, 1 bit de parada e taxa de 9600 bauds.
Recursos do EM18:
- Tensão de operação: + 4,5 V a + 5,5 V DC
- Consumo de corrente: 50mA
- Freqüência operacional: 125KHZ
- Temperatura de operação: 0-80 graus C
- Taxa de transmissão de comunicação: 9600
- Distância de leitura: 8-12 cm
- Antena: embutida
Pinagem EM18:
Descrição do pin:
VCC: entrada de tensão 4,5- 5V DC
GND: pino de aterramento
Buzzer: Buzzer ou pino LED
TX: Pino do transmissor de dados serial de EM18 para RS232 (saída)
SEL: Deve ser ALTO para usar RS232 (BAIXO se usar WEIGAND)
Dados 0: dados WEIGAND 0
Dados 1: dados WEIGAND 1
Para saber mais sobre RFID e tags, verifique nossos projetos anteriores baseados em RFID.
Descubra o código exclusivo de 12 dígitos da etiqueta RFID usando o Arduino
Antes de programar o sistema de ignição do carro Arduino for Arduino, primeiro, precisamos descobrir o código exclusivo da etiqueta RFID de 12 dígitos. Como discutimos antes, as etiquetas RFID contêm um código exclusivo de 12 dígitos e pode ser decodificado usando um leitor RFID. Quando passamos a etiqueta RFID perto do Leitor, o Leitor fornecerá os códigos exclusivos por meio da porta serial de saída. Primeiro, conecte o Arduino ao leitor RFID conforme o diagrama de circuito e, em seguida, carregue o código fornecido abaixo para o Arduino.
contagem interna = 0; char card_no; void setup () {Serial.begin (9600); } void loop () {if (Serial.available ()) {count = 0; while (Serial.available () && count <12) {card_no = Serial.read (); contagem ++; atraso (5); } Serial.print (card_no); }}
Depois de carregar o código com sucesso, abra o monitor serial e defina a taxa de transmissão para 9600. Em seguida, passe o cartão perto do Leitor. Em seguida, o código de 12 dígitos começará a ser exibido no monitor serial. Faça este processo para todas as etiquetas RFID usadas e anote-o para referências futuras.
Diagrama de circuito
O diagrama do circuito para este sistema de ignição baseado em impressão digital é dado abaixo:
No meu caso, soldou o circuito completo na placa de desempenho como mostrado abaixo:
Módulo sensor de impressão digital
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 de uma impressão digital, convertê-la em modelos e armazenar a localização, etc.
Anteriormente, usamos o mesmo sensor R305 para construir uma máquina de votação, sistema de atendimento, sistema de segurança, etc. Você pode verificar todos os projetos baseados em impressões digitais aqui.
Registro de impressões digitais no sensor:
Antes de prosseguir com o programa, precisamos instalar as bibliotecas necessárias para o sensor de impressão digital. Aqui usamos “ Adafruit_Fingerprint.h ” para usar o sensor de impressão digital R305. Então, antes de tudo, baixe a biblioteca usando o link abaixo:
- Biblioteca de sensor de impressão digital Adafruit
Após o download bem-sucedido, no IDE do Arduino, vá para Arquivo > Ferramentas> Incluir biblioteca> Adicionar biblioteca.zip e selecione o local do arquivo zip para instalar a biblioteca.
Após a instalação bem-sucedida da biblioteca, siga as etapas abaixo para registrar uma nova impressão digital na memória do sensor.
1. No IDE do Arduino, vá para Arquivo > Exemplos > Biblioteca de sensores de impressão digital Adafruit > Registrar.
2. Faça upload do código para o Arduino e abra o monitor Serial a uma taxa de transmissão de 9600.
Importante: Altere o pino serial do software no programa para SoftwareSerial mySerial (12, 11).
3. Você deve inserir um ID para a impressão digital na qual deseja armazenar sua impressão digital. Como esta é minha primeira impressão digital, digitei 1 no canto superior esquerdo e cliquei no botão Enviar.
4. Em seguida, a luz no sensor de impressão digital piscará, o que indica que você deve colocar o dedo no sensor e, em seguida, siga as etapas que aparecem no monitor serial até que ele reconheça o sucesso do registro.
Programação para ignição sem chave RFID
O código completo para este sistema de ignição biométrica é fornecido no final do tutorial. Aqui estamos explicando algumas partes importantes do código.
A primeira coisa é incluir todas as bibliotecas necessárias. Aqui, no meu caso, incluí “ Adafruit_Fingerprint.h ” para usar o sensor de impressão digital R305. Em seguida, configure a porta serial na qual o sensor de impressão digital será conectado. No meu caso, declarei 12 como RX Pin e 11 como TX pin.
#include #include
Na próxima etapa, declare todas as variáveis, que serão usadas em todo o código. Em seguida, defina os pinos de conexão do LCD com o Arduino seguido pela declaração de um objeto da classe LiquidCrystal .
entrada char; contagem interna = 0; int a = 0; const int rs = 6, en = 7, d4 = 2, d5 = 3, d6 = 4, d7 = 5; LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Em seguida, dentro do loop (), o código é escrito para obter os códigos exclusivos de 12 dígitos das etiquetas RFID e eles são armazenados em uma matriz. Aqui, os elementos da matriz serão combinados com os códigos exclusivos armazenados na memória, para obter os detalhes da pessoa autenticada.
contagem = 0; while (Serial.available () && count <12) { input = Serial.read (); contagem ++; atraso (5); }
Em seguida, a matriz recebida é comparada com os códigos de tag armazenados. Se o código for compatível, a licença é considerada válida, o que permite ao usuário colocar uma impressão digital válida. Caso contrário, ele mostrará uma licença inválida.
if ((strncmp (input, "3F009590566C", 12) == 0) && (a == 0)) { lcd.setCursor (0, 0); lcd.print ("Licença válida"); lcd.setCursor (0, 1); lcd.print ("Bem-vindo"); atraso (1000); a = 1; impressão digital(); }
Na próxima etapa, uma função getFingerprintID é gravada, retornando um ID de impressão digital válido para uma impressão digital já registrada.
int getFingerprintID () { uint8_t p = finger.getImage (); if (p! = FINGERPRINT_OK) retorna -1; p = dedo.imagem2Tz (); if (p! = FINGERPRINT_OK) retorna -1; p = finger.fingerFastSearch (); if (p! = FINGERPRINT_OK) retorna -1; return finger.fingerID; }
Dentro da função fingerprint () , que é chamada após uma correspondência RFID bem-sucedida, a função getFingerprintID é chamada para obter um ID de impressão digital válido. Em seguida, ele é comparado usando o loop if-else para obter as informações sobre os dados da pessoa autenticada e, se os dados forem correspondidos, o veículo será acionado, caso contrário, ele solicitará a impressão digital errada.
int fingerprintID = getFingerprintID (); atraso (50); if (fingerprintID == 1) { lcd.setCursor (0, 0); lcd.print ("Acesso concedido"); lcd.setCursor (0, 1); lcd.print ("Veículo iniciado"); digitalWrite (9, ALTO); digitalWrite (10, LOW); enquanto (1); }
É assim que funciona o Sistema de ignição de carro RFID, que adiciona duas camadas de segurança ao seu carro.
O código completo e o vídeo de demonstração são fornecidos abaixo.