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.
You can find more info on my blog (check the RF/IR stuff):
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 :)
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 :)
We truly live in amazing times.
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". ;-)
Or even do it at all, because I didn't have a month to spend doing real embedded work for a wacky idea!
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?"
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.
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...
We have one of those in our steampunk telegraph office, 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!")
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?
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!
> 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.
I think adding a price to a personal project takes part of the fun out.
Anyway, nice work!
A typewriter and a monochrome CRT screen, connected wirelessly. A mobile office for an on-the-go hipster.
"Having solved two problems with one excuse,..."
I trust I am free to also use this phrase? Beautiful!
But seriously, sure, go ahead!
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.
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 :)