Picture of Interface a rotary phone dial to an Arduino
An old rotary phone can be used for a number of purposes in your Arduino projects - use it as a novel input device, or use the Arduino to interface a rotary phone to your computer.

This is a very basic guide describing how to interface the dial to an Arduino, and get the number dialed passed into a computer over the Arduino's serial link.
Remove these adsRemove these ads by Signing Up

Step 1: Remove the dial from the phone

Picture of Remove the dial from the phone
First step is to remove the dial unit from the phone. I'm using a GPO phone of some sort from the 1970s.

On this phone, the dial popped straight out - I just needed to give it a tug. If it doesn't, you may have to open up the phone and work out how to get it off.

There were five cables connected to the back of the dial unit. On my phone, these were regular spade connections, so I loosened the screws and pulled them out. If you want to re-assemble your phone, remember to record which color wire goes to which connection.

Step 2: Identify the switch

Picture of Identify the switch
Once the dial is out, it should be relatively easy to see how the dial converts rotary movement into pulses. Try spinning the dial by hand and watching the movement on the back. You should see a switch making and breaking a circuit rapidly - so if you dial '9', the switch should engage nine times.

For those of you who may never have used a rotary dial before - remember that the dialing only happens when you let go the number and let it spool back .

I've documented how it works for my phone in the Notes of the photo below.

There's also a blurry video of the mechanism working.

fejodor8 days ago

Made it and it works like a charm, even without any adjusting.

Thanks for the pointers!

Marucotchan5 months ago

Good Afternoon, please, you could tell as it did for the numbers appearing on your monitor ?? because I'm trying to do this and I can not.
I await return

gal-x-e8 months ago

i did it :) and it works :)

ezeisel1 year ago
I just bought an old antique phone. Would love to have three options: (1) mod internals with modern phone to make calls through landline connection, (2) have mod to connect to iPhone/Android/Blackberry phone to make calls but through phone, and (3) set it up as a Skype or Google hangout steampunk styled device attached to a display/monitor with Webcam. I figure That I can come up with a 3-option switch that could allow me to select between the 3 options. Any thoughts on how to do parts (2) and (3) successfully?
robot7971 year ago
i have a question
and i do need an awsner soon
how do you add the numbers to a giant string

i mean you dail 1 then 9 then 8
and get a variable of 198
robot7971 year ago
add it to a gsm shield and make a phone out of it
Foxtrot701 year ago
Do you have a sketch where this converts rotary pulses to DTMF tones? I want to use an old rotary phone generating DTMF for dialing.
matsk1 year ago
Changes to the code to cover different rotary dials.

Serial.print(count - 1);         // Rotary dials that begins with zero and ends with 9
Serial.print("  ")
Serial.println(count % 10, DEC); // Rotary dials that begins with 1 and ends with zero
englishfire2 years ago
Hello, I just tried the code and it works. :)
My problem is this:
I'd like to enter a code via the telephone dial to open a door. If the code is correct then the door should open.
Can you help me??

Greetings from Germany Maik
FirebladeNL2 years ago
This setup and program works perfectly on the old Dutch PPT T65 rotary telephone, just hooked it up. Now to figure out how to play sound so when the right number is dialled, one will get a certain message (that's for a different hobby of mine, geocaching)

Thanks a bunch for these instructions, a great help!
philip423 years ago
Why is it necessary to disassemble the dial? Couldn't you read the pulses directly from the phone line (red and green wires). All it is is a sequence of open-close pulses from the mechanical dial.
TechDante3 years ago
had a problem with getting teh wrong output to the numbers (1 became 2 and so on) solved it by changeing the debounce to 20mille seconds and this did the trick
alexhb3 years ago
same setup here... makes for much easier programming ;)
Montrose4 years ago
I like the Skype idea. One could install the necessary computer inside of an ornate base with a flat screen monitor mounted behind the phone and what ever other antique details. It could be a very Steampunk video phone or perhaps use aluminum and go with a Machine Age phone. Oh for the time to explore all the options.
jtmcdole4 years ago
-use as a dieselpunk safe/door lock.
-Interface dialer, handset, and google voice to receive and make calls from a physical phone.
TechDante4 years ago
hello i am interested in electronics for my end of year project, but i am just starting out properly into electronics and programing and saw the arduino as a good starting point. could you recomend any reading material i could look into (already have the Arduino Notebook from their website and the make Magazine getting started with Arduino)
 On the dial I've pulled out to use there's another switch that opens when the dial is turned to a number and closes when it has finished pulsing. I'm planning on using that instead of waiting longer because I'm also going to be having a keypad matrix to scan and an LCD to power!
kissiltur5 years ago
splendid, splendid. Haven't thought about pulse dialling since I stopped working for a telecomms equipment company, lo, these many moos ago.

I had fun explaining to my four year old about how this phone works a bit differently from all the phones he sees in the house.
lol @ "many moos ago."

I too measure my time scale by bovine vocalization! haha
Aerospaced5 years ago
Hang on a bit, you said that if you dial 9 that it will tap out nine times on the switch. As I recall, when hand keying a phone, you add 1 to every number.
guidomax (author)  Aerospaced5 years ago

Thanks for the comment - an interesting topic. It appears that the pulse dialing regime varies by geographic area, however in the UK (where this telephone is from) and North America, the number of pulses corresponds directly to the number dialed. This is certainly what happens for my telephone - obviously people in other countries may have to alter the source code to account for their particular phone.

Cheers :)

From :
In most countries one click is used for the digit 1, two clicks for 2, and so on, with ten clicks for the digit 0; this makes the code unary, excepting the digit 0. Two exceptions to this are New Zealand, with ten clicks for 0, nine clicks for 1, and so on, and Sweden, with one click for 0, two clicks for 1, and so on.
PS1185 years ago
One word: Skype! ;)
guidomax (author)  PS1185 years ago
It's a plan - that'd be pretty cool!