GithubHelp home page GithubHelp logo

lacybad / esp32_webradio Goto Github PK

View Code? Open in Web Editor NEW

This project forked from michelep/esp32_webradio

0.0 1.0 0.0 1.11 MB

An Internet web radio based to ESP32

License: GNU General Public License v3.0

C++ 70.91% HTML 29.09%

esp32_webradio's Introduction

ESP32_WebRadio

An Internet web radio based to ESP32

ESP32 connect to the Internet via WiFI (support WEP/WPA/WPA2), fetching MP3/AAC audio stream from your favourite webradios (mine is Dance Wave!). Then decode MP3 and send via I2S to DAC. The DAC simply output audio to a PAM8403 3W amplifier.

My grandpa made for me a fantastic wood case that sits perfectly on my book shelf in the linving room ;-)

ESP32 WebRadio

This is the inside, with the mainboard, battery, charge/discharge module, speakers and, on the right, hide by a panel, the 4 buttons control board:

ESP32 WebRadio inside

This is a detail of the Nokia 5110 LCD display:

ESP32 WebRadio

Configuration

Edit 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.

Bill of materials

For a basic board:

  • DOIT ESP32 WebKit v1 (or other suitable ESP32 board...) (On AliExpress)
  • CJMCU 5102 DAC AliExpress
  • PCD8544 LCD Display (aka NOKIA 5110 display) module (On AliExpress)
  • PAM8403 2*3W Amplifier board (On AliExpress)
  • One or more NeoPixel, but they are not mandatory ;-)
  • Two 8 Ohm speaker
  • 3 x 10K Ohm 1/8W resistors
  • 2 x 100K Ohm trimmer
  • 330 Ohm 1/8W resistor
  • 860 Ohm 1/8 W resistor, only if you want to add one or more NeoPixels
  • 3 push buttons (On AliExpress)

On mine, i've added an 18650 LiBo battery and a voltage charge/discharge regulator (on Aliexpress), with key pin (connected to the fourth button) to power on and off. With this module, i can power (anche charge the battery) using 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.

Schematic

Schematic

ChangeLog

0.0.6 - 30.07.2020

  • Just small remarks to fix some compiler errors

0.0.5 - 03.06.2020

  • Better wifi icon
  • Display now show more info about radio and songs
  • Adding streams URL via Web now work
  • Minor bugs fixed

0.0.4 - 20.05.2020

  • Better OTA handling
  • Display now show scrolling title and stream name, current time and wifi power in top bar, volume in bottom (WIP)
  • Miscellaneous improvements and bug fixed

0.0.3 - 14.05.2020

  • Some design changes, like 3 mechanical buttons (but you can use capacitive ones, if you want)
  • Streams list also on webpage, with the ability to play each with a click
  • Display graphic improvementes
  • Lots of new features and bugs fixed
  • Other minor changes

0.0.2 - 09.05.2020

  • Added streams.json with lists of stream URL to be played
  • Some minon bugs fixed

0.0.1 - 08.05.2020

  • First public release

Other resources

Start with ESP32 pinouts from here: https://randomnerdtutorials.com/esp32-pinout-reference-gpios/

Needs the great work from Wolle for MP3 stream decoding and I2S interface: https://github.com/schreibfaul1/ESP32-audioI2S

A great tutorial for Nokia 5110 LCD displays is there: https://lastminuteengineers.com/nokia-5110-lcd-arduino-tutorial/

Contributions

This work is free and far to be perfect nor complete. Contributions and PR are welcome and strongly encouraged!

esp32_webradio's People

Contributors

michelep avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.