

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.