Módulo Leitor RFID RDM6300 com Arduino
Neste post vamos mostrar como conectar o Leitor RFID RDM6300 125KHz no Arduino e efetuar a leitura da identificação de tags RFID 125KHz.
Esse tipo de módulo pode ser usado para controle de acesso, alarmes, marcadores de ponto, brinquedos e outras aplicações. É o mesmo princípio que usamos nos módulos RFID MFRC522 e PN532 NFC, mostrados anteriormente aqui no blog.
O Leitor RFID 125KHz RDM6300
O módulo RDM6300 é um módulo de leitura de cartões RFID na frequência de 125KHz e utiliza para comunicação a interface serial (UART), que torna a operação desse módulo bastante simples e facilita a conexão com outros equipamentos e microcontroladores que utilizem esse tipo de interface.
Atualizado em 11-08-2020: Confira também a conexão deste leitor no ESP8266 no post Como usar o leitor RFID com ESP8266.
O RDM6300 utiliza alimentação de 5V, e na imagem abaixo podemos ver que ele possui dois pinos Vcc e dois pinos GND:
Fiz alguns testes e verifiquei que podemos alimentar o módulo usando qualquer conjunto desses pinos, portanto tanto faz se você usar o Vcc e GND na parte superior ou na parte inferior.
O pino LED deu um pouco de trabalho para descobrir a função, devido à falta de documentação desse módulo, mas nesse pino você pode ligar o anodo do led, e o catodo ligar ao negativo com a ajuda de um resistor. A função desse led é piscar quando os dados da tag RFID são acessados, mas aparentemente essa piscada é tão rápida (1ms) que não pode ser observada a olho nu. Uma sugestão é usar esse pino led para acionar uma interrupção do Arduino e fazer com que ele emita algum tipo de aviso de leitura.
Na pinagem do lado inferior esquerdo podemos ver o conector para antena externa. Esse tipo de antena facilita os projetos com esse leitor RFID, já que o módulo e demais componentes (como o Arduino) podem ficar separados e protegidos em uma caixa deixando apenas a antena aparente.
Conexão do RFID RDM6300 com Arduino
Nós vamos testar esse módulo com Arduino conectando os pinos RX e TX nas portas digitais 2 e 3, e emulando uma serial nesses pinos usando a biblioteca SoftwareSerial, deixando a serial por hardware (pinos 0 e 1 do Arduino) livre para comunicação com o computador e enviando dados para o serial monitor.
Para alimentação, optei por usar os pinos Vcc e GND superiores, mas como comentei anteriormente você pode usar qualquer um desses pinos para alimentar o módulo.
Programa leitura tag RFID
Para o programa vamos usar a biblioteca RDM6300 que está disponível neste link. Descompacte a pasta e coloque-a dentro da pasta LIBRARIES da IDE do Arduino. A biblioteca SoftwareSerial, usada para emular uma porta serial nos pinos 2 e 3, já está embutida na IDE do Arduino.
//Programa: Leitor RFID RDM6300 //Alteracoes e adaptacoes: Arduino e Cia //Baseado no programa original de Stephane Driussi #include <SoftwareSerial.h> #include <RDM6300.h> //Inicializa a serial nos pinos 2 (RX) e 3 (TX) SoftwareSerial RFID(2, 3); int Led = 13; uint8_t Payload[6]; // used for read comparisons RDM6300 RDM6300(Payload); void setup() { pinMode(Led, OUTPUT); //Inicializa a serial para o leitor RDM6300 RFID.begin(9600); //Inicializa a serial para comunicacao com o PC Serial.begin(9600); //Informacoes iniciais Serial.println("Leitor RFID RDM6300n"); } void loop() { //Aguarda a aproximacao da tag RFID while (RFID.available() > 0) { digitalWrite(Led, HIGH); uint8_t c = RFID.read(); if (RDM6300.decode(c)) { Serial.print("ID TAG: "); //Mostra os dados no serial monitor for (int i = 0; i < 5; i++) { Serial.print(Payload[i], HEX); Serial.print(" "); } Serial.println(); } } digitalWrite(Led, LOW); delay(100); }
O programa é bem enxuto e efetua a leitura da porta serial até que algum cartão seja colocado próximo à antena. Quando isso acontece, o ID da tag é enviada para o serial monitor:
Gostou? Confira outros posts utilizando RFID aqui mesmo no Arduino e Cia!
Bom dia amigos com essa antena o alcance aumentaria?
Preciso de uma distância de 3m.
Oi Giorgio,
Infelizmente o alcance do módulo é de alguns poucos cm (mm?) mesmo.
Abraço!
Adilson
boa noite,
Se aumentar a antena aumenta a distancia?
Ola amigo
Sou estudante do curso de Energias Renováveis queria ajuda com alguns codigos se fosse possível
Oi Elton,
Ajudo sim, entre em contato utilizando o formulário de contato no lado direito da página. Conversamos por email.
Abraço!
Adilson
Como posso gravar as ID nos chaveiros ?
Oi Mauro,
Esse módulo é de apenas leitura. E para gravar você também vai precisar de tags regraváveis, ok?
Abraço!
Adilson
Bom dia, gostaria de saber qual programa você usa para simular esses circuitos, pois parece ser o tinkercad (que antes era o autocad), mas já cansei de procurar leitores rfid por lá.
Boa tarde,
Para os circuitos eu uso o Fritzing: fritzing.org
Abraço!
Adilson
não consigo instalar a Biblioteca, alguma sugestão?
tambem n estou conseguindo
Só tirar os arquivos da pasta 'arduino' e jogar pra frente… n sei pq colocaram naquela pasta…
Qual distância máxima da antena?
Alguém indica algum módulo RFID para 5 metros por exemplo. Já usei Leitor RFID a distância com Wiegand26. Queria saber se existe alguma intermediária.
Olá,
com esse componente eu posso ler aqueles microchips de identificação de animais??
Boa noite,
Se a frequencia do microchip for 125KHz não vejo problemas. Note apenas que o leitor precisa ficar bem perto do microchip para efetuar a leitura, ok?
Abraço!
Adilson
Olá,
Sabe me informar pq não consigo ler aquelas TAGs de identificação animal com o RDM6300? As tags são de frequência 135 kHz, mas consigo ler elas com um leitor USB de 125 kHz.
Boa noite, não consigo realizar a leitura da tag, pode me ajudar?
Oi Matheus,
Vamos lá. Que erro está apresentando?
Abraço!
Adilson
Boa tarde, Arduino e cia não consigo carregar a biblioteca, sempre aparece a mensagem.
A pasta/arquivo zip especificado não contém uma biblioteca válida
Alguém pode me ajudar?
Desde já agradeço.
Marlene
Boa tarde! Não consigo usar a biblioteca está sempre aparecendo um erro.Biblioteca inválida encontrada em C:UsersmarleneDocumentsArduinolibrariesRDM6300.ino:
Vcs pode me ajudar por favor?
Marlene
a biblioteca nao funciona so da que o zip nao e compativel e minha IDE e a original 1.8
Boa tarde,
Você precisa descompactar o arquivo e colocar o conteúdo da pasta Arduino dentro da pasta LIBRARIES da IDE.
Abraço!
Adilson
Boa tarde! alguém conhece uma biblioteca valida?
grata
Boa tarde,
A biblioteca do link é válida. Foi a que eu usei para testar o módulo. Você não está conseguindo instalar?
Abraço!
Adilson
Boa Tarde Adilson, obrigada pelo retorno. não estou conseguindo .
Biblioteca inválida encontrada em C:Program Files (x86)ArduinolibrariesRDM6300-master: C:Program Files (x86)ArduinolibrariesRDM6300-master
Hummm.. entendi. vamos lá.
Tente tirar o "-master" do nome da pasta. Deixe só RDM6300.
Abraço!
Adilson
Caso tenha uma resposta ficarei muito feliz. Realmente não sei o que está acontecendo.Fiz tudo certo, mas o erro persiste.
Marlene
Sem problemas. Me fala quais arquivos estão dentro da pasta RDM6300. Dentro dela tem uma pasta chamada Arduino?
Exemples,RDM 6300 arquivo cpp, RDM 6300 arquivo H.
São esses que estão dentro da pasta arduino.
Pessoal, caso alguém tenha problemas com bibliotecas ou queira facilitar uso e interação com a IDE do arduíno, eu faço uso da IDE WEB. Nela vc faz login e faz seus projetos on-line. Referente as bibliotecas ela já possui inúmeras instaladas.
Segue o link https://create.arduino.cc
Boa tarde, estou tentando utilizar essa biblioteca e da erro, tanto na IDE offline quanto Online, biblioteca invalida. Já fiz o procedimento correto.
Boa tarde,
Conseguiu? Me parece questão de erro na instalação da biblioteca mesmo.
Abraço!
Adilson
Bom dia Srs.
Estou com um projeto acadêmico, no qual precisaria ler tags a uma distância mínima de 1 a 2m. Confesso que estou meio perdido nas pesquisas. Alguém teria uma sugestão quanto ao leitor, e as tags que poderia utilizar neste projeto(chaveiro/cartão/etiqueta**)?
Desde já agradeço a todos.
Olá! Boa tarde! Preciso achar um leitor que consiga ler várias tags ao mesmo tempo. Esse leitor faz isso?! Se não, vocês conhecem algum modelo?! Estou com um projeto para colocar produtos em uma caixa e o leitor conseguir identificar todos os produtos.
Desde ja muito obrigado
Olá André,
resolveu seu problema?
tenho um problema parecido, poderia compartilhar a solução?
obrigado
Para quem estiver com problema com a biblioteca, eu sei qual é o problema. É que geralmente bastaria você descompactar os arquivos dentro do DocumentosArduinoLibraries e remover o fim "-master", só que o arquivo zip gerado está com a biblioteca dentro de uma pasta que está dentro do arquivo e não na raiz, portanto é necessário mover do arquivo zip a pasta "arduino" para o Libraries e então renomear para RDM6300, assim todos os arquivos ficarão nos lugares corretos.
//———————————————————————————–
// Sindra, Samuel – 2018 – Programa para leitura e comandos RFID com leitor RDM6300
// Provisoriamente os cartões estão cadastrados nas strings tagADD – tag DEL – tagABRIR,
// mas deverão ser gravadas no vetor rfid[] e suas funções no vetor rfidTipo[]
//———————————————————————————–
#include
String tagADD = "040050D58706";
String tagDEL = "040053A756A6";
String tagABRIR = "040052D2D357";
String rfid[30];
int rfidTipo[30];
String rfidAtual;
String rfidAnterior;
int rfidIntervalo = 2000;
float rfidMillis;
int LED = 13;
boolean iniciou=false;
char c;
void LeRFID(char c);
void ZeraRFID();
void AvaliaRFID();
void ComparaRFID();
SoftwareSerial SerialRFID = SoftwareSerial(10, 11);
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
SerialRFID.begin(9600);
Serial.println("RFID – Sistema inicializado");
Serial.println("Passe uma TAG RFID");
}
void loop()
{
while(SerialRFID.available()>0)
{
c=SerialRFID.read();
LeRFID(c);
}
}
void LeRFID(char c)
{
//Serial.print(String(c, HEX));
if (String(c, HEX)=="2") //Iniciou string
{
rfidAtual="";
iniciou=true;
}
if (iniciou)
{
if (String(c, HEX)!="2" && String(c, HEX)!="3")
{
rfidAtual=rfidAtual+c;
}
}
if (rfidAtual.length()>12) //Leu muitos dados
{
ZeraRFID();
}
if (String(c, HEX)=="3") // Finalizou leitura
{
if (rfidAtual.length()==12)
{
AvaliaRFID();
}
else ZeraRFID();
}
}
void ZeraRFID()
{
rfidAtual="";
iniciou=false;
}
void AvaliaRFID()
{
if (rfidAtual==rfidAnterior)
{
if (millis()>rfidMillis+rfidIntervalo)
{
Serial.println(rfidAtual);
rfidAnterior=rfidAtual;
rfidMillis=millis();
ComparaRFID();
}
}
else
{
Serial.println(rfidAtual);
rfidAnterior=rfidAtual;
rfidMillis=millis();
ComparaRFID();
}
ZeraRFID();
}
void ComparaRFID()
{
if (rfidAtual==tagADD)
{
Serial.println("Adicionar");
}
if (rfidAtual==tagDEL)
{
Serial.println("Apagar");
}
if (rfidAtual==tagABRIR)
{
Serial.println("Abrir");
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(13, LOW);
}
}
// Creio que esse meu código possa ajudar também.
ola, alguém conhece uma placa com alcance de pelo menos 50cm?
boa noite
como atracar um rele com rdm6300?
Bom dia,
A linha 33 aciona o led onboard na porta 13. Você pode usar essa porta para acionar o relé (não recomendo) ou então usar alguma outra porta, como por exemplo a porta digital 7.
Abraço!
Adilson
Pode sim usar o mesmo pino do led, que inclusive, dependendo do microcontrolador que estiver usando, poderá ter diferença entre os pinos que correspondem ao led, como no caso de um arduino e um nodemcu, então pode acionar por esse mesmo pino, desde que não use o led para sinalizar mais nada e que também considere que alguns módulos relé usam lógica invertida, então se usar o pino do led e for invertida, terá o relé acionado quando o led estiver apagado, o que não é bom. O ideal é sempre usar pinos específicos para cada acionamento, pois numa expansão de seu programa, quando tiver que acrescentar mais e mais coisas, provavelmente irá querer usar o pino do led para indicar mais ações do seu sistema, fora que é muito fácil adicionar uma porta específica para o relé, bastando incluir uma linha "pinMode(porta, OUTPUT);" no seu Setup e linhas "digitalWrite(porta, HIGH e LOW);" nos locais onde queira ligar ou desligar o relé, de acordo com HIGH ou LOW utilizados.
Boa noite, o cartao tem 3 codigos de leitura, sendo uma numeração A, uma S e uma W, ele sempre le a S que é um valor exadecimal, precisava fazer a leitura da numeração A
Olá! Como eu faço para fazer comparacoes com a ID das tags, por exemplo:
if (ID TAG == “29 0 BF D2 53 “) //ID TAG 1
{
Serial.println(“Acesso autorizado !”);
Serial.println();
Oi Amanda,
Dê uma olhada neste post aqui, tem o que você precisa: https://www.arduinoecia.com.br/controle-de-acesso-modulo-rfid-rc522/
Abraço!
Adilson
Olá. Muto bom post.
gostaria de saber como fazer para utilizar este leitor com o esp8266. Quando eu descompacto esta biblioteca no esp ele recusa
Oi Nilton,
Pois é, não testei ainda esse leitor RFID com o ESP. Pode me informar qual modelo vc está usando? o ESP-01? o NodeMCU? algum outro?
Abraço!
Adilson
Olá, fiz a montagem e o módulo tenta ler somente uma vez a tag/cartão, como faria para deixar ele buscando leitura?
Oi Gabriel,
Sim, ele efetua uma leitura de cada vez. O que você precisava exatamente?
Adilson
amigo eu tentei de todas as formas a dias e nao consigo fazer o arquivo emular ele sempre da errado
Oi Sandro,
Que erro que está aparecendo?
Adilson