a fancy pants keyboard i'm making
1# The thyme keyboard 2 3![blueprint](https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/blueprint.svg) 4 5<img src="https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/tanabata.svg" width="150" align="right"> 6 7> ### More deets coming soon 👀 8> A split, low-profile, wireless mechanical keyboard inspired by the Corne design. Made possible through the [`hackpad`](https://hackpad.hackclub.com) grant from Hack Club. 9 10## BOM 11 12| Part | Quantity | Price | Link | Description | Notes | 13| --- | --- | --- | --- | --- | --- | 14| PCB | 1 | `$25.15` | [JLCPCB](https://jlcpcb.com) | 2-layer, 1.6mm, black, leaded Hasl | I wanted to get ENIG but that bumped the price by `$20` | 15| | | | | | | 16| Choc v1 switches | 50 | `$27.50` | [Chosfox](https://chosfox.com/products/kailh-chocs?variant=42514648006850) | pink variant: `20+-5 gf` linear | `$0.55` per switch | 17| | | | | | | 18| Choc PG1350 | 50 | `$7.25` | [Chosfox](https://chosfox.com/products/kailh-choc-switch-1350-hot-swap-sockets) | hot swap sockets | `$0.145` per socket | 19| 1u keycaps | 40 | `$14.00` | [Chosfox](https://chosfox.com/collections/low-profile-keycaps/products/chocfox-cfx-choc-keycaps) | White PBT low profile | `$0.35` per keycap | 20| 1u homing keycaps | 2 | `$0.80` | [Chosfox](https://chosfox.com/collections/low-profile-keycaps/products/chocfox-cfx-choc-keycaps) | White PBT low profile | `$0.40` per keycap | 21| 1.5u keycaps | 2 | `$1.65` | [Chosfox](https://chosfox.com/collections/low-profile-keycaps/products/chocfox-cfx-choc-keycaps) | White PBT low profile | `$0.83` per keycap | 22| Total cost: `$24.10` | | | | average of `$0.41` per keycap | | 23| | | | | | | 24| SuperMini NRF52840 (Nice!Nano footprint) | 2 | `$8.30` | [AliExpress](https://www.aliexpress.us/item/3256805848952479.html) | Wireless Microcontroller | `$4.15` per MCU | 25| | | | | | | 26| Machine Sockets 2.54mm | 1 | `$1.75` | [AliExpress](https://www.aliexpress.us/item/2251832794091942.html) | 26x2 needed to socket the two MCUs | comes in a 10 pack of 40x1 rows | 27| Machine Pins | 1 | `$3.99` | [AliExpress](https://www.aliexpress.us/item/2251832672116019.html) | 26x2 needed to socket the two MCUs | comes in a 100 pack of 4 per header | 28| Power Switch | 4 | `$0.39` | [DigiKey](https://www.digikey.com/en/products/detail/same-sky-formerly-cui-devices/SLW-1277744-3A-N-D/24399208) | added an extra switch for each side as backup | `$0.10` per switch | 29| JST PH 2.0mm 2-pin Connector | 4 | `$0.40` | [DigiKey](https://www.digikey.com/en/products/detail/jst-sales-america-inc/S2B-PH-K-S/926626) | | `$0.10` per connector | 30| Diodes | 42 | `$1.43` | [DigiKey](https://www.digikey.com/en/products/detail/diotec-semiconductor/1N4148/13164514) | 1N4148 | `$0.03` per diode | 31| Total cost: `$7.66` | | | | | | 32| | | | | | | 33| 301230 3.7V 110mAh LiPo Battery | 2 | `$6.30` | [AliExpress](https://www.aliexpress.us/item/3256805162053912.html) | the non jst ones are cheaper but the crimper is 60 bucks and there is no way im buying that | `$3.15` per battery | 34 35Total cost: `$92.36` 36 37### Shipping / Tax / Tariffs / Per store shopping list 38 39| Store | Shipping | Subtotal | Total | Items | 40| --- | --- | --- | --- | --- | 41| AliExpress | `$9.43` | `$26.64` | `$36.07` | 2x SuperMini NRF52840, Machine Sockets, Machine Pins, 2x LiPo Battery | 42| DigiKey | `$6.99` | `$4.49` (tarrifs and tax) | `$11.48` | 4x Power Switch, 4x JST Connector, 42x Diodes | 43| Chosfox | `$6.50` | `$51.20` | `$57.70` | 50x Choc v1 switches, 40x 1u keycaps, 2x 1u homing keycaps, 2x 1.5u keycaps | 44| JLCPCB | `$10.55` | `$14.60` | `$25.15` | 1x PCB | 45 46Total shipping: `$31.97` 47Total cost: `$122.67` (including shipping, tax, and tarrifs) 48 49## Schematics 50 51![schematic](https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/schematic.svg) 52 53![pcb](https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/pcb.svg) 54 55## Build Notes 56 57Panelization is the most annoying bit of this whole process. I was able to finally get it work work by using [`kikit`](https://yaqwsx.github.io/KiKit/latest/installation/intro/) to generate rails and tabs. 58 59```bash 60kikit panelize \ 61 --layout 'grid; rows: 1; cols: 1; space: 3mm;' \ 62 --tabs 'fixed; width: 3mm; vcount: 8;' \ 63 --cuts 'mousebites; drill: 0.5mm; spacing: 1mm; offset: 0.2mm; prolong: 0.5mm;' \ 64 --framing 'railstb; width: 5mm; space: 3mm; chamfer: 1mm;' \ 65 --tooling '3hole; hoffset: 2.5mm; voffset: 2.5mm; size: 1.5mm;' \ 66 --fiducials '3fid; hoffset: 5mm; voffset: 2.5mm; coppersize: 2mm; opening: 1mm;' \ 67 --post 'millradius: 1mm;' \ 68 --text 'simple; text: "THYME v1.14"; anchor: mt; voffset: 2mm;' \ 69 --text2 'simple; text: Created on {date} JLC Order: JLCJLCJLC; anchor: mb; voffset: -2.5mm; hjustify: center; vjustify: center;' \ 70 thyme.kicad_pcb panelization/panelized.kicad_pcb 71``` 72 73![panelized](https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/panelized.svg) 74 75Firmware is `zmk` and is maintained in the submodule [/zmk](https://github.com/taciturnaxolotl/thyme-module). The latest firmware build can be grabbed from [nightly.link/taciturnaxolotl/thyme-module/workflows/build](https://nightly.link/taciturnaxolotl/thyme-module/workflows/build/main) as a zip containing the left and right half `uf2` files. 76 77The case was made in onshape and is available in [this document](https://cad.onshape.com/documents/eb30178d0af4291efc746ab6/w/0d165c7d0bf8d717a9598c9f/e/3dd4b0baac9c9ef14c8041ba?renderMode=0&uiState=67efb22294ee2703b96c81ea). The case is made of PLA and printed on an A1 mini. It is likely to change quite a bit once I get my pcb assembled and can fit test stuff. Evenentually I would like to add a top plate that attaches to the bottom with magnets and mill the whole case out of aluminum. 78 79A major tool that helped with the research and organization of my thoughts was my [figjam board](https://www.figma.com/board/wyCQS9SeIG2Sutu5v6OT2m/thyme---split-mech-keyboard?node-id=0-1&t=SG0VuRAT0FkSCQlS-1)! I used it to keep track of all the resources I found and what parts I wanted to use. Once I got to actually picking specific parts I moved that to the bom table above. 80 81![figjam board](https://raw.githubusercontent.com/taciturnaxolotl/thyme/main/.github/images/figjam.png) 82 83<p align="center"> 84 <img src="https://raw.githubusercontent.com/taciturnaxolotl/carriage/master/.github/images/line-break.svg" /> 85</p> 86 87<p align="center"> 88 <i><code>&copy 2025-present <a href="https://github.com/taciturnaxolotl">Kieran Klukas</a></code></i> 89</p> 90 91<p align="center"> 92 <a href="https://github.com/taciturnaxolotl/thyme/blob/master/LICENSE.md"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a> 93</p>