Arduino - RFID/NFC

Neste tutorial, vamos aprender a usar RFID/NFC com Arduino. O sistema RFID/NFC tem dois componentes: leitor e tag. Existem dois leitores RFID/NFC populares: o leitor RFID/NFC RC522 e o PN532. Este tutorial foca no leitor RFID/NFC RC522. O leitor RFID/NFC PN532 será apresentado em um próximo tutorial.

O leitor RFID/NFC RC522 (também chamado de Módulo RFID-RC522) pode:

Dentre as capacidades acima, para o Arduino, a leitura do UID é a mais utilizada. Este tutorial foca na leitura do UID da tag RFID/NFC. As outras serão apresentadas nos próximos tutoriais

Sobre o Módulo RFID-RC522

Pinagem do Módulo RFID-RC522

O RFID-RC522 tem 8 pinos; alguns deles são pinos comuns, e os outros são compartilhados entre três modos de comunicação: SPI, I2C e UART. Apenas um modo de comunicação pode ser usado por vez. Os pinos são:

  • Pino GND: precisa ser conectado ao GND (0V)
  • Pino VCC: precisa ser conectado ao VCC (3.3V)
  • Pino RST: é um pino de reset e desligamento. Quando este pino fica em nível baixo, o desligamento forçado (hard power-down) é ativado. Na borda de subida, o módulo é reiniciado.
  • Pino IRQ: é um pino de interrupção que pode alertar o microcontrolador quando uma tag RFID se aproxima.
  • Pino MISO/SCL/TX: funciona como MISO quando a interface SPI está ativada, como SCL quando a interface I2C está ativada e como TX quando a interface UART está ativada.
  • Pino MOSI: funciona como MOSI quando a interface SPI está ativada.
  • Pino SCK: funciona como SCK quando a interface SPI está ativada
  • Pino SS/SDA/RX: funciona como SS quando a interface SPI está ativada, como SDA quando a interface I2C está ativada e como RX quando a interface UART está ativada.
Pinagem do RFID-RC522

※ Nota:

  • A ordem dos pinos pode variar de acordo com o fabricante. SEMPRE use as etiquetas impressas no módulo. A imagem acima mostra a pinagem do módulo do fabricante DIYables.
  • Não conecte o pino VCC ao pino 5V. Isso provavelmente vai destruir o seu módulo.
  • A biblioteca MFRC522 suporta apenas o modo SPI. Por isso, este tutorial usa apenas a comunicação SPI.

Como o RFID/NFC Funciona

O RFID/NFC tem dois componentes: leitor e tag.

  • O leitor é composto por um módulo de radiofrequência e uma antena que gera um campo eletromagnético de alta frequência.
  • A tag normalmente é um dispositivo passivo, que não precisa de fonte de alimentação. A tag contém um microchip que armazena e processa informações, e uma antena para receber e transmitir sinais. A tag é usada para armazenar as informações: UID (ID Único) e dados.
sistema rfid nfc com arduino

Para ler as informações de uma tag, a tag precisa estar bem próxima do leitor (não é necessária linha de visão direta). O processo de leitura:

  • O leitor gera um campo eletromagnético que faz os elétrons se moverem pela antena da tag e, em seguida, alimenta o chip.
  • O chip dentro da tag então responde enviando as informações solicitadas de volta ao leitor na forma de outro sinal de rádio.
  • O leitor detecta o sinal e transforma o sinal em dados
  • O Arduino lê os dados do leitor.

Diagrama de Ligação entre o Módulo RFID-RC522 e o Arduino

O Módulo RFID-RC522 foi projetado para operar em nível de 3.3V, enquanto os pinos de saída do Arduino produzem nível de 5V. Então:

  • Por segurança, é preciso regular a tensão de 5V dos pinos do Arduino para 3.3V antes de conectar ao Módulo RC522
  • Para simplificar e para fins de teste, é possível conectar os pinos do Arduino diretamente ao Módulo RC522, mas isso pode fazer o Arduino parar de funcionar corretamente em alguns casos.

Este tutorial traz dois diagramas de ligação diferentes para os dois casos:

  • Diagrama de Ligação entre o RC522 e o Arduino sem regulador de tensão
Diagrama de ligação do Arduino com RFID RC522

This image is created using Fritzing. Click to enlarge image

  • Diagrama de Ligação entre o RC522 e o Arduino com regulador de tensão
Diagrama de ligação do Arduino com RFID RC522 com tensão regulada

This image is created using Fritzing. Click to enlarge image

Como mostra o diagrama de ligação acima, um par de resistores de 1kOhM e 2kOhm é usado para regular 5V para 3.3V. Não é necessário ajustar a tensão entre o pino do Arduino e o pino MISO do módulo RC522. No entanto, é necessário regular a tensão entre os pinos do Arduino e os pinos SS, SCK, MOSI e RST do módulo RC522.

Tabela de ligação do Módulo RFID/NFC RC522 e o Arduino

RFID/NFC RC522 Arduino
SS → 10
SCK → 13
MOSI → 11
MISO → 12
IRQ(não conectado)
GND → GND
RST → 5
VCC → 3.3V

Código RFID/NFC para Arduino

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-rfid-nfc */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 5 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID/NFC Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); //Serial.print("RFID/NFC Tag Type: "); //Serial.println(rfid.PICC_GetTypeName(piccType)); // print NUID in Serial Monitor in the hex format Serial.print("UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Passos Rápidos

  • Vá até o ícone Libraries na barra esquerda da Arduino IDE.
  • Pesquise “MFRC522” e encontre a biblioteca da GithubCommunity
  • Clique no botão Install para instalar a biblioteca MFRC522.
Biblioteca MFRC522 para Arduino
  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para carregar o código no Arduino
  • Abra o Serial Monitor
  • Aproxime várias tags RFID/NFC do módulo RFID-RC522
  • Veja o UID no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
Tap RFID/NFC tag on reader RFID/NFC tag Type: MIFARE 1KB UID: 3A C9 6A CB RFID/NFC tag Type: MIFARE Ultralight or Ultralight C UID: 04 64 34 5A 1E 4E 80
Ln 11, Col 1
Arduino Uno on COM15
2

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!