Converting an Old Military Keyboard Into a Modern USB Version with an Arduino
Joel Richards wanted to be able to use his vintage keyboard with a modern computer, and so he used an Arduino to convert it to USB.
We tend to take universal, cross-platform plug-and-play devices for granted these days, but they didn’t really exist until the USB (Universal Serial Bus) standard took off in the late ‘90s. Until USB came around, there were many competing protocols for peripheral devices — many of them proprietary. In the ‘80s, just about every computer had its own special peripheral connections and protocols for communicating with them. That includes this very interesting AT-02 Marconi keyboard from 1989 that was likely used by the British military. Joel Richards wanted to be able to use it with a modern computer, and so he used an Arduino to convert it to USB.
Because this keyboard was built for a specific (likely military) purpose, it has a number of interesting keys that you won’t find on a typical keyboard. Richards wanted those, along with all of the normal keys, to be functional. Of course, the weird connector wasn’t going to work with a new computer. The solution was to open up the keyboard and use a modern microcontroller to monitor the keyboard matrix. In this case, Richards used an Arduino Leonardo board, which has a Microchip ATmega32u4 microcontroller that can appear as a standard USB HID keyboard (or mouse) when it’s connected to a computer. It’s also possible to use a Teensy development board to do the same thing.
Connecting the Leonardo to the keyboard requires a bit of knowledge about how keyboard matrices work. A typical keyboard matrix is setup as a grid, with a key switch at every intersection between the columns and rows. If it’s setup as being normally low, then you’ll have output pins set to 0V connected to the columns (for example) and input pins connected to the rows. To check the first key, you set the first column to 5V (or 3.3V) and then check if the first row is reading high. If it is, then you know the key is pressed. Then you simply check the remaining rows, and then move to the next column and check the rows again. There is an Arduino Library that can do all of this heavy lifting for you, so you just need to specify where the keys are in your matrix. Even if you don’t have the AT-02 Marconi keyboard, you can use this same process for virtually any keyboard, as they almost always have a similar matrix.