-
Putting Contourboarding on hold
11/24/2020 at 15:37 • 0 commentsThis project has stalled once again, partly because I found a way to do something I've wanted to do, but didn't think was going to be as simple: designing and 3D-printing my own contoured keyboard case.
A while back I came across the Dactyl keyboard, and it looked like it was pretty close to what I wanted - it was basically a somewhat minimized split-hand version of the Kinesis Advantage design I'm such a big fan of. However, I knew I'd want to make modifications, and learning both a new language (Clojure) and a new modeling system (OpenSCAD) in order to make those modifications was a bit daunting at the time.
Recently, though, I took another look at it and realized that Clojure is really just Lisp on the JVM. Once I started digging into the source, things got clearer pretty quickly, and within a few days I had the chassis reworked to the basic design I want. That, coupled with the fact that you can use (a slightly modified version of) QMK to take care of the firmware aspect of these boards, means that this will be a much faster way for me to achieve my goal, and it should end with an end product that is not only much more polished, but also more customized to my personal preferences.
Given that, I've started a new project, which is a fork of Dactyl: the Dactyl Lynx keyboard. I'll keep this project around, since it has a lot of my learnings from when I first started to understand keyboard construction, but I don't think I'll be pursuing this particular idea any further. (i.e., replacing the guts of a Kinesis)
-
More small updates
09/01/2019 at 14:35 • 0 commentsIn between preparing for our move (we're actually starting the move today!) I've been poking at this project some more. I've made some updates to the documentation to make it easier to follow, and even added some useful links to the README! I think I've also narrowed down what parts I want to use for this: the Arduino Micro or SparkFun Pro Micro for the master microcontroller, and the Arduino Pro Mini for the key matrix scanning controllers.
One other big update is that I think I've settled on using SPI to connect the matrix scanning controllers to the master. I was initially planning on using I2C for this, but SPI gives me the ability to upgrade the firmware for the slave controllers directly from the master. This should make it much easier to update the board, without having to have 2 or 3 separate programming headers.
I also revisited the key matrix designs, since the ones I had previously were all based on having one big matrix for the whole keyboard. The new design will have 2 separate matrices, one for each side.
-
Dusting off the board!
08/14/2019 at 00:14 • 0 commentsIn December 2011, I started this project because I was fed up with having to use a PS/2-to-USB adapter for my keyboard all the time. (as of this writing, I'm still using an adapter, though at least I found one that could handle the power draw of this keyboard without losing connectivity every so often) I also had a couple of other ideas I wanted to implement: Switchable keymaps that can be managed via USB mass storage, fast response times (sometimes I still end up getting stuck keys with this keyboard because of how fast I type), N-key rollover (which may or may not actually be achievable without replacing the original circuit boards), additional keys (like "media keys", etc.) and a built-in TrackPoint.
The initial idea was to use a PIC18F4550 in order to implement a new USB-capable brain for the keyboard. After letting the project languish for several years only making periodic attempts at poking it, I finally picked it up again. Since I started, though, I've come to realize that PICs tend to require a bit too much legwork to get something working compared to Atmel/Arduino-based boards. I'm now in the process of slowly revisiting my old code and designs, and updating them to no longer require PICs.
I've also realized that I'd like to do a bit more with this board than I initially envisioned. I've had ideas of cutting the board in half and allowing each half to be tilted and positioned independently, connecting them with a cable. (likely I2C) I'd also like to integrate a USB hub, and if possible have the host port be a USB-C port. I'd also like to keep the design extensible so I can come back and do more crazy things in the future. (maybe per-key RGB lighting?)
So I'm finally dusting this project off, just in time for us to start packing to move to a new apartment. Hopefully I'll stick with it and eventually improve my keyboard!
First order of business is going to be choosing hardware. I'm definitely not messing with PICs again for this (although I have plenty of them in tubes at the moment... I just don't relish the idea of how much time it would take to get back up to speed with those, not to mention troubleshooting time) but that doesn't actually narrow things down that much. I have some SparkFun Pro Micro clones, Arduino Pro Mini clones, DigiSpark clones, an MSP430G2152, and a few other random parts... but I'm also not opposed to purchasing new pieces if it makes sense.
I'll need at least 2 controllers: One with USB HID support that can be an I2C master to act as the main "brain", and one that can be an I2C slave for the second half of the board. It may even make sense to have both sides have I2C slaves, and have the master only be concerned with USB communication. The controllers that will need to be doing key scanning will need a decent number of I/O pins in order to do their jobs. (I'd say at least 15 pins per side of the keyboard, going from memory) Aside from those requirements, I could probably use just about anything, but I'm leaning toward Atmel or TI parts because of how simple the Arduino/Energia system is to work with.