Friday, June 17, 2011

Mobile Phone Keypad Button Controller

This is a hack that breaths new life into an old "button phone."

Button keypads for mobile phones are quickly becoming an anachronism and may soon go the way of the rotary dial on land-line telephones of yore. 'Tis a shame... and an opportunity.  Hacking a keypad is easy.  I cannot imagine hacking a touch screen to be as easy.   So, it is a shame that as button phones become rare, hacking mobile phones will become more difficult.  On the other hand, the relatively low demand for button phones has driven the cost down into my "why not break it & change it" range.  So, if you can't find where you stashed your old phone, you can pick one up used really cheap (<$10 + S&H).

Part of the fun of this project is reverse-engineering the phone keypad and wiring it up for "remote control".  For me, that is where it all started.  From there, I designed a cross-point matrix using optocouplers to control all of the keys without using a pair of wires for each key.  In my case, I have 14 wires connected to the phone to control 24 keys.  I could have used relays, but these quad optocouplers are much more compact than any 5V relays I've ever come across.  Using a few 3-to-8 bit decoders, I am able to control all 24 keys with only 6 pins of the microcontroller (uC).  Overall, the hardware will be phone independent and software will take care of phone-specific features.

On the software side, I'm trying to make it relatively easy to adapt to different phones by changes to a header file that maps phone keys to uC output pins.  This is just in case I damage the existing phone and need to wire-up a different one.  Beyond that this design will be pretty much "phone independent"

As of today, I have finished a hand-wired solder-board to control all of the phone's keys. Over the next few weeks, I will discuss this hack in more detail, starting with the reverse-engineering the keypad. 

Below is a very short video of a dialing test to whet your appetite.



In this video, I am using the board to "auto-dial" 4 keys.  The phone starts off powered-up, but with the screen off.  When I power-on the Arduino board with the USB cable, the screen is powered on, the previous number is cleared, and 4 keys are dialed (#789).  Then it stops doing anything else.  I know, it is not very exciting, but after several hours looking for a befuddling build error, it is finally working.  So, I am excited to share this little triumph.  I promise a more interesting test/demo video after I've spent some more time writing and debugging the software.

No comments:

Post a Comment