2026-05-20 16:06:48 -07:00
2026-05-20 16:06:45 -07:00
2026-05-20 16:06:48 -07:00
2026-05-20 16:06:46 -07:00
2026-05-20 16:06:44 -07:00

NFC Scanner - ESP32 & PN532

A comprehensive NFC/RFID scanner that extracts maximum legal/public data from cards using ESP32-S3 and PN532.

Hardware Setup

Components

  • XIAO ESP32-S3 - Main microcontroller
  • Elechouse PN532 NFC Module - NFC/RFID reader
  • Battery (optional) - For portable operation

Wiring (SPI Mode)

XIAO ESP32-S3 PN532 Function
GPIO9 (MOSI) MOSI SPI Data Out
GPIO8 (MISO) MISO SPI Data In
GPIO7 (SCK) SCK SPI Clock
GPIO1 (A0/D0) SS/SDA Chip Select
5V or 3V3 VCC Power
GND GND Ground

PN532 Configuration

Set your Elechouse PN532 to SPI mode using the onboard DIP switches/jumpers according to the module's silkscreen.

Software Features

NFC Technologies Supported

  • ISO14443 Type A - MIFARE Classic, Ultralight, NTAG
  • ISO14443 Type B - Government/corporate cards
  • FeliCa - Japanese transit cards
  • Multi-tech discovery with anti-collision

Data Extraction

  • UID/NUID - Unique identifiers
  • ATQA/SAK/ATS - Protocol parameters
  • Type 2 Cards: CC, TLVs, user pages, GET_VERSION, lock bits, signature
  • Type 4 Cards: NDEF applications, CC/NDEF files, frame size limits
  • FeliCa: System codes, service lists, public blocks
  • NDEF Parsing - All record types and payloads
  • Timing Statistics - Performance metrics

Web Interface

  • WiFi Access Point - Creates its own network "NFC-Scanner"
  • REST API - /version, /scan, /dump endpoints
  • Simple UI - Scan and dump buttons with JSON display
  • Real-time Results - Immediate feedback

Getting Started

1. Hardware Assembly

  1. Wire the PN532 to ESP32-S3 according to the wiring table above
  2. Set PN532 to SPI mode using DIP switches
  3. Connect battery to BAT pads (optional)

2. Software Setup

  1. Install PlatformIO in VS Code
  2. Open this project folder
  3. Build and upload: pio run -t upload

3. Usage

  1. Power on the device
  2. Connect to WiFi network: NFC-Scanner (password: nfc123456)
  3. Open browser to: http://192.168.4.1
  4. Use Scan/Dump buttons to read NFC cards

API Endpoints

GET /version

Returns PN532 firmware version and system info.

GET /scan

Performs one-shot multi-tech discovery, returns UID and card type.

GET /dump

Extracts maximum public data from detected card, includes raw hex and parsed NDEF.

Security & Ethics

  • Read-only by default - No writing to cards
  • Public data only - No key guessing or unauthorized access
  • LAN-only - WiFi AP mode for local access
  • Audit trail - All responses include timestamps

Development Roadmap

Current (MVP)

  • SPI communication with PN532
  • WiFi Access Point mode
  • Basic web interface
  • Multi-tech card detection
  • Type A card data extraction

Future Enhancements

  • Full NDEF record parsing
  • Type B and FeliCa support
  • WebSocket real-time updates
  • Scan history and export
  • OTA firmware updates
  • Advanced mode with user-provided keys

Troubleshooting

PN532 Not Detected

  • Check SPI wiring connections
  • Verify PN532 is set to SPI mode
  • Check power supply (3.3V or 5V depending on module)

WiFi Connection Issues

  • Look for "NFC-Scanner" network
  • Default password: nfc123456
  • Default IP: 192.168.4.1

Card Reading Issues

  • Ensure card is close to PN532 antenna
  • Try different card orientations
  • Check for metal interference near antenna

License

This project is for educational and research purposes. Respect local laws and card holder privacy.

Description
ESP32 and PN532 NFC scanner workspace
Readme 16 MiB
Languages
C++ 92.5%
C 7.5%