Utilizando o módulo RFID com o Arduino Uno

 

 

UTILIZANDO O MÓDULO RFID COM O ARDUINO UNO

 

 

O RFID (Radio Frequency IDentification) é uma tecnologia sem contato amplamente utilizada em diversos projetos eletroeletrônicos. Tarefas como: identificação de pessoas, controle de acesso, gerenciamento da cadeia de suprimentos, rastreamento de livros em bibliotecas, sistemas de pedágio, entre outros são possíveis graças a tecnologia RFID.

Um sistema de identificação por RFID é composto por dois componentes principais, uma tag anexada ao objeto a ser identificado e um leitor responsável pela leitura dessa tag. O leitor consiste em um módulo de radiofrequência e uma antena que gera um campo eletromagnético de alta frequência. Já a tag geralmente é um dispositivo passivo (não possui bateria) e consiste em um microchip que armazena e processa informações e uma antena para receber e transmitir um sinal.

Quando a tag é aproximada ao leitor, o leitor gera um campo eletromagnético, fazendo com que os elétrons se movam pela antena da tag e, posteriormente, alimentem o chip. O chip então responde enviando suas informações armazenadas de volta ao leitor na forma de outro sinal de rádio. Isso é chamado de retroespalhamento. O leitor detecta e interpreta esse retroespalhamento e envia os dados para um computador ou microcontrolador.

Em projetos de sistemas embarcados o módulo RFID comumente utilizado e mais conhecido é o RC522. Pelo seu baixo custo, baixo consumo de energia e por sua facilidade de interface o módulo RFID RC522 é extremamente popular em projetos com Arduino.

Este artigo terá por finalidade demonstrar as caracteríticas principais do módulo RFID RC522. Veremos ainda, como integrar o módulo ao Arduino Uno para construção de projetos de controle de acesso.

 

Módulo RFID RC522

O Módulo RFID RC522 (Transceptor) é baseado no chip leitor/gravador MFRC522 da NXP Company. Este módulo utiliza ondas eletromagnéticas em radiofrequência para transferência de dados (leitura/gravação) e  é usado para multicomunicação sem contato em 13,56 MHz.

 O módulo RFID RC522 pode ler/gravar todos os tipos de Transponders (tags de cartão RFID e tags de chaveiro RFID) com 1 KB de memória e compatível com a frequência de 13,56 MHz. É um módulo de baixa voltagem, baixo custo e tamanho pequeno, dispõe de um protocolo SPI que permite interfacear facilmente com quase qualquer microcontrolador como ATTiny, Arduino, ESP8266, Raspberry Pi entre outras placas de desenvolvimento mais avançadas.

 

Visão geral do hardware

O módulo RFID RC522 quando comprado vêm em um conjunto, que consiste no tag de cartão RFID, tag de chaveiro e os pinos macho para serem soldados no módulo leitor.

 

 

O módulo leitor RFID RC522 possui 3 componentes principais em sua placa, estes são o chip MFRC522, um oscilador de cristal de 27,12 MHz e a antena.

 

 

Chip MFRC522

É um chip de leitura e gravação de baixo consumo de energia, baixo custo e tamanho pequeno. O chip MFRC522 suporta vários tipos de tags RFID como MIFARE 1K, MIFARE 4K, MIFARE mini e outros cartões e tags baseados em protocolo padrão ISO/IEC 14443. Além disso, suporta comunicação sem contato de maior velocidade da série Mifare, velocidade de comunicação duplex de até 424 kb/s. O chip MFRC522 opera na frequência de 13,46 MHz com alcance operacional de até 50 mm, dependendo do tamanho e da sintonia da antena e suporta comunicação serial SPI, UART e I2C com o host (microcontrolador como Arduino).

 

Oscilador

O oscilador é de cristal de quartzo de 27,12 MHz  conectado aos pinos OSCIN e OSCOUT do chip para o oscilador interno. Possui pulso de clock de 13,56 MHz derivado do pulso de clock de 27,12 MHz do oscilador de cristal de quartzo de 27,12 MHz dividido por 2.

 

