MFRC522 é um CI leitor/gravador altamente integrado para comunicação sem contato com uma frequência de 13,56 MHz.
O transmissor interno do MFRC522 é capaz de acionar uma antena leitora/gravadora projetada para comunicar-se com cartões e transponders ISO/IEC 14443 A/MIFARE sem necessidade de circuito ativo.
O RFID (Radio-Frequency IDentification) MFRC522 é compatível com os produtos MF1xxS20, MF1xxS70 e MF1xxS50. Suporta comunicação sem contato e usa alta velocidade de transferência MIFARE de até 848 kBd em ambas as direções.
Especificações MFRC522
-
- Corrente de trabalho: 13-26mA / DC 3.3V;
- Ociosa: 10-13mA / 3.3V;
- Corrente Slep: < 80uA – Pico de corrente: < 30 mA;
- Freqüência de operação: 13,56MHz;
- Tipos de cartões suportados: MF1xxS20, MF1xxS70, MF1xxS50, MIFARE UltraLight, MIFARE Pro e MIFARE Desfire;
- Temperatura de operação: -20 a 80 graus Celsius;
- Temperatura ambiente: -40 a 85 graus Celsius;
- Umidade relativa: 5% – 95%;
- Parâmetro de Interface SPI;
- Taxa de transferência: 10 Mbit/s;
- Dimensões: 86 x 54 mm;
- Peso: 21g.
Interfaces de host fornecidas
-
- Interface Periférica Serial (SPI);
- UART serial (semelhante ao RS232 com níveis de tensão dependentes da fonte de alimentação dos pinos);
- Interface de barramento I2C.
Recursos MFRC522
-
- Circuito analógico altamente integrado para desmodular e decodificar respostas;
- Drivers de saída em buffer para conectar uma antena com o número mínimo de componentes externos;
- Suporta ISO/IEC 14443 A/MIFARE;
- Distância de operação típica no modo de leitura / gravação de até 50 mm, dependendo do tamanho e ajuste da antena;
- Criptografia suportada MF1xxS20, MF1xxS70 e MF1xxS50 no modo de leitura / gravação;
- Suporta ISO/IEC 14443 Uma comunicação com velocidade de transferência mais alta, até 848 kBd;
- Compatibilidade MFIN/MFOUT;
- Fonte de alimentação interna adicional ao IC do cartão inteligente conectado via MFIN/MFOUT;
- Interfaces de host suportadas:
- SPI de até 10 Mbit / s;
- Interface de barramento I2C de até 400 kBd no modo Rápido, até 3400 kBd no modo de alta velocidade;
- UART serial RS232 de até 1228,8 kBd, com níveis de tensão dependentes da alimentação de tensão dos pinos.
- O buffer FIFO lida com o envio e recebimento de 64 bytes;
- Modos de interrupção flexíveis;
- Reinicialização total com função de baixa potência;
- Power-down pelo modo de software;
- Oscilador interno para conexão com cristal de quartzo de 27,12 MHz;
- Fonte de alimentação de 2,5 V a 3,3 V;
- Coprocessador CRC;
- Pinos de I/O programáveis;
- Autoteste interno.
-
Projeto
Será apresentado um projeto bem simples de aplicação do Módulo RFID MFRC522 13,56 MHZ onde após a leitura do cartão correto o LED Verde permanecerá aceso e após a leitura do cartão incorreto o LED Vermelho ficará aceso.
Conexão do MFRC522 no Arduino
Existem diferenças de conexão do módulo MFRC522 aos modelos de Arduino a que devemos cuidadosamente observar para o correto funcionamento do dispositivo. Então é só fazer a ligação ao seu respectivo Arduino conforme a tabela.
Esquema de Conexão MFRC522 – Projeto
Código
Primeiramente, devemos carregar a biblioteca MFRC522 na IDE Arduino, em seguida teremos que identificar o código do cartão, utilizando um exemplo da própria biblioteca.
Carregue esse código no Arduino, abra o Monitor Serial, aproxime o cartão de que deseja obter a identificação e espere alguns segundos até parar a análise. Então, feito isso, copie este código e guarde para utilizar no projeto.
Em seguida, faça as alterações e carregue o código.
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 #define LED_R 5//LED Vermelho #define LED_G 6 //LED Verde char st[20]; MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { // Inicia a serial Serial.begin(9600); // Inicia SPI bus SPI.begin(); // Inicia MFRC522 mfrc522.PCD_Init(); Serial.println("Aproxime o seu cartao/TAG do leitor"); Serial.println(); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); digitalWrite (LED_G, HIGH); digitalWrite (LED_R, HIGH); } void loop() { //digitalWrite (LED_G, LOW); //digitalWrite (LED_R, HIGH); // Busca novos cartões if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Seleciona um catão a ser lido if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Mostra ID na serial Serial.print("ID da tag:"); String conteudo = ""; byte letra; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Mensagem : "); conteudo.toUpperCase(); if ((conteudo.substring(1) == "B5 8B D1 B5" )) //UID CARTÃO { Serial.println("Acesso autorizado !"); Serial.println(); digitalWrite (LED_G, HIGH); digitalWrite (LED_R, LOW); delay(2000);//Delay apagar LED Verde } else if ((conteudo.substring(1) != "B5 8B D1 B5" )) //UID CARTÃO { digitalWrite (LED_G, LOW); digitalWrite (LED_R, HIGH); delay(2000);//Delay apagar LED Vermelho } digitalWrite (LED_G, HIGH); digitalWrite (LED_R, HIGH); }
Com o código carregado, percebemos inicialmente que os dois LEDs estão acesos. Ao aproximar o cartão, o LED vermelho apaga, permanecendo o verde aceso, informando que é o cartão correto. E ao aproximarmos o chaveiro, o LED verde apaga, permanecendo o vermelho, informando que este não está cadastrado.