5b06f3fcdd572f4821b12093c7290db2dd688bb6
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,/dumpendpoints - Simple UI - Scan and dump buttons with JSON display
- Real-time Results - Immediate feedback
Getting Started
1. Hardware Assembly
- Wire the PN532 to ESP32-S3 according to the wiring table above
- Set PN532 to SPI mode using DIP switches
- Connect battery to BAT pads (optional)
2. Software Setup
- Install PlatformIO in VS Code
- Open this project folder
- Build and upload:
pio run -t upload
3. Usage
- Power on the device
- Connect to WiFi network: NFC-Scanner (password:
nfc123456) - Open browser to:
http://192.168.4.1 - 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.
Languages
C++
92.5%
C
7.5%