{"id":20899409,"url":"https://github.com/michelep/esp32_webradio","last_synced_at":"2026-03-11T09:32:12.500Z","repository":{"id":46267897,"uuid":"262347837","full_name":"michelep/ESP32_WebRadio","owner":"michelep","description":"An Internet web radio based to ESP32","archived":false,"fork":false,"pushed_at":"2021-11-03T10:28:35.000Z","size":1156,"stargazers_count":65,"open_issues_count":1,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-03T18:04:07.420Z","etag":null,"topics":["arduino","audio","dac","esp32","i2s","i2s-audio","internet-web-radio","radio","wifi"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michelep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-08T14:40:40.000Z","updated_at":"2025-07-21T08:38:11.000Z","dependencies_parsed_at":"2022-08-12T12:50:20.864Z","dependency_job_id":null,"html_url":"https://github.com/michelep/ESP32_WebRadio","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/michelep/ESP32_WebRadio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelep%2FESP32_WebRadio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelep%2FESP32_WebRadio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelep%2FESP32_WebRadio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelep%2FESP32_WebRadio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michelep","download_url":"https://codeload.github.com/michelep/ESP32_WebRadio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michelep%2FESP32_WebRadio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30377277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","audio","dac","esp32","i2s","i2s-audio","internet-web-radio","radio","wifi"],"created_at":"2024-11-18T11:13:59.997Z","updated_at":"2026-03-11T09:32:12.478Z","avatar_url":"https://github.com/michelep.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32_WebRadio\nAn Internet web radio based to ESP32\n\nESP32 connect to the Internet via WiFI (support WEP/WPA/WPA2), fetching MP3/AAC/M4A audio stream from your favourites webradio (mine is Dance Wave!). Then decode MP3 and send via I2S to DAC. The DAC simply output audio to a PAM8403 3W amplifier.\n\nMy grandpa made for me a fantastic wood case that sits perfectly on my book shelf in the linving room ;-)\n\n![ESP32 WebRadio](https://raw.githubusercontent.com/michelep/ESP32_WebRadio/master/images/esp32_webradio_overview.jpg)\n\nThis is the inside, with the mainboard, battery, charge/discharge module, speakers and, on the right, hide by a panel, the 4 buttons control board:\n\n![ESP32 WebRadio inside](https://raw.githubusercontent.com/michelep/ESP32_WebRadio/master/images/esp32_webradio_inside.jpg)\n\nThis is a detail of the Nokia 5110 LCD display:\n\n![ESP32 WebRadio](https://raw.githubusercontent.com/michelep/ESP32_WebRadio/master/images/esp32_webradio_front.jpg)\n\n## Configuration\n\nEdit data/config.json file with your wifi ESSID and password. Fill data/streams.json with your favourites streams. Then burn the whole data directory into SPIFFS partition. Other stuff can be edited via web interface, available after successfull contection to the net. \n\n## Bill of materials\n\nFor a basic board:\n\n- DOIT ESP32 WebKit v1 (or other suitable ESP32 board...) (On [AliExpress](https://it.aliexpress.com/item/4000141080480.html))\n- CJMCU 5102 DAC [AliExpress](https://it.aliexpress.com/item/33023894667.html)\n- PCD8544 LCD Display (aka NOKIA 5110 display) module (On [AliExpress](https://it.aliexpress.com/item/32959195226.html))\n- PAM8403 2*3W Amplifier board (On [AliExpress](https://it.aliexpress.com/item/32968752490.html))\n- One or more NeoPixel, but they are not mandatory ;-)\n- Two 8 Ohm speaker\n- 3 x 10K Ohm 1/8W resistors\n- 2 x 100K Ohm trimmer\n- 330 Ohm 1/8W resistor\n- 860 Ohm 1/8 W resistor, only if you want to add one or more NeoPixels\n- 3 push buttons (On [AliExpress](https://it.aliexpress.com/item/32995191209.html))\n\nOn mine, i've added an 18650 LiBo battery and a voltage charge/discharge regulator (on [Aliexpress](https://it.aliexpress.com/item/32824032545.html)), with key pin (connected to the fourth button) to power on and off. With this module, i can power (anche charge the battery) \nusing USB. I've choosed an USB B connector (i have some lying on the table...) and it works perfecly ;-). With a fully charged battery, it can play sound at reasonable volume for about 2 hours.\n\n## Schematic\n![Schematic](https://raw.githubusercontent.com/michelep/ESP32_WebRadio/master/images/schematic.png)\n\n## ChangeLog\n0.0.7 - 16.0.4.2021\n  -  Just some small fixes and a refresh for library dependencies. Tested with:\n     - ESP32-audioI2S (https://github.com/schreibfaul1/ESP32-audioI2S) 783f67c\n     - ESP32-Arduino (https://github.com/espressif/arduino-esp32) 1.0.6\n\n0.0.6 - 30.07.2020\n  -  Just small remarks to fix some compiler errors\n\n0.0.5 - 03.06.2020\n  - Better wifi icon\n  - Display now show more info about radio and songs\n  - Adding streams URL via Web now work \n  - Minor bugs fixed\n\n0.0.4 - 20.05.2020\n  - Better OTA handling \n  - Display now show scrolling title and stream name, current time and wifi power in top bar, volume in bottom (WIP)\n  - Miscellaneous improvements and bug fixed\n\n0.0.3 - 14.05.2020\n  - Some design changes, like 3 mechanical buttons (but you can use capacitive ones, if you want)\n  - Streams list also on webpage, with the ability to play each with a click\n  - Display graphic improvementes\n  - Lots of new features and bugs fixed\n  - Other minor changes\n\n0.0.2 - 09.05.2020\n  - Added streams.json with lists of stream URL to be played\n  - Some minon bugs fixed\n\n0.0.1 - 08.05.2020 \n  - First public release\n\n## Other resources\n\nStart with ESP32 pinouts from here: https://randomnerdtutorials.com/esp32-pinout-reference-gpios/\n\nNeeds the great work from Wolle for MP3 stream decoding and I2S interface: https://github.com/schreibfaul1/ESP32-audioI2S\n\nA great tutorial for Nokia 5110 LCD displays is there: https://lastminuteengineers.com/nokia-5110-lcd-arduino-tutorial/\n\n## Contributions\n\nThis work is free and far to be perfect nor complete. Contributions and PR are welcome and strongly encouraged!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichelep%2Fesp32_webradio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichelep%2Fesp32_webradio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichelep%2Fesp32_webradio/lists"}