A standalone RFID access controller: ESP32-S3 + PN532 (hardware SPI) + 16x2 I2C LCD + a LittleFS-backed fixed-width binary user database, administered from a Python CLI (scripted or interactive shell) over serial. Up to 70000 users, PSRAM-backed, with per-record and whole-database CRC32 integrity checks.
Full docs – wiring, protocol spec, CLI reference, troubleshooting, project structure live on the wiki.
This README only covers getting it cloned, flashed, and running.
Either clone the repository:
git clone https://github.com/Hyacinthe-primus/RFID_Access_Control.gitor download the latest stable release from the Releases page.
Arduino requirement: the sketch folder name must match its
.inofilename exactly. This repo is already namedRFID_Access_Controlto matchRFID_Access_Control.ino. If you download a release ZIP, extract it and ensure the folder is namedRFID_Access_Controlbefore opening it in the Arduino IDE. Likewise, if you rename the cloned repository (or download a ZIP that extracts to something likeRFID_Access_Control-main), rename it back or the sketch will not compile.
- Open
RFID_Access_Control.inoin Arduino IDE 2.x. Tools > Board-> ESP32S3 Dev Module.- Install libraries:
Adafruit PN532,LiquidCrystal I2C,ArduinoJson(v7.x). - Board options: USB CDC On Boot: Disabled, Flash Size: 16MB,
Partition Scheme: Custom (uses
partitions.csv), PSRAM: OPI PSRAM. Sketch > Upload.
Wiring diagram and pinout: see the wiki.
cd python_cli
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtpython cli.py # no subcommand -> interactive shell
python cli.py status # or run one-shot scripted commandsFull command reference, batch import/export, and the interactive shell: see the wiki.
python -m pytest tests/ -v137 tests, run from the repo root, no hardware required.
MIT see LICENSE.md.