Antena

 Uma bobina NFC está embutida na placa do módulo. A bobina NFC é uma antena que emite um campo eletromagnético de alta frequência de 13,56 MHz. Suporta componentes passivos de 13,56 MHz.

 

Tags RFID, cartão e chaveiro

Os tags RFID (cartão e chaveiro (transponder)), são dispositivos passivos, ou seja, não contém fonte de energia (bateria). Estes consistem em um microchip e uma bobina NFC (antena). O microchip serve para o armazenamento dos dados, e a Bobina NFC (Antena) serve para transmitir os dados para o módulo leitor RFID. O Módulo Leitor RFID RC522 é compatível com tags MIFARE 1K. Esses tags têm 1kB de memória para armazenar dados exclusivos.

 

 

Pinagem do módulo leitor RFID RC522

 

VCC - Fornece energia ao módulo. Esta tensão pode ser de 2,5 a 3,3 volts. Você pode conectar a alimentação do módulo (VCC)  à tensão de 3,3 V do Arduino. Entretanto, ao conectar a tensão de 5V do Arduino, provavelmente irá danificar o módulo.

RST - É uma entrada para reinicializar ou desligar. Quando este pino fica em nível baixo, o módulo entra no modo de desligamento. Desta maneira o oscilador é desligado e os pinos de entrada são desconectados do mundo externo. Considerando que o módulo é redefinido na borda de subida do sinal.

GND - É o pino terra e precisa ser conectado ao pino GND do Arduino.

IRQ - É um pino de interrupção que alerta o microcontrolador quando uma tag RFID está próximo.

MISO / SCL / TX - Atua como master-in-slave-out quando a interface SPI está habilitada, como relógio serial quando a interface I2C está habilitada e como saída de dados seriais quando a interface UART está habilitada.

MOSI (Master Out Slave In) - É a entrada SPI para o módulo RC522.

SCK (Serial Clock) - Aceita os pulsos de clock fornecidos pelo mestre do barramento SPI, ou seja, o Arduino.

SS / SDA / Rx - Atua como entrada de sinal quando a interface SPI está habilitada, como dados seriais quando a interface I2C está habilitada e como entrada de dados seriais quando a interface UART está habilitada.

Especificações do módulo leitor RFID RC522

 - Corrente de trabalho: 13-26mA / DC 3.3V

 - Corrente Slep: <80uA - Pico de corrente: <30mA

 - Freqüência de operação: 13,56MHz

 - Tipos de cartões suportados: Mifare1 S50, S70 Mifare1, Mifare UltraLight, Mifare Pro, Mifare Desfire

 - Temperatura de operação: -20 a 80 graus Celsius

 - Parâmetro de Interface SPI

 - Dimensões: 8,5 x 5,5 x 1,0cm

 - Peso: 21

 

Conectando o módulo RFID RC522 ao Arduino Uno

Considerando a utilização do módulo RFID RC522 integrado com o Arduino Uno, podemos desenvolver projetos de controle de acesso com um custo relativamente baixo.

A seguir, iremos demonstrar através da elaboração de um circuito como realizar esta integração entre o Arduino e o módulo RFID RC522 de forma prática. O objetivo do circuito será criar rapidamente um projeto Arduino para demonstrar como um simples módulo leitor RFID RC522 pode ser usado para construir um sistema de controle de acesso.

 

Materiais para montagem

 

Passos para a montagem do circuito

A montagem do circuito deve ser feita conforme imagem a seguir. Observe atentamente a posição correta de conexão dos pinos do módulo RFID no Arduino Uno. Lembre-se de que a tensão de alimentação do módulo deve ser de 3.3V

 

 

