0

Como ler Cartões RFID com o Arduino

Este artigo é um tutorial muito simples do uso das tags baseadas na tecnologia RFID (Radio Frequency Identification) que é um método de identificação através de sinais de rádio recuperando e armazenando dados remotamente através de dispositivos denominados “tags RFID”. RFID no Wikipedia

Material Necessário:
– Arduino(qualquer modelo)
– Breadboard
– MFRC522 RFID Reader/Writer
– LCD 16×2
– 2 Leds (verde e vermelho)
– 2 resistencias 220 Ohm (podem ser de valor superior)
– Potenciometro 10k (para ajuste do contraste do LCD)
– Jumpers ou fios
– Tags RFID
(Pode comprar Aqui todos os componentes necessários)

Passo 1: Ligações
O esquema de ligações usando um Arduino Nano:

 


Parte 2: Código
O código seguinte usa a biblioteca MFRC522.h que pode ser Descarregada Aqui.
(Nota: O conteúdo desse ficheiro tem de ficar na diretoria Libraries, na pasta com o nome da biblioteca, neste caso MFRC522)
A biblioteca SPI.h e LiquidCrystal.h já estão incluídas na IDE do Arduino.

Configuração das ligações:

Código Arduino:

#include 
#include 
#include 

#define RST_PIN   9    // Configuravel
#define SS_PIN    10   // Configuravel

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Cria instancia MFRC522.
String read_rfid;
String ok_rfid_1="d33c2ec"; //adicionar os "UID" das tags RFID(cartões, porta-chaves, etc).
String ok_rfid_2="31d22e0"; //podemos adicionar quantos quisermos

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

void setup() {
    Serial.begin(9600);            // Inicializa comunicação serie
    //while (!Serial);             // Descomentar no caso de usar o arduino DUE
    SPI.begin();                   // Inicializa SPI bus
    mfrc522.PCD_Init();            // Inicializa MFRC522 
    lcd.begin(16, 2);
    lcd.clear();
    pinMode(A5,OUTPUT);
    pinMode(A2,OUTPUT);
}
/*
 *  Função que ajuda a escrever no monitor serie o valor do UID das tags.  
 *  NOTA: Não é importante saber como funciona se estás num nivel mais basico.
 */
void dump_byte_array(byte *buffer, byte bufferSize) {
    read_rfid="";
    for (byte i = 0; i < bufferSize; i++) {
        read_rfid=read_rfid + String(buffer[i], HEX);
    }
}

void loop() {
    lcd.setCursor(2, 0);
    lcd.print("Bem Vindo ao");
    lcd.setCursor(0, 1);
    lcd.print("Arduino Portugal");

    // Comandos de inicialicação da placa RFID-RC522
    if ( ! mfrc522.PICC_IsNewCardPresent())
        return;
    if ( ! mfrc522.PICC_ReadCardSerial())
        return;

    dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); //corre a função em cima implementada
    Serial.println(read_rfid); //Imprime valor da tag UID no monitor serie
    
    if (read_rfid==ok_rfid_1) {   // se RFID TAG for valida (ou seja, 
                                  // se tiver sido definida em cima quando 
                                  // declaramos a variavel ok_rfid_1)
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Arduino Portugal");
      lcd.setCursor(1, 1);
      lcd.print("TAG AUTORIZADA");
      analogWrite(A5,1024);
      delay(2000);
      lcd.clear();
      analogWrite(A5,0);
      /*
      *
      *    Neste espaço podes adicionar código adaptado ao teu projeto
      *
      */
    } 

    if (read_rfid==ok_rfid_2) {  // se RFID TAG for valida (ou seja, 
                                 //se tiver sido definida em cima quando declaramos a variavel ok_rfid_2)
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Arduino Portugal");
      lcd.setCursor(1, 1);
      lcd.print("TAG AUTORIZADA");
      analogWrite(A5,1024);
      delay(2000);
      lcd.clear();
      analogWrite(A5,0);
      /*
      *
      *    Neste espaço podes adicionar código adaptado ao teu projeto
      *
      */
    }

    if (read_rfid!=ok_rfid_1 && read_rfid!=ok_rfid_2) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Arduino Portugal");
      lcd.setCursor(1, 1);
      lcd.print("NAO AUTORIZADA");
      analogWrite(A2,1024);
      delay(2000);
      lcd.clear();
      analogWrite(A2,0);
    }
    
}

O video da demonstração:

 

Conclusão
Com este pequeno sistema de custo reduzido é possível controlar o dispositivo que quisermos, desde leds (como no exemplo), até fechaduras eletromecânicas, etc. Haja imaginação.
Existe um espaço no código que está comentado que pode ser alterado para determinada função que vocês queiram dar ao vosso projeto.
Em breve iremos disponibilizar mais tutoriais com projetos mais avançados usando RFID.

Nota: Ao comprar tags RFID é preciso verificar a frequência a que trabalham pois existem as de 13.56Mhz e 125Khz.

por Francisco Costa 

—————
Todos os produtos utilizados neste artigo podem ser encontrados na Loja de Eletrónica e Robótica – ElectroFun.

Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.

Não se esqueçam de fazer like na nossa Página no Facebook.

Podem ainda colocar as vossas dúvidas no nosso Forum da Comunidade Arduino em Portugal ou no nosso Grupo no Facebook Arduino Portugal – Qual o teu projeto?

Comments

Comentários

Admin

Deixar uma resposta