split89 keyboard - a 3d printed 89 key split TKL keyboard base powered by ATmega32U4 Pro Micro controllers with QMK Configurator support.

Overview

split89 keyboard - a 3d printed 89 key split TKL keyboard base powered by ATmega32U4 Pro Micro controllers with QMK Configurator support.

image

This keyboard build was inspired by the Microsoft Ergonomic 4000 keyboard I used for roughly 12 years or so. I broke my left wrist twice over the years so an ergo keyboard is a must for me to type comfortably all day long else my left wrist starts to burn after a few hours of typing on a regular keyboard. This is a real bummer since there are so many amazing keyboards out there. I could not find a split TKL like this layout so I designed one. This has a 6° tent and a 3° incline. I designed this to sit as low as possible with these angles on a table. One key switch is actually in a recess in the baseplate with a few mm of material below it.

The left half has an extra key on the bottom row so you can shift to other layers. The default keymap below illustrates this.

QMK Configurator support means you can create a custom firmware for this keyboard with your own keymaps/layers or simply download the existing keymap firmware via the QMK Configurator page.

External Links
QMK Configurator - keymap/firmware generator
Thingiverse

Table of Contents
Bill of Materials
Tool sugggestions
Assembly

  1. Print keyboard pieces
  2. Install keyswitches and stabs
  3. Prepping the diodes
  4. Installing the diode rows
  5. Installing the columns
  6. Wiring the controller, reset button and TRRS jack
  7. Programming the controllers
  8. Installing the base plates
  9. Wrap the wrist bases and rests
  10. Mount the wrist bases and rests
  11. Install rubber feet

My Personal Build
Keyboard Pics
Main Hardware
Tools
GMK Info

Bill of Materials

  • 3d printed components in 3d_printing_stl_files directory
    Print one of each:
    split89_electronics_plate_left.stl
    split89_electronics_plate_right.stl
    split89_left_body.stl
    split89_left_body_base.stl
    split89_left_wrist_base.stl
    split89_left_wrist_pad.stl
    split89_right_body.stl
    split89_right_body_base.stl
    split89_right_wrist_base.stl
    split89_right_wrist_pad.stl
    Print two of each:
    split89_arduino_brace.stl
    split89_reset_button_brace.stl
    split89_trrs_jack_brace.stl
  • (2) Pro Micro ATmega32U4 (5v 16MHz USB micro)
    image
    A few places to purchase
    • EBay
    • Aliexpress (usually cheaper if you have time to wait for slower shipping)
  • (1) 3.5mm TRS or TRRS male to male cable - EBay - only three pins in the TRS positions are being used so TRS or TRRS are acceptable to use for connectivity between the halves. There are some with two 90° plugs if desired for a compact fit. T = tip, R = ring, S = sleeve.
  • (1) USB micro cable - only one side needs to be connected to your computer so only one USB cable is required.
  • (89) keyswitches - NovelKeys - example switch to use - I'm a fan of linears. If you're not sure which keyswitch type you'd like, there are keyswitch testers out there to help you make your decision.
  • (6) 2U plate mount key switch stabilizers Aliexpress
  • (89) key caps - Key cap List
  • Wire - 6 color pack on Amazon - 24AWG pre-tinned wired - color helps you keep track of what's where. Solid core and pre-tinned as well so soldering is easier.
  • (89) 1N4148 Diodes - 100ct pack - Aliexpress - Ebay
  • M3 Hardware Amazon - Aliexpress
    image
    (6) 20mm
    (33) 10mm
    (3) 8mm
    (4) 6mm
    (2) 4mm
    (6) washers
    (6) nylock nuts
  • Car wrap vinyl Ebay - for covering wrist rest pad pieces. The 3d printed surfaces are rough and can hold stuff so putting this on makes them a more comfortable contact surface and easy to clean. There are videos for applying with a heat gun/hair dryer to soften at the corners to stretch around them for a smooth finish. (2) 8 1/2" x 11" sheets
  • (18) Rubber feet - Amazon - 144 pack

Tool suggestions

These tools are not required but certainly make the build easier and come in handy on most electronics projects

  • Micro flush cutters - these not only cut wire but have one side flattened so you can cut items flush with a surface like on the back of the Pro Micro where some wires may be sticking out beyond the solder.
  • Tweezers - there are a ton of options out there. Something with a long narrow end and serrations for grip are very handy to move things around or hold them in position while soldering.
  • Blue tack - this stuff is typically used to mount things on other things like cardboard or paper but a chunk works great to hold things in position while you solder. Just don't heat up objects too long or it can get a little sticky.
  • Vice - great tool to have in your toolbox for holding small items.

