Rotary Emotiphone using Arduino
The Rotary Emotiphone is a vintage rotary phone that tweets mood emoticons. It has a predefined list of 10 emoticons, each assigned to a digit, so that when you are happy / sad / drunk / etc., you pick up the handset and dial a mood. Could’ve gone for more complex messages using 2-digit code convention, but eventually decided to keep it simple.
The idea was conceived while I was preparing portfolio for my Industrial Design school. I had a rotary phone that used to belong to my late grandmother, which I wanted to mod for a long time. So, as soon as I read the guidelines that said I needed take an outdated product and revive it, make it relevant to our times, I knew this was one great opportunity to do something with that phone. Originally, I wanted to turn it into a full-fledged Twitter client that rings when someone replies on your tweets, but eventually I decided to go for a one-way communication device, with no reply-signaling functionality. Anyway, the idea of taking a full duplex communication device and converting it to half-duplex was cool enough concept to get me started. And hey, I got accepted! perhaps they liked the idea, too 🙂
Luckily, everything worked just fine almost at first take. The Arduino Wifly library saved me a lot of work and needed just one minor modification to connect to unknown open wireless network; the code, after proof-of-concept stage, had been perfected with invaluable help of Tomer, my old time high-school pal and Arduino fellow hacker, who had turned my spaghetti into a well orchestrated state machine. So, even if not mine, this code is something I’m very happy about and proud of. Another obstacle was the number of colors of LEDs that I had: I wanted to have 10 distinct colors, one behind each number dialed, but I had only 7 different colors. Instead of repeating three colors, I chose to use three bi-color LEDs and to switch between their colors until I find a ratio that produced a color I didn’t already have. That took some bitwise logic, but nothing too complicated, at the end of the day.
Having said all that, I hope that from now on everything should be fairly straightforward…
- Cordless drill
- 3mm drill bit for the LEDs
- 12mm drill bit for the switch
- Solder and Soldering Iron
- Hot Glue Gun
Making Some Space Inside the Phone
Before starting, disassemble and take out of the phone anything that is not needed for the project. I mean solenoids, bells (I thought of using them for signaling Tweet replies but gave up on the idea), large capacitors, metal brackets, and the rest, if anything else exists in your phone.
Step 1: Installing the LEDs
Start by disassembling the round dialer, the one that has holes for the fingers in it. Below it, if your phone is the same as mine, you will find a flat, opaque disc. Gently take it out, too, as it is fragile and tends to crack when drilling close to it. I did not know that when I started drilling holes for the LEDs, and it did crack. Not to worry, I’ve cut a piece of plastic sheet to the right size and used it instead, could not tell the difference after constructed.
Temporarily put the dialer back on, just so that you can drill holes for the LEDs onto the plastic behind it at the right places, just behind the finger holes. Then, gently drill 10 3mm holes into the plastic behind the dialer, trying to get them as close to the surface as possible, but no more than that. Easy does it, this stage requires accuracy and a somewhat steady hand.
Connect a common ground wire to all of the single-color LEDs’ cathodes (short leg). Connect the wire as close as possible to the LED itself, cut the excess metal of the leg and finally, bend the leg so that it does not stand in the way when re-assembling the dialer and the case. Leave some wire at the end to connect to the Arduino. For the bi-color LEDs, first check whether they are common anode or cathode. If common anode, as mine, solder another common wire to their anodes (long leg), this time this wire will go to the VCC of the Arduino. If common cathode, use the same common ground wire you used the rest of the single-color LEDs and connect it to their cathodes (short leg).
Now, solder wires to the remaining LED legs – one wire for the single color LEDs, two for the bi-color. The other end of these wires will soon get connected to the MCP23017 (or the Arduino, in case you’ve made the modification suggested in the Intro).
Test your connections, making sure that all LEDs are mounted firmly and light up when connected to 3V power.
Put back the opaque disc and the dialer and re-test, paying special notice to the light each LED makes through the disc. Make gentle modifications if needed, for example if the disc blocks too much of the LED light, try to get the LED closer to the outer layer of the plastic by drilling, to improve luminance.
Solder the MCP23017 onto the Perfboard or Stripboard and connect it to the LEDs on one side and the Arduino on the other, according to the electronic scheme (see in images). To test everything so far, you can upload the sketch onto the Arduino (see Step 5) and make sure that all LEDs are lit on reset.
Congratulate yourself! The hard part is behind you. From now on, everything should be a breeze.
For more detail: Rotary Emotiphone using Arduino