Skip to the content
PCBKitNew board
2 layersPax button, the printed circuit board in 3D

Big glowing turn buttons for Twilight Imperium 4: web app, phone buttons, ESP32 firmware and an open button standard

Copper layers
2
Thickness
1.6 mm
Parts
15
Nets
18
Pads
61
Tracks, vias
60, 0
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Sep 2026
Updated
31 Oct 2026

Overview

Pax button is an open-source printed circuit board by rubiconRiver, from the rubiconRiver/pax-buttonica repository on GitHub. It is a 2-layer board with 15 parts on 18 nets, routed with 60 tracks and 0 vias.

Its parts include 3 resistors, 3 connectors, 1 capacitor, 1 IC and 1 diode. It belongs with the ESP32 and RISC-V boards of this library.

README

hardware/pcb/README.md

The button's carrier board

A 70 mm round, two-layer board that every part of a button solders onto, so the only loose wires left are three to the LED ring and two to the batteries.

top

Revision 0.2. Status: designed, rule-checked, never manufactured. (v0.1, the first one ordered, is the same board without R2/R3 and the number box, and with C1 nearer the middle; it works the same.) KiCad's design-rule check passes with no violations and nothing unconnected. No board has been made, and the ESP32 module's footprint was drawn from published dimensions, not from a module in hand. Order a small batch and test one before building six.

What's on it

RefPartNotes
U1ESP32-C3 SuperMiniTop of the board, USB-C at the rim. A spare solder hole sits beside every pin, so anything the module can do is reachable later: extra buttons, a speaker amp, battery sensing.
SW1MX-style keyboard switchDead centre. Any Cherry-MX-compatible switch, 3-pin or 5-pin. One side to ground, the other to the 5th pin on the module's power side.
J1Battery, 4 × AA NiMHA 5.08 mm screw terminal, or just solder the holder's leads into the holes. + is on the left.
D11N5817 diodeReverse-polarity protection. Stripe to the right (marked K).
C11000 µF capacitorNear the rim, below the LED connector, where it clears both the 8-LED and the 50 mm 12-LED ring. Stripe (negative) away from the + mark.
R2, R3100 kΩ × 2, optionalA battery gauge: they halve the battery voltage for the ESP32 to read. Fit both and set BATTERY_PIN in the firmware (the fourth pin on the 5V side, usually 4); the test bench and the game then show each button's battery. Leave them off and nothing changes.
J2LED ring5V · DIN · G. Solder the ring's three wires straight in, or fit a pin header.
R1 / JP1330 Ω, optionalJP1 is a jumper that is already bridged on the bare board, so with R1 left empty everything works. To use the resistor: fit R1 and cut the thin link between JP1's two pads.
J3Three ground holesFor the other leg of any extra buttons.
H1–H4M3 mounting holesOn a 46 × 38 mm rectangle.
Back"No." boxSomewhere to write which button this is.

The ground is a copper pour on both sides. There is no copper under the module's antenna.

Two things the board deliberately does not assume

  1. Which way the module's GPIO numbers run. Sources disagree on whether the five pins after 3V3 are labelled 4-3-2-1-0 or 0-1-2-3-4. The switch goes to the fifth pin on the 5V side. Read the number printed beside that pin on your module and put it in firmware/button/config.h as the first entry of BUTTON_PINS. The LED data line goes to GPIO10, which everyone agrees on.
  2. That your module isn't mirrored. Looking down on the module with USB-C at the top, 5V should be the top pin on the right. If yours has 5V on the left, solder the module to the back of the board instead; flipping it swaps the rows back. Check before you solder: it's printed on both sides of the board too.

Assembly

Step by step in docs/HARDWARE.md: diode, ESP32 (on its pin strips, USB off the edge), switch, capacitor, battery leads, LED ring.

Ordering (JLCPCB, PCBWay and similar)

Upload pax-button-v0.2-gerbers.zip. The preview should show a round board with a square switch outline in the middle. Then:

  • 2 layers · 70 × 70 mm · quantity 5 or 10 (usually the same price)
  • 1.6 mm thick · green solder mask (other colours can add days) · HASL finish · 1 oz copper
  • Fastest courier they offer (DHL Express or similar). Expect duty, GST and a brokerage fee at the door.

Regenerating it

The whole board is produced by a script, so changes are reviewable text:

bash
/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 make_board.py
kicad-cli pcb drc pax-button.kicad_pcb

pax-button.kicad_pcb opens in KiCad 9 or later if you would rather edit it by hand.

Parts

15
QtyValueFootprintReferences
4MountingHole_3.2mm_M3MountingHole_3.2mm_M3H1, H2, H3, H4
2100k (optional)R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_VerticalR2, R3
11000uF 16VCP_Radial_D8.0mm_P3.50mmC1
11N5817D_DO-41_SOD81_P10.16mm_HorizontalD1
1330R (optional)R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
1BATTERY 4xAA NiMHTerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ1
1ESP32-C3 SuperMiniU1
1GND x3PinHeader_1x03_P2.54mm_VerticalJ3
1LED RINGPinHeader_1x03_P2.54mm_VerticalJ2
1MX switchSW_Cherry_MX_1.00u_PCBSW1
1bypass R1SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mmJP1

Questions

What parts does the Pax button use?

15 parts. 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 Pax button KiCad files?

From the rubiconRiver/pax-buttonica repository on GitHub, at the commit this page was made from: the board is hardware/pcb/pax-button.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Pax button design in my own project?

Its repository states no licence, so its author keeps all rights: ask rubiconRiver before reusing the design.

Similar boards

  • 2 layers19 × 76 mmSub, the printed circuit board in 3D

    Sub

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    15 parts3kApache-2.0
  • 2 layers26.7 × 62.2 mmDeniseadapter, the printed circuit board in 3D

    Deniseadapter

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    15 parts1kGPL-3.0
  • 2 layers100 × 44 mmVideoslot, the printed circuit board in 3D

    Videoslot

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    15 parts1k
  • 2 layers91 × 51 mmBusinessCard, the printed circuit board in 3D

    BusinessCard

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    15 parts915
  • 2 layers24.3 × 57.9 mmFlosspods pro flex, the printed circuit board in 3D

    Flosspods pro flex

    kenp-io/not-for-airpods-repairs

    The content of this repository is licensed under the WTFPL License. Please have a close look at the terms before using this material.

    15 parts609WTFPL
  • 2 layers20.3 × 15.2 mmL0 Load, the printed circuit board in 3D

    L0 Load

    Luos-io/luos_engine

    Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.

    15 parts546MIT
  • 2 layers68 × 50 mmEleLab v2 PowerFeed, the printed circuit board in 3D

    EleLab v2 PowerFeed

    Chrismettal/EleLab_v2

    Cheap DIY lab system for hobbyists and the tinkering folk

    15 parts531GPL-3.0
  • 2 layers50.8 × 35.6 mmInterface, the printed circuit board in 3D

    Interface

    harbaum/I2C-Tiny-USB

    Cheap and simple I²C to USB interface

    15 parts454