RC522 RFID with Raspberry Pi Pico 2

Wiring for the RC522 RFID reader (13.56 MHz) on the Raspberry Pi Pico 2 (RP2350, 3.3 V logic), chosen with the same pin rules BoardPilot uses: default buses first, and no pins that are used for flash, USB, the debugger or booting.

Wiring

RC522 RFID pinRoleRaspberry Pi Pico 2 pinNotes
SDASPI chip selectGP17This is the SPI chip select (CS), despite the SDA label
SCKSPI clockGP18
MOSISPI MOSIGP19
MISOSPI MISOGP16
IRQInterruptGP15Interrupt, optional. Leave unconnected
GNDGroundGND
RSTInput to the partGP14Reset, active LOW
3.3VPower3V3(OUT)3.3 V only. Never 5 V

Check before you power it on

Test code (Arduino)

// Library: MFRC522 (miguelbalboa)
#include <SPI.h>
#include <MFRC522.h>

MFRC522 rfid(17, 14);  // SDA is the SPI chip select

void setup() {
  Serial.begin(115200);
  SPI.begin();
  rfid.PCD_Init();
  rfid.PCD_DumpVersionToSerial();  // 0x91 or 0x92 means the reader answers
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
  for (byte i = 0; i < rfid.uid.size; i++) Serial.print(rfid.uid.uidByte[i], HEX);
  Serial.println();
  rfid.PICC_HaltA();
}

Arduino board: rp2040:rp2040:rpipico2. If the board is not found, hold the BOOTSEL button while plugging in the USB cable.

Questions

Which Raspberry Pi Pico 2 pins do I use for the RC522 RFID?

SDA → GP17, SCK → GP18, MOSI → GP19, MISO → GP16, IRQ → GP15, GND → GND, RST → GP14, 3.3V → 3V3(OUT).

Does the RC522 RFID work with the Raspberry Pi Pico 2 at 3.3 V?

Yes: the RC522 RFID runs at 3.3 V and the Raspberry Pi Pico 2 uses 3.3 V signals, so no level shifting is needed.

BoardPilot checks this wiring in 3D as you build it, and finds crossed or missing wires on the real board.

Download BoardPilot

Full Raspberry Pi Pico 2 pinout · RC522 RFID reader (13.56 MHz): all pins and data

The RC522 RFID on other boards

Other parts on the Raspberry Pi Pico 2