-
-
Notifications
You must be signed in to change notification settings - Fork 1
Hardware and Wiring
Hyacinthe-primus edited this page Jul 17, 2026
·
3 revisions
| Component | Notes |
|---|---|
| ESP32-S3 dev board | QFN56, rev v0.2, 8MB Octal PSRAM, 16MB Flash, 40MHz XTAL (as tested) |
| PN532 NFC/RFID module V3 | Must be set to SPI mode via onboard DIP switches, see below |
| 16x2 LCD with PCA8574 I2C backpack | Address is usually 0x27 or 0x3F, see Troubleshooting
|
| Passive buzzer | Connected to GPIO 6, see below |
| USB-C / micro-USB cable | Data-capable, not charge-only |
| Breadboard + jumper wires | |
| Wi-Fi network (2.4GHz) | Required for NTP time sync -- see Python CLI Guide |
- Arduino IDE 2.x
- ESP32 board package (via Boards Manager), v3.x recommended
-
Libraries (Library Manager):
Adafruit PN532-
LiquidCrystal I2C(Frank de Brabander / Marco Schwartz fork) -
ArduinoJson(v7.x) -
WiFiandPreferences-- ship with the ESP32 board package
-
Python 3.9+ for the CLI, with
pip install -r python_cli/requirements.txt
| SW1 | SW2 | Mode |
|---|---|---|
| ON | OFF | SPI (use this) |
| OFF | OFF | HSU (UART) |
| OFF | ON | I2C |
| ON | ON | Reserved / invalid |
Set SW1 = ON, SW2 = OFF. If getFirmwareVersion() prints 0x0 at boot,
DIP switches are wrong or MISO/MOSI are swapped.
A wiring diagram (Wiring.png) ships in the repo root.
| ESP32-S3 GPIO | PN532 Pin | Signal |
|---|---|---|
| GPIO 12 | SCK | SPI Clock |
| GPIO 13 | MISO | SPI Master In |
| GPIO 11 | MOSI | SPI Master Out |
| GPIO 10 | SS / NSS | Chip Select |
| 3V3 | VCC | Power (do not use 5V) |
| GND | GND | Ground |
| ESP32-S3 GPIO | LCD Backpack Pin | Signal |
|---|---|---|
| GPIO 8 | SDA | I2C Data |
| GPIO 9 | SCL | I2C Clock |
| 5V | VCC | Power (May require an external power supply) |
| GND | GND | Ground |
| ESP32-S3 GPIO | Buzzer Pin | Signal |
|---|---|---|
| GPIO 6 | Signal/+ | PWM tone (driven via tone()/ledc) |
| GND | - | Ground |
Must be a passive buzzer (driven by PWM tone), not active. Access Granted plays a ~1.5s ascending 4-note tone; Access Denied plays a descending one.
The LCD backpack requires a 5V power supply. Power from a separate 5V source (or VBUS pin), and tie all GND wires together.
RFID Access Control · v1.0.1 · ESP32-S3 + PN532
README · Changelog · Issues · MIT License