logo elektroda
logo elektroda
X
logo elektroda

Internet radio and audio file player on ESP32-S3

MAJSTER XXL 294327 2810

TL;DR LABEL_AI_GENERATED

  • 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.
AI summary based on the discussion. May contain errors.
ADVERTISEMENT
Treść została przetłumaczona polish » english Zobacz oryginalną wersję tematu
Listen:
  • Yoradio configurator supports only old ESP32

    #2071 21802643
    hevet
    Level 18  
    Posts: 347
    Rate: 47
    >>21801120 I doubt that stations would be interested in such an addition, at least some. There are cases that even some do not wish their links to be included in the listing pages. Presumably it is a matter of using their sites, where they are known to place advertisements.

    Added after 2 [minutes]:

    saper135 wrote:
    >>21800284
    I know there is a program where you add the appropriate components, but as far as I can see it supports the old ESP32. https://e2002.github.io/docs/myoptions-generator.html
    And that is the whole secret of this device, connecting all the components correctly.


    This is not a configurator for EVO Radio but for Yoradio, I don't know why people often confuse the two projects.
  • ADVERTISEMENT
  • Corrected silkscreen error in Major and Robgold boards

    #2072 21802741
    bernix
    Level 11  
    Posts: 5
    Rate: 1
    DJCheester wrote:
    Welcome, as a small error has crept into the gerber files, I am adding a corrected version.

    The error is in the descriptive layer (the paths are as they were before) so the thermotransfers are fine

    On the already ordered boards there will be a bit of chaos on the description mask.
    I have only now checked this on the JLCPCB website

    The Major and Robgold(2enc) boards will look like this

    ESP32 PCB board with component labeling for audio and microcontroller project Green PCB with white component labels and “ESP32 Web Radio” printed on the left

    After correction yes

    ESP32-S3 PCB with labeled audio and MP3 circuit components Green PCB labeled ESP32 Web Radio with audio and SD card component markings


    This is what happens when you have too many versions of libraries.

    For those who have already ordered, I apologise for misleading you

    The Robgold 1-enc version of the board was done before and correctly so the fix only applies to the other two.

    Corrected heat transfers attached

    Regards ...


    And could you reveal specifically where the error broke in?
  • #2073 21802786
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    You can see on the description layers the pin names electrically are uncorrected.

    This can be seen in the scenes before and after the change.

    Regards...
  • #2074 21802948
    bolszoy
    Level 11  
    Posts: 64
    Rate: 5
    Fellow MAJSTER XXL. Any chance of a version for an encoder or two as in v1?
    I personally didn't like the remote control, nor the beejers on the phone.
    A lot of work goes into it, but for me version one was the simplest and best. Of course I don't mean to offend anyone.
    Regards.
  • Avoiding encoders to keep remote control logic manageable

    #2075 21804135
    MAJSTER XXL
    Level 29  
    Posts: 2064
    Help: 164
    Rate: 429
    I don't plan on adding an encoder to my v3, too many combinations to handle the already complicated remote control interchangeably. I still need to make adjustments to the use of some functions, so that if I accidentally clicked the wrong thing on the remote control at a given time, it wouldn't do the control later, i.e. when I didn't want it - a matter of resetting the remote control button flags. If I were to put encoders on top of all this, it would logically become quite a mess.
  • #2076 21804171
    bolszoy
    Level 11  
    Posts: 64
    Rate: 5
    I understand. Thank you for your reply and best regards.
  • #2077 21804212
    Anonymous
    Level 1  
  • ADVERTISEMENT
  • #2078 21804240
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    At my place it hangs like this if I don't have an SD card.
    And the connection doesn't go to enter the network data (have you done this before?)

    Greetings ...
  • #2079 21804246
    Anonymous
    Level 1  
  • #2080 21804250
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    On another computer the radio displays an AP you have to connect and go to http 192.168.4.1 this is the address of the manager there. And after the serial monitor what does this radio display?

    Added after 4 [minutes]:

    On some LCDs, three SMD pull-up resistors had to be removed from the data rails for the reader to work. Greetings ...
  • #2081 21804259
    Anonymous
    Level 1  
  • #2082 21804282
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    What does it send to the serial monitor ?

    Added after 1 [minute]:

    Or maybe you've got a bumped up ESP I've had one like that and take a finger put on the antenna and look on the AP computer.
  • SD card mount failure blocks file system access

    #2083 21804285
    Anonymous
    Level 1  
  • ADVERTISEMENT
  • #2084 21804288
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    You have a card initialisation error it can't see the card. And take a picture of the other side of the LCD where the reader is ....
  • Avoiding encoders to keep remote-control flags manageable

    #2085 21804399
    hevet
    Level 18  
    Posts: 347
    Rate: 47
    MAJSTER XXL wrote:
    I don't plan on adding an encoder to my v3, too many combinations to handle the already complicated remote control interchangeably. I still need to make adjustments to the use of some functions, so that if I accidentally clicked the wrong thing on the remote control at a given time, it wouldn't do the control later, i.e. when I didn't want it - a matter of resetting the remote control button usage flags. If I were to put encoders on top of all this, it would logically become quite a mess.


    It's always a bit of a mess with the flags, I myself struggled with it for quite a while before I got it to the order I wanted.
  • #2086 21804536
    Anonymous
    Level 1  
  • #2087 21804616
    hevet
    Level 18  
    Posts: 347
    Rate: 47
    @kula350 have you removed the resistors at the reader and made jumpers?
  • #2088 21804852
    Anonymous
    Level 1  
  • Resume playback setting added to ESP32-S3 player

    #2089 21805023
    MAJSTER XXL
    Level 29  
    Posts: 2064
    Help: 164
    Rate: 429
    It can't be too quiet, the changes to the audio library are already annoying, when updating the ESP32-audioI2S to the latest version 3.4.4 they figured out that on the serial the audio parameters will be displayed differently again, which makes it necessary to make changes to my v3 version again, for now I'm going back to 3.4.2, because as it was jerking flac-and it's still jerking (we're only talking about the radio, audio files go normally).
    Today, a small update from me, I added another setting in the player menu, which allows you to enable or disable the option of resuming playback from the last played audio file. The file and folder index are saved every song change to the file card, and if the resume function is enabled, the player will go back to the last played file after a restart, but to the beginning of the file and not the moment of interruption during - maybe one day I'll do something about that too. For now, as usual, to test.
    You can find the changes on my github with v3.
    And this is how it looks like:

    Player display with playback settings menu showing playback options and current time

    ESP32 log output with active resume setting for the audio player

    Added after 5 [minutes]:

    kula350 wrote:
    I also have trouble with larger SD cards.

    I use a 128GB card, you need to format it to FAT32, look for such a small program and it will handle it: FAT32-Formatter
  • #2090 21805045
    hevet
    Level 18  
    Posts: 347
    Rate: 47
    @MAJSTER XXL and what has changed? I was using version 3.4.3, then subsequent commits, upgraded to 3.4.4 but here really only the version number in the files was changed. In my case I didn't have to change anything.
  • #2091 21805113
    Anonymous
    Level 1  
  • Request for offline MP3 player startup option

    #2092 21805278
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    >>21805023

    Majster cool that you are doing a soft update.

    As for me it would be very useful to be able to run the MP3 player without internet, I use a mobile hotspot and sometimes I forget it and the radhko is already useless.

    Before connecting to the network, is it possible to call up the menu and select the player or when there is no ap the question whether to start the MP3 player.

    Greetings ...
  • Audio library 3.4.4 changes bitrate and sample rate labels

    #2093 21805377
    MAJSTER XXL
    Level 29  
    Posts: 2064
    Help: 164
    Rate: 429
    @hevet at my place I extract the audio parameters from the data dumped to the serial terminal by void my_audio_info(Audio::msg_t m) , the author of the audio library changed himself the phrases that return the bitrate (in version 3.4.4 there is Bitrate (b/s): and SampleRate (Hz): ), i.e. the bracketed additions have appeared.
    I'm trying to adjust this, but listening to flac files from the card has already made my decoder cringe a couple of times, so I'm letting it go and going back to 3.4.2.
    On the plus side, the bitrate of the flac files has finally started to appear 6-7 digit instead of 3 digit on the same files I was comparing.
    Below is a screen shot of the decoder crash:

    Screenshot of serial terminal showing FLAC decoder debug logs and crash
  • ESP32-S3 FLAC needs TCP library rebuild

    #2094 21805404
    robgold
    Level 23  
    Posts: 726
    Help: 10
    Rate: 290
    @MAJSTER XXL These changes to the library are some time ago. Now I see that they have only updated the versions correctly from 3.4.2 to 3.4.4 which is basically what I have been doing manually until now. Evo has already been running on these libraries for a while - it's stable. The change was annoying because the whole audio info block had to be rebuilt (also don't understand why or what Wolle did it for) but wanting to keep the library updated sooner or later has to be done.

    Version 3.4.4 supports 24 bit FLAC streams, in 3.4.2 you are limited to 16 bit. Download yourself from Evo my_audio_info because I think I left the structure the same, so there's a good chance that 1:1 will work for you.

    As for FLAC, the problem is not the library but WiFi and ESP. If you do a library swap from TCP or recompile your TCP libraries in ESP-IDF then FLAC streams will work.
  • FLAC bitrate display delayed until average arrives

    #2095 21805450
    MAJSTER XXL
    Level 29  
    Posts: 2064
    Help: 164
    Rate: 429
    OK @robgold , I rebuilt this v3 of mine to already handle this data correctly with audio file parameters from version 3.4.4 of this audio library, I also noticed that for a flac station the parameter info: ....... estimated bitrate (b/s): . I've also made a handle under this that when I change to a station that broadcasts flac, the bitrate doesn't show up on my screen until the time-averaged one comes in. I'll try swapping those indicated files again later, but previously I've had it take a very long time to establish a connection after restarting the radio - have you had this problem? @DJCheester can confirm this, it was hanging on the station connection prompt.


    Console log showing FLAC stream info and estimated bitrate of 877493 b/s
  • ADVERTISEMENT
  • Library version conflict causing Robgold compile issues

    #2096 21805463
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    I have version 3.4.2 in two folders in libraries, one folder with original content for the Majster compilation and core without flaac files and the other under Robgold compilation. When I was compiling on the Robgold environment for the Majster project there were terrible problems, sometimes a few minutes for it to connect and sometimes it didn't want to connect at all. This is why I have to restore the original files every time I make a change. The latest h audio libraries I do not have Greetings....
  • #2097 21805508
    hevet
    Level 18  
    Posts: 347
    Rate: 47
    With me on 3.4.4 it connects very quickly on the changed files on the project with ili9488.
  • #2098 21805874
    MAJSTER XXL
    Level 29  
    Posts: 2064
    Help: 164
    Rate: 429
    It's nice that the new libka even embraces 24bits, but I still haven't found a solution as to why after swapping the libesp_netif.a and liblwip.a files, the first connection to the station link after a power restart is several tens of seconds in my v3 - it then doesn't accept any commands, just waits....

    Color display of a device showing internet radio info and environmental data.
  • #2100 21805885
    DJCheester
    Level 28  
    Posts: 2089
    Help: 75
    Rate: 958
    But you have messed up your soft ?

    Greetings ...
Listen:

Topic summary

LABEL_AI_GENERATED
Discussion of a DIY internet radio and SD-card audio player built on an ESP32-S3 with an OLED display, rotary encoders, buttons, and a front-panel interface. The project uses Wi‑Fi to download station lists from GitHub/public stream databases, supports MP3 and later AAC/FLAC playback, displays metadata including Polish characters via a modified font table, and stores settings such as station/bank selection and volume. The thread covers PCB design in EasyEDA, ESP32-S3 module pin spacing issues, PSRAM and Arduino IDE setup, library compatibility problems, SPI/I2S wiring, SD card reader boot issues, encoder behavior, WiFiManager-based network setup, and troubleshooting of crashes, HTTP download failures, and audio initialization errors. Several improvements were added over time, including station selection by encoder, time sync, browser update support, and saving settings to card memory.
AI summary based on the discussion. May contain errors.
ADVERTISEMENT