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

yet another 80% hot-swappable mechanical keyboard
YetAnotherKeyboard is an open-source printed circuit board by 0x62b, from the 0x62b/YetAnotherKeyboard repository on GitHub. It is a 2-layer board of 329.7 × 98.2 mm with 136 parts on 91 nets, routed with 899 tracks and 111 vias.
Its parts include 66 switches, 65 diodes, 1 resistor, 1 IC and 1 connector. It belongs with the nRF52 and nRF5x boards of this library.
This is an 65% mechanical keyboard with hot-swappable MX style switches. The design is based on a nice!nano microcontroller and a nice!view display. It also supports wireless operation with a standard lithium polymer battery. The nano also supports a USB connection.
cad/PCB/PCB/productionfirmware/ and the built firmware is in the project root
Onshape sourceTotal cost: 55.39 USD
Parts can all be sourced from AliExpress.
Parameters:
Dimensions: 98.21mm*329.75mm
PCB cost: 17 USD
Shipping cost: 12.83 USD
Total cost: 29.83 USD
Material: PLA, PETG, anything is fine really
Nozzle: 0.4mm/0.6mm/0.8mm
The case is far too big to fit on a standard 256mm^3 bed. If you want to replicate this build (for some reason) you may need to split the case. However I have access to a Prusa XL so I will use that.
ZMK, firmware is located in a submodule, https://github.com/0x62b/YetAnotherKeyboard-config
| Name | Quantity | Unit price (AUD) | Extended Price (AUD) | Extended Price(USD) | Notes | Link |
|---|---|---|---|---|---|---|
| Pro Micro NRF52840 | 1 | 5.83 | 5.83 | 4.18 | nice!nano footprint is Pro Micro compatible | https://www.aliexpress.com/item/1005007266112508.html |
| nice!view | 1 | 19.59 | 19.59 | 14.02 | its probably some aliexpress knockoff but if it works it works (and if it doesnt i return it) | https://www.aliexpress.com/item/1005011620429396.html |
| 1N4148 SOD-123 | 66 | 0.0284 | 2.84 | 2.04 | 100 pack | https://www.aliexpress.com/item/1005006323468521.html |
| 0402 1K resistor | 1 | 0 | 0 | 0 | Owned | N/A |
| SPST push button | 1 | 0.039 | 1.94 | 1.39 | 50 pack | https://www.aliexpress.com/item/1005005279088080.html |
| MX switches | 66 | 0.42 | 29.39 | 21.10 | 70 pack | https://www.aliexpress.com/item/1005007983672026.html |
| Keycaps set | 1 | 0 | 0 | 0 | Owned | https://www.aliexpress.com/item/1005009162201589.html |
| Stabilisers | 1 | 3.99 | 3.99 | 2.86 | N/A | https://www.aliexpress.com/item/1005007212869086.html |
| Battery | 1 | 0 | 0 | 0 | Owned | https://core-electronics.com.au/lipo-polymer-lithium-ion-battery-120mah.html |
| Hotswap sockets | 1 | 12.29 | 12.29 | 8.8 | 100 pack | https://www.aliexpress.com/item/1005006105603269.html |
| M3x10 screws | 4 | 0 | 0 | 0 | owned | N/A |
| M3 threaded inserts | 4 | 0 | 0 | 0 | owned | N/A |
Parts: 55.39 USD
PCB: 29.83 USD
Grand total: 85.22 USD (approx because of conversion rates)
Prerequisites: solder the PCB and print the case.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 65 | 1N4148 | Diode_SMD:D_SOD-123 | D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24 +49 |
| 2 | Alt | MX_Hotswap:MX-Hotswap-1.25U | SW56, SW58 |
| 1 | ' | MX_Hotswap:MX-Hotswap-1U | SW52 |
| 1 | , | MX_Hotswap:MX-Hotswap-1U | SW49 |
| 1 | - | MX_Hotswap:MX-Hotswap-1U | SW26 |
| 1 | . | MX_Hotswap:MX-Hotswap-1U | SW50 |
| 1 | / | MX_Hotswap:MX-Hotswap-1U | SW51 |
| 1 | 0 | MX_Hotswap:MX-Hotswap-1U | SW12 |
| 1 | 1 | MX_Hotswap:MX-Hotswap-1U | SW3 |
| 1 | 1K | Resistor_SMD:R_0402_1005Metric | R1 |
| 1 | 2 | MX_Hotswap:MX-Hotswap-1U | SW4 |
| 1 | 3 | MX_Hotswap:MX-Hotswap-1U | SW5 |
| 1 | 4 | MX_Hotswap:MX-Hotswap-1U | SW6 |
| 1 | 5 | MX_Hotswap:MX-Hotswap-1U | SW7 |
| 1 | 6 | MX_Hotswap:MX-Hotswap-1U | SW8 |
| 1 | 7 | MX_Hotswap:MX-Hotswap-1U | SW9 |
| 1 | 8 | MX_Hotswap:MX-Hotswap-1U | SW10 |
| 1 | 9 | MX_Hotswap:MX-Hotswap-1U | SW11 |
| 1 | ; | MX_Hotswap:MX-Hotswap-1U | SW38 |
| 1 | = | MX_Hotswap:MX-Hotswap-1U | SW27 |
| 1 | A | MX_Hotswap:MX-Hotswap-1U | SW29 |
| 1 | B | MX_Hotswap:MX-Hotswap-1U | SW46 |
| 1 | BAT | TestPoint:TestPoint_Pad_D2.0mm | TP1 |
| 1 | Backspace | MX_Hotswap:MX-Hotswap-2U | SW14 |
| 1 | C | MX_Hotswap:MX-Hotswap-1U | SW44 |
| 1 | CapsLk | MX_Hotswap:MX-Hotswap-1.75U | SW28 |
| 1 | Conn_01x05 | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J1 |
| 1 | Ctrl | MX_Hotswap:MX-Hotswap-1.25U | SW54 |
| 1 | D | MX_Hotswap:MX-Hotswap-1U | SW31 |
| 1 | Del | MX_Hotswap:MX-Hotswap-1U | SW65 |
| 1 | Down | MX_Hotswap:MX-Hotswap-1U | SW61 |
| 1 | E | MX_Hotswap:MX-Hotswap-1U | SW18 |
| 1 | ESC | MX_Hotswap:MX-Hotswap-1U | SW2 |
| 1 | Enter | MX_Hotswap:MX-Hotswap-2.25U | SW53 |
| 1 | F | MX_Hotswap:MX-Hotswap-1U | SW32 |
| 1 | Fn | MX_Hotswap:MX-Hotswap-1.25U | SW59 |
| 1 | G | MX_Hotswap:MX-Hotswap-1U | SW33 |
| 1 | GND | TestPoint:TestPoint_Pad_D2.0mm | TP2 |
| 1 | H | MX_Hotswap:MX-Hotswap-1U | SW34 |
| 1 | I | MX_Hotswap:MX-Hotswap-1U | SW23 |
| 1 | Ins | MX_Hotswap:MX-Hotswap-1U | SW66 |
| 1 | J | MX_Hotswap:MX-Hotswap-1U | SW35 |
| 1 | K | MX_Hotswap:MX-Hotswap-1U | SW36 |
| 1 | L | MX_Hotswap:MX-Hotswap-1U | SW37 |
| 1 | Left | MX_Hotswap:MX-Hotswap-1U | SW60 |
| 1 | M | MX_Hotswap:MX-Hotswap-1U | SW48 |
| 1 | N | MX_Hotswap:MX-Hotswap-1U | SW47 |
| 1 | O | MX_Hotswap:MX-Hotswap-1U | SW24 |
| 1 | P | MX_Hotswap:MX-Hotswap-1U | SW25 |
| 1 | Q | MX_Hotswap:MX-Hotswap-1U | SW16 |
| 1 | R | MX_Hotswap:MX-Hotswap-1U | SW19 |
| 1 | Right | MX_Hotswap:MX-Hotswap-1U | SW62 |
| 1 | S | MX_Hotswap:MX-Hotswap-1U | SW30 |
| 1 | SW_Push | Button_Switch_SMD:SW_Push_SPST_NO_Alps_SKRK | SW1 |
| 1 | Shift | MX_Hotswap:MX-Hotswap-2.25U | SW41 |
| 1 | Shift | MX_Hotswap:MX-Hotswap-1.75U | SW63 |
| 1 | Space | MX_Hotswap:MX-Hotswap-6.25U | SW57 |
| 1 | T | MX_Hotswap:MX-Hotswap-1U | SW20 |
| 1 | Tab | MX_Hotswap:MX-Hotswap-1.5U | SW15 |
| 1 | U | MX_Hotswap:MX-Hotswap-1U | SW22 |
| 1 | Up | MX_Hotswap:MX-Hotswap-1U | SW64 |
| 1 | V | MX_Hotswap:MX-Hotswap-1U | SW45 |
| 1 | W | MX_Hotswap:MX-Hotswap-1U | SW17 |
| 1 | Win | MX_Hotswap:MX-Hotswap-1.25U | SW55 |
| 1 | X | MX_Hotswap:MX-Hotswap-1U | SW43 |
| 1 | Y | MX_Hotswap:MX-Hotswap-1U | SW21 |
| 1 | Z | MX_Hotswap:MX-Hotswap-1U | SW42 |
| 1 | [ | MX_Hotswap:MX-Hotswap-1U | SW39 |
| 1 | \ | MX_Hotswap:MX-Hotswap-1.5U | SW13 |
| 1 | ] | MX_Hotswap:MX-Hotswap-1U | SW40 |
| 1 | nice_nano | nice_nano:nice_nano | U1 |
It measures 329.7 × 98.2 mm and has 2 copper layers, 1.6 mm thick.
136 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 0x62b/YetAnotherKeyboard repository on GitHub, at the commit this page was made from: the board is PCB/YetAnotherKeyboard.kicad_pcb and its schematic PCB/YetAnotherKeyboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask 0x62b before reusing the design.

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

ohmtech-rdi/eurorack-blocks
Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

rgoulter/keyboard-labs
Repo with my PCB designs and keyboard firmware

Spaceboards/SpaceboardsHardware
A collection of open source hardware that has been designed by Spaceboards


NVlabs/Cypress
Cypress is a scalable, GPU-accelerated PCB placement method inspired by VLSI. It incorporates tailored cost functions, constraint handling, and optimized techniques adapted for PCB layouts.

kbob/MinimumViableSynth
A virtual analog synthesizer with lots of knobs and buttons.

zhol0777/bully-files
Bully is a keyboard designed by paaradiso keyboard design and zhol. It combines low typing angle, a plateless build, and modest but dignified design sensibilities.