Skip to the content
PCBKitNew board
2 layers95 × 55 mmEsp32-access control reader, the printed circuit board in 3D

Esp32-access control reader

romkey/esp32-access-control

ESP32-based hardware access control reader for PDX Hackerspace

Size
95 × 55 mm
Copper layers
2
Thickness
1.6 mm
Parts
56
Nets
60
Pads
203
Tracks, vias
472, 77
Pours
178
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
30 Sep 2026
Updated
5 Nov 2026

Overview

Esp32-access control reader is an open-source printed circuit board by romkey, from the romkey/esp32-access-control repository on GitHub, published under the MIT licence. It is a 2-layer board of 95 × 55 mm with 56 parts on 60 nets, routed with 472 tracks and 77 vias.

It is built around the TXS0108EPWR, SS34 and AO3400A, with the SM04B-SRSS-TB(LF)(SN), TPD2E2U06DCKR-TP and TYPE-C-31-M-12 among its other parts. Its parts include 10 resistors, 6 capacitors, 6 connectors, 5 diodes and 3 ICs. It belongs with the ESP32 boards of this library.

Main components

6

README

README.md

esp32-access-control

CI Lint Case ESPHome License: MIT

An open source, ESP32-based Wiegand reader: a board, ESPHome firmware and a 3D-printable case.

At PDX Hackerspace we used RFID keys to unlock doors and access our laser cutter. We want to expand their use, to make it easy for members to print parking permits for projects, unlock the main entrance for events, claim prints on 3D printers and more. We currently use Raspberry Pis for the doors and an ESPKey for the laser cutter; this project can provide a low cost simple way to integrate with Wiegand RFID readers and possibly as the basis for replacing the aging Raspberry Pis controlling our doors.

AI disclosure: This project was written by AI under human oversight, following these rules.

What's here

PathWhat it is
hw/reader/<version>/KiCad project for the board, one directory per revision
BOFFF.mdBill of Form, Fit and Function: board outline, mounting holes and connector positions, for designing enclosures
examples/access-control.yamlThe door controller: Wiegand reader, access database, door relay, syslog
examples/simple.yamlESPHome config for bring-up: LED switch, reader LED and beeper, Wiegand tag reading
examples/common/base.yamlSettings every example shares: encrypted API and OTA, recovery, web server
packages/Board-agnostic ESPHome packages for the door controller; pins come from the including config
components/C++ external components: access_db, access_site, access_syslog, push_auth
case/OpenSCAD design for a wall or desk kiosk in portrait and landscape layouts; see case/README.md
datasheets/Manufacturer datasheets, each with a license note
docs/Overview and configuration reference

Technical details

Hardware:

  • dual level-shifted 5V Wiegand interfaces with wiring for data (D0, D1), LED and beep along with power
  • ESP32-S3-N16R8: ESP32-S3 with 16MB of flash and 8MB of octal PSRAM (GPIO35-37 are used by the PSRAM and unavailable)
  • USB C port
  • power and data LEDs
  • Qwiic connector for I2C devices
  • header for SPI TFT displays with touch controllers
  • "aux" header for satellite boards with optional power to this board

Connectors, from BOFFF.md:

RefPartWhat it is
J110-pin headerAux: GND, 3.3V, TX0, RX0, IO42, IO41, IO40, IO39, IO38, +5V in
J214-pin headerSPI TFT with touch: 3.3V, GND, CS, RST, DC, SDO, SCK, LED, SDI, then T_CLK, T_CS, T_DIN, T_DO, T_IRQ
J3SM04B-SRSS-TBQwiic: GND, 3.3V, SDA, SCL
J4USB-CPower and programming
J5, J6WAGO 2601-1106Wiegand readers 1 and 2: +5V, GND, then four signals (D0, D1, LED, beep; see the schematic for the order)

I2C: SDA and SCL on J3, with 4.7k pull-ups to 3.3V. The board carries no I2C devices of its own.

