Piicodev rfid module + esp32 / arduino

So I have an ESP32 and one of these modules: PiicoDev RFID Module (NFC 13.56MHz) | Core Electronics Australia

I assumed that it would work over the QWIIC interface similar to other RFID modules.

Sparkfun have a QWIIC RFID library I have tried: SparkFun_Qwiic_RFID_Arduino_Library/SparkFun_Qwiic_Rfid.cpp at master · sparkfun/SparkFun_Qwiic_RFID_Arduino_Library · GitHub

But whilst nothing blows up and things seem to initialise, the RFID module never detects a tag. So before I go down the rabbit hole of making this work, I just wanted to see if anyone else has used piicodev modules like this previously?

  • is a piicodev module compatible with qwiic?
  • has anyone used this rfid module on the esp32 / arduino, and if so, how did it go?
  • anything else?

The code all seems relatively straight forward and I thought all the RFID boards were essentially the same, so am hoping to make it work, otherwise I’ll find a different RFID board.


Hey Michael,
Welcome to the forums!

PiicoDev devices are generally not natively supported for use with Arduino, though we have got them working with ESP32 devices using MicroPython, you can check out the factory episode that mentioned this compatibility here.

Generally Qwiic interface doesn’t allow compatibility with PiicoDev devices as it works on an Arduino base and not using MicroPython. I will say though that it can work by using the i2c scripting for the chipset that’s used in some PiicoDev boards (such as the Atmospheric Sensor that uses the BME280).


It seems that the PiicoDev RFiD MicroPython library has some inspiration from this MFRC522 i2c Arduino library. The PiicoDev uses the same MFRC522 chip, I haven’t personally tested it, but it might be worth trying that out to see if it will interface with the PiicoDev board.



Thanks Jacob & Blayden. I actually started going down the MFRC522 path yesterday, after digging through the piico code base & noticed it was reference.

And after playing around a bit, it actually works out of the box, which is a nice surprise. The example code works basically as-is.

For reference, the reset pin on the ESP32 is 3, so the startup code is: MFRC522 rfid = MFRC522(0x2C, 3);

1 Like