RC522 RFID/NFC Reader Module
Low-cost 13.56MHz RFID reader for access control, attendance, and authentication projects.
Wiring & code for
RC522 practical reference
A low-cost SPI RFID/NFC reader operating at 13.56MHz, the go-to choice for DIY access-control and attendance-tracking builds. Built around NXP's MFRC522 chip, it reads (and writes) common Mifare-family tags and cards over SPI, letting a microcontroller check a scanned card's unique ID against a stored list to grant or deny access — the default entry point for anyone building an RFID door lock, attendance system, or simple tag-based authentication project.
Key specifications
- Chipset: NXP MFRC522 13.56MHz RFID/NFC reader IC
- Operating voltage: 3.3V DC (NOT 5V tolerant on SPI or logic pins)
- Operating current: ~13-26 mA typical during read operations
- Frequency: 13.56MHz
- Supported tags: Mifare Classic 1K/4K, Mifare Ultralight, and other ISO/IEC 14443A compliant cards/tags
- Read range: ~2.5-5cm typical, antenna and card dependent
- Interface: SPI (also supports I2C/UART on the bare IC, but most breakout boards hardwire SPI only)
- Included accessories: Modules commonly ship with a keychain tag and a card, both pre-programmed with unique IDs for testing
Pinout and connection notes
The pin labeled SDA on most RC522 breakout boards is actually the SPI chip-select line, not an I2C data pin — a frequent point of confusion for newcomers expecting I2C wiring. All logic pins are 3.3V only, so when wiring to a 5V Arduino Uno, use a logic-level shifter on MOSI, SCK, and RST (MISO can be safely read directly since the RC522 drives it).
- 3.3V: Power, 3.3V DC only — do not supply 5V
- RST: Active-LOW reset pin
- GND: Ground
- MISO: SPI data out
- MOSI: SPI data in
- SCK: SPI clock
- SDA (SS/CS): SPI chip select, active LOW (labeled SDA on the module despite being an SPI pin, a common source of confusion)
- IRQ: Interrupt output, optional — signals when a card enters the field
Integration checklist
- Confirm the exact part number and breakout-board revision.
- Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
- Check controller pin assignments and bus address or interface mode against the example code.
- Power up with external loads disconnected, then test signals before full integration.
- If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.
Troubleshooting and reproducibility
Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.
Board Integration
Related