examples/simple.yaml and examples/access-control.yaml wire one reader on D0 = GPIO18, D1 = GPIO17, reader LED = GPIO16 (active low) and beeper = GPIO15 (active low). Check these against the schematic before relying on them. The board has no relay output; packages/door-relays.yaml is an example for a relay or strike driven from the J1 aux header or a satellite board. examples/access-control.yaml uses GPIO38 and GPIO39 (J1) as example values; set door_relay_1_pin and door_relay_2_pin for your own hardware.

Using the packages from another project:

yaml
external_components:
  - source: github://romkey/esp32-access-control@vX.Y.Z
packages:
  access-door: github://romkey/esp32-access-control/packages/access-door.yaml@vX.Y.Z

See docs/configuration.md for the substitutions each package takes.

Datasheets: TXS0108E level shifter, WAGO 2601-1106 terminal block.

Building

Requires Docker. Nothing else needs installing.

bash
cp examples/secrets.yaml.example examples/secrets.yaml   # then edit it (generate a real api key)
docker compose run --rm validate      # esphome config on every example
docker compose run --rm build         # compile every example
docker compose run --rm lint          # all pre-commit checks, like CI

The first build downloads the toolchains into a Docker volume; later builds reuse them and only recompile what changed.

The case is built separately with OpenSCAD: make -C case. See case/README.md.

Flashing

To flash a new board, build the firmware images:

bash
docker compose run --rm firmware

Then open https://web.esphome.io in Chrome or Edge, connect the board over USB and upload dist/<name>.factory.bin. After that, update over the network (OTA). The images contain your Wi-Fi credentials; don't share them.

Case

case/ has an OpenSCAD design for a 3D-printable wall or desk kiosk, in portrait and landscape layouts. It holds the board, a 3.5" or 4.0" SPI TFT, and an HID ProxPoint Plus reader mounted on the front. CI renders the STLs on every change and attaches them to the workflow run. See case/README.md for parts, print settings and assumptions to check.

License

MIT, except the manufacturer datasheets in datasheets/, which belong to their manufacturers and are not covered by this license; see each datasheet's -license.txt.

Parts

56
QtyValueFootprintReferences
4MountingHole_2.2mm_M2_PadMountingHole:MountingHole_2.2mm_M2_PadMNT1, MNT2, MNT3, MNT4
3100nFCapacitor_SMD:C_0603_1608MetricC2, C4, C6
310KResistor_SMD:R_0603_1608MetricR7, R8, R9
22601-1106easyeda2kicad:CONN6_2601-1106_WAGJ5, J6
24.7KResistor_SMD:R_0603_1608MetricR1, R2
25.1kResistor_SMD:R_0603_1608MetricR5, R6
2Kobee Studiokobee-studio-6AA40528kobee-studio-8, kobee-studio-9
2SS34Diode_SMD:D_SMAD1, D2
1100Resistor_SMD:R_0603_1608MetricR3
1100KResistor_SMD:R_0603_1608MetricR4
110µFCapacitor_SMD:C_0603_1608MetricC1
11µFCapacitor_SMD:C_0603_1608MetricC5
1220Resistor_SMD:R_0603_1608MetricR10
122µFCapacitor_SMD:C_0603_1608MetricC3
1AO3400Aeasyeda2kicad:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRQ1
1AP2114H-3.3easyeda2kicad:SOT-223_L6.7-W3.5-P2.30-BRU1
1BOOTEasyEDA:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5SW2
1CTRLH Logo1myFootprints:CTRLH LogoNOT2
1Conn_01x10Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_VerticalJ1
1ESP32-S3-WROOM-1(N16R8)EasyEDA:WIRELM-SMD_ESP32-S3-WROOM-1U3
1G***kobee-studio-6A958584kobee-studio-3
1G***kobee-studio-6AA4CF77kobee-studio-4
1G***kobee-studio-6AA432BCkobee-studio-15
1G***kobee-studio-6AA480A6kobee-studio-7
1G***kobee-studio-6AA432D5kobee-studio-10
1G***kobee-studio-6AA2D906kobee-studio-11
1G***kobee-studio-6A950CF3kobee-studio-13
1G***kobee-studio-6AAB212Fkobee-studio-6AAB212F
1G***kobee-studio-6AA4CD99kobee-studio-2
1G***kobee-studio-6AA4CF94kobee-studio-5
1G***kobee-studio-6AA82569kobee-studio-1
1G***kobee-studio-6A950CDAkobee-studio-14
1G***kobee-studio-6AA2D8EBkobee-studio-12
1G***kobee-studio-6A95859Ckobee-studio-6
1LEDLED_SMD:LED_0805_2012MetricD5
1PWRLED_SMD:LED_0805_2012MetricD4
1RESETEasyEDA:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5SW1
1SM04B-SRSS-TB_(LF)(SN)easyeda2kicad:CONN-SMD_4P-P1.00_SM04B-SRSS-TB-LF-SNJ3
1TPD2E2U06DCKREasyEDA:SC-70-3_L2.0-W1.3-P0.65-LS2.1-BLD3
1TXS0108EPWReasyeda2kicad:TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BLU2
1TYPE-C-31-M-12easyeda2kicad:USB-C-SMD_MC-311DJ4
1~Connector_PinHeader_2.54mm:PinHeader_1x14_P2.54mm_VerticalJ2