Assembly

Print keyboard pieces

image

I printed all of my pieces using SunLu Gray PETG. PETG is less rigid vs PLA and holds it's shape better over time vs PLA. Also figured since it's less rigid, it'd be less resonant to key presses.

For these larger pieces, I found that turning off my cooling fan helped these pieces avoid warping off of the bed.

split89_left_body.stl  
split89_left_body_base.stl  
split89_left_wrist_base.stl  
split89_left_wrist_pad.stl  
split89_right_body.stl  
split89_right_body_base.stl  
split89_right_wrist_base.stl  
split89_right_wrist_pad.stl  

Other things to note... I changed the perimeter count to five from the default 2 in my slicer for the larger pieces as well. I wanted heavier/denser pieces so my bases didn't sound so hollow. Last, I printed these with a brim and turned off elephant foot compensation(EFC). The EFC creates a gap between the brim and the body(currently the Prusa slicer behavior) which defeats what your brim is attempting to do, avoid lifting off the print bed.

The remaining pieces for the electronics plates I printed using the default Prusa slicer settings.

A de-burring tool works great to remove the brim in a clean way from the large pieces.

All pieces were printed using .2mm layer height. All .stl files should be printed as oriented. The wrist rests use a bit of support material but I found it was the best orientation for the cleanest contact surface possible.

Install keyswitches and stabs

image

image

This keyboard has 13.9mm square holes for the keyswitches. The keyswitches should press into place firmly. The stabilizers insert and kinda rotate into their position as they are fully seated. I took the time to disassemble and lube my keyswitches using Super Lube prior to installation. Also added lube to my stabs. This is not required but the few hours you put in to lubing your switches will be noticeable over many hours of use. There are many videos out there on how to do this.

Prepping the diodes

image

image

For an easier installation and cleaner final result, I opted to put a few nails in a board with a line to help me put consistent 90 degree bends in them at the right lengths. The bottom will get a 90 degree bend. The top gets a 90 as well but then you'll use a pair of needle nose pliers to make a loop. This loop will go over one of the legs of the switches for easier soldering. Ensure that you have the black marked end of the diode facing the 90, not the loop. This is critical for your keyboard to operate. One of my diodes was backwards and the key at that location will simply not work.

Installing the diode rows

image image

Each keyswitch requires a diode. I installed these one row at a time. I would put all diodes in place for the row I was soldering. The diode at the far right column had it's 90 leg snipped short. Once all are laid in place, solder from left to right. I used the cut off legs to cover the distance between the keys in rows that were further apart for appearance. You could just jumper these spans with wire as well.

Installing the columns

Per the diagram, using insulated wire, you will solder the 5-6 pins per column together. To do this, I would cut 8" pieces at a time. Easiest way is to just pull all six colors at once and cut them together. Remove 1/2" of insulation from one end and make a loop similar to the diodes. Put this on the pin of the switch at one end of the column. Next, you'll need to figure out where you need to expose the wire. I'd put the wire on the first pin and then bend the wire where the next pin is located. I used a set of wire strippers(which you can set how far they close) to cut the jacket(not the wire) and then, holding the looped end, pull the insulation a bit to expose 1/4" of wire. I'd repeat threading the wire in place to find where to cut and eventually end up with a piece of wire with gaps where I needed to solder. Some folks use an x-acto knife to open the wire insulation where needed. Others use a soldering iron to just melt the jacket away. At any rate, you'll build these column wires and solder them into place per the diagram.

Wiring the controller, reset button and TRRS jack

Note: keep good length wires to the reset switch, TRRS jack plate and off to the matrix from the controller in such a way that you can route them to lie flat enough so you can properly install the base plate. Note the base plate has a rim as well. If the wires are stacked too high, you won't be able to install the base plate correctly (made this mistake myself and had to install longer wires so they could route properly to lay flat).

The tactile reset switch is not directional. i.e. the two wires connecting to them just need to connect to two contacts that come out the same side of the switch.

I would highly recommend putting all jumpers required, in place on the pro micro, before mounting the pro micro on the electronics plate.

image

Also, note which plate goes with with which controller, right or left. They are specific to each side. The right side has more wires. Pre-wiring the controllers will make for an easier and cleaner installation. I tinned all of the pins on the controller I'd be using ahead of time. The pre-tinned wire drops into place nicely when these tinned pins are reheated.

