Final Project - Kyle Moore


Final Project - Rotary MP3 Player

 

The Idea:

As I was listening to the founder of SparkFun talk about how they put a cell phone module inside of a rotary telephone so that it could make cell phone calls, I decided that I could do a similar thing with an MP3 player. I figured a phone would be well suited for this because it already has a speaker that I can hijack to play the music over, and it has built-in controls for dialing and hanging up that I can use to control my device. I decided to use a rotary telephone because I figured it would be easier to interface with (older technology is generally bigger because they didn't have the complex manufacturing processes we have today, and therefore simpler to understand) and just generally cooler than using a modern touch-tone telephone. For the interface I decided to take advantage of the built in speaker to play my music, and map different number combinations on the rotary dialer to different actions (play, pause, fast forward, rewind, volume control, etc.). The final product is completely self-contained (I managed to fit an Arduino and MP3 circuit inside the original case) and powered by a single AA battery.

 

Verplank Diagrams:

This particular project didn't lend itself to a Verplank diagram particularly well because it wasn't solving a specific error and didn't conform to a metaphor, instead it was merely a cool project that is a bit of a novelty.

 

Design Point of View:

When I was designing this, I wanted to make something that would elicit a "wow" response from people when they saw/used it. Putting the MP3 player inside a phone did just that. Now that it's done, whenever people see it, they always go through a progression of confusion, disbelief, and finally awe when they learn and experience what the phone can do. I like this project because it takes something otherwise useless (an old telephone) and makes it a novelty piece and a conversation starter. This ordinary-looking phone is actually a unique device, and I like that.

 

Paper Prototype:

There was no paper prototype for this because I planned on housing the player in the phone the whole time, so I knew from the beginning exactly what the final case would look like.

 

Materials:

 

Code:

Final Project Code - Kyle Moore

 

The MP3 player part of this code has been updated to not use EEPROM but store the list of files in a RAM buffer. Also, instead of using a blocking loop in setup() to send data to the decoder, it sends data each iteration of loop(). This allows it to process other things in loop() (such as checking if the user is done dialing). Play/pause is handled by setting a volatile boolean flag in an interrupt (triggered when the phone is taken off/placed on the hook). This variable is checked before data is sent to the decoder and data is only sent (and new data read) if the variable is set to true. Fast forward and rewind are handled by changing the global variable that stores the index of the current song file in the directory and then making the read/write loop think it's reached the end of its data stream. This causes it to open a new one at the file specified by the new index.

 

Thoughts as I Went:

 

Final Thoughts:

Overall, I am very happy with how everything turned out. Besides a few desired additions, the phone/MP3 player works very well. The only problems I have with it are some reliability problems when I take the case off or shake the phone. Sometimes this will cause the controls to stop working or the music to stop playing. This likely means I have a bad connection or a short somewhere. If I went back over my circuit with a soldering iron and shrink wrap and strengthened/insulated my connections I think the problems would largely go away.

 

Desired Additions:

 

How to Use It:

 

Photos (click for larger versions):

Prototype MP3 player, on breadboard. Uses voltage dividers instead of level shifters.

 

Original phone, before modification.

 

Inside of phone, with rotary dial still attached.

 

Inside of phone, with rotary dial removed.

 

Underside of rotary dial. Switch A is on the top and switch B is on the bottom.

 

Circuit laid out on a PCB board, uses level shifters.

 

Final product wired together with the case open.

 

Video:

Fliqz has shut down their service. To access this video, email support with this video id: 0cf4a49eee5940fb98ccaa7bc688b32d