The 54 most common of 56 parts.

Questions

How big is the Esp32-access control reader PCB?

It measures 95 × 55 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Esp32-access control reader use?

56 parts, built around the TXS0108EPWR, SS34, AO3400A and SM04B-SRSS-TB(LF)(SN). The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Esp32-access control reader KiCad files?

From the romkey/esp32-access-control repository on GitHub, at the commit this page was made from: the board is hw/reader/0.1.0/esp32-access-control-reader/esp32-access-control-reader.kicad_pcb and its schematic hw/reader/0.1.0/esp32-access-control-reader/esp32-access-control-reader.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Esp32-access control reader design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers142 × 208 mmPanel, the printed circuit board in 3D

    Panel

    romkey/sensr

    Sensor project hardware - ESP32-S3 base board, light and air sensors

    616 partsMIT
  • 4 layers40 × 60 mmTrinketcore, the printed circuit board in 3D

    Trinketcore

    alph4345/test

    TrinketCore puts everything a small rechargeable gadget needs on one 40 × 60 mm board, ready to order assembled from PCBWay:

    113 parts
  • 2 layers431.2 × 126.4 mmConvertible keyboard pcb, the printed circuit board in 3D

    Convertible keyboard pcb

    TechnikWeber/convertible-keyboard-pcb

    Convertible keyboard PCB: full-size ISO-DE & ANSI with a snap-off numpad that turns it into a TKL (RP2040, USB-C, KiCad). Cheap, clean, modern core to build on — looking for a case designer.

    504 parts
  • 2 layers109 × 126.4 mmRheoBoard v1.05, the printed circuit board in 3D

    RheoBoard v1.05

    The-Hybrid-Atelier/RheoBoard

    RheoBoard is open hardware for pneumatic retraction-extrusion measurements.

    162 parts
  • 2 layers70 × 100 mmLower, the printed circuit board in 3D

    Lower

    sbarisic/MagMouse

    Open source hall-effect based mouse - no mechanical contacts - no failure points

    128 parts2
  • 4 layers21 × 51 mmLightwolf, the printed circuit board in 3D

    Lightwolf

    wolf-yuan-6115/lightwolf

    Pumper is an experimental RP2354-based USB Audio Class 2 DAC. The board uses a PCM5102A DAC with OPA1652 and OPA1622 analog stages in a compact design intended for learning about USB audio and DAC hardware.

    53 parts1GPL-3.0
  • 4 layers45 × 45 mmESP32-P4-CAM MAIN, the printed circuit board in 3D

    ESP32-P4-CAM MAIN

    momszx/esp32-p4-cam

    ESP32-P4 compact WiFi streaming camera - KiCad 10 hardware (MAIN rev A, 4-layer 45x45 mm) and design docs

    120 parts
  • 2 layers35 × 100 mmWalkieTalkie, the printed circuit board in 3D

    WalkieTalkie

    GuzziFlipFlops/ESP32-Walkie-Talkie

    An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with

    66 parts7MIT