ESP32 - RFID/NFC
Este tutorial ensina como usar o ESP32 com o leitor RFID/NFC RC522 para ler as informações de uma tag RFID/NFC.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.
Sobre o Módulo RFID-RC522
Pinagem

O módulo RFID-RC522 tem 8 pinos, e alguns pinos são compartilhados entre três interfaces de comunicação: SPI, I2C e UART. Apenas um modo de comunicação pode ser usado por vez. Os pinos são:
- Pino GND: conecte este pino ao GND (0V)
- Pino VCC: conecte este pino ao VCC (3.3)
- Pino RST: é um pino de reset e de desligamento. Quando este pino vai para LOW, 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 avisar o ESP32 quando uma tag RFID entra na sua área de detecção.
- Pino MISO/SCL/TX: funciona como:
- Pino MISO se a interface SPI estiver ativada
- Pino SCL se a interface I2C estiver ativada
- Pino TX se a interface UART estiver ativada.
- Pino MOSI: funciona como MOSI se a interface SPI estiver ativada.
- Pino SCK: funciona como SCK se a interface SPI estiver ativada
- Pino SS/SDA/RX: funciona como:
- Pino SS se a interface SPI estiver ativada
- Pino SDA quando a interface I2C estiver ativada
- Pino RX quando a interface UART estiver ativada.
- A ordem dos pinos pode variar de acordo com o fabricante. SEMPRE use os rótulos impressos no módulo. A imagem acima mostra a pinagem dos módulos do fabricante DIYables.
- O módulo RFID-RC522 funciona com 3.3V. Não conecte o pino VCC do módulo RFID-RC522 ao 5V. O 5V pode queimar o módulo RFID-RC522.
- Este tutorial usa a interface SPI para a comunicação entre o ESP32 e o módulo RFID-RC522.
※ Nota:
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.
A tabela de ligação entre o Módulo RFID/NFC RC522 e o ESP32
| Módulo RFID/NFC RC522 | ESP32 |
|---|---|
| Pino SS | → (29) GPIO5 |
| Pino SCK | → (30) GPIO18 |
| Pino MOSI | → (37) GPIO23 |
| Pino MISO | → (31) GPIO19 |
| Pino IRQ (não conectado) | |
| Pino GND | → GND |
| Pino RST | → (11) GPIO27 |
| Pino VCC | → 3.3V |
Código RFID/NFC para ESP32
/*
* Este código de ESP32 foi desenvolvido por pt.newbiely.com
* Este código de ESP32 é disponibilizado ao público sem nenhuma restrição.
* Para tutoriais completos e diagramas de ligação, visite:
* https://pt.newbiely.com/tutorials/esp32/esp32-rfid-nfc
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5 // ESP32 pin GPIO5
#define RST_PIN 27 // ESP32 pin GPIO27
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin(); // init SPI bus
rfid.PCD_Init(); // init MFRC522
Serial.println("Tap an RFID/NFC tag on the RFID-RC522 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 UID 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
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
- Clique no ícone Libraries na barra esquerda da Arduino IDE.
- Digite “MFRC522” na caixa de pesquisa e procure a biblioteca da GithubCommunity
- Instale a biblioteca clicando no botão Install.

- Copie o código acima e cole na Arduino IDE.
- Compile e faça o upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
- Abra o Serial Monitor na Arduino IDE

- Aproxime várias tags RFID/NFC do módulo RFID-RC522
- Veja o UID impresso no Serial Monitor
8
Serial.println("Hello World!");
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
Tap an RFID/NFC tag on the RFID-RC522 reader
RFID/NFC tag Type: MIFARE 1KB
UID: 2B B8 59 B1
RFID/NFC tag Type: MIFARE Ultralight or Ultralight C
UID: 15 75 46 7A 2C 5B 7E