Monday, September 16, 2019

Flirc 1 button

Power button for the Raspberry Pi

Created a custom top plate for the Flirc 3B case. The original top was made of black plastic and had little tabs that snapped into cut outs in the top of the aluminum case. The top I made is just a flat piece of PCB material with black soldermask. The PCB has a 14mm square hole to fit a Cherry MX style switch.

I use 3M VHB tape to hold it in place. The VHB tape is 0.8mm thick. This creates a gap between the case and plate that the thin 30AWG wire can fit through. The wires pass through one of the cutouts to the Raspberry PI GPIO pins inside the case.

The PCB is about 1mm smaller then the recessed area. I manually centered it, 0.5mm gap on each edge. This also fits the Flirc Pi 4B case, except that the recessed area is larger and there is a larger gap on the top/bottom edges.

I used small pieces of the 3M tape. It is very strong and would be difficult to remove if needed. Thin kapton tape is used to keep the wires from moving around.

A 2x3x4mm size LED fits inside the Gateron clear top switches. Zealio switches have the same design.

A current limiting resistor connects the cathode of the LED to one of the switch pins. This shares the ground connection back to the GPIO header (black wire). The anode of the LED is connected to the red wire which connects to GPIO4. The other pin of the switch is connected to GPIO3 with the blue wire.

The wires pass though one of the cutouts and I used a wirewrap tool to connect them to the GPIO pins.

Another angle view of the connection to the GPIO pins. Ground. GPIO3 used for the power switch. GPIO4 used for the activity LED.

Info on the power button and how to set it up can be found here:

Info on the activity LED here:

Gerber files on git. The board is less than 100mm square, and can be manufactured at a discount at many PCB fabrication houses.

Video of the activity LED. This is starting from a shutdown state. Shorting GPIO3 to ground will restart the Raspberry from this state. The activity LED is using the CPU trigger. There is a short delay on startup and before complete shutdown where the Raspberry Pi's original activity LED is in use instead of the GPIO LED.

Saturday, August 31, 2019

piz pad

3 key phat for the Raspberry Pi Zero

Simple board for 3 PCB mount MX style switches. They are connected to GPIO 22, 23, 24. Closing the switch connects the GPIO pin to ground.

This works with either the Pi Zero or Pi Zero W. There are many tutorials online about using switches with the GPIO pins to control actions. You can also use USB gadget mode to use the Pi Zero as a USB HID keyboard device.

Gerber files on git.

Mounting holes in standard locations. 2x20 header to connect to the Pi Zero.

The switch pads can mount PCB mount switches in any orientation.

M2.5 spacers and screws hold it in place on the Raspberry Pi Zero.

The standard header height leaves a lot of space under the board. I am looking at some lower profile sockets, but they may break compatibility with the standard male headers.

Tuesday, July 16, 2019


Tiniest keyboard

Recently received my Tomu from crowdsupply. The Tomu is an opensource hardware/software project by Sutajio Ko-Usagi. The entire circuit board fits inside the USB connector. The only part that sticks out are the two touch sensitive contacts and a pair of LEDs.

The are several different firmware examples including a U2F security key. There is sample code that emulates a HID keyboard.

The Tomu comes with a clear plastic housing. The board is so thin that it would not stay securely in a USB port without the case.

The bottom of the board has all the circuitry. There isn't much more than the ARM chip and a few resistors/capacitors. There is one red and one green LED.

Next to a U2F Zero.

Very little of it sticks out of the port.

There is also the Fomu, which is a FPGA development board the same size as the Tomu.

The Somu is a Tomu size FIDO2 key from the maker of the U2F Zero, and Solokey.

Thursday, July 11, 2019

2 iota

Fixed the iota PCB

Finally got around to fixing and testing the 16mm iota pcb. More information can be found in the original post.

Gerber files on git. Firmware on git.

Gateron PCB mount switches.

M2 spacers and a second PCB used as a bottom.

Diodes are installed inside the switches.

Used some keyboard stickers to relabel the randoms keycaps I cut down.


4 way switch orientation with multiple controllers

The Polyandry can mount switches in any orientation. It also has a pinout that can work with several different micro controllers.

3x4 keypad. There are no diodes. Each switch is connected to it's own data pin. Between the many controllers there was not a common pin location for Ground, so an additional data pin is used as a ground pin. The pins used for the switches are marked on the board. The matrix is logically 1 row x 12 columns.

For each switch footprint the diagonally opposite pads are connected together. Each adjacent pair of pads are the two unique electrical connections for each switch.

To mount the controller upside down the PCB can be flipped over. Most of the controllers have a built in Reset button that would be inaccessible if mounted upside down.

The switch footprint allows the switches to be inserted in any direction. The top plate also has cut outs for switch top removal with the switch in any orientation.

Bottom of the plate with switches inserted.

You can see the pins aligned with the different pairs of PCB pads.

Some of the controllers that should work with this PCB:
  • Adafruit ItsyBitsy ATmega32U4
  • Adafruit ItsyBitsy M0
  • Adafruit ItsyBitsy M4
  • PJRC Teensy 3.5/3.6
  • PJRC Teensy 2.0
  • PJRC Teensy LC
  • PJRC Teensy 3.2
  • Pro Micro
The pin definition is different for each controller, only the physical locations are the same. High res PDF of chart here.

4 different processors tested so far. Adafruit ItsyBitsy ATmega32U4, PJRC Teensy 3.5, Pro Micro, Teensy 2.0. I made Arduino sketches for each on git.

