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
| 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 |
RC522 Pinout
| Pin | Name | Description |
|---|---|---|
| 1 | 3.3V | Power, 3.3V DC only — do not supply 5V |
| 2 | RST | Active-LOW reset pin |
| 3 | GND | Ground |
| 4 | MISO | SPI data out |
| 5 | MOSI | SPI data in |
| 6 | SCK | SPI clock |
| 7 | SDA (SS/CS) | SPI chip select, active LOW (labeled SDA on the module despite being an SPI pin, a common source of confusion) |
| 8 | IRQ | Interrupt 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)
Wiring
| Component pin | Arduino Uno pin | Note |
|---|---|---|
| VCC (3.3V) | 3.3V | RC522 is 3.3V-only — do NOT wire VCC to the Uno's 5V pin |
| GND | GND | — |
| RST | D9 | Configurable in the sketch (RST_PIN) |
| MISO | D12 | Hardware SPI — fixed pin |
| MOSI | D11 | Hardware SPI — fixed pin |
| SCK | D13 | Hardware SPI — fixed pin |
| SDA (SS) | D10 | Configurable in the sketch (SS_PIN) — this is the pin labeled SDA on the board |
Example code
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

Arduino Uno R3 Pinout: Every Pin Explained (Digital, Analog, PWM, Power)
Complete Arduino Uno R3 pinout reference: all 14 digital pins, 6 analog inputs, PWM, UART, SPI, I2C, AREF, and power rails explained with wiring tips and common mistakes.

Ultimate Arduino Mega 2560 Pinout Guide: Complete Power & I/O Reference
Master the Arduino Mega 2560 pinout. Detailed reference for all 54 digital pins, 16 analog inputs, PWM, UARTs, SPI, I2C, interrupts, and power. Includes a printable table and practical wiring tips.

Interfacing HC-SR04 Ultrasonic Sensor with Arduino
Measure distance accurately using ultrasonic sound waves and an Arduino Uno — no complex math, no expensive hardware.
HC‑SR04 Ultrasound Distance Measurement with Arduino – Parking Alert (LCD & Buzzer)
Learn HC‑SR04 ultrasound distance measurement with Arduino Uno. Build a parking alert system with 16x2 LCD and buzzer – shows distance and beeps faster as you approach.