The pins on the pro micro need to be connected to the respective rows and columns of the keyboard matrix. They can be connected at any point of the column or row. On the row connection, connect to the common connection across all diodes, not on the switch side of a diode.

I cut 8" wires again, six at a time, to connect to my pro micro and then tied them to the matrix as you can see below. I had some scrap left over but it's worth it for ease of install to ensure everything can reach with slack to give you routing options.

Programming the controllers

QMK Configurator

To download the default layout firmware, go to the above link, click 'COMPILE' in the upper right corner and you'll see a popup noting that firmware is being compiled. Once the firmware generation is complete, click the 'FIRMWARE' button to download the hex file. The reason you download from this page is so if you want to customize the keymap, you can do so. There are different colorways to view different color schemes. These do not affect the keymap.

Next, download and install QMK Toolbox. You will use this to flash the hex file onto the controllers.
QMK Toolbox - wiki - downloads

The below assume all goes smoothly. If you encounter a roadblock, check the wiki link above for further information.

Start up QMK Toolbox

At the top, select Open, navigate to the hex file you downloaded and select it.

Connect one of the halves of the keyboard to your computer via USB.
Then press the reset button twice quickly and wait a few seconds, you should see a message that your controller is connected and visible to QMK.

In QMK, click the flash button in the upper right corner.

You should see status messages scroll past and then a success message.

At this point, your keyboard half should function. Go here to test all keys on this half.

image

This firmware is written such that you can upload the same hex to both sides and the pins you tied high and low help the controller identify which side is left and which is right to run the correct part of the keyboard matrix.

What if a key is not working?

  • check for a loose soldering connection
  • check for a reversed diode
  • if you have a multimeter, check that the switch closes(creates a connection between the pins) when depressed

My two issues were... I had a connection on my diode rows that was not soldered(was able to move the diode leg with a tweezer). I also had one reversed diode. Both quick fixes!

Once the second half is flashed successfully, connect the TRS/TRRS cable and ensure that both keyboard halves function correctly via a single USB connection. The keyboard can function with the USB cable connected to either half of the keyboard as long as the TRS/TRRS cable is in place.

Once you've verified both sides are fully functional, pat yourself on the back for a job well done on the wiring and programming!

Installing the base plates

M3 screw size

image

You can install the base plates at this point knowing your keyboard electronics build is fully functional. I created many joints between the base plates and the main bodies(hence all the screws) to minimize the drumming sound of a large surface with nothing below it. Especially with plastic vs say aluminum.

Wrap the wrist bases and rests

(optional but highly recommended)

image

I used 3M car wrap vinyl I got off EBay. There are many colors out there. I went with 3M carbon fiber wrap. I cut my pieces to leave about 1" extra all the way around so I had something to hang on to while pulling it in to place.

The vinyl will cover up tiny gaps and the like in the surface but larger surface texture or bumps will show through. I sanded down my surfaces with 120 grit sandpaper to knock down most of the top texture. This made the vinyl lay down nice and flat. Check the bottom of the pads to ensure they're flat for a good mount to the base. I then wiped down all surfaces the vinyl would touch with isopropyl alcohol to ensure good adhesion.

image

When you're ready to put the vinyl on, remove the backing and place the vinyl on a clean work surface adhesive side up. A clean work surface will help ensure no particles or the like make it's way onto this sticky vinyl else you'll see it when you're finished and then it's too late to remove. This vinyl adhesive side being face up will allow you to easily hold the pad over the vinyl to ensure the bottom edge of the vinyl is parallel to the front edge of the pad so the texture of the vinyl runs straight across the pad.

image

Set it down on the vinyl and then pull up the long straight edges. Avoid the corners until you add heat.

image

This is when you'll want to start using heat to pull and lightly stretch and form the vinyl around the edges. The heat really loosens up this material quickly. If you're nervous, try practicing with some of the left over vinyl to get a feel for it before mounting your main pieces. Once I have it pulled up around the edges, I trim it so there's about 1/4"-1/2" of material to fold over on the bottom. Heat up the bottom and press that edge down as flat as you can. This will ensure a clean look when installing the pads.

image

image

Mount the wrist bases and rests

image

image

The wrist bases are secured to the bodies with bolts and nylock nuts minus the single 10mm screw which self threads into the body only.

Mount the wrist rests on the bases. Note there are a few screws that only purchase a few threads so tread lightly to install those.

Install rubber feet

image

I designed the foot inset holes to allow use of feet for grip and sound isolation but not protrude all the way to avoid adding height to the keyboard.

Congrats! You're done! Happy Typing!

My personal build

image

image

image

image

My personal build main hardware

Filament - SUNLU Grey PETG
Keyswitches - Alpaca Linear
Keycaps - GMK White on Black
Car wrap vinyl 3m Black Carbon Fiber
TRS Cable - CableCreation 1.5ft

My Tools

3D Printer - Prusa MK3s
Soldering Iron - Hakko FX888D
Solder - Kester 24-6337-0010
Side Cutter - IGAN-170
Adjustable Wire Stripper - Jonard Tools WS-5

GMK Info

See the build environment setup and the make instructions for more information.

Brand new to QMK? Start with our Complete Newbs Guide.

QMK github

Issues
  • Keys shifted from QMK Configurator

    Keys shifted from QMK Configurator

    When flashing the firmware made from the QMK Configurator, all of they keys are shifted over as if the columns are misconfigured. For example, the backspace key is actually the =, the insert key is the backspace, etc. This happens on both the left and the right side. The rows seem to be right, the columns seem to be shifted left by one.

    Tested both in a wired left hand keyboard, and flashing to an arduino and manually connecting the pins relating to the rows/columns.

    opened by rmont881 8
  • Left body requires supports for bolt pillars?

    Left body requires supports for bolt pillars?

    Hi,

    First, thank you for putting together this keyboard and instructions. This is an awesome project!

    When trying to follow the instructions and print/build/assemble the keyboard, I seem to have found an issue that may require either updating the printing instructions, or perhaps some change to one or more .stl files. I am a newbie so this may just be my misunderstanding -- please feel free to close this issue.

    The printing instructions in readme.md indicate that no supports need to be added when printing, with the exception of wrist pads. However, the split89_left_body.stl has elements (bolt pillars) that hang down from the main body but do not touch the base plate. "As-is" slicing in Cura produces a gcode file that is not printable, because the printer then tries to start printing those bold pillars "from the air" at some distance from the base plate, and the filament has nothing to adhere to. Please see an attached screenshot where I circled (in grey) the four columns in left_body.stl that do not touch the base plate.

    Reproduction steps:

    • I use Ender-3 v2 printer, Cura v 4.13.1, printing with generic PLA filament
    • Open split89_left_body.stl in Cura, do not enable supports, slice, send directly to the printer.
    • The bolt pillars in the middle of the body do not get printed. Extruder extracts the filament that hangs in the air.
    • (I have not yet attempted to complete the print - stopped after a few layers).

    I'm currently attempting to print the left body with supports automatically generated in Cura, but that obviously adds a lot of extra material to be printed, so I thought I'd ask you if that was the design intent of that body part.

    Thanks for looking at this, and again, please feel free to close if this is just a user mistake.

    Thanks,

    Denis. left_body_hanging_pillars

    opened by dgurchenkov 3
  • QMK Configurator still shifted right one

    QMK Configurator still shifted right one

    Finished building the second one of these and went to try out the changes to QMK Configurator and they are still shifted right, so I'm back on using the default hex you supplied.

    opened by rmont881 3
  • Low Profile Keys?

    Low Profile Keys?

    Would it be possible to get the F3D/Source files for the housing? It would be useful to adapt the board for low-profile keys: https://hexus.net/tech/news/peripherals/114314-cherry-announces-mx-low-profile-rgb-key-switches/

    The dimensions of low profile keys is slightly smaller than regular full-profile keys:

    ... dimensions of 11.9 x 15.0 x 15.0mm (H x W x D). For the record a conventional MX switch measures 18.5 x 15.6 x 15.6mm (H x W x D) ...
    

    I'd be happy to give it a shot and update the stls for low-profile keys.

    opened by vkhurana 2
Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103

ZeroBug - DIY Hexapod Robot Zerobug is a 3D-printed micro-servo hexapod robot powered by a Raspberry Pi Zero and a STM32F103. The Pi Zero is in charge

Max K 138 Jun 24, 2022
Remote control for your QMK-powered keyboard

QMK RC QMK RC is a project that aims to bring the same convenience to controlling your QMK keyboard from your computer, as QMK did to programming keyb

Maciej Małecki 45 May 1, 2022
Allows to swap the Fn key and left Control key and other tweaks on Macbook Pro and Apple keyboards in GNU/Linux

