

Handlebar
Elite-C https://deskthority.net/wiki/Elite-C footprint from ceoloide: https://github.com/ceoloide/ergogen-footprints
- Size
- 153.6 × 106.8 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 61
- Nets
- 78
- Pads
- 515
- Tracks, vias
- 558, 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 23 Mar 2024
- Updated
- 17 Aug 2026
Overview
Handlebar is an open-source printed circuit board by philtherobot, from the philtherobot/handlebar repository on GitHub. It is a 4-layer board of 153.6 × 106.8 mm with 61 parts on 78 nets, routed with 558 tracks and 1 via.
Its parts include 25 diodes and 25 switches.
README
README.mdErgogen
Online design tool at https://ergogen.cache.works/.
Elite-C https://deskthority.net/wiki/Elite-C footprint from ceoloide: https://github.com/ceoloide/ergogen-footprints
Running ergogen:
cd handlebar
ergogen . -o outputPass a folder instead of an input file name because handlebar has custom footprints and that's how this works.
Parts
- Choc v1 switches (Keebd)
- DMK keycaps, 1U (Keebd)
- Elite-C v4, 2 parts (Omega Keys)
- TRRS PJ-320A jack, 2 parts (Clickety Split)
- TRRS cable (Clickety Split)
- Diodes 1N4148W, SOD-123, 50 parts (Digikey 4530-1N4148WCT-ND)
- Push buttons FSMCTTR, 2 parts (Digikey 450-2133-1-ND)
- RGB LEDs FZ2812-5050, QMK compatible (WS2812B) (Digikey, 4544-FZ2812-5050CT-ND)
- MCU socket 801-43-064-10-002000 (Digikey, ED10864-64-ND)
- PCBs, 2 parts
- USB-C/USB cable
The Atmega32u4 on the Elite-C has 32KB flash, 2.5KB SRAM, 16MHz CPU.
Base
Mild steel plate, 1/16", 5/64" or 3/32" thick. 1.5mm to 2.5mm thick. 200x150mm or 8"x6", two times.
We plan to either solder the standoff or screw them.
- 8mm long, M2 standoff, 6 times
- dome head M2 screws, 6mm of thread, 6 times
- dome head M2 screws, 4mm of thread, 8 times
- flat head M2 screws, 6mm full length, 6 times
- flat head M2 screws, 10mm full length, 8 times
- M2 nuts, 8 times
Cost
Elite-C at Omega Keys, 24$ each. Keycaps and switches, 114$ PCB, JLCPcb, TRRS cable Digi-key
Not used, extra
Switches, 13$ TRRS cable, Keebd, 7$ (not used)
KiCAD
Tutorial: https://flatfootfox.com/ergogen-part5-kicad-firmware-assembly/
We are better to use constraints from makers. JLCPCB seems to have less capability than others. I found a Kicad board with JLC's capability set. See JLCPCB_1-2Layer template.
DO NOT edit the elite-c footprint as this will introduce a lot of errors! The errors are introduced because the nets that were setup by Ergogen are lost during the footprint edition.
Steps after ergogen has been executed:
- Import board settings from JLCPCB_1-2Layer template:
- File/Board Setup/Import from another board.
- Turn User.Drawings back on.
- Change track width to 0.25mm in Net Classes
- add the resistors footprints, R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal
- under the TRRS
- do not show the reference
- change footprint of indicators to Personal:WS2812B
- (useful: Route/Interactive Router Setting, try Highlight + Free angle or Walk around)
- complete the net connections for the resistors on front of board (VCC on the right, SDA at the top, SCL at the bottom)
- add a via below the indicators for VCC
- wire keys pin 1 (2 of them) to diode 2 on the back
- wire diode pads to holes on the front and back
- wire columns on the back
- route columns around the top and through the middle of the MCU, starting with n_inner
- wire rows on the front: they enter the MCU from the left
- wire reset, place it on the right
- wire VCC on the left of reset and go from the second resistor to the via on the back
- wire ground, going between n_vcc and n_scl on the TRRS connector, up on the left of VCC
- wire ground to all ground pins on the MCU
- wire SDA from TRRS to the MCU on the back
- indicator grounds
- indicator "next" and to the MCU
Optional:
- give a little bit of space around pads and traces
- add the name and version on the silkscreens
Fabrication
Prepare Gerber files:
- File/Fabrication/Gerbers
- Check the layers
- *.Cu, *.Paste, *.Mask, *.Silkscreen, Edge.Cuts
- Set a clean, new, empty directory
- Plot
- Generate drill files
- Zip the output files, flat, no directory
Upload to JLCPCB (https://jlcpcb.com/)
PCB material is FR-4. Use the defaults (1.6mm). Remove JLC's serial numper. Pick your color.
Notes
Elite-C information:
- https://deskthority.net/wiki/Elite-C
- Development history, reveals a lot about how it works: https://blog.keeb.io/case-of-the-wayward-elite-c/
- Atmega34U4, Atme AVR
https://flatfootfox.com/ergogen-part3-pcbs/
This has example of adding a PCB via: https://github.com/ergogen/ergogen/blob/675d2709dc4c2515ec34ecf4e5148127495283f3/config.yaml
PCM12 is a sliding switch. (no need it seems)
b3u1000p is a small reset push button. https://www.allaboutcircuits.com/electronic-components/datasheet/B3U-1000P-B--Omron/
This looks close to what I am trying to do: https://github.com/davidphilipbarr/Sweep/tree/main/Sweep%20half-swept
Redox schematic https://github.com/mattdibi/redox-keyboard/blob/master/redox/pcb/Redox-schematic.pdf
Hardware Checklist
- MCU position on the PCB matches the one in the preview.
- Through holes are the correct size for my components.
- Fit between the diode and the switch.
- Pull up 4.7KΩ resistors, SDA to VCC, SCL to VCC
- Must I²C be connected to those two specific pins? D0 and D1? Yes, let's do that.
- Should I ground all unused pins? No. And there is no need to cover the unused space with ground copper.
- Are the back diodes pads connected to the traces on front? No and I added them.
- Decide on PCB thickness: 1.6mm
- What is the voltage needed by the RGB LEDs? 3V, so VCC is good. Crossed fingers.
Key Layout
Diagrams are made with Keyboard Layout Editor.
I have linked the Keyboard Layout Editor account with my Github account. In any case, I saved the diagrams to key_layout.
Parts
61| Qty | Value | Footprint | References |
|---|---|---|---|
| 25 | PG1350 | S1, S2, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23 +9 | |
| 25 | ComboDiode | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +9 | |
| 4 | MountingHole_2.2mm_M2_Pad_Via | _2, _3, _4, _5 | |
| 2 | Library:WS2812B | I1, I2 | |
| 1 | elite-c | ||
| 1 | Library:SW_TACT_ALPS_SKQGABE010 | rst1 | |
| 1 | TRRS-PJ-320A-dual | TRRS-PJ-320A-dual | TRRS1 |
The 59 most common of 61 parts.
Questions
How big is the Handlebar PCB?
It measures 153.6 × 106.8 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Handlebar use?
61 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 Handlebar KiCad files?
From the philtherobot/handlebar repository on GitHub, at the commit this page was made from: the board is output/pcbs/handlebar.kicad_pcb and its schematic output/pcbs/handlebar.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Handlebar design in my own project?
Its repository states no licence, so its author keeps all rights: ask philtherobot before reusing the design.
Similar boards
- 4 layers40.6 × 17.8 mm

- 4 layers51.4 × 61 mm

- 4 layers108.3 × 63 mm

- 4 layers39.7 × 20.8 mm

- 4 layers18.4 × 33.3 mm

- 4 layers30.5 × 68.6 mm

- 4 layers17.8 × 50.8 mm

ReDIP CIA
daglem/reDIP-CIA
MOS 6520 PIA / MOS 6522 VIA / MOS 6526/8520/8521 CIA replacement
61 parts66CERN-OHL-S-2.0 - 4 layers54.6 × 67.9 mm
