Arduino - RFID RDM6300

De TuxTI

Este é um exemplo simples de um sistema de liberação de acesso com tokens RFID

Itens necessários

Arduino rfid rdm6300 1.jpg

Ligando o módulo ao Arduino

Conforme o esquema da placa RDM6300 da imagem que está abaixo, conecte os pinos no Arduino assim:

 Tx   -> 5 (Digital)
 Pin4 -> GND
 Pin5 -> 5V

Rdm6300 rfid pinos.jpg

Código

/*
  Pinos do Modulo RFID: 
  PIN 1 -> Tx
  PIN 2 -> Rx (Not Used)
  PIN 3 -> NC
  PIN 4 -> GND
  PIN 5 -> VCC (+5V)
 
  Conecte no Arduino 
  Tx  -> 5 (Digital)
  VCC -> 5V
  GND -> GND
*/
#include <SoftwareSerial.h>
 
// MODIFIQUE AS DUAS VARIAVEIS ABAIXO PARA OS CARTOES DE CONFIGURACAO
#define ADD_TAG_CODE "0E005276012B"  // Coloque o ID de uma Tag para adicionar Tokens na Lista de Acesso
#define DEL_TAG_CODE "210014E2BD6A"  // Coloque um ID para remover um Token da Lista de Acesso
 
 
SoftwareSerial rfid = SoftwareSerial(5, 6);
String msg, last, msg2;
String ID ;  // String que armazena a Lista de Acesso
 
void setup()  
{
  Serial.begin(9600);
  Serial.println("Serial Ok");
 
  rfid.begin(9600);
  Serial.println("RFID Ok");
}
 
char c;
 
void loop(){
 
  while(rfid.available()>0){
    c=rfid.read(); 
    msg += c;
  }
  msg=msg.substring(1,13);
  if(msg != last){ 
   if (msg.length()>1){
     last=msg;
   }   
   if(msg.indexOf(ADD_TAG_CODE)>=0) add(); 
   else if(msg.indexOf(DEL_TAG_CODE)>=0) del();  
   else if(msg.length()>10) verifica();
  }
 
  msg="";
 
}
 
void add(){
  Serial.println("Passe a Tag que voce deseja liberar o acesso: ");
  msg2=msg;
  while (msg2 == ADD_TAG_CODE) {
    msg="";
    while(msg.length()<13){
      while(rfid.available()>0){
        c=rfid.read(); 
        msg += c;
      }
      msg2=msg.substring(1,13);
    }
  }
  if(ID.indexOf(msg)>=0) {
    Serial.println("Essa Tag ja esta na lista de Acesso.");
    msg="";
  }
  else{
    //Serial.print("Card: ");
    //Serial.println(msg); 
    ID += msg;
    ID += ",";
    // Serial.print("ID: ");
    // Serial.println(ID);
    Serial.print("Acesso Liberado para a Tag: ");
    Serial.println(msg);
    msg="";
  }
 
}
 
// Funcao para remocao de Tags da Lista de Acesso
void del(){
  msg="";
  Serial.println("Passe a Tag que deseja remover da Lista de Acesso!");
  while(msg.length()<13){
    while(rfid.available()>0){
      c=rfid.read(); 
      msg += c;
    }
  }
  msg=msg.substring(1,13);
  if(ID.indexOf(msg)>=0){
    Serial.println("Tag encontrada e removida da Lista de Acesso: ");
    Serial.println(msg);
    //ID.replace(card,"");
    int pos=ID.indexOf(msg);
    msg="";
    msg += ID.substring(0,pos);
    msg += ID.substring(pos+15,ID.length());
    ID="";
    ID += msg;
  } else {
    Serial.println("TAG nao foi localizada, e continua sem acesso.");
  }
  msg="";
}
 
// Funcao para validar o acesso
void verifica(){
    msg=msg.substring(1,13);
    if(ID.indexOf(msg)>=0){
      Serial.println("Acesso Liberado!");
    } else {
      Serial.print("Acesso Negado para: ");
      Serial.println(msg);
    }
}


Referência

http://www.instructables.com/id/Arduino-and-RFID-from-seeedstudio/
http://www.seeedstudio.com/wiki/index.php?title=125Khz_RFID_module_-_UART

Outros Exemplos

http://www.automalabs.com.br/modulo-rfid-125khz-com-saida-uart-rdm6300/
http://zjembedded.blogspot.com.br/2012/06/rdm6300-rfid-with-pic18-dev-board.html