The RFID RC522 module (MFRC522 chip) reads and writes RFID/NFC tags operating at 13.56 MHz. It communicates with microcontrollers over an SPI interface using lines for chip-select (SDA/NSS), clock (SCK), data (MOSI/MISO), plus reset (RST) and an optional interrupt (IRQ), powered from 3.3V.
| Pin | Signal | Description |
|---|---|---|
SDA |
chip-select | SPI slave-select/chip-select input for the RC522, often labeled SDA on this module. |
SCK |
SCK | SPI clock input from the microcontroller to the RC522. |
MOSI |
MOSI | SPI data input to the RC522 from the microcontroller. |
MISO |
MISO | SPI data output from the RC522 to the microcontroller. |
IRQ |
interrupt | Interrupt output from the RC522 for events such as card detection or FIFO status. |
GND |
ground | Ground reference for power and logic signals. |
RST |
reset | Reset/power-down control input for the RC522; drive low to reset. |
3.3V |
power | 3.3 V power supply input for the RC522 module; do not power from 5 V. |
| From | To | Wire |
|---|---|---|
board:3.3V |
x1:3.3V |
darkorange |
board:GND |
x1:GND |
black |
board:D10 |
x1:SDA |
green |
board:D13 |
x1:SCK |
blue |
board:D11 |
x1:MOSI |
yellow |
board:D12 |
x1:MISO |
purple |
board:D9 |
x1:RST |
cyan |
This example was written and compile-checked for the arduino-uno. Codey Online adapts it to any other supported board for you.
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
SPI.begin();
mfrc522.PCD_Init();
Serial.println(F("RC522 RFID reader ready."));
Serial.println(F("Tap an NFC/RFID card or tag near the reader."));
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
Serial.print(F("Card UID: "));
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (mfrc522.uid.uidByte[i] < 0x10) {
Serial.print(F("0"));
}
Serial.print(mfrc522.uid.uidByte[i], HEX);
if (i < mfrc522.uid.size - 1) {
Serial.print(F(" "));
}
}
Serial.println();
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
Describe what you want to build. Codey Online writes the code, draws the wiring diagram, compiles it and flashes your board straight from the browser.
Start for free