A patched hid-apple kernel module UPDATE August 2020: swap_fn_leftctrl is now built-in in Linux 5.8 ?? UPDATE Jun 2020: New feature added (swap_fn_f13

Zakhar Semenov 295 Jun 23, 2022
A cheap,simple,Ongeki controller Use Keyboard Simulation and Mouse Simulation to controller the ongeki game. Using Pro-micro control.

N.A.G.E.K.I. A cheap,simple,Ongeki controller Use Keyboard Simulation and Mouse Simulation to controller the ongeki game. Using Pro-micro control. 中文版

NanaNana 27 Jun 17, 2022
A cheap,simple,Ongeki controller Use Keyboard Simulation and Mouse Simulation to controller the ongeki game. Using Pro-micro control.

N.A.G.E.K.I. PLEASE CHECK Main Project A cheap,simple,Ongeki controller Use Keyboard Simulation and Mouse Simulation to controller the ongeki game. Us

NanaNana 11 Dec 30, 2021
QMK Configuration for Anne Pro (v1)

Anne Pro QMK firmware port for the Anne Pro 60% keyboard produced by Obins. This firmware is not created or supported by the creator of this keyboard!

null 1 Nov 15, 2021
Program your micro-controllers in a fast and robust high-level language.

Toit language implementation This repository contains the Toit language implementation. It is fully open source and consists of the compiler, virtual

Toit language 919 Jun 23, 2022
C/C++ language server supporting multi-million line code base, powered by libclang. Emacs, Vim, VSCode, and others with language server protocol support. Cross references, completion, diagnostics, semantic highlighting and more

Archived cquery is no longer under development. clangd and ccls are both good replacements. cquery cquery is a highly-scalable, low-latency language s

Jacob Dufault 2.3k Jun 28, 2022
keyball is split keyboard has 100% track ball

keyball Keyball is split keyboard has 100% track ball Firmware build guide Keyball46 have separate firmwares for each of PCBs w/ trackball and w/o tra

null 97 Jul 6, 2022
An Alice-like 35% 3d printed mechanical keyboard using ItsyBitsy dev boards

QALBLE An ergo 35% 3d printed wireless mechanical keyboard, born from the thought of "Imagine QAZ but split like an Alice ?? " The BLE is a misnomer s

null 13 Jul 5, 2022
ColecoAdam a boot menu and configurator for ADE virtual drives

VHS HEAD For Coleco Adam users with Adamnet Disk Emulator (ADE) devices. VHS Head is a boot menu and configuration program for ADE (Pro and Lite) user

Thomas Cherryhomes 3 Dec 24, 2021
JeVois-Pro People Counter : Implement people counter on JeVois-Pro Deep Learning Smart Camera

JeVois-Pro People Counter Refer to the OpenCV People Counter article to implement a people counter on the JeVois-Pro Deep Learning Smart Camera. First

On-Device AI Co., Ltd. 1 Nov 10, 2021
IDA Pro key checker tool

IDA Key Checker IDA Pro (6.x-7.x) key checker tool Usage A list of available options can be retrieved using: ida_key_checker --help Arguments: Option

null 53 Jun 20, 2022
⌨️ Personal key mapping for The Key.

The Key Personal key mapping for The Key. This firmware configures: The first key to be the mute key on single tap, and the pause/play key on double t

Zihua Li 1 Dec 25, 2021
Split flap display Arduino library

SplitFlapDisplay Split flap display Arduino library Introduction This is a simple high level library to drive split flap display letters with Arduino.

Stefano Guglielmetti 19 May 31, 2022
A custom OLED animation for QMK keyboards

superloop This animation is made for 32x128 pixel 1-bit OLED displays. Info This repository is a lightweight clone of the crkdb:default QMK configurat

hexcowboy 24 Jun 16, 2022
code for split-flap display

split-flap 3D-files here: https://www.prusaprinters.org/prints/69464-split-flap-display General The display's electronics use one esp01 as the master

David Königsmann 150 Jul 6, 2022
Left hand gaming keypad with a 3D printed case

GameHand Left-hand gaming keypad with a 3D printed case Case files KiCAD PCB files Gerbers for PCB production JLCPCB BOM JLCPCB CPL This work is licen

null 15 Mar 3, 2022
qmk based oled bongo cat animation

oledbongocat qmk based oled bongo cat animation step 1: append OLED enable and WPM enable to your rules.mk (see last lines of my rules.mk) step 2: in

null 71 Jun 30, 2022