Custom keyboard experiments – basic electronics

The first series of experiments and findings.

First choices

In the previous post we touched on the various choices available to us to build a custom keyboard. I’ve decided to first try with:

  • Cherry MX Brown switches. They are the ones I use with my home and work keyboards and my favorite for typing. They can be readily bought from mechanicalkeyboards.com, and are available in plate-mounted or PCB-mounted flavors. Plate-mounted is especially interesting for us since we’re not planning to design a PCB yet.
  • The Teensy++ development board. Its wide community support, simple tools for firmware upload, and the fact that the powerful and widely-used QMK firmware is compatible with it makes it a great candidate.

I had some keycaps left from a previous keyboard so I could start with a simple 9-key, 3×3 matrix prototype.

The key matrix

The first instinct one would have to assemble switches and the development board would be to connect each switch to the +5V pin and to one of the I/O pins of the board. However, keyboards can have more than 100 keys, and very few controllers have that number of pins. It simply would not be possible, especially with a Teensy.

The solution is to have the keys form a matrix, and have the controller activate columns (or rows) one by one, and read the rows (or columns) to know which keys are active. Here is a very good explanation of how to make a key matrix, what ghosting is and how to get rid of it.

For the diodes, the “classic” choice for keyboards are 1N4148, which can be found dirt-cheap on Amazon or online electronic stores (my favorite: Mouser.com).

The soldering

Since I do not yet have access to a laser cutter to experiment with the plate, I decided to test making the matrix itself, free hand. Let me tell you, without a support to hold the switches together, this was no easy feat.

Here is what the underside of a Cherry MX switch looks like. I started by preparing a ball of solder on all terminals of my 9 switches to facilitate soldering the diodes and columns on later.

And here’s how the diodes are arranged to form the rows. I feel like I will need to pre-bend them when I need to solder 100 of these.

IMG_20170731_183719

And… first row done!

IMG_20170731_183922

I don’t think I’ve ever soldered components pin-to-pin before, especially with loose components…

Times 3, here are my 3 rows:

IMG_20170731_185008

Now for the columns, the wires will need to go over the rows, so they need to be insulated. I did not want to go through the trouble of cutting and stripping 9 wires, so I opted for this strategy:

IMG_20170731_190456

Unfortunately, without the proper measurements, this is not an easy solution to work with. Some segments will be too short, others too long, the plastic insulation melts, etc. Multiply this by 2 for 6 rows, it’s a bit too complicated. I may have to be more precise the next time or just use a multitude of small  wires. Anyway, here’s the final product (please don’t be too harsh on the soldering job, I hadn’t done any in a while and this is not the easiest way to work with components. But I love challenges 🙂

IMG_20170731_221758

And now we have a fully functional matrix.

IMG_20170731_221813

And here’s what it looks like from the front. I’m quite happy with it, the diodes and wires keep the switches together in a solid piece.

The Teensy’s pins

When the Teensy++ 2.0 arrives without headers, this is what is looks like:img_20170812_185242.jpg

And to make it easy to prototype on a breadboard, I soldered wires to every pin on the sides:

img_20170812_185356.jpg

Looks like a weird metallic spider…

Next up: working with the software, uploading it to the Teensy, and wiring the rows and columns accordingly.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s