Blog Home

Reading typewriter key presses with an Arduino

Arduino TeamAugust 3rd, 2022

There was a period in the late ‘70s and into the ‘80s when typewriter manufacturers tried to keep up with the tide of the digital age. Personal computers were hitting prices that middle-class families could justify and even the most basic models were far more practical than the best typewriters on the market. During this period, a lot of electric typewriters hit the market. Instead of heavy mechanical linkages, those used daisy wheel mechanisms driven by computer-style electronic keyboards. Artillect converted one such typewriter, the Brother AX-25, into a computer and used an Arduino to read key presses.

The computer here is a Raspberry Pi booting in headless mode to the Debian Linux terminal. But the interesting part of the project is how Artillect interfaced the Raspberry Pi with the Brother AX-25 typewriter. That typewriter uses a keyboard matrix to read key presses, with each column/row connection corresponding to a specific key. Artillect connected an Arduino Uno board to all of those row/column pins through two multiplexer boards. That let him set any pin to HIGH or LOW. With that ability, he could trigger a press of any key and the typewriter would print that character.

Because the Arduino was controlling the typewriter output, Artillect just had to feed it text from the Linux terminal. The Raspberry Pi has a built-in UART for serial communication and the Arduino can read that output. In headless mode, the Raspberry Pi outputs everything in the terminal to that serial port. The Arduino receives that, buffers the text, and then sends the key presses to the typewriter at a speed it can handle. Because the Arduino only outputs to the typewriter keyboard and doesn’t read its key presses, Artillect had to remotely connect to the Raspberry Pi’s terminal with a laptop to input commands. Even so, it is neat to see the typewriter clacking away on its own as it prints the terminal output.