Hacker News new | comments | show | ask | jobs | submit login
Show HN: An old rotary phone converted into a mobile phone (stavros.io)
222 points by StavrosK on May 27, 2015 | hide | past | web | favorite | 61 comments

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.

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):


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.


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

We just went with a simple 240v/10a relay. I would prefer to use something a bit cleaner though so the remote switches look interesting. Cheers.

Yeah, I wouldn't mess with that sort of current directly, especially when children are involved and the thing would be close to other things inside the house, plus remote switches are great because of their range. They can easily go tens of meters with a few walls between them.

Awesome project idea! I actually wanted to make a clapper to trigger wake-on-lan. What type of mic/pickup are you using?

We just picked up a cheap electret microphone from ebay. Was a few £.

You can use the atmel avr SDK if you want to go more in-depth.

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 :)

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 :)

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.

Nowadays, slap a GSM shield on a $10 Arduino, done.

You can buy an entire phone for that price:


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". ;-)

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

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.

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.

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?"

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


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.

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

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

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.

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

Debouncing the switch? Check if the input is triggered, and then check it again a short time later to see if it is still triggered.

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

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

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... [2] https://vimeo.com/124065314

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

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

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

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?

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!

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

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

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/

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.

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!

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.

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

Oh, thanks, I'll do that now!

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.

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

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!

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

But seriously, sure, go ahead!

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

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

Hipsters already do, at least the cool ones.

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

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

Hats off to you, good sir.

Why thank you, my kind fellow.

How can I buy one? :P

Unfortunately, there's only one in existence!

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


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.

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

You've probably got yourself a pretty sweet "niche" business there. I can imagine they'd sell at a pretty reasonable pace from http://thinkgeek.com or something.

Hi, I love your phone :)

I'd also love to have one. My friend here in Prague I think would be able to help with the design in order to keep the bell - it MUST be possible.

Also a Kickstarter could be great which I have experience in also. I will contact you :)

Go for the Kickstarter! :D

Love it!!!!

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact