Interface de leitor RFID Arduino MFRC522 RC522 e controle de acesso

Interface de leitor RFID Arduino MFRC522 RC522 e controle de acesso

RFID é uma tecnologia popular de etiquetagem e identificação. A identificação por radiofrequência envolve uma etiqueta RFID e o segundo leitor RFID. Etiquetas e etiquetas RFID são de baixo custo e facilmente disponíveis. Em comparação com os sistemas de rastreamento de código de barras, as soluções RFID apresentam diversas vantagens. Uma das aparentes vantagens do RFID em relação aos códigos de barras é que ele não requer linha de visão para leitura. Os leitores RFID capturam as informações codificadas nas etiquetas RFID usando sinais de radiofrequência. RFID é uma tecnologia de etiquetagem e identificação sem contato perfeita, fácil de implementar e usar. É por isso que o RFID é a escolha preferida para diversas aplicações, como sistemas de controle de acesso, cobrança automática de pedágio, pagamento sem contato, sistemas de check-out automatizados e rastreamento de estoque.

Exemplo de módulo RFID MFRC522 RC522.

Existem vários leitores RFID disponíveis. Um dos leitores RFID populares é o MFRC522 da NXP. Este leitor RFID pode ser conectado a um controlador/computador usando os protocolos UART, SPI e I2C. O IC leitor/gravador RFID no MFRC522 utiliza uma radiofrequência de 13,56 MHz para sua operação. MFRC522 RC522 pode ler/gravar cartões e tags RFID construídos usando o protocolo ISO/IEC 14443. Isso inclui etiquetas RFID compatíveis com MIFARE, como etiquetas RFID MIFARE-mini, MIFARE-1K, MIFARE-4K, chaveiro e cartões RFID NTAG.

Este projeto faz a interface do leitor RFID MFRC522 RC522 com o Arduino e lê NUIDs de cartões e porta-chaves compatíveis com MIFARE. Também demonstramos um sistema simples de controle de acesso utilizando o leitor RFID e as tags RFID utilizando Arduino.

Componentes necessários

  1. Arduino UNO/Arduino Mega x1
  2. Leitor RFID MFRC522 RC522 x1
  3. Cartões RFID e porta-chaves MIFARE Classic-1K x Mínimo 2
  4. Conectando fios/fios de jumper

Leitor RFID MFRC522 RC522
Uma solução RFID utiliza ondas eletromagnéticas em radiofrequência para comunicação de dados. O sistema consiste em dois componentes – um é um transceptor RFID e o segundo é um transponder RFID. O transceptor RFID lê/grava dados codificados em transponders RFID através de um sinal de rádio de baixa frequência. Os Transponders são cartões RFID, porta-chaves, etiquetas ou adesivos com uma EEPROM integrada que armazena dados codificados.

Cada transponder RFID possui um número de identificação que pode ser um Número de Identidade Único (UID) de 7 bytes ou um Número de Identidade Não Exclusivo (NUID) de 4 bytes. O principal componente de um cartão/etiqueta/adesivo RFID é um chip RFID. Os chips RFID podem ser somente leitura ou programáveis. O UID ou NUID de um cartão somente leitura não pode ser alterado ou modificado, incluindo outros dados armazenados no chip. Os chips programáveis ​​geralmente vêm com um código de identificação de chip pré-programado que pode ser substituído por memória adicional usando um transceptor RFID.

Componentes do leitor RFID MFRC522 RC522.

O leitor RFID RC522 da NXP foi projetado para ler/escrever transponders RFID baseados no protocolo ISO/IEC 14443, incluindo cartões/etiquetas/adesivos RFID MIFARE e NTAG. O leitor é referido como Dispositivo de Acoplamento de Proximidade (PCD), e as etiquetas/adesivos/cartões são referidos como Placa de Circuito Integrado de Proximidade (PICD). O leitor pode se comunicar com um controlador/computador usando os protocolos SPI, I2C e UART. Ele lê/grava tags na frequência de 13,56 MHz com faixa operacional de 50 mm. O leitor RC522 possui um chip MFRC522, um oscilador de 27,12 MHz, antena RF e outros componentes integrados. A tensão operacional do leitor é 2,5 ~ 3,3 V. No entanto, a porta de comunicação do leitor é tolerável em 5V. Portanto, ele pode ter interface direta com microcontroladores de 5V como o Arduino.

Configuração de pinos do leitor RFID MFRC522 RC522.

O leitor possui a seguinte configuração de pinos.

Conexões de circuito
O leitor RFID RC522 suporta protocolos SPI, I2C e UART para comunicação com um controlador/computador. Para Arduino, temos uma biblioteca que suporta apenas o protocolo SPI. Além disso, o SPI é o mais rápido entre todos os três protocolos de comunicação serial. É por isso que estamos interligando o leitor RC522 com o Arduino usando uma porta SPI física. Para fazer a interface do RC522 com o Arduino via SPI, siga as conexões do circuito mencionadas na tabela abaixo.

Diagrama de circuito para interface do leitor RFID MFRC522 RC522 com Arduino

