Criando um leitor RFID Bluetooth com ATtiny85 3

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:

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:

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:

ID-12LA RFID

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 < 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:

Conexão Leitor RFID bluetooth

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:

Leitor RFID bluetooth

 

Parte traseira:

Solda Leitor RFID bluetooth

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. funcionamento Leitor RFID bluetooth
Gostou de criar um leitor RFID Bluetooth com ATtiny85? Se tiver qualquer dúvida, deixe um comentário abaixo.

Faça seu comentário

Acesse sua conta e participe

3 Comentários

  1. 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.

    1. Olá Rafael,

      Ótimo saber que você gostou!

      Abraço!
      Rosana – Equipe MakerHero