Primeiro conecte o pino VCC do módulo ao pino de 3,3V  do Arduino e o pino GND do módulo ao GND do Arduino Uno. O pino RST pode ser conectado a qualquer pino digital do Arduino. No nosso caso, ele está conectado ao pino digital  5. O pino IRQ é deixado desconectado porque a biblioteca do Arduino Uno que vamos utilizar não o suporta. Como os módulos RC522 exigem muita transferência de dados, eles fornecerão o melhor desempenho quando conectados aos pinos SPI do microcontrolador.

Observe nas tabelas a seguir as posições dos pinos SPI no Arduino Uno e o resumo das conexões do circuito proposto.

 

 

Resumo das Conexões do Circuito

 

 

VCC (Módulo)

Pino 3.3V (Arduino)

 

 

GND (Módulo)

Pino GND (Arduino)

 

 

Pino RST (Módulo)

Pino 5 (Arduino)

 

 

Pino IRQ (Módulo)

-

 

 

Pino SDA (Módulo)

Pino 10 (Arduino)

 

 

Pino SCK (Módulo)

PINO 13 (Arduino)

 

 

Pino MOSI (Módulo)

PINO 11 (Arduino)

 

 

Pino MISO (Módulo)

PINO 12 (Arduino)

 

 

 

 

Programação do Arduino

Para este projeto utilizaremos a biblioteca mfrc522. Esta biblioteca é responsável por simplificar a leitura e gravação de tags RFID. Para instalar a biblioteca mfrc522, vá para:

Sketch > Incluir biblioteca > Gerenciar bibliotecas e procure por “mfrc522”.

Clique na biblioteca e, em seguida, basta efetuar a  instalação.

 

Após o processo de instalação da biblioteca mfrc522 reinicie a IDE do Arduino. Agora, abra o submenu >Exemplos >MFRC522 > DumpInfo.

 

 

Este sketch de exemplo apenas lê a tag (chaveiro ou cartão) e exibe as informações no monitor serial armazenadas nele, sendo muito útil antes de experimentar novas tags!

Vá para o início do sketch e verifique se o RST_PIN foi inicializado corretamente, no nosso caso, estamos usando o pino digital 5, portanto, altere-o para 5.

 

MFRC522 Library Sketch DumpInfo RST pin

 

Agora, carregue o sketch e abra o Serial Monitor. Ao aproximar a tag do módulo leitor, você obterá algo como a imagem a seguir. Não mova a tag até que todas as informações sejam exibidas.

 

 

Todas as informações úteis sobre a tag são exibidas no monitor serial, incluindo a ID exclusiva (UID) da tag, o tamanho da memória e toda a memória de 1K. No caso desta tag a ID exclusiva (UID) é  “20 C3 93 5E” utilizaremos esta informação no nosso póximo código.

 

Projeto Arduino – Sistema de Controle de Acesso de Porta Baseado em RFID

O Código a seguir escaneia o ID exclusivo de cada tag RFID. Se o UID do tag corresponder a um valor predefinido (tag mestre) armazenado na memória do Arduino, o acesso é concedido. Para tags desconhecidos, o acesso é negado.

Código:

 

 

Explicação do código:

O código é bastante simples. Basicamente no início, incluímos as bibliotecas necessárias, definimos os pinos do Arduino, criamos instâncias de objetos e definimos o tag mestre com a ID correspondente ( no nosso caso como vimos anteriormente o ID da nossa tag  é representado por “20C3935E”).

 

 

Na void setup(), inicializamos a interface SPI, o objeto MFRC522 e a comunicação serial com uma taxa de transmissão de 9600 (baude rate).

 

 

void loop(), esperamos até que a nova tag seja digitalizada. Após a digitalização, comparamos o ID da tag desconhecida com o ID principal. Se ambos corresponderem, o acesso será permitido, caso contrário, o acesso será negado.

 

 

Ainda no void loop(), temos uma parte muito importante do código, que é  a função personalizada getID(). Depois de escanear a nova tag, dentro do loop “for” ele converte os 4 bytes do UID (ID exclusiva da tag) em uma string e junta para formar uma única string.