Skip to content
RC522

NFC / RFID

Interfacing RC522 NFC / RFID with Arduino Uno

What is the RC522?

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.

Specifications

ChipsetNXP MFRC522 13.56MHz RFID/NFC reader IC
Operating voltage3.3V DC (NOT 5V tolerant on SPI or logic pins)
Operating current~13-26 mA typical during read operations
Frequency13.56MHz
Supported tagsMifare Classic 1K/4K, Mifare Ultralight, and other ISO/IEC 14443A compliant cards/tags
Read range~2.5-5cm typical, antenna and card dependent
InterfaceSPI (also supports I2C/UART on the bare IC, but most breakout boards hardwire SPI only)
Included accessoriesModules commonly ship with a keychain tag and a card, both pre-programmed with unique IDs for testing

RC522 Pinout

PinNameDescription
13.3VPower, 3.3V DC only — do not supply 5V
2RSTActive-LOW reset pin
3GNDGround
4MISOSPI data out
5MOSISPI data in
6SCKSPI clock
7SDA (SS/CS)SPI chip select, active LOW (labeled SDA on the module despite being an SPI pin, a common source of confusion)
8IRQInterrupt output, optional — signals when a card enters the field

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).

Setting Up RC522 with Arduino Uno

Library

MFRC522 by GithubCommunity (miguelbalboa)

Search "MFRC522" in Library Manager (Sketch > Include Library > Manage Libraries)

Library guide

Wiring

Component pinArduino Uno pinNote
VCC (3.3V)3.3VRC522 is 3.3V-only — do NOT wire VCC to the Uno's 5V pin
GNDGND
RSTD9Configurable in the sketch (RST_PIN)
MISOD12Hardware SPI — fixed pin
MOSID11Hardware SPI — fixed pin
SCKD13Hardware SPI — fixed pin
SDA (SS)D10Configurable in the sketch (SS_PIN) — this is the pin labeled SDA on the board

Example code

C++

The Uno's onboard 3.3V regulator only supplies ~50mA — fine for the RC522 alone, but if you add other 3.3V peripherals on the same rail, reads can get flaky. Power the RC522 from a dedicated 3.3V source if that happens.

Related Components

Related Guides & Projects