Lately, my mobile phone (an HTC One) has become very slow. I think it’s mainly SwiftKey, which is slow like dog, but no matter. As a good consumerist, I must purchase a new phone. However, I am also an angry person, and I sorely miss the tactile sensation of slamming the phone on someone’s face.
Because of this, I decided to put my engineering degree to good use, and went out and bought a phone. Thus begins project iRotary, which aims to turn this:
Notice a difference? No? That’s because the differences are purely internal! Let me explain what project iRotary is all about.
Project iRotary is basically my plan to take the above, gorgeous, antique Siemens phone and turn it into a modern mobile phone. By “modern” I mean that it will be able to talk to the mobile network and place and receive calls, and nothing more. It will have all the functionality of the rotary phone, while being portable and (hopefully) requiring no external power source. The nice thing about this phone is that it also includes a button and an indicator, which will probably come in handy.
My ultimate goal with this is to be able to take it out to the coffeeshop, place it on the table and look crazy because I’m talking on an old-timey rotary phone with no cable even coming out of it, yet there’s a voice on the other end of the line and who’s crazy now, people, huh?!
To achieve this amazing feat of engineering, I will use some spare Arduino parts I have lying around, namely an Arduino and a GSM shield. The GSM shield will allow us to place and receive calls, the Arduino will allow us to orchestrate all the input/output handling and the orange phone will allow us to look cool while doing all of the above.
The first step, which I have already completed, is to create an Arduino script to convert the pulse dial method of the rotary pad to actual, honest-to-God digital numbers that can be dialed by the system. I achieved this by writing a short script to detect the pulse edges and count them. This has surprisingly good accuracy, even though I suppose I really shouldn’t be surprised, because this is how we used to dial for years, and it only dialed the wrong number some of the time.
All my code will be eventually made available in this Github repo:
The second step is to connect the Arduino to the GSM shield and allow it to make calls. Afterwards, I will try to connect the rest of the inputs (hook/button/indicator) to the Arduino, and also find a way to listen and talk through the handset. That will probably require modding, since the existing high impedance speaker/mic can’t easily talk to the GSM shield.
The last step will be to insert some batteries in the body and make it run off them, which I hope will not be hard. Sadly, it doesn’t seem possible to make this phone ring with the Arduino, because that requires too much voltage for the batteries to provide.
Part one result
Here is the result of my effort to detect the digits:
As you can see, it’s pretty accurate. Sometimes it will miss a number, as these phones aren’t 100% accurate, and there’s no way to know what you dialed, because there’s no screen. I know, how did we even manage to stay alive back then? If you botch a number, you’ll have to hang up and redial.
This is what I have so far, hopefully you have been amazed by my ingenuity and are giddy at the prospect of someone roaming the streets with this phone for a mobile. If so, keep reading for part two of the iRotary saga.