I modified a vintage typewriter to function as a USB keyboard using an Arduino and 50 phototransistors. The typewriter is a German Olympia Monica that I bought at a local flea market. For this project I created a simple PCB that carries the phototransistors and several multiplexers and decoders. The PCB is connected to the Arduino through a ribbon cable. I used an Arduino Leonardo, which can function as a USB input device.

Required Components

PCB Design

I created the PCB design with the EasyEDA web application. I don't guarantee that the design is functioning. The original design had quite a few errors that I fixed manually. They should be corrected in this version, but I haven't tested it. I didn't end up populating P3, J1 and C1. I guess the number of 220 Ohm resistors could be significantly reduced.

EasyEDA project page

PCB top layer PCB top layer

PCB bottom layer PCB bottom layer

Arduino Software

The Arduino software is intended to be run on a Arduino Leonardo, because this one is able to emulate a USB input device. The following pin mapping of the ribbon cable should be used:

PCB pin Arduino pin
1 GND
2 5
3 GND
4 A0
5 +5V
6 A1
7 +5V
8 A2
9 2
10 A3
11 3
12 Not connected
13 4
14 Not connected

Download Arduino code