The other week, one of those unexpected things that tend to happen to me happened while I was out recycling rubbish: I dumped our broken portable induction cooker onto the pile of electronic waste and noticed a small, round, oil and dust-encrusted chunk of misery next to it. “Oy mate, mind if I take that?”… “Go ahead!” – so I brought home a dirty, stuck “Zenith” rotary dial, built around 1950 by my estimate.
Now, a couple of weeks later, I finally got around to cleaning it up. Unfortunately, I didn’t think to take any pictures of the cleaning process. I took it apart and soaked all the bits in white spirit for a day and a bit, then cleaned them with a soft toothbrush, degreased them with methylated spirits and finally gave them a thin coat of silicone spray to keep them running smoothly. Only after did I decide to take pictures, so here’s what the components look like already partially reassembled. I was very happy to find that the enamel of the face plate wasn’t chipped or permanently discoloured; in fact, almost all the parts came out looking like new.
After reassembly, the dial was once more fully functional. The “Clickclickclick-whirrrrrrr”- sound conjured up memories of our old flat and calling my grandmothers back in the day when dialing “0” ahead of the number meant dialling non-locally. My children will probably never know… hold on… actually, why not…
…and so the idea was born to interface the dial with a computer, so my boys can eventually skype their grandparents the way I used to call mine. Of course they’ll only be able to call actual phone numbers for the moment – I’m still working on an alphanumeric version.
Anyway, I checked how exactly the dial makes and breaks contacts when a number is dialled and found that one contact is established as soon as the dial turns, and another one pulses at about 10 Hertz with the number of peaks equal to the number dialled. I used two digital inputs on an Arduino Mega 2560 and a simple sketch to wait for the first input to go low, count the pulses on the other one and return their number over the serial connection after the first input goes high again due to the internal pull-up-resistor.
This worked quite well, but it left me with the problem of how to get the numbers into Skype. In the end, I just replaced the Mega (which was overkill and only used due to it being the closest microprocessor on my workbench that day) with an Arduino Leonardo, which is still overkill, but which at least presents itself to the computer as a keyboard. So, if I want to call a phone on skype, I have to take the following simple steps:
- Open Skype and go to the “dial a phone number” screen
- Dial the number on the rotary dial
- After no digit has been dialled for one second, “Enter” is sent, thereby dialling the number.
Much simpler than just… eh… well, it works, anyway. Now I just have to find a suitable case to mount it in. Further items on my list are: Interfacing an old bakelite handset with my soundcard and creating a proper interrupter-bell-circuit with a USB-interface… or simply accept that telephony has moved on since the 50s.
Oh – and if you’re wondering why 1891: That’s when Almon Brown Strowger patented the rotary dial along with the automatic telephone exchange. Thanks, Almon.