
Show HN: An old rotary phone converted into a mobile phone - StavrosK
http://www.stavros.io/posts/irotary-saga/
======
kozukumi
Ha I love it! I love seeing old hardware hacked to bring it kicking and
screaming into the modern world. This is why I love things like Arduino's.
They a cheap but so much fun.

My daughter is 13 and I have been teaching her C (well the Arduino version of
C) to make a clapper (clap to turn lights on and off) for her bedroom. She
loves it and keeps coming up with ideas for things she wants to do.

Future projects include an automatic curtain motor and a remote controlled
lock for her desk based on if her phone is or is not near by.

I don't know (or care tbh) if she will want to go into the world of computers
for a job later in life but I am sure her knowledge of how computers work and
not just how to login to Instagram will be benefit for her.

~~~
StavrosK
By the way, if you need to control anything that may rely on mains power, a
very easy and safe way I've found is to use remote-controlled wall-plug
switches and switch them on and off from the Arduino.

You can find more info on my blog (check the RF/IR stuff):

[http://www.stavros.io/projects/](http://www.stavros.io/projects/)

~~~
kejaed
I have used the PowerSSR Tail at home and now at the office for switching
mains power on and off with an Arduino, works quite nicely and comes in a nice
little package.

[http://www.powerswitchtail.com/pages/powerssrtail.aspx](http://www.powerswitchtail.com/pages/powerssrtail.aspx)

~~~
StavrosK
That looks great as well, if a bit pricy. IIRC you can get four RC plugs for
the same price.

------
zw123456
I did one about 10years ago using an old phone I got at a garage sale. I was
going to copy the Sparkfun design but instead I made mine a Bluetooth one so
that you don't have to tied up a cellular line.

Anyhow, at the time I was working at a wireless company and I made up a fake
collateral sheet for it on April 1st and circulated it around. Everyone
thought that was the joke, but then I showed around the actual phone that you
could make and receive calls on and it blew everyone away. It was really funny
because for about a minute the marketing department thought about productizing
it for real ! Anyway, nice work on your version! very cute :)

------
josteink
Definitely a funny project.

Me and some friends too considered doing something like this over a decade
ago, using a spare Nokia "Brick" (3310?) for the cell-phone parts and just fit
them inside a rotary-phone we had around, using an Atmel micro-controller for
glue.

We had a general plan, enough EE competence to pull it off, and were ready to
go.

So what stopped us? The Nokia brick. It was known as "the brick" because it
was big, heavy as a brick and was virtually indestructible.

It was seriously robustly made. We were simply not able to pull it apart to
source parts.

It probably didn't help that we were all students and after a while we got fed
up and just wanted to drink beer instead.

Congrats on, unlike us, actually pulling it off :)

~~~
StavrosK
The idea is 100% original, we just had the 100% original idea independently :P
Yeah, I don't think this would be possible without the Arduino or a similar
embedded processor, and it would certainly be waaaay more involved and slow if
I had to do it with custom parts. Nowadays, slap a GSM shield on a $10
Arduino, done.

We truly live in amazing times.

~~~
userbinator
_Nowadays, slap a GSM shield on a $10 Arduino, done._

You can buy an _entire phone_ for that price:

[http://wiki.hacdc.org/index.php/$7_cell_phone](http://wiki.hacdc.org/index.php/$7_cell_phone)

Then add a $1 PIC to handle the glue logic and you're done. Collecting the
dial pulses could probably be done with the USART configured to 10 baud and 9
bits (the first pulse counts as the start bit, and then you get up to 9 more,
nicely mapping to the maximum of 10 pulses you need.) Or if you're really
feeling adventurous, modify the original firmware to interface directly to the
hardware... But that would mean doing _real_ embedded work, and you wouldn't
be able to mention "Arduino". ;-)

~~~
StavrosK
> But that would mean doing real embedded work, and you wouldn't be able to
> mention "Arduino". ;-)

Or even do it at all, because I didn't have a month to spend doing _real_
embedded work for a wacky idea!

------
pearjuice
What you do next is you go to a a Starbucks in a big city, pick a table
somewhere in the middle of the store, take out the rotary phone and start
calling people there. You will immediately become the biggest hipster of the
local community. Given how eager people are to share pictures of edgy people
on the Internet, you are looking forward to world fame here.

