Budget DIY Wireless Split Keyboard With ZMK

by daniely101 in Circuits > Wireless

527 Views, 1 Favorites, 0 Comments

Budget DIY Wireless Split Keyboard With ZMK

How to build a Corne Keyboard - Wireless, Split, Ergonomic, Cheap
im1.jpg

I built my own version of the Corne (aka "Helidox") split mechanical keyboard fully hand-wired, low-profile, and wireless. No custom PCBs here — just prototyping, patience, and a lot of soldering. The goal was to make a compact, ergonomic keyboard that’s portable and customizable without relying on pre-made PCBs or expensive parts.

One of my main goals was to keep the build budget-friendly, so anyone could make it. Most DIY split keyboards online cost well over $100. I wanted to prove that you don’t need to spend that much to get a clean, fully functional, and wireless keyboard.

This version uses ZMK firmware and dual controllers to enable Bluetooth connectivity, letting each half communicate wirelessly. I made this project to challenge myself, understand keyboard firmware better, and create a custom tool tailored to how I type and work.

If you’re into DIY electronics, mechanical keyboards, or just want a real hands-on build that won’t drain your wallet — this one’s for you.

GitHubRepoLink

Supplies

0-02-05-bc6d5ed073b152d0edccd437dafc959e16523482766a3e81669a8372b279ec31_2953ebda6f3997d3.jpg

Supplies

  1. 2× ProMicro nRF52840 boards – $6.82 total
  2. Buy on AliExpress
  3. 2× Li-ion batteries – $4.20 total
  4. Buy on AliExpress
  5. 50× Mechanical switches – $7.47 total
  6. Buy on AliExpress
  7. 1× Set of keycaps – $3.79
  8. Option 1 / Option 2
  9. ~60× 1N4148 diodes – $0.85 total
  10. Buy on AliExpress
  11. 2× Slide switches – $0.11 total
  12. (Generic – no link)
  13. 3D Printed case parts – $1.80
  14. (Files provided in the repo)

Total estimated cost: $25.04 (excluding wires and screws)

Print or Design Your Case

0-02-05-883cded1ea67f5439b8f0054797a0d797e17602130523433dbd2443f6d7a9dbd_4b204f279e2b86a.jpg

Begin by 3D printing the provided STL files for the keyboard case, or design your own if you prefer. Pay close attention to the battery compartment. If your batteries are even slightly swollen or puffed, they will cause warping or misalignment issues with the case. Using fresh, flat batteries is critical to ensure a clean fit. A warped case will cause problems when assembling the keyboard later, so take your time to get this right.

Wire the Columns

0-02-05-55fd00b2c34f1bc80e20389f5daf1f14bff920564993dc0f6f1c11e45fab672e_359cdd4e049b2d85.jpg

Start wiring the keyboard matrix by soldering the column lines. These are the vertical rows of your key matrix, and each wire will carry signals from multiple keys along a column. Use solid core wire or stranded wire carefully stripped and tinned to ensure clean solder joints. Make sure the wires are routed neatly and avoid excess slack. Good cable management now will save headaches later.

Wire the Rows Via the Diode Cathodes

0-02-05-dd1bf316e8364867bb3f2a31278286121ad43fdb5a1b12ecdd107e0f743af1c2_85c51d3b71f1755e.jpg
0-02-05-cdebf2669ba04c2991e5d0da464eb9eb0362e8a7026014f0fb953a7195d9044c_6d42fa47bc11e649.jpg

Next, wire the row lines, but this time through the diodes to prevent “ghosting” or phantom key presses. Each key switch connects to a diode. The diode’s cathode (marked with a line) should be connected to the row wire, while the anode side connects to the switch itself. This setup ensures current flows in only one direction through the matrix, isolating each key press electrically. Double-check your diode orientation; reversing them will break the matrix.

Connect Extra Conductors to Rows and Columns

0-02-05-9431000101f512c22b2c0850e8706b55f913edecf2949bc51e94282405780421_ea2a68c74b6cffd.jpg
0-02-05-cdebf2669ba04c2991e5d0da464eb9eb0362e8a7026014f0fb953a7195d9044c_6d42fa47bc11e649.jpg

To organize wiring and simplify connections to the microcontroller, attach additional conductor wires to each row and column line. These extra wires should be tucked neatly underneath or alongside your existing wiring bundles. This step consolidates your wiring and prevents signal interference or shorts when connecting to the MCU. Take your time to route cables cleanly.

Connect All Rows and Columns to the MCU Pins

