PN532 NFC/RFID Controller Shield

The Adafruit NFC shield uses the PN532 chip-set (the most popular NFC chip on the market) and is what is embedded in pretty much every phone or device that does NFC. This chipset is very powerful, and can pretty much do it all, such as read and write to tags and cards, communicate with phones (say for payment processing), and 'act' like a NFC tag. While the controller has many capabilities, our Arduino library currently only supports reading/writing tags, and does not support phone-to-shield communication, tag emulation (which requires an external 'secure element' only available from NXP) or other more advanced features at this time.

Plug-and-Play Compatible Boards

The NFC/RFID Shield is tested and fully compatible with the following boards:
  • Arduino Uno (all revisions)
  • Arduino Mega 2560 R3 (not R2 or earlier, see below)
  • Arduino Mega ADK
  • Arduino Duemilanove and Diecimila w/ATmega328 chip
  • Arduino Due (with latest library)
The form-factor of this shield blocks the extended I/O pins on the Mega and Due, possibly limiting its usefulness with those boards.

Incompatible or Partially-Compatible Boards

This shield may work with other boards with some additional steps:

Arduino Mega 2560 R2

  • Add jumper wire from SDA on shield to pin 20 on Mega board.
  • Add jumper wire from SCL on shield to pin 21 on Mega board.
The form-factor of this shield blocks the extended I/O pins, so the above modification requires right-angle connections.

Arduino Leonardo

  • Cut trace between IRQ and pin 2 on shield.
  • Add a jumper wire from IRQ to a different pin (not 2 or 3), e.g. pin 6.
  • Modify the Arduino sketch to reference the new IRQ pin number.

Pin and Address Reference

The shield uses the following pins:
  • +5V
  • GND
  • Digital pin 2 (except w/Leonardo modification described above)
  • SDA and SCL (on boards that have these pins)
  • Analog pins 4 and 5 (see notes below)
This an I²C device (uses the Wire library) and can usually be stacked or shared with other I²C shields and devices, provided that each has a unique address. This shield has a fixed address of 0x24.

Do not use Analog pins 4 or 5 with your project in combination with this shield, even on Arduino boards that use different pins for I²C communication (Leonardo, Mega, Due). For compatibility with “classic” (pre-R3) Arduino boards, the shield connects SDA and SCL to Analog pins 4 and 5, respectively; communication and analog readings would mutually interfere. Leonardo users should likewise avoid Digital pins 2 and 3 when using I²C.

Untested Boards and Other Notes

  • Arduino Mega 1280: compatibility is likely similar to the Mega 2560 R2; extra jumper wires would be required as explained above for that board, but the shape may make that difficult.
  • Adafruit Menta: equivalent to Arduino Duemilanove w/328 chip; almost certainly compatible. However, the shape of the shield will require removing the board from its tin.
  • Arduino Duemilanove and Diecimila w/ATmega168 chip: electrically and mechanically compatible with 328 chip, but has only half the RAM and program space. The library is not especially memory hungry, so this is very likely compatible but not 100% assured.
  • Arduino NG or older: possibly compatible, memory constraints permitting.
If you have specific experience with this shield on the above boards or others, please use the Feedback & Corrections link at left. Thanks!

If experiencing trouble with a board listed as “compatible,” review the introduction for tips and visit the Adafruit Forums for assistance.
This guide was first published on Aug 14, 2013. It was last updated on Aug 14, 2013. This page (PN532 NFC/RFID Controller Shield) was last updated on Aug 23, 2019.