Friday, July 29, 2016


All my MiniVans

The first 3 are built on the MiniVan PCB, I bought one spare, and won one in a contest. The Teensy LC/3.0/3.2 were made from left over reject plates from Ponoko. They cut one from the wrong material and one they cut poorly.

The hardcase is from Monoprice.

Monday, July 25, 2016

Teensy 3.2 = Fastest Van

Handwired MiniVan Keyboard with Teensy 3.2

  • Purple Teensy 3.2 from OSH Park
  • 72MHz MK20DX256VLH7
  • ARM Cortex-M4
  • Germanium diodes
  • Acrylic top and bottom plates
  • G20 blank keycaps
  • Gateron Red switches
  • TMK Firmware
65us per matrix scan. ~15000 scans per second. Faster than the Teensy 3.0 and Teensy LC running the same TMK code.

~65us scan trace

Hand wired Purple Teensy 3.2

Purple OSH Park Teensy 3.2


Sandwich case

Saturday, July 23, 2016

Stormtrooper Planck

Black and White Planck Keyboard

  • OLKB Planck Rev 4 PCB
  • White acrylic top and bottom
  • Black Nylon hardware
  • Gateron Tactile Clear switches from Winkeyless
  • Costar stabilizer
  • G20 Stealth alpha keycaps, grab bag blank white keycaps
  • White 2x3x4mm LEDs installed inside the switches

Thursday, July 21, 2016

Planck Test Firmware

Firmware to test Planck PCB Keyboard Matrix

This firmware has a single layer and each key position runs a macro that outputs the matrix location of that key. Row Col. r0c0 is the top left position. r3cb is the bottom right key.


You will want the default firmware to reload after testing is done.

Example output in a text editor:

Tuesday, July 19, 2016

Teensy 3.0 = Even faster Van

 Handwired MiniVan Keyboard with Teensy 3.0

  •     PJRC Teensy3.0
  •     ARM Cortex-M4 (MK20DX128)
  •     48MHz clock speed
  •     3.3v logic
  •     TMK firmware
  •     Schottky diodes
  •     4x12 matrix
This is a hand wired keyboard running TMK on a Teensy 3.0 board.

A single matrix scan is about 76 microseconds. Which is about 13000 scans per second.

This is faster than the Teensy LC running the same code.

The Teensy 3.2 is even faster.

76microseconds per pass
Scan trace 76microseconds per pass

Teensy 3.0
 Teensy 3.0t

Hand wiring
Hand wiring

Assembled with keycaps
Assembled with DSA keycaps

Monday, July 18, 2016

JD40 Woody

JD40 with Wood middle pieces

  • Ivory acrylic top and bottom
  • Birch plywood middle pieces
  • Brass hardware
  • JD40 MK.II PCB
  • G20 Keycaps
  • Gateron Brown switches 
This is my second JD40 using the original layout with 6.25 spacebar. The first JD40 had a different bottom row.
JD40 keyboard

Friday, July 15, 2016

Teensy LC != the fastest Van

Handwired MiniVan Keyboard with Teensy LC

This is a hand wired keyboard running TMK on a Teensy LC board. There is a bug in the compiler or libraries that causes the 30 microsecond delay after setting the row to be executed as a 1 millisecond delay instead. This was causing a single matrix scan to take 4 milliseconds. Replaced the delay with a small loop that toggles the status LED connected to pin 13. Reduced the number of loops so that a single matrix scan is about 101 microseconds. Which is about 9900 scans per second, about twice as fast as TMK on an AtMega32U4.

Example of the files modified for TMK 

Graphs of matrix scanning times of other firmware here.

The Teensy 3.0 is even faster.

Monday, July 11, 2016


LEDs do not work as diodes in a keyboard matrix

Six "diodes" tested
  • BYV10-40 Schottky
  • 1N34A Germanium
  • 1N4001 Silicon
  • 1N4148 Silicon
  • Red LED 1.8mm
  • White LED 2x3x4mm
According to the AtMega32U4 datasheet, at a Vcc of 5volts, for a pin to read as low it must be below 0.9volts. To read as high it must be over 1.9volts.

When a switch is pressed that column (data pin) is pulled to ground through the diode and should read as low. When no switch is pressed that column remains in a high state, pulled to Vcc through a built in resistor. The 4 rectifying diodes all pull the voltage down to below 0.9volts. The two LEDs do not.

Testing was done using a 6 key macropad wired in a 2x3 matrix. This was connected to an Arduino Pro Micro running QMK firmware.

These graphs show the voltage drop when pressing the key of a particular diode. The major divisions are 2 volts.

Schottky Quark

Quark with Schottky Diodes

  • Handwired
  • Arduino Pro Micro with reset switch
  • QMK Firmware
  • Gateron Brown switches
  • Cherry Veneer wood top and bottom
  • Green Double Shot ABS keycaps
Quark keyboard with BYV10-40 Schottky diodes. Higher performance than typical 1n4148 silicon diodes. Lower forward voltage, faster recovery, and they are blue. In practical terms you will not be able to tell the difference.

Quark Keyboard
Hand wired to a Arduino Pro Micro

Wood Quark Keyboard

Friday, July 8, 2016

TheVan 44 - High Beams/Low Beams

TheVan 44 with Software Controlled LED brightness
  • QMK Firmware
  • Cycled with the matrix scan
  • 8 levels of brightness, 1/8th to Full
The pin the LED backlight is connected to does not have PWM output capabilities. Anything that changes the response time of the scanning matrix will cause the LEDs to flicker slightly.

Git example code of LED backlight control
Compiled hex file here: tv44.hex


Wednesday, July 6, 2016

The Planck Keyboard PCB Rev 4

White Planck PCB with Audio Tranducer

  • Purchased from for $38 plus shipping
  • AtMega32U4
  • Mini USB connector
  • MX and ALPS switch compatible
  • LED backlight (B7)
  • Status LED (E6)
  • Audio transducer (C6)
Latest version of PCB. Now White, previous versions were Black. The new JD40 MK.II PCB has very similar components and design.

Tuesday, July 5, 2016

Ivory JD40

JD40 Keyboard with Ivory Acrylic Case

  • JD40 MK.II PCB
  • QMK Firmware
  • Gateron Clear Tactile switches
  • White 2x3x4 LEDs installed inside the switches.
  • PMK Dyesub G20 keycaps
  • Ivory acrylic top and bottom plate
  • Aluminum Spacers, Steel screws

Sunday, July 3, 2016



  • From
  • AtMega32U4
  • DFU Bootloader (FLIP/DFUloader)
  • LED backlight (B7)
  • Status LED (E6)
  • Mini USB connector
  • MX and ALPS switch support
  • Cherry PCB stabilizer mount holes for spacebar.
Purchased directly from TechKeys for $35 with free shipping to the US.
The design and components are very similar to the Planck PCB. Uses the same pins for back light and status LED. Bottom row supports multiple layouts besides the original JD40 layout. Right shift can be swapped with FN.

Unused pins are broken out to pads.

Matrix pinout:

#define MATRIX_ROW_PINS { F0, F1, F5, B4 }
#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 }