Side views. M2 spacers and screws. Can be assembled without a plate if PCB mount switches are used.

Several revisions of the PCB were made. The first version could only have the switch in one orientation. The second has holes that are too small for some switches. The final has the large oval pads that fit any MX style switch.

The second outer row of pins act as a breakout board for connecting to the other unused pins.

The bottom of plate, the other side is blank.

All of the PCB's are under 100mm square. Very inexpensive to have made. Gerber files are on git.

Monday, June 3, 2019


5x6 Split Keyboard

Made a split split keyboard. Each half is made of two identical PCBs. Each PCB is under 100mm, very cheap to have made.

Powered by two Pro Micros, just like my other split keyboards.

TMK firmware and Gerber files on git.

Assembled with a top plate and bottom. Plate mount box switches. TRRS cable connecting the two halves.
The individual PCB. Two of these are connected with solder bridges to create one side of the split keyboard. Shaped to keep the individual PCB size under 100mm x 100mm. Could have done a simpler rectangular 3x6, like the 4x4 PCBs, but this shape is much stronger when assembled.

Side view of the assembled boards. M2 standoffs and screws. There are holes in the plate to access the screw heads.

Left and right halves. They are mirror images of each other. 1N4148 diodes installed. You can see the solder bridges.

Bottom view of the two halves. The TRRS jack is the same as on the foobar. The left half (right in the picture) has the Pro Micro mounted with the component side facing the PCB. The right half (left in picture) has the Pro Micro mounted with the component side facing up.
Bottom plates. The matte black finish really shows scratches.

Close up of the bottom of the right hand side. Peel-a-way sockets for the Pro Micro. 5.2mm surface mount switch connected to RESET.

Switches installed into plate before soldering. The plates are also mirrored for left/right halves. Otherwise the holes won't line up with the screws.

One half assembled. 

An older revision of the board with a different TRRS jack. The jack turned out to be a modified non-standard type so had to be changed back to the original Sparkfun TRRS jack.

The first version of the board. It did not have the 180 degree double switch footprint so half the board would have the switches mounted upside down.

Wednesday, May 1, 2019

Strawberry unquadquad

unquadquad with jade box switches

I made a small 4x4 plate to use plate mount switches with the unquadquad. My first unquadquad used PCB mount switches without a plate.

The plates have holes to access the screws that mount the PCB to the base. The holes are large enough for most screw heads to fit through.

There are 9 of the 4x4 plates to cover the entire 12x12 board.

The individual 4x4 plate has notches for switch top removal (for Cherry and Gateron switches.) The box switches are not compatible with the notches.

Gerber files on git.

Tuesday, April 23, 2019


A 9 key macropad

Powered by a Pro Micro and can fit any of the various different sized variations of Pro Micro.
Each switch is connected to it's own data pin and ground. There is no need for diodes, as each key has a dedicated data pin there is no possibility of ghosting.

The pinout is:
     F4, F5, F6
     F7, B1, B3
     B2, B6, B5

In Arduino the pin numbers are:
     21, 20, 19
     18, 15, 14
     16, 10, 9
The board can be flipped so that the Pro Micro can be mounted right side up, or upside down.

Gerber files on Git. There is also a json file for

Assembled board with some left over Stealth G20 keycaps.

Low profile Peel-A-Way sockets. There is a place for a 5.2mm surface mount tactile switch connected to the RESET pin.

A standard Pro Micro will fit on the two inner rows of pins. 

The larger Pro Micro with the Mini USB connector fits on the outer rows of pins.

The odd ball Pro Micro is half way between the regular and large Pro Micros. It will fit on an inner and outer row.

PCB bottom.

PCB plate, PCB, and bottom assembled with M2 Spacers and screws.

Sunday, April 14, 2019

Mother of the Sea

Happy birthday Kathleen Mary Drew-Baker

I named one of my modular keyboards "nori". I did some googling and found a fascinating story. The modern Japanese nori industry venerates a British scientist for her discovery about the life cycle of a specific algae. The Japanese applied this knowledge to greatly improve the farming of algae that becomes nori.

Having eaten nori in some form or another most of my life, this story surprised me.

If you are in the UK, the BBC broadcast a program about the relationship the Japanese have with her.

Ars Technica published an article about "How an unpaid UK researcher saved the Japanese seaweed industry".

Musubi with green soldermask 'nori'.

Wednesday, April 10, 2019

Cheap Green Arduino Micro and Pro Micro clones

Back in stock on Aliexpress

I bought these before but they stopped showing up on Aliexpress. Both are now back in stock.

The Pro Micro clone is not an exact copy of the Sparkfun Pro Micro. It will not work properly in many split keyboards.

The green Arduino Micro clone is also different than the genuine Arduino Micro. In many ways it is better since it is thinner and has components only on the top side. It also has a Micro USB connector instead of Mini USB.

You can find the green Pro Micro by searching for BTE17-05.

The green Arduino Micro clone is listed under CNT-013.

They do not come with any headers. Just the board by itself.

I bought several.

Thursday, April 4, 2019

GNAP 4x4 in a GNAP case

Assembled a GNAP with 4x4 PCB's in with GNAP PCB case

Everything fits as with the normal GNAP! PCB.

Blue solder mask GNAP top plate. Clicky box switches.

GNAP 4x4 PCB's with Arduino Micro clone.

Bottom plate.

Held together with M2 spacers and standoffs.