Introduction: RotaryX: How to Hack a Rotary Phone
Like a lot of analog technology, rotary phones operate with a series of high/low switches that can easily be wired into an Arduino for programming adventures. This tutorial will walk you through the process of opening and rewiring a standard rotary phone (I've done this with two that I bought on eBay). Once you're wired up, you can go to my GitHub repository to get the code that will get you started reacting to the phone's behavior (e.g. play dial tone, respond to numbers, etc.) and controlling the phone's ringer.
You will need:
- a phone
- a microcontroller (I used an Arduino Uno)
- wire and a soldering kit
- a 9V battery with snaps
- a flathead screwdriver
- electrical tape
- a set of headphones that you don’t mind destroying
- For finishing, you might also want an electric drill to remove a bolted component that takes up a lot of space inside the phone, and a wall adapter that can replace your battery.
I used my phone, RotaryX, for a series of art installations. If you adapt this idea and make your own project, please post and tag me!
Step 1: Open the Phone
If you look on the bottom of the phone, you’ll find screws that you can remove. Then you can lift off the plastic case. You can also lift the dial out of its holder. It might take a bit of wiggling. It will remain connected to the phone body via its wires.
Step 2: Explore the Phone’s Wiring
You’ll see a diagram with some letters and numbers on the side of the box where the wires end. That diagram can be translated using this handy key (image) that I found on Andrew Stella’s blog, which, incidentally, is a great resource for rotary phone hackers.
Make sure to take a good photo of the wires in their original places before you start dismantling the system.
Step 3: Locate the Hook Switch and Wire It Into Your Arduino
I used a breadboard while I was figuring out the connections, and then I soldered everything together.
There are a lot of wires coming out of the hook. One of them is ground, one of them is the high/low variable, and the others have to do with the network connection, which I’m not using. On my phone, the closest to the outside was the ground, and it was gray. The variable was the next one in, and it had a yellow stripe on it.
I've included my circuit diagram here. It's very simple!
Step 4: Practice Using the Hook Switch to Do Something
For example, you could write to the console a or b for on or off. I used Arduino's Blink tutorial to turn an LED on and off. Any program that you write will depend on the functionality of the hook switch, so you want to get it right before moving any farther.
Step 5: Locate the Dial Switch and Wire It Into Your Arduino
The dial is really neat. Flip the mechanism over and watch what happens when you dial a number. While the dial returns to its home position, the switch wobbles/vibrates and emits a distinct number of pulses: the exact number that you just dialed! Voila, a simple and elegant mechanism.
There are four wires coming out of the dial switch. On my phone, they are green, blue, white and white. I added some orange stripes to one of the whites, so that I could tell them apart. I put my diagram in here again, so you can see how I'm connecting them.
When the wiring is set, you can try using this very simple dial reader to see if your connections are working. You should get a printout of the number that you dialed in the console. Obviously you can write your own code to do the same thing, but this one works reliably, so why reinvent the wheel (haha, it is actually a wheel).
Step 6: With Your Hook and Dial Switches Activated, You Are Ready to Start Coding Your Way to Rotary Dreamland.
I used a combination of Processing and Arduino to make my phone run, with Processing handling the audio recordings via serials. You can see my code on GitHub.
If you are adventurous, you can forgo the computer connection, and add an audio shield to Arduino. I started this process with the MusicMaker shield, but I got stuck with recording and gave up. If you have success with recording on that shield, please let me know!
Step 7: Wire Sound Through the Receiver
In order to get your phone to feel like a real phone, you should probably activate the receiver. I wanted to use the original speaker, but in the end, it was much easier to patch in a set of regular headphones.
Unscrew the phone's headset to reveal the mic and speaker. Remove the existing pieces. My phone had little metal clasps, which made this very easy. I used the mic from an old earbud set and soldered it into place where the analog mic used to be. The wires in the headphones are teeny tiny, but don't panic. The soldering iron strips off their colored insulation, and then they can be attached to the clasps on the end of the phone's wires.
At first I just pushed the earbuds through the hollow in the handset and taped them to the inside of the earpiece. But, they were a little too quiet, so I replaced them eventually with a flat headphone speaker (the kind that doesn’t go inside your ear).
When I was finished testing the system, I cut the headphone jack from the mic, and reattached it to the end of the curly phone cord. I plugged the new cord directly into the headphone jack of my computer. It’s cool that you can just patch the audio right through the old wiring.
Step 8: Activate the Ringer
The final touch is making the phone ring. I took inspiration from Andrew Stella’s project again, and used a motor driver shield and a crude electromagnet.
The phone rings by sending pulsed energy that bangs a little mallet back and forth against the brassy bells in the phone’s rear. The original electromagnet requires more power than I was able to use with a battery/motor shield combo, so I had to remake the electromagnet. It turns out that this is remarkably simple! I wound regular insulated copper wire tightly around the wooden bolt that held the original electromagnet (which I removed).
I wired the new magnet into the motor driver shield, and connected that to a battery for testing, and then ultimately to a wall adapter.
Step 9: Put It Back Together
The final step was to get everything back into the phone. In order to do that, I had to remove the black box that held all the wires. It turned out it was full of gel, and it got really gooey when I opened it up (pro tip, don’t open it, just drill it off).
There is a small plastic piece that comes off the front of the dial, so you can customize the phone number. This was surprisingly hard to remove. I recommend watching a youtube tutorial.
Then, I soldered everything together, closed the phone back up, and put it on a pedestal in an art gallery (with the computer hidden behind a wall).
Here is a list of additional resources if you need more info on the hack:
http://blog.andrewstella.com/2013/12/new-project-a...
http://makezine.com/projects/arduino-rotary-phone/