Skip to content
A

NFC / RFID

Interfacing PN532 NFC / RFID with Arduino Uno

What is the PN532?

PN532 practical reference

A more capable NFC controller than the RC522, supporting card emulation and peer-to-peer NFC in addition to basic tag reading. The PN532 handles the full range of NFC operation modes — reading and writing common tag types, emulating a card itself (so a project can act like an access card), and peer-to-peer communication with another NFC device like a smartphone — making it the preferred choice over the simpler RC522 whenever a project needs more than just read/write access-control tag scanning.

Key specifications

  • Chipset: NXP PN532 NFC/RFID controller
  • Operating voltage: 3.3V DC (5V-tolerant on some breakout boards with onboard level shifting — check your specific module)
  • Operating current: ~100-150 mA during active RF operation
  • Frequency: 13.56MHz (NFC/RFID)
  • Supported tag types: ISO/IEC 14443A (Mifare Classic, Mifare Ultralight, NTAG), and FeliCa
  • Operation modes: Read/write tag mode, card emulation mode, and peer-to-peer (P2P) mode for direct NFC device-to-device communication
  • Read range: ~5-7cm typical, antenna-design dependent
  • Interface: Selectable I2C, SPI, or UART depending on the DIP switch/solder jumper setting on the breakout board

Pinout and connection notes

Most PN532 breakout boards have a small switch or set of solder jumpers to select between I2C, SPI, and UART interface modes — double-check this setting matches your wiring and library configuration, since a mismatched mode is the most common reason a PN532 board fails to respond. I2C mode is the simplest for quick prototyping with common Arduino libraries (e.g. Adafruit's PN532 library).

  • VCC: Power, 3.3-5V DC depending on breakout board
  • GND: Ground
  • SDA / MOSI / TX: Data line — role depends on selected interface mode (I2C/SPI/UART)
  • SCL / SCK / RX: Clock or receive line — role depends on selected interface mode
  • IRQ: Interrupt output, signals when a tag/device is detected
  • RSTO / RSTPDN: Reset / power-down control pin

Integration checklist

  1. Confirm the exact part number and breakout-board revision.
  2. Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
  3. Check controller pin assignments and bus address or interface mode against the example code.
  4. Power up with external loads disconnected, then test signals before full integration.
  5. If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.

Troubleshooting and reproducibility

Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.

Setting Up PN532 with Arduino Uno

Library

Adafruit PN532 by Adafruit

Arduino IDE → Tools → Manage Libraries → search "Adafruit PN532" → Install

Wiring

Component pinArduino Uno pinNote
VCC5V
GNDGND
SDAA4I2C data — set the onboard DIP switches/jumper to I2C mode.
SCLA5I2C clock.
IRQ, RSTO—Not required for basic polling reads; leave unconnected.

Swipe sideways to see every column →

C++
  • Most PN532 breakout boards have a small switch or solder jumper selecting I2C / SPI / HSU (UART) mode — this wiring only works with the switch set to I2C, which is usually the default but worth checking.
  • The module's antenna needs the card within roughly 3-5cm — this is a short-range NFC reader, not a long-range RFID reader.
  • Reading a card UID (as above) works out of the box; reading/writing NDEF data blocks needs the library's more advanced Mifare classic examples and correct sector authentication keys.

Related Components

Related Guides & Projects