A intenção do projeto de hoje é demonstrar a utilização do leitor RFID ID12-LA junto com o Módulo Bluetooth HC-05 e o microcontrolador ATtiny85 para criar um leitor RFID Bluetooth. O leitor de cartão, para cartões de 125kHz, e envia via Bluetooth através do HC-05, para outro dispositivo.
Material necessário para o leitor RFID Bluetooth com ATtiny85
Utilizaremos os seguintes componentes:
- Módulo Bluetooth HC-05
- Microcontrolador ATtiny85
- Leitor RFID ID-12LA
- 4 Resistores de 330 ohms
- Conector Borne 2 Vias
- Potenciômetro 50k (também pode ser usado o de 100k)
- Buzzer Ativo 5V
- Led Difuso Verde
- Led Difuso Vermelho
- Soquete 8 pinos
- Placa de Fenolite Perfurada
Componentes utilizados
ATtiny85
O ATtiny85 é um microcontrolador AVR de 8 bits que vem com interface de 8 pinos. Tem como principais características o baixo consumo de energia, tamanho reduzido e baixo custo. A CPU é baseado na arquitetura RISC, sendo um controlador de baixa potência o que é adequado para aplicações em tempo real que podem operar com energia mínima.
Na imagem abaixo você pode conferir a pinagem do microcontrolador ATtiny85:
Abaixo estão algumas características do microcontrolador ATtiny85:
- Tensão: 1,8V a 5,5V.
- Clock interno: 1MHz – 8MHz.
- Flash: 8KB.
- RAM: 512B.
- EEPROM: 512B.
- Digital Pins: 6.
- Analog Input (ADC): 4 canais de 10bit.
- PWM: 3 canais de 8bit.
- Temporizadores: 2
- UART: 0.
- I2C: 1.
- SPI: 1.
ID-12LA
O ID-12LA, é um módulo leitor RFID com uma antena incorporada e possui uma saída TTL / RS232 de 9600bps com formato Magnético, Wiegand ou ASCII. Sua utilização é para identificar e rastrear tags RFID de 125 kHz anexadas a objetos.
Na imagem abaixo você pode conferir a pinagem do leitor RFID ID-12LA:
Abaixo estão algumas características do leitor RFID ID-12LA:
- Tensão: 2,8 a 5V
- Frequência de leitura: 125kHz
- Saídas TTL e RS232 a 9600bps
- Saída com emulação de tira magnética
- Faixa de leitura de 120mm
HC-05
O HC-05 é um módulo de comunicação Bluetooth que está bastante difundido no meio maker. Falar sobre ele neste post será desnecessário visto que existem muitos artigos sobre ele. Recomendo aos interessados a entrarem no seu anúncio do HC-05 para obter mais informações sobre o componente.
Código fonte do leitor RFID Bluetooth com ATtiny85
Antes de começar, eu recomendo a leitura do post Como programar o ATtiny85 através do Arduino, pois é muito importante entender como isso é feito. Você poderia usar um Arduino ou fazer um circuito com outro microcontrolador Atmel, mas eu decidi usar o ATtiny85 porque para este projeto precisamos de poucas portas digitais e como foi dito, o ATtiny85 tem um baixo custo e consumo de energia.
Bom, partindo do pressuposto que você entendeu como programar o ATtiny85, compartilhei o código fonte do projeto.
Utilizei biblioteca SoftwareSerial (sim, ela funciona aqui), pois a comunicação entre o microcontrolador e o módulo Bluetooth e leitor RFID (ID-12LA) é serial. Desta forma criei dois objetos para cada dispositivo e configurei o baud rate de 9600.
No loop, aguardo o objeto do leitor receber alguma informação, e quando passar o cartão vou receber os dados. Enquanto não encontrar o carácter retorno de carro armazeno os bytes em um array de char. Ao identificar o carácter “retorno de carro”, o array é enviado para um método “SendTag”, que prepara o dado para envio pelo módulo HC-05. Após o envio o método “clearTag” limpa o array para que seja feita a nova leitura.
O código pronto está aqui:
//Carrega a biblioteca SoftwareSerial #include <SoftwareSerial.h>; //define variaveis #define RX_LEITOR 1 //pin 6 #define TX_LEITOR 2 //pin 7 #define RX_ATTINY 3 //pin 2 #define TX_ATTINY 4 //pin 3 #define BUZZER 0 //pin 5 //cria variaveis para virtualiza entrada serial para o leitor SoftwareSerial objHC05Serial(RX_ATTINY, TX_ATTINY); // RX, TX SoftwareSerial objLeitorSerial(RX_LEITOR, TX_LEITOR); // RX, TX //Armazena o caracter recebido char tagString[14]; int readByte; int index = 0; void setup() { //inicializa a porta serial na velocidade 9600 objHC05Serial.begin(9600); objLeitorSerial.begin(9600); //define o porta como saida pinMode(BUZZER, OUTPUT); } void loop() { index = 0; //enquanto existir dado na porta serial if(objLeitorSerial.available() > 0) { //recebe o dado readByte = objLeitorSerial.read(); //enquando nãi encontrar o retorno de carro while (index < 13 && readByte != 10) { //armazena o byte no array tagString[index] = readByte; //realiza a leirua do proximo byte readByte = objLeitorSerial.read(); //incrementa contador index ++; } //se for o retorno de carro, chama metodo que envia a tag para o modulo hc05 if(readByte == 10) { SendTag(tagString); } delay(1000); } } //Envia um array de char contendo o numero do cartão para a TX do HC05 void SendTag(char datamessage[]){ //ativa o buzzer digitalWrite(BUZZER, HIGH); delay(500); digitalWrite(BUZZER, LOW); //escreve o dado na porta serial objHC05Serial.print(datamessage); //limpa o array para a proxima leitura clearTag(tagString); } //Metodo que limpa um array passado por parametro void clearTag(char arrTag[]){ for(int i = 0; i &amp;lt; strlen(arrTag); i++){ arrTag[i] = 0; } }
Circuito esquemático do leitor RFID Bluetooth com ATtiny85
Abaixo está o circuito esquemático do leitor RFID Bluetooth com ATtiny85:
Com o circuito testado, podemos passar para a próxima etapa, que é a montagem final do circuito.
Montagem e Funcionamento do leitor RFID Bluetooth com ATtiny85
Realizei a montagem do circuito na placa de fenolite e o resultado pode ser visto abaixo:
Parte traseira:
O funcionamento é simples, aproxime o cartão ao leitor e ele emitirá um bip indicando a leitura, o dado será enviado ao ATtiny onde será processado pelo nosso código, e assim, será enviado para o smartphone pelo HC-05.
Para testar o funcionamento do leitor, eu desenvolvi um aplicativo para fazer a comunicação via Bluetooth e receber os dados da leitura. O desenvolvimento do aplicativo eu apresento eu outro post mas você pode utilizar qualquer outro disponível na GooglePlay para testar.
Gostou de criar um leitor RFID Bluetooth com ATtiny85? Se tiver qualquer dúvida, deixe um comentário abaixo.
André Coelho, bom dia preciso desenvolver um sistema via bluetooth, Rfid via celular, você tem interesse de me ajudar desenvolver esse projeto. Combinamos os custos antes.
Obrigado.
Excelente….
Olá Rafael,
Ótimo saber que você gostou!
Abraço!
Rosana – Equipe MakerHero