YouTube link to video.
I recently purchased this electric typewriter from the thrift store. I've had the idea kicking around in my head for a while to take one of those and turn it into a USB-connected physical terminal, and this seemed like a great opportunity.
The current hardware uses two Arduinos; one connects to the steppers and solenoids that control the print head, and the other manages the keyboard.
The "printer" Arduino is responsible for moving the paper up and down, the print head left and right, turning the daisy-wheel, and actuating the hammer. The first three of these are controlled by simple unipolar stepper motors, and the typewriter's control board already had driver ICs (actually simple 8-channel power Darlingtons) hooked up to the stepper outputs, so I simply disconnnected them from the onboard controller and wired in the Arduino. The remaining functions of the print head are actuating the hammer and shifting in a correction ribbon. I don't have a correction ribbon for this typewriter currently, though I may either get one or perhaps modify the carriage so it becomes a pen-plotter when in correction mode, so I could do vector graphics interspersed with output text.
The method of doing these latter two actuations is nothing short of ingenious. There are three inputs to the print head (aside from the wheel stepper): two solenoids and one DC motor. The way it works is that one solenoid switches the motor to shift the carriage, and the other switches the motor to fire the hammer; in both cases the motor resets after actuating whatever motion is selected, so there isn't any sort of complicated feedback the motor needs. This allowed the designers to get away with using only one motor to drive the print head, which no doubt saves on cost as well as print head weight.
That motor, unfortunately, is not in the best shape mechanically; I think it's got some kind of issue with the commutator where it has a couple of positions it doesn't like to start in. I'm trying to find a suitable replacement motor but have so far been unsuccessful; until then, I've modified the code to start and stop the motor only between serial inputs, rather than between characters as the original typewriter did, because once it gets going it seems to work OK.
The "keyboard" Arduino handles keyboard input. The keyboard is just your run-of-the-mill rubber dome keyboard which exposes a 8x8 matrix; I simply desoldered the connector for he keyboard from the typewriter's control board and stuck it on a breadboard to connect it to the Arduino. The firmware running on the keyboard Arduino is dead simple; it reads keyboard inputs and outputs them over a serial line that runs back to the printer Arduino, which just copies any inputs from that port to the computer.
There are still a few things I'd like to do on this. In no particular order:
I intend to make a sequel to this post once I've put the typewriter back together and obtained some continous-feed paper (unfortunately, green-bar is expensive enough I probably won't spring for that, but plain white tractor-feed is like $20 for 900 feet, which is almost reasonable)