Vintage Electric Typewriter Becomes an RS232 Linux Terminal
Alnwlsn turned an IBM Selectric II electric typewriter into a paper terminal that can communicate in with a modern Linux computer.
A terminal is a device that doesn't do any processing itself, but which acts as an interface for a computer that does. They were common in the time before it was typical for every computer to have its own monitor and keyboard, and they are still somewhat common for use with headless servers. A full duplex terminal both sends input characters to the connected computer, and receives returned output — printing both. In the case of many older terminals, the term "printing" is very literal. So it is only natural that Alnwlsn turned a vintage electric typewriter into a Linux terminal.
Alnwlsn started with an IBM Selectric II electric typewriter that they found in a dumpster. But it is important to note that this is an electric typewriter—not an electronic typewriter. While somepeople use the terms interchangeably, they do have different meanings. An electric typewriter uses electric motors and/or solenoids to actuate the mechanical printing mechanisms, but doesn't "think" at all. An electronic typewriter, on the other hand, is more like a dedicated word processor tied directly to a printer. That distinction is critical, because it meant that Alnwlsn couldn't simply inject or read digital key presses.
To make the Selectric II work like a terminal, Alnwlsn needed to add electronics to perform two tasks: detect the pressed keys and trigger key presses. The former was necessary to transmit input characters over RS232 to the Linux computer, and the latter was necessary to print the returned output.
Like a conventional typewriter, the Selectric II uses some very sophisticated mechanisms to turn key presses into printed characters. But the keys don't connect directly to the print head. Instead, pushing a key closes a circuit that activates one or more solenoids. The solenoids, in turn, push a linkage that sets the position of a ball-like print head with embossed characters all around its outer surface. The solenoid positions are binary (either in or out), but the clever "whiffletree" mechanism converts several of those binary positions into a quasi-analog output. All of the keys control the positions of just 12 solenoids, which actuate everything. A 13th solenoid rings a bell.
To print out a desired string of characters, Alnwlsn just had to set the solenoid positions in the proper sequence. He used a Microchip AVR microcontroller with MOSFETs to control power to those solenoids.
Reading key presses was a little more straightforward. Alnwlsn use several opto-interrupters to detect the positions of the linkages and that information was enough to deduce which key was being pressed at any given time. Communication with the computer via RS232 was also straightforward, as that is a well-established protocol that can work well at the low speeds that this machine requires.
We've dramatically simplified Alnwlsn's work in this article for the sake of brevity, but this is a very complex project that is quite impressive. To learn all the details, be sure to watch the video posted by Alnwlsn.