~~~
StavrosK
I have actually done this, and people thought I was crazy for talking on a
disconnected rotary phone. It's a great conversation starter and pretty funny,
though. Especially when you call their phone and it rings, people are
astonished.

~~~
freshyill
I love this project. The great thing about it, unlike many technically
impressive projects, is that it's only going to get more and more fun to take
this out as time goes on. If you seem crazy now, pull this phone out again in
10 years and check the reactions then.

We're entering a time where not only will it seem odd that some guy is talking
into a disconnected rotary phone, but soon many people won't even know what it
is that you're talking into. I was in a store the other day, and my daughter,
who is almost 3 years old, pointed to a store phone mounted on the wall in the
toy department and asked me "what's that?"

------
xnzakg
> A clean way to do this is with events. The Arduino doesn’t work that way, as
> you continuously have to ask “is this button pressed?” many thousand times a
> second, but one can rather easily fake an event-driven architecture on top
> of this with some code.

[http://www.arduino.cc/en/Reference/AttachInterrupt](http://www.arduino.cc/en/Reference/AttachInterrupt)

~~~
StavrosK
That's pretty good, but it can only handle two interrupts, and you can't delay
in the function. I suspect it might have messed with the shield somehow, and
it wasn't really necessary for the rotary dialer because the phone isn't doing
anything else while waiting for the pulses.

~~~
ICWiener
I am surely missing something, why would you want to delay in the function?

~~~
StavrosK
The GSM shield messes up if you poll too often, IIRC.

~~~
q3k
You should reevaluate your architecture.

Instead of delaying in code, think about having the main loop enter the
execution routines of a few FSMs (modem FSM, i/o FSM, etc). In this model, a
FSM state function can just return early if it's waiting for an even, giving
execution time to other FSMs.

Of course, a better approach would be to run a RTOS on your uC, like the
venerable FreeRTOS. Then you can just run tasks that can sleep, communicate
via queues, and you can even get preemption if you wish. But I'm not sure it's
available for the Arduino.

Additionally, since you're using a SIM90x, why are you polling the modem? Out-
of-band events (incoming call, new text message) usually arrive in the form of
Unsolicited Messages, like +CMTI for a new SMS or RING for an incoming call.
You can interrupt on each character received via UART, and do your processing
there.

~~~
StavrosK
That's how it works now (the FSM), which is why an interrupt isn't really
necessary (the rotary dial state doesn't do anything other than poll for the
dialing). Also, it's a bit overkill to load a RTOS for the 50 lines of code
this thing has.

The polling of the shield is done because that's the way the shield library
works, and I didn't want to rewrite the entire thing when it works fine as it
is now, really...

------
_rknLA
Unfortunately not even a shoutout to the nearly-identical Sparkfun project
from over 10 years ago...
[https://www.sparkfun.com/tutorials/51](https://www.sparkfun.com/tutorials/51)

~~~
JshWright
The question you're begging might be answered by the "over 10 years ago"
bit...

------
Animats
As others have pointed out, this has been done many times before. There's even
a commercial product to pair an analog phone to a Bluetooth cell phone.[1] It
generates proper ring voltage and dial tone, and a fast busy tone if it lacks
a connection to the phone system, so it does the whole job of emulating land
line.

We have one of those in our steampunk telegraph office[2], connected to a
1970s Singapore-made imitation of a 1930s French phone equipped with a Japan-
style telephone plug. It's popular with small children. ("It's so heavy!")

[1] [http://www.amazon.com/Xtreme-Technologies-BT-Bluetooth-
Gatew...](http://www.amazon.com/Xtreme-Technologies-BT-Bluetooth-
Gateway/dp/B00135XU7Q) [2]
[https://vimeo.com/124065314](https://vimeo.com/124065314)

~~~
nickpsecurity
Nice vid. That woman's outfit was great, too!

------
theklub
Now just size it down to the dial only with a tiny mic/speaker and turn it
into a watch/phone.

~~~
njharman
We need a virtual rotary dial "keypad" for our smartphones!

------
fiatpandas
Really fun project and great end result, although sucks you couldn't make use
of the original bell.

I recently bought an AT&T Traditional 100 touch tone phone with a similar
project idea in mind. Fun bonus: the model has a mute button, ringer volume
switch, and redial. I really really want to be able to make use the original
ringer, but I haven't got anywhere with the electronics.

Did you learn anything about activating the ringer with an arduino, or did you
know from the beginning that you had to cut it due to space constraints?

~~~
StavrosK
This phone also has a two-state button, which I made into "force dial" (when
you've already dialed some numbers) or "redial" if you haven't dialed
anything.

Someone did actually post a way to use the ringer, with a circuit that can
convert the battery's 5V to 50V, but there is very very little space in the
phone as it is, and there's no way to fit the ringer itself in, let alone the
new circuit. I've made my peace with it, though!

------
FWeinb
This is an awesome project. After watching all of his videos this[1] one is
the most curious, because you could probably get his phone number by measure
the time it takes for a digit to dial. Not that this is something I would
endorse but it came to my mind the second he tried to hide the dialing
process.

[1]
[https://www.youtube.com/watch?v=v_e1oqCkeng&feature=youtu.be...](https://www.youtube.com/watch?v=v_e1oqCkeng&feature=youtu.be&t=107)

~~~
StavrosK
I think I also mention the fact that you can get it from the timings in the
video, no?

------
lepht
From part one[1] (which I'd recommend reading):

> 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.

Does anyone remember this with rotary phones? I was pretty young when they
were still in use, but I don't remember this being an issue.

[1]: [http://www.stavros.io/posts/irotary-part-
one/](http://www.stavros.io/posts/irotary-part-one/)

~~~
StavrosK
It's really rare, and it was more pronounced in the old phone, so it may have
been a problem with the specific dial. The new phone has very very low error
rates.

------
andmarios
A tiny bit of criticism. “The entire build cost something like $150 in parts
and $2000 in development time.”

I think adding a price to a personal project takes part of the fun out.

Anyway, nice work!

~~~
StavrosK
I agree, I don't care about either, since it was very fun to work on! However,
some people were asking me how much it cost, and saying it cost $150 in parts
would be misrepresenting the time I spent working on it, so I thought that
including the time would be more accurate. The $2000 price tag is a bit
tongue-in-cheek.

------
jsingleton
Awesome job! If you haven't already submitted this to hackaday then you really
should: [http://hackaday.com/submit-a-tip/](http://hackaday.com/submit-a-tip/)

~~~
StavrosK
Oh, thanks, I'll do that now!

------
moreentropy
Want! I have actually used such a converted phone at 31c3. Someone from the
Warpzone hackerspace in Münster, DE has built one. He even managed the
trickery to drive the original ringer with a simple battery.

------
thret
"it’s not like you can exactly text your friends on it (you need the
typewriter addon for that)"

A typewriter and a monochrome CRT screen, connected wirelessly. A mobile
office for an on-the-go hipster.

------
mellavora
A classy product and an even classier write-up!

"Having solved two problems with one excuse,..."

I trust I am free to also use this phrase? Beautiful!

~~~
StavrosK
No! It is trademarked. Here's the trademark: ™

But seriously, sure, go ahead!

------
lanstein
Nice! Reminds me of my project to hook up my lineman's handset to our IP phone
system at Splunk :)

------
madman86
Can't wait till I start seeing all the hipsters carrying around rotary phones!
Nice work OP.

~~~
0xdeadbeefbabe
Hipsters already do, at least the cool ones.

------
ASlave2Gravity
This is crazy! You could sell these, I'm sure there's a market for them. Great
hack!

~~~
0xdeadbeefbabe
Sparkfun did for a while
[https://www.sparkfun.com/products/retired/287](https://www.sparkfun.com/products/retired/287)

------
kbart
Nice, similar project has been on my to-do list for ages.

------
bketelsen
Hats off to you, good sir.

~~~
StavrosK
Why thank you, my kind fellow.

------
sokratisp
How can I buy one? :P

~~~
StavrosK
Unfortunately, there's only one in existence!

~~~
fnordfnordfnord
I'm afraid this project has been done many times by many people. SparkFun has
even made a (now retired) kit.
[https://www.sparkfun.com/products/retired/287](https://www.sparkfun.com/products/retired/287)

[http://rotocell.blogspot.com/#](http://rotocell.blogspot.com/#)!

~~~
StavrosK
Oh no :P

I know other such conversions exist, I meant I only made one. I did it because
it was fun, though, so I don't mind that there are others.

~~~
fnordfnordfnord
My mistake. I misunderstood the meaning of your other comments.

------
MyNameIsMK
Love it!!!!

