A Simple Streaming Radio Receiver

For those interested in a career in broadcast radio there aren’t many routes into the business. Student radio, pirate radio, and hospital radio usually feature somewhere near the start of any DJ’s resumé. Hospital radio stations often don’t have a transmission license and have historically relied on wired systems, but since those can’t reach everywhere they are now more likely to look to the Internet. [AllanGallop] has created the Mini Web Radio for the hospital station in the British city of Milton Keynes, a compact battery-powered single station streaming radio receiver that can pick up those tunes anywhere with a wireless network connection.

Inside the neatly designed 3D printed box the hardware is quite straightforward, a WeMos ESP32 board and a MAX98357A I2S digital amplifier module all powered by an 18650 cell. There’s a volume control and headphone socket, which is all that’s needed for the user interface. The software has code for both Arduino and Platform.io and is configured as you might expect through a web interface. Everything can be found in a handy GitHub repository should you wish to build one yourself. Meanwhile, it’s particularly pleasing as a Hackaday scribe to feature a project with roots in one’s own hackerspace, in this case, Milton Keynes Makerspace.

Thanks [Cid] for the tip!

12 thoughts on “A Simple Streaming Radio Receiver

  1. Nice and simple! Some features to consider: add a USB charging option (of course ;), put the system into deep sleep if the battery voltage gets to low to avoid damaging the LiPo and use syslog to send status messages over the network.

  2. Great idea on deep sleep and syslog, I’ve added them to the development wishlist! The Lolin32 boards being used do have USB charging via an onboard TP4054, admittedly it is not great but better than nothing

    1. I do not think the TP4054 alone has true cell protection. It’s a cell charge controller, not cell protector. Consider adding either a charge controller with true protection, using a DW01 protection chips with some MOSFETs (check the Lolin32 schematic, the DW01 & MOSFETs may already be there), or always use 18650 cells with built-in protection (worst-case the simplest solution).

  3. Please note that college radio stations eat up their volunteers’ time with great glee. They never shut off, and someone is always needed for the next shift. Ergo, lots of college student radio workers rapidly find themselves in academic trouble, and the school administrators are not sympathetic, So freshmen and part-timers must stay away from the ever-lasting, continuous party down at the radio studio. If it’s all too tempting, please withdraw for a couple of semesters until you get your fill of radio. (I worked at several college stations, but never while I was a student.)

  4. My cell has been destroyed by a deep discharge. I heared from the ham station club his cell has no embedded BMS. Accrding to my Lolin32 lite documentation, the board has a lithium charger from USB power. And it has no BMS to protect the 18650 cell from undervoltage and overcurrent.
    An external BMS (1S model, 3 Amp), taped on the battery holder, fixed the issue.


    1. Correct observation, the cells are the unprotected type and consideration was put into adding a PCM but this particular use case is they are issued out in the mornings and collected again for charging every evening so they don’t really drop below 25% capacity The battery is monitored by μC and it will put itself into deep sleep with the next firmware update. But of course a direct future upgrade would be protected cells, ultimately the concept was the cheaper they are to produce the more we can make and hopefully that means more people we can help.

    1. Do you know a better way to build a wireless internet radio? The ESP32 is cheap and available. It has wifi in the chipset and it’s powerful enough to decode mp3 on board (i.e. without VS1053). It’s apparently low power enough to run on a 18650 cell for a day.

      I admit that ESP32 occurs in many Hackaday projects and sometimes using an ESP32 is overkill. But it’s cheap and it’s easy to get it up and running. Processing power and memory are very cheap these days. It doesn’t matter that you’re only using a fraction of what the CPU is capable of.
      The same holds for the coding: you might be able to get more efficient code by using assembly language, but it’s quicker to get it running with C++ or even python. All the hours you saved can be used on other projects.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.