logo elektroda
logo elektroda
X
logo elektroda

Internet radio and audio file player on ESP32-S3

MAJSTER XXL 259518 2638

TL;DR

  • Built an ESP32-S3 internet radio with an audio file player and OLED desk display, evolving through v1, v2, and v3.
  • Uses an ESP32-S3-WROOM-1, PCM5102A DAC, rotary encoders, and GitHub-hosted station lists split into banks of up to 100 stations.
  • The prototype uses a 2.42" 128x64px white OLED display, with a PCB made in Poland costing 130zl.
  • v3 adds a colour screen, weather, a calendar, RSS news from Polsat News Polska, and full remote control.
  • The first PCB had a pad-spacing mistake for the ESP32-S3-WROOM-1, so the module pins had to be bent slightly to fit.
Generated by the language model.
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
📢 Listen (AI):
  • #2191 21825437
    RonAd
    Level 10  
    Posts: 26
    Rate: 1
    >>21825434
    Please!
    Because compiling the main file in the Arduino environment and manning the Equalizer libraries in the subdirectories gives the following errors
    'class Audio' has no member named 'setGraphicEQ16
  • ADVERTISEMENT
  • #2192 21825444
    robgold
    Level 23  
    Posts: 698
    Help: 10
    Rate: 284
    @ejcon VS - Platformio keeps once defined versions of libraries inside the project. Because as I guess you have an audio library modified by you for this FFT. This makes those who use Arduino either have to manually download such a library from you from GitHub and on top of that know how to replace it and delete the pre-compiled sketch otherwise the Arduino will "hang up".

    Each tool has its own characteristics. Once you know it, a "compiler" is basically a "compiler". Whether it be Eclipse or VS or Arduino. Problems similar to those with AVR Studio and GCC, or Hitech and MPLab ;)

    Provided the entire project folder with the libraries. Then it will be all ready to compile on Platformio along with the platformio.ini file. Otherwise it is difficult to do on Arduino for someone who has never swapped libraries.
  • #2193 21825456
    ejcon
    Level 16  
    Posts: 253
    Help: 3
    Rate: 54
    robgold wrote:
    @ejcon VS - Platformio keeps once defined versions of libraries inside the project. Because as I'm guessing you have an audio library modified by you for this FFT. This makes those who use Arduino either have to manually download such a library from you from GitHub and on top of that still know how to replace it and delete the pre-compiled sketch otherwise Arduino will "hang up".

    Each tool has its own characteristics. Once you know it, a "compiler" is basically a "compiler". Whether it be Eclipse or VS or Arduino. Problems similar to those with AVR Studio and GCC, or Hitech and MPLab ;)

    Provided the entire project folder with the libraries. Then it will be all ready to compile on Platformio along with the platformio.ini file. Otherwise it is difficult to do on Arduino for someone who has never swapped libraries.

    I just did this
  • ADVERTISEMENT
  • #2194 21825500
    simw
    Level 27  
    Posts: 754
    Help: 94
    Rate: 286
    ejcon wrote:
    I use vc programming and platform. There I have no such problems I probably have to make the whole project available in patformio

    Maybe it is enough to publish the versions of the libraries, because some versions went in without problems.
  • ADVERTISEMENT
  • #2195 21825589
    ejcon
    Level 16  
    Posts: 253
    Help: 3
    Rate: 54
    I have added the whole platform project now it should be ok check it out


    PlatformIO project directory view with source files and documentation
  • #2196 21825631
    Slawek K.
    Level 35  
    Posts: 3015
    Help: 259
    Rate: 1299
    The difference between platformio and Arduino is that in pltaformio you can define libraries for each project separately, and in Arduino vice versa, one for all projects, hence the constant problems of people in this thread with compilation errors. Platformio itself downloads the appropriate versions of the libraries that are defined in platformio.ini so the user does not have to do anything :)
    I therefore recommend Visual Studio Code with platformio, it is great to write and use.

    Best regards
  • #2197 21825646
    JohnNagy
    Level 5  
    Posts: 14
    Rate: 3
    >>21825437

    Added after 42 [seconds]:

    Same for me.
  • ADVERTISEMENT
  • #2198 21825726
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Hello unfortunately it doesn't and won't work on Arduino, the problem is the EQ16 code after removing the 16 point equalizer from the previous code the analyser works correctly and compiles on Arduino.

    The code with the EQ16 from Ejcon removed compiles on the Arduino.
    It lacks the BT option because it is not the latest Ejcon code
    It is based on Robgold col 3.19.53

    For the analyser I left only style 5 and 6 (in the original there were 5 and 10) flying peaks and classics

    Greetings ...
    Attachments:
    • Analizator-Flying.zip (105.21 KB) You must be logged in to download this attachment.
  • #2199 21825739
    efi222
    Level 21  
    Posts: 655
    Help: 12
    Rate: 1057
    Slawek K. wrote:
    The difference between platform and Arduino is that in pltaformio you can define libraries for each project separately, and in Arduino vice versa, one for all projects

    In the Arduino IDE, the problem of different versions of libraries (the more modified) can be circumvented by placing the library in the local directory of the sketch in the "src" subdirectory
    #include "src/library/library.h"
    The disadvantage of this solution is the greater occupancy of the sketch directory on disk.
  • #2200 21825848
    JohnNagy
    Level 5  
    Posts: 14
    Rate: 3
    >>21825726 This is exactly what I wanted to do yesterday. It works, thanks.

    Added after 43 [minutes]:

    >>21825848 No, it's still not good. If I change the screen mode in the menu, it resets the analyzer settings.
  • #2201 21826160
    RonAd
    Level 10  
    Posts: 26
    Rate: 1
    >>21825848

    Yes yes compilation in Arduino OK, but unfortunately it does not load the memory bank on startup, no communication with SD card / remote control
    and "crashes" after a while.
  • #2202 21826164
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    I've been using it for three weeks now and it hasn't crashed once I use it on SPIFFS memory and that's where I keep all my files and read banks from SPIFFS because I have my station.

    The question is whether you changed the declaration at the beginning of the soft because I made SPIFFS available by default hence you can't see the card.

    Greetings...
  • #2203 21826217
    RonAd
    Level 10  
    Posts: 26
    Rate: 1
    >>21826164
    Mea Culpa -- I didn't notice the SD card blocked!

    Thanks to DJChester for sharing the sketch!
  • #2204 21826800
    dawidkosciesza
    Level 11  
    Posts: 54
    Rate: 14
    Is it possible to run an encoder for the Majster version? I would like to build myself his radio now, but I'm worried about the lack of manual operation, only by remote control. You know how it is with the remote control, it always sows somewhere.
  • #2206 21826803
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Majster does not yet have encoder support in the code, maybe he will add such an option in the future. We will wait and see. Maybe the author of the project himself will have his say.

    hevet wrote:
    This is not a topic about Yoradio.


    A colleague is asking about the Major project and not YoRadio.

    Greetings...
  • #2207 21828364
    Anonymous
    Level 1  
  • #2208 21828816
    Anonymous
    Level 1  
  • #2209 21828822
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    The Major's radio connects quickly but both the files from flaac and the I2SAudio library must have the original without substitution as in Robgold's.Greetings....
  • #2210 21828843
    Anonymous
    Level 1  
  • #2211 21828858
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    It is about the AudioI2S library must be original and the files from flaac in core ESP it is about these 2 files liblwip.a and the other one.

    I'm not that good of a person, but I've been through this. I have both radios and I know what I am writing.

    I wrote myself a bat batch file to automatically change the files so I don't have to change them manually every now and then. If you want, I will send them to you in the evening.

    Regards...
  • #2212 21829058
    robgold
    Level 23  
    Posts: 698
    Help: 10
    Rate: 284
    Both Majster's version and mine compile correctly on the standard ESP32 libraries and Audio library.

    Since currently the WiFi bandwidth enhancement files (required for stations streaming in FLAC format to work properly) are available at most for core ESP32 version 3.3.3 I recommend keeping such a core. Simply replacing the WiFi files should not change ANYTHING in the time required to connect to the network and run the
    radio.

    Some "sneak peeks" of the direction of Evo development:

    How do you like such a VUmeter as in the photos ? In addition, a 5.5-inch OLED "glass" came my way. Incredibly large is this display ;) Unfortunately for such a large OLED to work properly it must have a VDD power supply of these 17V-18V. The inverter that the Chinese products use can't cope. They copied it from the small OLED 3.12 and there it is only 14V. The display will of course "light up" but it lacks the muses 30% brightness.

    A TAS5805 by Texas Instruments also landed on the workshop. It is a TPA3110 + PCM + DSP in one housing. Zero crackle, zero noise, zero interference. Everything goes via the digital bus and into the speakers. Configuration via i2c.


    Device front panel with two blue-backlit VU meters and a side rocker power switch OLED display showing Smoothjazz.com.pl FLAC station next to a blue electronics PCB Close-up of a blue PCB with an IC chip, capacitors, and green screw terminals
  • #2213 21829183
    Anonymous
    Level 1  
  • #2214 21829205
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Kula350 it would be good if you used frames when pasting the code, it would look better and be easier to copy (literally 1 click)

    Code: Arduino
    Log in, to see the code


    Not that I'm making excuses 😀 But it also looks better.

    Greetings....
  • #2215 21829226
    RonAd
    Level 10  
    Posts: 26
    Rate: 1
    >>21829058

    VU meter presented ---revelation!
    TAS will probably be a great alternative, more expensive but we live on quality.

    As for the plans ---it hurts a lot that there is no SD card file player, if it is on board, why not fully use it?
    use it?
    And I know that many people are in favour of this solution in your brilliant project.
  • #2216 21829228
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Robgold nice those uvmeters 😀 in the negative. You could make another display screen for such an option and I would leave the standard ones too. That's just my opinion. As for the OLED 5.5 I have a green one at my place it lights up quite a bit, I haven't measured the voltage on the inverter though....

    Greetings...
  • #2217 21829235
    robgold
    Level 23  
    Posts: 698
    Help: 10
    Rate: 284
    >>21829226 Hello,
    there is no player at the moment because the plan was to not have one at all and get rid of the card. In the latest version, I'm only using littleFS anymore (although card support is still possible). If I implement a player it will probably be in the web/app control version. For the moment, I have focused on improving the hardware perhaps switching to PCM5122.

    The TAS is an interesting integration because with a 12V or 24V power supply it allows you to drive decent monitors and listen to the radio in a room up to 15-20m2.
    Unfortunately I can't do everything at once. Professional work, hobbies, radio ;) Perhaps we will get to this player one day.

    Added after 4 [minutes]:

    >>21829228 If you have an OLED without plexiglass on the front then the difference in brightness is not so annoying but already the installation of a filter in the form of this plexiglass makes these power shortcomings visible. Unfortunately, the white 5.5" versions are only sold as "glass" at the moment.

    These VUs are added as another screen in displayMode. They look best on a yellow screen in my opinion.
  • #2218 21829320
    Anonymous
    Level 1  
  • #2219 21829327
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Well lovely ;)

    Immediately better looking at it and copying it to my sketch ;)

    Regards ...

    Added after 3 [minutes]:

    Apropos of these quick changes to the Robgold / Majster files I have organised it this way

    File - Robgold simply lists the file names after running the bat

    Code: C / C++
    Log in, to see the code


    And the reverse file which changes the Robgold files to Majster ;)

    Code: C / C++
    Log in, to see the code


    Regards ...
  • #2220 21831446
    supsak
    Level 13  
    Posts: 81
    Rate: 5
    Hi.
    I wanted to ask "Robgold". I'm curious about the large 5.5" display. Is it just glass, with no electronics?
    What type of display is it and where can you buy it?
    Thanks for your reply.

    Added after 18 [minutes]:

    And also what is the "TAS5805" plate? I think it's one like the one in the picture?
    I've only found one like that from a Chinese dealer, but it's just an amp + Bluetooth. The one you describe, if I understand correctly, still has a PCM5102 DAC built in?

    Electronic PCB module with micro USB port, audio jack, and SMD components on a white background
📢 Listen (AI):

Topic summary

✨ The discussion centers on the development of an internet radio and audio file player based on the ESP32-S3-WROOM-1 module, featuring a custom-designed prototype PCB with OLED display and user controls including rotary encoders and buttons. Key challenges addressed include pin spacing discrepancies in the ESP32-S3 module footprint, integration of Wi-Fi connectivity with dynamic station list updates, and handling of Polish character encoding on the OLED display. The project uses Arduino IDE (version 2.3.2) with ESP-IDF support and requires enabling PSRAM. Audio playback supports MP3, AAC, and FLAC streams, with the ESP32-audioI2S library recommended over the incompatible Audio library. Users reported issues with SPI MISO pin assignment causing bootloader conflicts, resolved by reassigning MISO to pin 35. The project incorporates WiFiManager for network configuration, EEPROM and SD card storage for saving last played station and settings, and includes plans for tone control via an external KA2107 equalizer and a CS8673 amplifier module. Problems with encoder input stability and memory limitations for Bluetooth A2DP on ESP32-S3 were noted. The community suggested alternatives like KaRadio and ESP32-MiniWebRadio projects. Debugging tips include serial terminal logs for HTTP errors and flash memory erasure to resolve boot loops. The project is open-source on GitHub, encouraging forks and modifications. Additional features under development include browser-based updates, directory navigation, and potential audio recording to SD card.
Generated by the language model.
ADVERTISEMENT