Biblioteca Arduino para leitor RFID RC522
As conexões do circuito podem ser feitas após colocar o módulo em uma placa de ensaio. As conexões seguem o diagrama de circuito abaixo.
Atualmente, existem várias bibliotecas Arduino disponíveis para RC522. A biblioteca utilizada neste projeto é a Biblioteca Arduino MFRC522 de miguelbalboa, disponível no Github. Baixe a biblioteca como um arquivo ZIP. Navegue até Sketch-> Incluir Biblioteca-> Adicionar Biblioteca .ZIP no Arduino IDE. Selecione rfid-master.ZIP e a biblioteca para RC522 será adicionada ao ambiente Arduino.

Despejando dados de tags RFID para o Serial Monitor
A própria biblioteca Arduino para RC522 vem com muitos exemplos. Um dos exemplos úteis é DumpInfo. Este exemplo lê todos os dados no chip transponder RFID e os imprime no Monitor Serial. Navegue até Arquivos->Exemplos->MFRC522->DumpInfo.

Carregue o esboço no Arduino e execute o Serial Monitor. Ao ler uma etiqueta RFID MIFARE Classic-1K, a saída do Serial Monitor é a seguinte.
Mapa de memória do cartão RFID MIFARE Classic-1K
As imagens acima são capturas de tela da leitura de um cartão RFID MIFARE Classic-1K. Como pode ser visto nas imagens acima, o RC522 leu todos os dados armazenados na memória on-chip do cartão RFID. A memória on-chip é dividida em 16 setores, onde cada setor consiste em 4 blocos. Cada bloco armazena 16 bytes. Em cada setor, os três primeiros blocos são blocos de dados e o quarto bloco é o bloco final que contém duas chaves secretas e bits de acesso. Os bits de acesso determinam o status de leitura/gravação ou somente leitura do setor. O primeiro bloco contém informações do fabricante no primeiro setor, ou seja, setor 0, e um bloco de reboque segue apenas dois blocos de dados.

Esboço do Arduino

Como funciona o projeto
Neste projeto, lemos os NUIDs dos cartões RFID/key fogs e exibimos o NUID lido no Serial Monitor em formato decimal e hexadecimal. O NUID tem 4 bytes de comprimento e identifica uma etiqueta/rótulo/cartão/adesivo RFID específico.

Carregue o esboço acima para Arduino UNO/Arduino MEGA depois de fazer as conexões de circuito adequadas. Abra o Serial Monitor e configure a taxa de transmissão para 9600. Ao entrar em contato com um tag/cartão/chave, o NUID do respectivo tag/cartão/chave é lido e exibido no Serial Monitor nos formatos decimal e hexadecimal. O Sketch também compara as tags/chaves com um determinado NUID para demonstrar o controle de acesso usando cartões/chaves RFID.

O código
O esboço começa com a importação de bibliotecas SPI e MFRC522 para trabalhar com leitores RFID RC522 via protocolo SPI. As atribuições de pinos para SDA e Reset são definidas e um objeto de MFRC522 é instanciado com esses pinos. Uma variável para armazenar a chave MIFARE é definida. Uma matriz de bytes 'nuidPICC ' é definida para armazenar 4 bytes de RFID NUID. As variáveis ​​são declaradas para armazenar representações de string do NUID em formatos decimais e hexadecimais. Da mesma forma, é definida uma variável para armazenar uma representação de string da chave MIFARE.

Na função setup , a taxa de transmissão para comunicação serial com Serial Monitor é definida para 9600 bps usando o método Serial.begin . O protocolo SPI é inicializado usando o método SPI.begin . O módulo RFID inicializa o método PCD_Init no objeto RFID. Os bytes da chave MIFARE são definidos como FF e armazenados em uma representação de string em maiúsculas. A chave MIFARE é publicada no Serial Monitor.

Na função loop , o cartão/chave/etiqueta RFID é detectado chamando o método PICC_IsNewCardPresent no objeto RFID. Em seguida, o NUID/UID do cartão é lido chamando o método PICC_ReadCardSerial no objeto RFID. O tipo de cartão MIFARE é detectado usando o método PICC_GetType(rfid.uid.sak) e exibido no Serial Monitor. Em seguida, os bytes individuais do NUID são acessados ​​usando a propriedade rfid.uid.uidByte . Primeiro, os bytes são serializados em formato decimal e convertidos em um objeto string. A string contendo uma representação decimal do NUID é publicada no Serial Monitor. Em seguida, os bytes são serializados em formato hexadecimal e convertidos em um objeto string. A string contendo uma representação hexadecimal do NUID é publicada no Serial Monitor. Os bytes lidos do NUID são armazenados em uma matriz de caracteres. Esta matriz de caracteres é comparada a um NUID predefinido usando a função compareNUID definida pelo usuário. A função retorna um valor booleano usado para determinar o controle de acesso. O leitor é impedido de ler o cartão chamando o método PICC_HaltA no objeto RFID. Finalmente, a criptografia é interrompida chamando o método PCD_StopCrypto1 no objeto RFID.

Resultados

Circuito para interface do leitor RFID MFRC522 RC522 com Arduino

Arduino Serial Monitor mostrando NUID de tags RFID usando módulo RC522

Vídeo de demonstração

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.