0-02-05-093ecaa5e8e3eeb185b4cc9ec219cbfac95d5c880002591311d7818cc1b41deb_629fbe150d0a0e87.jpg
0-02-05-2ffe13b92771f3a02501ff8abfcae2251cfe0eaeee1c03f3ad50e826efe07fb1_c2640bd1b3d04ca3.jpg

Now it’s time to wire the rows and columns directly to your microcontroller unit (MCU). Here are the exact pin assignments to follow for each line:

  1. Rows (connected to row GPIO pins):
  2. Row 0 → Pin 21
  3. Row 1 → Pin 20
  4. Row 2 → Pin 19
  5. Row 3 → Pin 18
  6. Columns (connected to column GPIO pins):
  7. Column 0 → Pin 2
  8. Column 1 → Pin 7
  9. Column 2 → Pin 6
  10. Column 3 → Pin 5
  11. Column 4 → Pin 4
  12. Column 5 → Pin 3

Ensure every wire is solidly soldered and there are no cold joints. Test continuity with a multimeter if needed before powering the board.

Add the Battery and Slide Switch for Power Control

0-02-05-1c1cfa137be527457e94918adb3045073ea3f4fa785154081331d06cdab4d191_69d7387cd6a3cd15.jpg
0-02-05-ff1f71cb22af72834088b6eeb2848f9ff4efa4dcf3a138385cfd4b0b7e5c7fdd_29e2f0de6794facb.jpg
0-02-05-153e98d9a8f3b676c22cc7622f4eed5be2fc2ef9fb3fbddedaec4f1872fe2739_31a502ec6fc0ab6c.jpg

Integrate the power supply by connecting the battery and the slide switch:

  1. The middle pin of the slide switch connects to the MCU’s RAW input pin, which is the voltage input for powering the board.
  2. One of the side pins of the slide switch connects to the positive terminal of the battery.
  3. The battery’s negative terminal connects to the MCU’s GND (ground) pin.

This wiring lets the slide switch turn the entire keyboard on or off safely by controlling the power input line. Double-check polarity. Reversing battery connections can damage components.

Secure Components With Hot Glue

0-02-05-567a453e511eeefd1773bcaaddc8b99376192fcb38b30cf57c69c9d1478711fe_993c48c46b4aac15.jpg
0-02-05-90a35c911207ea8e7b412b09d33cd3fd41a480f61995c827ca39867d046d9a9d_bc5ef253e352a5d9.jpg

To prevent physical strain on your solder joints and keep components firmly in place, apply hot glue behind the slide switch and the MCU, especially around areas where cables connect. This step is crucial for durability, as loose wiring or movement can cause shorts or broken connections during use or transport. Use small amounts of glue so you can still access components if needed.

Flash the Firmware

You’ll need to flash three files to the controllers:

  1. corne_left-nice_nano_v2-zmk.uf2 – firmware for the left half
  2. corne_right-nice_nano_v2-zmk.uf2 – firmware for the right half
  3. settings_reset-nice_nano_v2-zmk.uf2 – resets Bluetooth pairing info

Why reset?

ZMK stores Bluetooth bonding info. The settings_reset.uf2 clears this, preventing pairing issues. Always flash this before flashing the firmware.

How to flash:

  1. Double-tap the reset button on your MCU. It should show up as a USB drive.
  2. First, drag settings_reset.uf2 onto the drive. Let the board reboot.
  3. Double-tap reset again, and now drag either left.uf2 or right.uf2 depending on the half.
  4. Repeat this process on the other half.

github_firmware_link

Testing

Turn on both halves using the slide switches.

The halves will automatically search for each other and pair wirelessly. No need to press any reset buttons.

One of the halves (the left) will show up as a Bluetooth keyboard when you connect it to your computer.

Pair it via your system's Bluetooth settings.

Once connected, test every key. If something doesn’t register, recheck your wiring — especially diode direction and GPIO pin mapping.

Screw the Case Together

Place the top plate into the 3D printed case and secure it with screws. Make sure no wires are being pinched. Once closed, your keyboard halves should feel solid and ready to use.

Customize Your Keymap

If you're not satisfied with the default keyboard layout — and let’s be honest, you probably aren’t, you’ve got options.

You can clone the GitHub repo and directly edit the keymap files in the ZMK config to suit your preferences. But if you want an easier, UI-based method, just use this tool:

👉 https://nickcoutsos.github.io/keymap-editor/

It lets you customize your keymap visually and then export it, so you can plug it right into the firmware.

Whether you want to change layer functionality, add macros, or make your own layout from scratch.