Skip to content
Hyacinthe edited this page Jul 17, 2026 · 1 revision

RFID Access Control (ESP32-S3)

A standalone RFID access controller: ESP32-S3 + PN532 (hardware SPI) + 16x2 I2C LCD + a LittleFS-backed fixed-width binary user database. The board works completely on its own with no PC attached; a Python CLI is provided for administration (adding/removing/renaming users, batch import/export, tag renewal, Wi-Fi provisioning, NTP time management, and card-UID scan mode), either as one-shot scripted commands or as an interactive git/psql-style shell. Users have an expiration date checked against an NTP-synced clock, and a passive buzzer gives audible pass/fail feedback. The database supports up to 70000 users backed by PSRAM (8MB on ESP32-S3), stored in a fixed-width binary format (users.bin) with per-record CRC32 corruption detection and a whole-database db_crc32 used to skip no-op imports.

For cloning and getting a first build/flash working, see the README. This wiki covers everything past that.

Pages

  • Hardware and Wiring -- parts list, PN532 SPI DIP-switch config, GPIO pinout for the PN532/LCD/buzzer, power notes.
  • Firmware Setup -- Arduino IDE board options, library list, serial port / baud rate configuration.
  • Python CLI Guide -- install, the interactive shell, user schema and expiration rules, batch import/export, the name-length policy, the user limit, tag renewal, Wi-Fi/NTP/timezone.
  • Serial Protocol Specification -- the full newline-delimited JSON wire protocol, message types both directions.
  • Troubleshooting -- symptom -> likely cause table.
  • Project Structure -- file-by-file layout of the firmware and the Python CLI, and how to run the test suite.

RFID Access Control ESP32-S3 · PN532 · Python CLI


🚀 Getting Started

🐍 Using the CLI

🧭 Reference


📦 README 🐛 Issues

Clone this wiki locally