

The RC522 RFID Module, manufactured by NXP Semiconductors (Part ID: MFRC522-based RC522 Module), is a compact and cost-effective device designed for reading and writing RFID tags. Operating at a frequency of 13.56 MHz, it supports communication with a variety of RFID cards and tags, including MIFARE cards. This module is widely used in applications such as:
Its small size, low power consumption, and SPI communication interface make it an excellent choice for integration into microcontroller-based systems, including Arduino projects.








| Parameter | Value |
|---|---|
| Operating Frequency | 13.56 MHz |
| Communication Protocol | SPI, I2C, UART (default: SPI) |
| Operating Voltage | 2.5V to 3.3V (logic level) |
| Power Supply Voltage | 3.3V |
| Current Consumption | 13-26 mA (active mode) |
| Maximum Data Rate | 10 Mbps |
| Supported RFID Standards | ISO/IEC 14443 A/MIFARE |
| Reading Distance | Up to 5 cm (depending on tag type) |
| Dimensions | 40mm x 60mm |
The RC522 RFID Module has 8 pins for interfacing. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (3.3V). |
| RST | 2 | Reset pin. Active LOW. Used to reset the module. |
| GND | 3 | Ground connection. |
| IRQ | 4 | Interrupt pin. Can be used to signal events to the microcontroller. |
| MISO | 5 | SPI Master-In-Slave-Out (data output from the module). |
| MOSI | 6 | SPI Master-Out-Slave-In (data input to the module). |
| SCK | 7 | SPI Clock. Synchronizes data transfer between the module and microcontroller. |
| SDA/SS | 8 | SPI Slave Select. Used to enable communication with the module. |
Below is an example Arduino sketch to read RFID tags using the RC522 module:
#include <SPI.h>
#include <MFRC522.h>
// Define RC522 module pins
#define RST_PIN 9 // Reset pin connected to Arduino pin 9
#define SS_PIN 10 // Slave Select pin connected to Arduino pin 10
MFRC522 rfid(SS_PIN, RST_PIN); // Create an instance of the MFRC522 class
void setup() {
Serial.begin(9600); // Initialize serial communication
SPI.begin(); // Initialize SPI bus
rfid.PCD_Init(); // Initialize the RC522 module
Serial.println("Place your RFID card near the reader...");
}
void loop() {
// Check if an RFID card is present
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return; // Exit if no card is detected
}
// Print the UID of the detected card
Serial.print("Card UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i], HEX); // Print each byte in hexadecimal
Serial.print(" ");
}
Serial.println();
// Halt the card to stop further communication
rfid.PICC_HaltA();
}
| Issue | Possible Cause | Solution |
|---|---|---|
| Module not responding | Incorrect wiring or loose connections | Double-check all connections and ensure proper pin mapping. |
| Unable to read RFID tags | Tag is out of range or incompatible | Ensure the tag is within 5 cm and supports ISO/IEC 14443 A/MIFARE standards. |
| Serial monitor shows garbled output | Incorrect baud rate in the Arduino sketch | Set the correct baud rate (e.g., 9600) in both the sketch and serial monitor. |
| Module overheating | Powered with 5V instead of 3.3V | Use a 3.3V power supply to avoid damage. |
| Multiple tags not detected simultaneously | Module supports only one tag at a time | Ensure only one tag is within the reading range at a time. |
Can the RC522 module write data to RFID tags?
What is the maximum range of the RC522 module?
Can I use the RC522 module with a 5V microcontroller?
Does the module support NFC?
By following this documentation, you can effectively integrate the RC522 RFID Module into your projects and troubleshoot common issues.