
Numpad project
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

A 54-key, column-staggered, wireless split keyboard, inspired by ZSA Voyager and totem
Ezy54 is an open-source printed circuit board by shoedler, from the shoedler/ezy54 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 139.9 × 121.4 mm with 64 parts on 60 nets, routed with 1,001 tracks and 116 vias.
Its parts include 27 diodes and 27 switches. It belongs with the keyboards and input boards of this library.
Kailh Choc v1 pinks, Chosfox CFX
A 54-key, column-staggered, ortholinear, wireless split keyboard, inspired by ZSA Voyager and totem. Designed for Choc-spacing (18mm horizontal, 17mm vertical) and 1350 Choc v1 or v2 switches.
Left
Carry Case
For one complete board - e.g. two halves - you'll need:
For the case you'll need:
PCB related files are located in the
kicaddirectory.
Assuming you have ordered the parts and don't want to route the PCB yourself, there's premade gerber archive located at kicad/gerber.zip which you can use. I've used JLCPCB, default settings (1.6mm two layer PCB) and with the black solder mask.
Case files are located in the
stldirectory.
I used a Babulab A1 mini and default slicer settings (Bambustudio). Everything was printed in their PLA Matte.
You'll need at least:
ezy54_switchplate_left.stl, which is the plate that sits on the PCB and where the keyswitches are mounted into - I recommend using the provided 3mf files for that: ezy54_switchplate_left.3mf and ezy54_switchplate_right.3mf. That'll give you mirrored versions so you have the buildplate-finish texture on the same side for both halves.ezy54_case_left.stl, which is the case where the PCB gets mounted in - same story, use the provided 3mf files for that: ezy54_case_left.3mf and ezy54_case_right.3mf. That'll also give you mirrored versions for both halves. Theoretically, you don't need the case, but I strongly recommend it to provide a little bit of protection for the PCB. If you're working directly with the stl, then you'll have to mirror it. I suggest using the fuzzy skin setting (in Bambustudio: Others > Special mode > Fuzzy skin, use "Contour").Optional:
ezy54_carry_case.stl, which is a Go60-ish carry shell for the ezy54. Use ezy54_carry_case.3mf for a basic. I did manage to print it without support, but there's a bit of luck involved - the 3mf file uses supports.Since the PCB is reversible it can get confusing quick. All of the components except the ProMicro headers and the JST Battery connector are soldered to the backside of each half.
[!CAUTION] Before you continue it's a good idea to verify that there's no short between the JSTs +/- terminal as well as the ProMicros VCC and GND.
I suggest to load the firmware next and check that everything works before assembly.
Firmware related files consist of: config/, boards/, zephyr/ directories, as well as the build.yml file and the GitHub Actions workflow in .github/workflows.build.yml
Get the latest firmware from https://github.com/shoelder/ezy54/actions, select the latest run and scroll down to Artifacts - you'll be able to download the zip archive from there. If the last runs artifact is expired, just fork the repo and trigger a build.
[!NOTE] There'll be two .uf2 files per half in the zip archive - a
de-chand anenversion. This refers to the keycode locale that's been used. I myself require a swiss locale, but, to make the default firmware more useful for more people, I've added an english version too. You can check the keymaps out in theconfig/boards/shields/ezy54directory.
For each half:
NICENANO appear in your device tree. Simply drag and drop the correct firmware for the half your working on onto the mcu - it should eject itself automatically once the firmware is flashed.[!NOTE] If you run into trouble, there's also a
settings_resetfirmware provided in the archive. See the ZMK troubleshooting guide on how to flash it.
The whole point of using ergogen, is to easily adapt the PCB to your liking. So give it a go! Modifying the config will force you to reroute the PCB again. Though fear not - using Freerouting this literally takes a minute to do (including adding freerouting to KiCad), provided you have KiCad >=8 and JRE >= 17 for Freerouting already installed.
[!NOTE] To add the Freerouting KiCad integration, just follow this official guide.
[!TIP] There is a local toolchain in
tools/that builds the config without ergogen.xyz and then checks it: case clearances, a pre-routing DRC on the generated board, STL/cross-section/point-probe inspection of the printed parts, and layered drawings. Start withcd tools && npm run setup, thennode tools/build.tsandnode tools/drc-lite.ts out/pcbs/ezy54.kicad_pcb. Its README also documents the footprint rotation convention that ergogen + KiCad make easy to get backwards.
config.yml located in /ergogen into ergogen.xyz and download the ezy54.kicad_pcb file.ezy54.kicad_pcb to the kicad directory of this repository (this part is only required if you intend to keep the source of this repository up to date - e.g. if you forked this)B to fill the GND pours - zones come out of ergogen empty until KiCad calculates them once - then click on Tools > External Plugins > Freerouting[!IMPORTANT] Back in KiCad, run the DRC in
Inspect > Design Rule Checker. I usually right click> Ignore all 'Footprint not found in libraries' violationsto ignore missing ceoloide footprint warnings. This might leave you with some warnings which you need to manually resolve. For example, i usually get "Track has unconnected end", which is easily resolved by deleting the stub.
File > Plot... > Generate Drill Files, name the folder "gerber", then press Generate and close that popup. Press Plot back in the plot dialog. Done!| Qty | Value | Footprint | References |
|---|---|---|---|
| 27 | ceoloide:switch_choc_v1_v2 | S1, S2, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23 +11 | |
| 27 | ceoloide:diode_tht_sod123 | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +11 | |
| 6 | ceoloide:mounting_hole_npth | MH1, MH2, MH3, MH4, MH5, MH6 | |
| 1 | ceoloide:reset_switch_smd_side | RST1 | |
| 1 | ceoloide:power_switch_smd_side | PWR1 | |
| 1 | ceoloide:mcu_supermini_nrf52840 | MCU1 | |
| 1 | ceoloide:battery_connector_jst_ph_2 | JST1 |
It measures 139.9 × 121.4 mm and has 2 copper layers, 1.6 mm thick.
64 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.
From the shoedler/ezy54 repository on GitHub, at the commit this page was made from: the board is kicad/ezy54.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

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

drandyhaas/KiCadRoutingTools
A set of Python/Rust tools to aid routing in KiCad

BlueSCSI/BlueSCSI-v2
BlueSCSI v2/Ultra - an open source, open hardware, SCSI emulator using the Pi Pico PR2040 and Pico 2 RP2350



PyrooL/Alpha
A 28-key semi-ortholinear mechanical keyboard designed by PyroL

ugcs/ddc
Drone Show Software is software designed for drone shows, allowing flight path planning as well as control of dozens of drones simultaneously in a synchronized manner.
