I have always been fascinated by mechanical keyboards and keyboards in general and have experimented with some wild designs, but I never got around to building my own.
At the time, everyone was building keyboards using Teensy or ProMicro, which have their limitations. Everything changed when the Seeed XIAO boards came along and the keyboard contest run by Seeed challenged the keyboard community to realize the potential of the tiny development boards.
Around the same time as the keyboard competition, Seeed decided to run its own internal competition for Seeed employees. This was the perfect outlet for my built-up tinkering energy and so I decided to build my own keyboard!
So, the challenge is: could someone with no formal electronics education build a custom keyboard by piecing together bits of other designs? Can it be completed before the deadline!? (spoiler for the last question: no)
Developing the DesignA lot goes into the design of a keyboard, and I have had literally years to think over what I want in a keyboard and find inspiration. I also had another tool up my sleeve; as Seeed Fusion's manufacturing specialist, every submitted design in Seeed's keyboard contest ran by me at some point. That gave me plenty of inspiration and a lot of schematics to study (all available legitimately online). In the end, I chose around 10 designs to reference.
This keyboard is designed to be used as my office keyboard. There are a lot of repetitive tasks in my office job in addition to lots of copying and pasting, so extra buttons and knobs for macros are a must but at the same time, finding desk space is always a challenge so num pads are a no-no. I also often use my laptop away from the office so the layout and size should not be too dissimilar to laptop keyboards to minimize 'home-sickness'.
As for the competition, the only requirement was that the design includes Seeed's products. This is a XIAO keyboard after all, so I can check that box. But that alone did not feel sufficient. Nothing says Seeed more than Grove modules, and I liked the Raspberry Pi 400 concept of a keyboard that also works as a development board. Imagine running Grove bits and bobs straight from your keyboard! So there we have it, I decided on a keyboard that works as a XIAO development board complete with Grove connectors!
As for the choice of XIAO development board (currently there are 5), RP2040 and nRF52840 are common choices for keyboards. The latter is typically chosen for wireless Bluetooth keyboards, but as I will be uploading code to the keyboard frequently, it makes more sense to have a wired connection, so I went with XIAO RP2040. I also don't have to worry about charging batteries with a wired connection. Plus, with more and more support for RP2040 and CircuitPython, it makes more sense to pair RP2040 with the Grove modules.
Features- XIAO RP2040 development board and keyboard!
- 5 Grove ports for plugging all sorts of Grove modules! (1 x analog/digital, 3 x I2C, 1 x UART) with individual on-off switches
- Headers for all XIAO pins for further development/debugging
- Tight, laptop-style layout with all the necessities
- Added spacebar-centered rotary encoder for fun
- LED backlighting
I'd like to thank all XIAO keyboard participants for sharing their designs, in particular, Sonal Pinto for sharing his XIAO RP2040 keyboard PurpleOwl. My design is largely based on PurpleOwl and is essentially an expansion of PurpleOwl to make use of the leftover pins with a modified layout. With the shift register method, only three pins are required for the entire keyboard 'matrix' which leaves a lot for other fancy add-ons such as Grove connectors.
The LayoutThis keyboard features 86 keys including F keys and page navigation keys which of course can easily be converted to macros keys. Another 1-2 spare keys are squeezed in on the right next to the delete key.
The most notable difference is the split spacebar. This takes inspiration from Policium's 'buddha space' and the Filco Minila layout's mini spacebar (who needs such a large spacebar anyway?). Policium's GRIN Quern keyboard features a huge rotary encoder/trackpad in the middle the two halves of an ergonomic keyboard. I cannot say I am a fan of ergonomic keyboards but the idea of an encoder within fingers-reach is interesting and I would like to experiment with it.
To achieve this in my design, I decided to split the spacebar into two smaller spacebars that sit naturally under the thumbs. It kind of looks like an inverse Filco Minila spacebar but it has the same effect of saving space for other things like an encoder.
The spacebars are positioned such that the encoder can be controlled with a light stretch of either thumb. They are 2.25U in length since 2.25U keys are common in a typical keycap set and some sets often include spares.
Finally, the bottom row is laid out to mirror smaller keyboards typically on laptops, as in four keys on the left and 2 or more keys on the right.
The BuildI chose to use KiCad to create the schematic and PCB layout. I have had previous experience making pretty ornaments with KiCad but never a working circuit. But years spent reviewing the PCB Gerber files of customers and knowledge in PCB manufacturing helped in the layout process tremendously. The Seeed XIAO Expansion board and the contestants' designs were referred to heavily and the entire design was completed in about 9 days. At the same time, parts were purchased from local sources to save time.
The XIAO board is to be soldered on the left on the underside of the boards with the 5 Grove ports coming out from the top. Beside each one is a switch to turn the individual port on and off. 20 reverse mount RGB LEDs were dotted around the board to add 'overglow' as opposed to PurpleOwl's underglow.
There are also many other things to consider including mounting holes, stabilizers, alternative keys such as the dented Caps lock key, etc.
The Gerber files were exported and I especially asked for expedited production. I intended to have the boards produced in matte black to match the XIAO board, but that would have come at the expense of another few valuable days, so I went with green for this run. I could easily make an acrylic plate to cover it up anyway.
Now for my favorite part - soldering! Of course, I could have given the job to the Seeed Fusion PCB Assembly team but why should I give them the pleasure? (I am the kind of person who buys 0603 soldering kits for fun)
Soldering is where everything comes together, where all the errors pop up and where you start to think about future revisions while honing soldering skills. After 2 nights of soldering, the boards were fully populated.
I also added some switch pads to further dumb down the noise of the keys. This, with quiet Kailh Deep Sea tactile switches should make for a silent keyboard that colleagues will be grateful for.
The project is currently in the hardware testing phase which will be followed by code/firmware, etc. I also intend to have an acrylic plate cut out to make the cover and my key switches have still yet to arrive due to COVID local restrictions (I 'borrowed' some for the photo shoot).
Thank you for reading!
Comments