This project was essentially born out of the desire to listen to FM radio at work. Which seems like an easy task — buy a $10 radio, plug it in, tune to desired radio station, success!
This is not so easy when certain co-workers in my near vicinity are not tolerant of … basically … sound. Ok, so just use my smartphone and stream music, MP3’s or FM radio with headphones right? Ok. Fair enough. Except this solution isn’t the best with spotty WiFi in the warehouse where I work and I don’t want to blow through my phones data plan.
There are also tiny FM radios available that are the size of a USB key that you just plug headphones in and go. Many of these also double as MP3 players. Great, but not only are they expensive they don’t allow you to pause a radio station you are listening to and resume at a later time (much like a PVR/TIVO works). That last feature was my little idea to justify making a project like this.
Even though a product similar in functionality exists, the cost is over $100. I feel I can make it for much less. Nobody needs ANOTHER MP3 player, so i’ll leave that feature out. I don’t really care to record radio shows or anything like that so I don’t need file storage and a menu system like an Ipod to playback recordings. All I care to do is pause and resume when needed. Easy. Ya. Should be done in a week, right?
So, lets dive right in. How do I make this? What components do I need?
I feel a good starting point is to make something like a “system diagram”. I quoted that because I feel there is an official term for this kind of diagram, but I also feel that “system diagram” is not the correct term. So this is what we have so far (subject to …many… revisions)
This will need revision, I just slapped this together quickly in Visio which I have never used before and now find that I don’t particularly like. Specifically the headphone out area where I will be needing to interrupt the audio signal and route it through the VS1053 for recording when paused, then out the VS1053 to headphones when resumed. I don’t have a clear idea on how that will work yet. I am expecting, for simplicity, that audio will have to always route through the VS1053 regardless if anything has been buffered from a pause or not.
Additionally, I have to decide on my maximum buffer length. I am going with 1 hour for now. I also plan to utilize RDS protocol on FM radio broadcasts for station/song info display. This may or may not be a beast to implement when buffering audio and re-syncing RDS data to a resumed stream.
In the near future I will be further explaining each module. I hope to get to actual bench testing of each module very soon.