logo elektroda
logo elektroda
X
logo elektroda

Internet radio and audio file player on ESP32-S3

MAJSTER XXL 259572 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):
  • #2101 21805900
    MAJSTER XXL
    Level 29  
    Posts: 2063
    Help: 164
    Rate: 421
    It may be with me that it's so long because the weatherman and calendar are interfering at the start - I'll check by knocking out some of the code.
    This is what it looks like before it connects and outputs audio, it jerks the syncword a few more times:

    Code: C / C++
    Log in, to see the code
  • ADVERTISEMENT
  • #2102 21805935
    robgold
    Level 23  
    Posts: 698
    Help: 10
    Rate: 284
    @MAJSTER XXL I haven't noticed any extended connection time. I have a 600ms delay on startup to get the ESP32 to initialise the serial correctly after a full power-up (after a reset there is no problem) and that's probably the only noticeable delay.

    The bitrate estimation for FLAC is for stations that don't have a fixed bitrate - then you have to calculate it and average it out. If this annoys you then you can in my audio info throw in "audio.getBitRate()" and there you have the first bitrate read immediately. Stations which have the value permanently entered on the IceCast server (e.g. smoothjazz.com.pl) give it immediately. In my case the option "audio.getBitRate()" is used by the function displaying the buffer. In general, quite a few stations broadcasting FLAC streams do not "give a damn" about the correctness of this data on the server

    Important note:
    delete the files in the sketch folder, especially if you are swapping TCP libraries or the Audio library. Arduino is "dumb" and if it doesn't notice the change it won't compile the library in question. It is better to "force" them to do this manually.
  • #2103 21806592
    zbig10101
    Level 14  
    Posts: 97
    Help: 1
    Rate: 12
    >>21802641


    how to order PCBs for the EVO-3-2 encoders project (JLCPCB)?
    order participation welcome
  • #2104 21806670
    CodeBoy
    Level 33  
    Posts: 3269
    Help: 138
    Rate: 687
    Do you seriously want to drop PLN40 ?
  • #2105 21806673
    zbig10101
    Level 14  
    Posts: 97
    Help: 1
    Rate: 12
    >>21806670
    Only placing an order to my knowledge requires a slightly larger deposit
  • #2107 21806724
    Anonymous
    Level 1  
  • #2108 21806728
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    Hello, I'm currently in a dilemma choosing speakers for my kitchen radio. I'd like some standard speakers on Aliexpress, small rectangular ones, but the cheap ones are a pipsqueak, no bass, no farting when you turn up the volume

    Two small speakers on a carpet, one square and one rectangular Two small speakers: one round Bose speaker and one rectangular speaker with wires.

    This plays nice but where to buy one of these because a mate offered to make me an enclosure for the 3D and I wanted fairly universal speakers.

    The ones above play sensational for such tiny things when you lock it in the box even the quality is there.

    Do you have any cool speakers tested from aliexpress ?

    My rectangular one has a 2.8mm side, so it's perfect
    And the square one is 4mm so it's ok too.

    Greetings....
  • ADVERTISEMENT
  • #2109 21806761
    CodeBoy
    Level 33  
    Posts: 3269
    Help: 138
    Rate: 687
    zbig10101 wrote:
    >>21806670
    Only placing an order to my knowledge requires a slightly larger deposit


    i suspect you haven't changed your delivery method and that's why you're coming up with the large amount


    PCB quote page with FedEx Express shipping selected at €19.82
  • #2110 21806850
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    >>21805023

    MAJSTER Nice change with remembering the last song now I won't have to search manually anymore.
    I would have one more request to a colleague that without a router (when there is no Internet - at my phone hot spot) it is possible to start the MP3 player for example with a button, it would already be beautiful ;)

    Best regards ....
  • #2111 21806889
    MAJSTER XXL
    Level 29  
    Posts: 2063
    Help: 164
    Rate: 421
    kula350 wrote:
    @Majster XXL I would disable bytes like name or temperature, add buttons to start them on demand, the same with RSS, then they don't start from the beginning
    This functionality is available in the radio menu - if you assign yourself the appropriate remote control button to activate this menu, you can disable each of these items individually.

    Settings menu on screen showing calendar, weather, RSS feed, log, and GitHub update options
  • #2112 21806939
    saper135
    Level 11  
    Posts: 20
    Hello again. I am asking for your advice as the radio, by some miracle, fired up on the first connection, for which I thank you, as your good advice helped. At the moment the radio is playing without encoders and display, controlled via the web site, but I also have a small problem. Namely, I have to have the PCM5102 DAC connected with a cable to the SCK pin, with this cable hanging loosely on the other side. Without this cable connected to the SCK output, nothing can be heard. Any suggestions.
    Attachments:
    • Internet radio and audio file player on ESP32-S3 20260112_204215.jpg (861.22 KB) You must be logged in to download this attachment.
    • Internet radio and audio file player on ESP32-S3 20260112_204226.jpg (852.08 KB) You must be logged in to download this attachment.
    • Internet radio and audio file player on ESP32-S3 20260112_203529.jpg (975.39 KB) You must be logged in to download this attachment.
  • #2113 21806970
    DJCheester
    Level 27  
    Posts: 2049
    Help: 75
    Rate: 949
    SCK to GND connect
  • #2114 21806972
    Anonymous
    Level 1  
  • #2115 21807674
    robgold
    Level 23  
    Posts: 698
    Help: 10
    Rate: 284
    >>21806939 Which version of the radio are you putting together ?
    I ask because I have also seen your posts on yoRadio Poland. You must be aware that the Project described here is not based on yoRadio. It is a completely different design.
  • ADVERTISEMENT
  • #2117 21809066
    hevet
    Level 18  
    Posts: 346
    Rate: 47
    Great, but this is not a topic about Yoradio.
  • #2118 21810049
    Anonymous
    Level 1  
  • ADVERTISEMENT
  • #2119 21810111
    hevet
    Level 18  
    Posts: 346
    Rate: 47
    No, because it wouldn't make sense.
  • #2120 21810175
    simw
    Level 27  
    Posts: 754
    Help: 94
    Rate: 286
    hevet wrote:
    No, because it wouldn't make sense.

    Why? In most cases the station name on one line and the song name on the other is enough, for a 2x20 LCD there will still be room for other data when scrolling through a section of the line. What more do you need?
  • #2121 21810428
    hevet
    Level 18  
    Posts: 346
    Rate: 47
    Yoradio supports these displays. You can always play around, but the project will lose a lot of functionality. Maybe one day.
  • #2122 21810655
    elektryk112
    Level 28  
    Posts: 636
    Help: 175
    Rate: 235
    >>21806592 I have 5 pieces ordered from JLCPCB. If not in a hurry 3 will be over stock. But that is only in about 2 weeks because it goes Global Standard Direct Line . The description said about 16 days.
  • #2123 21810734
    Anonymous
    Level 1  
  • #2124 21810749
    slaslo
    Level 18  
    Posts: 185
    Help: 24
    Rate: 56
    elektryk112 wrote:
    I have 5 pieces ordered from JLCPCB. If not in a hurry then 3 will be over stock.

    i have sent a prive
  • #2125 21810916
    MAJSTER XXL
    Level 29  
    Posts: 2063
    Help: 164
    Rate: 421
    @kula350 check first by removing spaces, especially before the file type extension, because in general you shouldn't use spaces before a full stop with an extension, I would never even think of doing that. Also there's probably a mess in the id3 metadata of the audio file, show a screen shot from some editor or a preview of the id3 content of that file.
  • #2126 21811007
    Anonymous
    Level 1  
  • #2127 21811120
    CodeBoy
    Level 33  
    Posts: 3269
    Help: 138
    Rate: 687
    No pins after the net. The standard does not allow spaces before full stops. The fact that windows can read such creations is only for the benefit of the user. But then such errors are made.
    Correct the name as @MAJSTER XXL writes and the problem disappears.
  • #2128 21811311
    Anonymous
    Level 1  
  • #2129 21811421
    pawel_1980
    Level 12  
    Posts: 15
    Are you sure this is an IL9488 panel? There are no markings on it at all. There is an IPS sticker only. Maybe someone knows what kind of display it is, because I ordered ILI9488 3.5 inch 480x320.
    Internet radio and audio file player on ESP32-S3 Internet radio and audio file player on ESP32-S3
    Internet radio and audio file player on ESP32-S3

    I have a Waveshare ESP32-S3-DEV-KIT-N32R15 board.
    Internet radio and audio file player on ESP32-S3
    I have connected like this:
    VCC -> 3V3
    GND -> GND
    CS -> GPIO5
    RESET -> not connected
    DC/RS -> GPIO4
    SDI(MOSI) -> GPIO13
    SCK => GPIO14
    LED => 3V3
    SDO(MISO) => GPIO12
    And I continue to see darkness on it. Anyone had any contact with it ?
  • #2130 21811477
    hevet
    Level 18  
    Posts: 346
    Rate: 47
    I have the same one is ili9488 only that the IPS version. The connection is the same as a normal TFT, so it must work. Connect the reset to the RESET pin on the esp32s3.
📢 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