The InternetRadio project is an ongoing project to build a WiFi-connected radio that streams MP3 streams from radio stations on the internet. This project has several different aspects to it: the software for the user interface and for streaming the data, the software for decoding the data (using the Helix MP3 decoder); the hardware for turning the decoded sound samples into actual sound, and an enclosure to house the electronics. The end goal is to have a reasonably good-looking, standalone WiFi Internet radio, with decent sound quality, that can run for a decent amount of time on batteries.
Some parts of the project are pre-determined:
The MCU will be a WiFi-enabled ARM Cortex-M4 microcontroller; in my case this is a Texas Instruments CC3200 launchpad, since I had that lying around.
The display will, at first, be a Nokia 5110 LCD screen, since I also had these lying around. (The Adafruit variant.)
Other parts were settled after brief research sessions:
The MP3 decoding library is the Helix library. Other libraries were looked at (e.g. the mpg123 library), but the memory constraint of +/- 80KB didn’t leave many candidates.
For DAC I used a generic MCP4921 DAC. This is probably not the best choice for sound quality, but it is easy to drive over SPI by the CC3200. This component may be replaced with an audio-quality DAC once the system works end-to-end.
The output of the DAC is piped into an amplifier. For initial tests, I used a basic LM386. Later I switched to a more powerful TBA820 because I had an assembled an tested one availabe; and finally I moved to a Class-D amplifier using a MAX4295 chip.