Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
This guide covers building a Let's Split v2.

This guide is moving

To improve collaboration this guide is moving to GitHub. Continue reading


An Overly Verbose Guide to Building a Let's Split Keyboard

This guide covers building a Let's Split v2. Order your parts and read over this guide while you wait.

  • I2C isn't covered in this guide (yet), mostly because I didn't do it for my build.

Helpful references

Contents

Parts

*/!* The M3 screws linked above may have a slight clearance issue with the keycap. You can countersink the head or use a screw with a lower profile head. I'm testing out button head screws to see if they work better.

Cost Breakdown

Cost Part
$10 PCB
$10-60 Pro Micros
$3 Diodes
$2 TRRS Jack
$36 Plate and case
$9 Standoffs
$9 Screws
$7 TRRS cable
$14-50 Switches

Total cost: ~$100-186. Yours might be more or less depending on the exact parts you source, what you already have, and shipping costs.

Order the case

Optional if you have your own plate and case.

Download the raw plate SVG from Github (Alt-click Raw should do it).

Head over to Ponoko and create an account if it's your first time.

  1. Click My Designs > Overview > Add a new design
  2. Click Upload your design and select the letssplitv2.svg file
  3. Click Add this design
  4. Set the Quantity to 2 (the design is only 1 side)
  5. Click Add Materials > Add a Material
  6. Select Choose a material type > Plastic
  7. Select Choose a material > Acrylic - Clear - Antistatic (You can choose whatever type of material you like. We'll be using Acrylic for this build.)
  8. Select Choose a thickness > 0.118 inches
  9. Select Choose a size > P1 - 7.126 inches long x 7.126 inches wide
  10. Click Add this material
  11. Your total should be around $36
  12. Click Make it and complete the order process

Mount the Diodes

Diodes allow current to flow in one direction only. Mount the diodes with the black line facing the square pad.

You'll want to determine the orientation of your boards right now. Remember, they're symmetrical, but you can set it up to have your TRRS jacks on the inside or on the same side (right or left). For this build we'll be mounting our TRRS jacks on the inside, closest to one another.

  • The left PCB will have the TRRS jack on the right
  • The right PCB will have the TRRS jack on the left

This orientation will determine the top of your PCB. Insert the diodes on the top. Once mounted they will fit between the PCB and the plate.

Tip: It doesn't actually matter which side you mount the diodes on so long as they're in the correct orientation. For this build we'll put them on top.

Use a helping hand tool to hold the PCB above your work surface.

Use a small book binding or small pair of pliers to gently make a 90 degree bend on each side of the diode. It might take a few tries to get right, but you'll get the hang of it soon. They should drop easily into the 2 holes.

Double check your work. Black lines should be facing the square pad.

Tip: Lightly tack each diode in from the top. This will keep them snug against the surface once we flip it over and do the real soldering from the bottom. You only need a tiny amount of solder here and you should still be able to see through the hole.

Flip your PCB over and solder the diodes then snip the excess leads.

Mount the TRRS Jack

Mount the TRRS jack on the side opposite from your diodes. It should be on the bottom.

Tip: Use masking tape or a spare finger to hold it in place while you solder it. Tack a couple pins and make sure it's snug against the board, then do the rest.

Connect Jumpers

Right below the TRRS jack you'll see two sets of 3 pads labelled VCC and GND. Jumper them like this:

VCC [x]     [ ] VCC
    [x]     [x]
GND [ ]     [x] GND

Do both PCBs the same.

Mount Header Pins

You should have received header pins with your Pro Micro. Insert the short side into the bottom of PCB (same side as the TRRS jack) and solder them in.

Tip: To keep them aligned you can slip the Pro Micro over the pins but do not solder the Pro Micro at this time.

Tack the pins on the end and inspect. If the pins are not quite aligned with the board, heat one side with your iron and press it in. It should make a satisfactory "click".

Solder the rest of the pins (it won't take much solder here).

The long part of the pins should be protruding from the bottom. We'll trim these later after soldering the Pro Micro, but you can leave them be for now.

Mount the Pro Micro

Pay special attention on this step. There are several things that need to be done in the right order and orientation.

Tip: Flash your Pro Micro now before you mount it. You can test it by using a multimeter to measure the voltage between VCC and RAW. It should be around 5V. If it's bad it'll be a lot less headache than desoldering.

Mount the 2 switches under the Pro Micro

Heads up: The plate design linked in this build is not symmetrical. One edge is slightly smaller than the other. You probably want the small edge towards the center of the board.

  1. Grab 2 switches and your top plate
  2. Snap the switches into your plate in the spots that overlay the Pro Micro (on the left side that's column 2, and on the right that's column 5).
  3. Line up your PCB with the switches and solder them between the header pins

Mount the Pro Micro the Right Way

You'll be working from the bottom of the board for this step.

  • On the left PCB the Pro Micro should be smooth side up (facing you)
  • On the right PCB the Pro Micro should be component side up (facing you)

You may need to trim the pins on the left side switches as they will likely touch the controller and prevent it from resting flush with the pins.

Clearance is going to be tight on the right side between the USB and the bottom of the plate, so make sure you've got it as snug as possible against the header pins.

Ensure the orientation of your controllers are correct and you've already soldered the 2 switches underneath, then solder all the pins on the Pro Micro.

At this point you should be able to plug in and verify the board is working and the two mounted switches should work (if you already flashed). If it is, great job!

Trim the excess from the header pins.

Mount the rest of the switches

Home stretch. Gently snap in the rest of the switches and solder them.

Assemble the case

  1. Insert the screws on top
  2. Screw the standoffs onto the top screws
  3. Line up the bottom of the case with the standoffs
  4. Screw in the bottom screws to the standoffs

Tip: Finger tight is sufficient, but you can snug them down just a tad with a tool. Be easy, they don't need much!

Finishing touches

  1. Add some adhesive vinyl pads to the bottom
  2. Install your keycaps and connect the two halves with the TRRS cable.

You did it! Great job!

Common Issues

My column 2 or column 5 doesn't work

If you're having trouble with a dead column right over your Pro Micro it could be that you've got a short from the switch pins. Try to get under there and bend them down.

One side isn't working

  • Double check your jumpers are bridged correctly.
  • Make sure J1 on the Pro Micro is not bridged.

Flashing a Pro Micro

Windows

See /u/CampAsAChamp's Windows Guide

OSX, Linux

Build Keymap (QMK)

From the lets_split directory:

make rev2-YOUR_KEYMAP_NAME-avrdude

Don't forget to replace YOUR_KEYMAP_NAME with the actual name of your keymap.

You'll now have a .hex file that we can use to flash.

Bootloader

Connect RST and GND to enter bootloader. If you're using an official Sparkfun Pro Micro (the red one) you need to short this twice quickly.

You will have 8 seconds to flash before it continues on to the sketch.

Tip: If this is the first time the Pro Micro has been flashed it should go directly to the bootloader on start.

Flash

QMK now includes a very easy way to automatically find the serial port and flash without having to race the bootloader. From the keymap directory type ($ indicates the prompt. Don't type that):

$ make rev2-YOUR_KEYMAP_NAME-avrdude

Be sure to replace YOUR_KEYMAP_NAME with the name of your keymap.

Example:

$ make rev2-YOUR_KEYMAP_NAME-avrdude
Reset your Pro Micro now

Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
    Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.

# [snip]

avrdude: verifying ...
avrdude: 22286 bytes of flash verified

avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF)

avrdude done.  Thank you.

Common Issues

Programmer not responding

The controller isn't in bootloader mode. You may have missed the 8 second window to flash.

Can't open device

The serial port you specified isn't the one the controller is using.

Your right side has the TRRS on the LEFT and the keymap is reversed

As of Feb 7, 2017 this should no longer be necessary. The default rev2 orientation matches the keymap below.

You need to flip the keymap in QMK to match the orientation of your board. If you have the right side setup with the TRRS on the left you'll need to reverse the keymap for that side.

Add a new file to your keymap directory named flip_keymap.h:

#undef KEYMAP
#define KEYMAP( \
	k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
  k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
  k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
  k30, k31, k32, k33, k34, k35, k75, k74, k73, k72, k71, k70 \
	) \
	{ \
		{ k00, k01, k02, k03, k04, k05 }, \
		{ k10, k11, k12, k13, k14, k15 }, \
		{ k20, k21, k22, k23, k24, k25 }, \
		{ k30, k31, k32, k33, k34, k35 }, \
		{ k40, k41, k42, k43, k44, k45 }, \
		{ k50, k51, k52, k53, k54, k55 }, \
		{ k60, k61, k62, k63, k64, k65 }, \
		{ k70, k71, k72, k73, k74, k75 } \
	}

Then include this file at the top of keymap.c under #include "lets_split.h":

#include "flip_keymap.h"

Your right side has the TRRS on the RIGHT and the keymap is reversed

Use rev2fliphalf instead of rev2 as the target.

Let's Split RGB Underlgow

Parts

  • WS2812 LED strip
  • 24 AWG (or smaller) stranded wire in 3 colors (white, red, black are good choices)

The WS2812B strip is also fine, but avoid the sealed waterproof one for keyboards.

Look for a strip with spaced, 3-pad connectors. When you cut between them the pads are bigger and it's easier to solder to. Example:

Prep the strips

  1. Cut 2 5-LED segments from the WS2812 strip (cut between the pads, or in the middle of the pads if you don't have a space between)
  2. Fill the pads on both ends with solder like the picture below

Avoid buying LED strips like this one where you cut the pad in half. There's just not much left to solder to, but it can be done.

Prep the wire

  1. Cut 3 white, 3 red, and 3 black wires, about 5cm (2in) in length
  2. Strip the ends about 2-3mm
  3. Solder the wires on each end of the strip
    • White: VCC
    • Red: DIN/DO
    • Black: GND

Connect to the Pro Micro

Remember, current only flows one way through diodes so be sure you've got your LED strip in the correct orientation.

Data goes like this: --> Data In (DIN) --> Data Out (DO)

On the Pro Micro you connect the USB cable to:

  1. Connect LED DIN to TX0 pin
  2. Connect LED GND to any GND pin
  3. Connect LED VCC to VCC pin

Tip: You may need to adjust the length of some of your wiring so it routes snugly to the board.

Sync across sides

Remember those jumpers we did before below the TRRS jack? We're going Use the 3rd pad here.

On the DO side of the controlled strip:

  1. Connect LED GND to GND pad
  2. Connect LED VCC to VCC pad
  3. Connect DO to Extra Data. It's a through hole right between the VCC/GND pads.

Tip: These pads are pretty small so be careful not to mess up your jumpers.

On the other side:

  1. Connect to VCC, GND, and Extra Data to DIN pad on the strip.
  2. Don't connect the DO side

Your wiring should look like this:

TX0 -> DIN -> DO -> extra data -> (TRRS to other side) -> extra data -> DIN

QMK


  1. Add a Makefile and config.h to your keymap if you don't already have one.
  2. In the Makefile add RGBLIGHT_ENABLE = yes
  3. Add a layer to control the RGB lights
  4. In config.h:
#undef RGBLED_NUM
#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 10

Now flash that sucker and turn your lights on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment