Wednesday, July 19, 2017


Cherry ML Function stick

I was left over with a lot of ML keycaps from the MLP keyboard. Created this thin 1x12 macropad for use as function keys.

The Pro Micro is running a simple Arduino sketch.

I built 2, one with 6mm spacers and one with 4mm spacers. To use 4mm spacers you need to use a low profile socket. The thin head laptop style screws are very low profile. I will be sticking these to the edges of monitors with 3M command strip removable adhesive.

The files are on Github.

 The low profile Cherry ML switches. The keycaps are from a PLUM keyboard.

 6mm and 4mm spacers.

 Another view.

 Sitting atop a MLP.

Larger USB connectors fit fine.

Tuesday, July 18, 2017

Strange Fruit

Blue Cherries on a dyed blue PCB

I dyed some PCBs blue. The soldermask was sanded down to the bare FR4 fiberglass surface. I tried 3 different dyes, each for 15 minutes simmering on a hot plate. The first dye was Rit Denim Blue. After 15 minutes there was no noticeable coloring. The second was Rit Dyemore Blue. Also no noticeable change after 15 minutes. Finally iDye Poly Blue. After 15 minutes it was a deep blue. I left it in for another 5 minutes and it didn't seem to get any darker.

I found this post where it took almost 2 hours to dye with regular Rit dye. So it can be done if you have a lot of time.

I have also dyed some purple PCBs.

The keycaps are from a PMK grab bag. They are upside down.

 Upside down Cherries.

 The pink one is the correct orientation.

 Six Pack with Outemu Teal switches.

I also dyed a Gherkin plate and a 2 pack plate at the same time.

Monday, July 17, 2017

Conjoined Let's Split

A Let's Split stuck to itself

I did not have separate cases for the two halves so I put both in one of the plates I made for a Planck. The switch spacing for a Planck is 19mm and the Let's Split is 19.05mm. The difference is small but it shows. There is a slight bowing of the plates. Being only 6 columns wide reduces the total offset. If it were a single 12 column PCB the offset would be 0.55mm from end to end. As it is there is a 0.25mm offset for each side. Socketed Outemu teal switches were used so this can be disassembled and put in a new case later.

The TRRS cable is a bit short for normal split use. They are a good length for a permanent umbilical. Sort of looks like crab eyes.

I flash my Pro Micro's with the Atmel DFU bootloader. With the default fuses the JTAG port is enabled by default and needs to be disabled to use Port F. Adding the following code to matrix.c  in the matrix_init function will disable JTAG.

 // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);

 Crab eyes sticking out the top.

 The Pro Micro's stick out from the front.

 12mm spacers. I used a low profile socket on one side and a full height on the other.

 6 inch TRRS cable.

 A notched ground between the two PCBs for the center post.

 Small notches on the top and bottom of each PCB.

Jumper to fix a scratched trace.

Thursday, July 13, 2017

2 Pack rev 2

Revised 2 Pack PCB

Added a notch to the bottom plate to allow larger USB connectors. Rotated the logo. Otherwise it is the same as the previous version.

These are small enough for the $2 special for 10 boards on Shipping will be a larger part of the cost, coming from China.

Wednesday, July 12, 2017

Gherkin Pack

PCB mount Gherkin with integrated plain PCB bottom

As an experiment I combined the Gherkin PCB with a snap off bottom piece. This is the top and bottom plate for a PCB mount Gherkin in a single PCB.

I had a few made and they work fine. You snap the board in half and sand the nubs off each side. I use 220grit wet/dry sandpaper and wet sanded it with the paper on a flat surface. I sanded all four sides so they had an even smooth finish on all edges. The boards are fiberglass so wet sanding will keep you from breathing in dust.

While this worked, it actually cost more than just using a second PCB as the bottom. EasyEDA prices by area, and the two parts with the little gap between are more than twice the size of the PCB alone. Also the volume price breaks work against this. 5 combo pieces are $16.09 and 10 regular PCB's (using one for top and one for the bottom) are $15.93.

There is also the additional labor of sanding down the parts. It is better to just use two regular PCBs.

 The gerber preview of the combo PCB.

 The combo PCB as it comes from EasyEDA. Both parts attached by little nubs.

 The PCB parts separated and edges sanded smooth.

 Assembled with Gateron blue PCB mount switches and blue LEDs inside the switches.

 The bottom PCB installed.

I assembled one board with the two halves still attached. The diodes/resistors/MOSFET are the ones I ordered from

Monday, July 10, 2017

MLP 1.1

MLP 1.1

Second version of the Cherry ML 40% keyboard. Same schematic. The number of M2 supports has been reduced. This allows for placement of the Pro Micro that is not blocked by a screw post. There are now cutouts for the Pro micro so that larger USB plugs can fit.

4mm M2 spacers and a low profile socket were used to reduce the space between the plates. 1.2mm PCB material was used to save 0.8mm (from the 1.6mm PCB used previously). Total height is about 16mm. First version was 19mm thick.

White PCB soldermask and contrasting M2 3mm black oxide washer head screws. The washer head screws are large in diameter and extend beyond the edge of the PCB a little. I removed the silkscreen layer which is normally black. The PCB's are completely white with no markings.

Gerber files are here.

Cutout for USB plug.

16mm tall vs 19mm.

8u spacebar

8u spacebar on ortholinear

Sorted through the remnants of my PMK grab bags and found some 7u and 8u DSA spacebars. Both will fit over 1u spaced switches. On the 7u the center and two end stems fit into switches. On the 8u the center stem goes between two switches, only the two outer stems go into switches.

There is no stabilizer, so the bar will tilt towards whatever end you press down on. You can program the two switches to do two different functions and have a "split" spacebar.

I also found some 4u spacebars in SA profile. These have the proper rounded top for a spacebar. These were like the 8u where only the outer two stems sat in switches and the center stem was between switches.

Some pictures of an 8u spacebar on a double Gherkin.

Friday, July 7, 2017

Thirty 30%

Thirty 30% keyboards

Mostly Gherkins or Tomatos, some 16mm.

Various types:
  • Compact Dual PCB
  • With PCB top/bottom plates
  • Wood cases
  • Most with LEDs, Some RGB.
  • Steel plates
Some links to individual boards:
There are actually 34 keyboards pictured. I have another half dozen that aren't in the picture.

Wednesday, July 5, 2017

Jaundiced Gherkin

The Yellowish Gherkin

An all yellow Gherkin. The PCB has yellow solder mask (you can't really see it.) The top and bottom plates have had their solder mask (which was green) sanded off. The raw FR4 material is a pale translucent yellow color. Yellow brass spacers and screws. The switches are the new Kailh Speed Gold clicky switches. There are yellow 2x3x4 LEDs under the switches. The board is covered with yellow Watster keycaps.

  • Yellow solder mask PCB
  • Bare FR4 tops and bottom plates
  • Kailh Speed Gold switches
  • Brass spacers and screws
  • Yellow 2x3x4 LEDs 
  • Watster keycaps

Tuesday, June 27, 2017


EasyEDA's parts store

I purchased some parts from It is the same company as and they will ship the parts for free with your PCB order. When you checkout you select "ship with PCB" and the shipping cost is removed. You use your EasyEDA login to login to LCSC.

The prices are good for the parts I could find. I got several different 1n4148 diodes and some resistors. I also found a MOSFET that works with the backlight circuits I use.

Here's the parts I bought:

Semtech 1n4148 (Thin wire leads)

STARSEA 1n4148

MCC 1n4148

Fairchild 1n4148


UniOhm MFR0W8F5100A50 510ohm

UniOhm MFR0W8F1000A50 100ohm

UniOhm MFR0W8F1003A50 100Kohm

The Semtech diodes have very thin leads. 0.39mm. They are the cheapest diodes on LCSC. I would not recommend them. The other 3 brands of 1n4148 diodes have 0.48mm leads. It is very difficult to see any difference between them physically. All diodes come on tape. The tape is fresh and not old and gummy so comes off clean without leaving sticky residue. Prices ranged from $0.009 to $0.0059 each in quantities of 500.

They did not have 470ohm resistors, which is what I usually use. The closest was 510ohm, which is close enough. Prices for the resistors were very good. $5.55 for 1500. I got 100 of the 100ohm and 100Kohm @ $0.52 for 100. These were also on tape.

The MOSFETs were $0.63 for 10. Dirt cheap.

Example packing slip. Looks like all prices are not in USD.
Things I could not find:
  • Machine pin sockets (24pin wide)
  • Through hole LEDs appropriate for backlighting
  • Hardware
The search engine is nothing like Digikey or Mouser. Finding the part you want will take you some time. You may even have to read the datasheets to get the details on the parts. Many of the brands are Chinese and their datasheets are in Chinese. The prices are very good though, if you can find what you need.

Monday, June 26, 2017

2 Pack

2 Key PCB with top and bottom plates

Tiny 2 Key macropad, PCB and case parts combined. The PCB is similar to the previous 2 Key PCB, the main change is the rotation of the switches. This puts the switch pins farther away from the USB connector on the Pro Micro so that it is less likely to make contact and short out. The pinout is the same, switches are connected to pins 2 and 3. The LEDs are connected to pins 9 and 10.

In the current version the USB port is recessed too far for some larger USB cable connectors. Planning on a version with a small cutout on the bottom plate to accommodate the larger connectors. It will also allow for shorter standoffs.

There is printing on the top sides of the plate pieces. The bottoms are blank, it can be built with either side facing out. Other than switches, the only other parts are 2 LEDs and the 2 resistors for them.

The pieces snap apart. The edges need to be sanded down. I used 220 grit wet/dry sandpaper on a flat surface. I wet sanded all four sides smooth. I also sanded off the solder mask on the plate pieces.

4 different builds.
  • Gateron Clear/permanent pin headers
  • Invyr Panda/permanent pin headers
  • Gateron Red/low profile socket
  • Kailh Speed Bronze/Holtites and full height socket
End view of the four. Three have 10mm spacers. The one with the full height socket has 12mm spacers.

Side view. Thin laptop style screws were used. These are so small the only way to secure them in place would be double stick tape. I use 3M Command strips which are removable.

Invyr Panda switches with integrated sockets. LEDs are installed under the switch and fit in the slots. The Panda sockets do not fit all MX style switches.

Holtite sockets fit properly without soldering. They press fit as they were designed.

Switches and LEDs inserted into sockets. You can see the red brand marking on the PCB. Normally not seen when covered with solder mask. From I have seen several different brand markings. Some are darker than others. This one is the darkest and most visible.

Wednesday, June 21, 2017

Alps 48 RGB

48 Key Per Key RGB - Rainbow Cat Vomit 1.2 PCB

  • 4x12 matrix
  • Per key RGB reactive lighting
  • Powered by two Pro Micros
  • TMK on first Pro Micro, same firmware as the Gnap!
  • Arduino sketch running on second Pro Micro
  • 48 WS2812B LEDs
  • Matias click switches with clear body
  • 1.2mm PCB
  • 1.2mm top plate
  • 1.6mm bottom plate
  • 19.05mm switch spacing. Not compatible with the Planck
  • M2 11mm spacers
  • 0805 0.1 uf capacitors
Full RGB 48 key Alps ortholinear keyboard. This uses the same firmware as the Gnap! which uses the serial port to communicate with the second Pro Micro which is controlling the LEDs. Instead of a single color LED matrix on the Gnap!, the second controller is connected to a string of WS2812B LEDs.

The WS2812B LEDs fit snugly in the cutouts. Tiny solder bridges connect the LEDs to the PCB. 1.2mm PCB was used to make the bridging easier. With 1.6mm PCB the LED sits low in the cutout and the solder bridge was difficult to form. It works just like the 30% MX RGB board, but with Alps there is no center switch stem and the LED could be placed closer to the center of the switch.

The only problem in assembly is the sockets for the Pro Micros. The Alps switch is wider than an MX switch. The pins from the socket touch the edges of the switch. The pins need to be trimmed as short as possible and soldered as flush to the surface as possible. I also ground the edges of the switch down a little so that they would sit flat against the PCB over the pins.

Running the LEDs at 1/4 power it draws about 400mA in a full rainbow display. The Adafruit Neopixel library lets you set the maximum brightness. Potentially I could plug in both Pro Micro's at the same time to provide more double the current, though it is already quite bright at 1/4 power.

Currently deciding on revising the PCB with the Pro Micros rotated like on the Gnap!. This would remove the problem with the socket pins. Would have to either plug in from the side, or run a pigtail to a USB connector on the back like on the Gnap!.
One of the color patterns programmed in the the Pro Micro running an Arduino sketch. You can see more of them in the video at the bottom of the post.

The top PCB plate was originally green but I sanded it down to the bare FR4 material.

The schematic showing the switch matrix with the WS2812B LEDs integrated.

Front and back of the PCB. On the top you can see how the pins of the socket overlap the white outline of the switches.

Side view showing the two Pro Micros. The one on the left os running TMK, the one on the right is running the Arduino sketch.

11mm brass spacers.

The Pro Micro running TMK. You can see how the pins from the socket would interfere with the switch if they were not trimmed.

The Pro Micro running the RGB Arduino sketch.

Random LED output. There is also an interactive mode that lights up the switches as they are pressed and then fade. There are many WS2812B effects libraries for the Arduino.