Интернет-радио + аудиоплеер + часы-будильник с боем и курантами на ESP32-S3
Версия 2.41 от 8 мая 2025 г.

Устройство обладает следующим функционалом:
Компоненты, необходимые для сборки:
Порядок сборки, прошивки и настройки.
Если всё сделано правильно, то:
Принципиальная схема

(Контроллер зарядки и питания устройства на принципиальной схеме не изображены).
Архив скетча, шрифтов для дисплея и содержимое sd-карты
Версия 2.23 (65.1 Mb в zip-архиве)
Версия 2.43 (65.6 Mb в zip-архиве)
(Bin-файлы для прошивки находятся в папках SD-card.)
Arduino IDE и необходимые библиотеки
Скетч успешно компилировался на Arduino IDE версий 2.0.17 и 2.3.3.
Мной были разработаны и собраны два устройства. Ещё одно в рамках тестирования было собрано участником форума samand587.
Буду признателен за конструктивную критику, указания на ошибки (куда ж без них!), сообщения об успешных повторах устройства с фотографиями ваших реализаций и прочее. Спасибо за внимание!
Версия 2.41 от 8 мая 2025 г.

Устройство обладает следующим функционалом:
- Может работать с практически неограниченным списком радиостанций. Причём переключение между станциями происходит мгновенно.
- Управление радио осуществляется и элементами управления на самом радио, и через web-интерфейс, и через ИК-пульт.
- Точно так же как и в смартфоне (планшете) организовано подключение радио по wi-fi к интернету. Сохраняются все ранее использованные точки доступа и при повторном попадании прибора в зону их действия соединение с интернетом не требует повторной авторизации.
- Радио имеет три режима работы: интернет-радио, часы, музыкальный проигрыватель.
- В режиме музыкального проигрывателя осуществляется воспроизведение звуковых файлов с sd-карты. Пока реализована вложенность папок с аудио-файлами равная единице.
- В режиме интернет-радио можно фильтровать весь список радиостанций по двум параметрам: жанр (20 жанров) и локация (6 локаций).
- И в режиме радио, и в режиме проигрывателя поддерживается дополнительный маркер "избранное".
- Реализована очень полезная функция - автоматический уровень громкости, которая выравнивает громкость звучания разных интернет-станций.
- В web-интерфейс встроен простой редактор списка радиостанций, который позволяет управлять списками станций в самом устройстве.
- Проверен и введен по умолчанию список из более 4 000 интернет-станций с указанием их жанра и локации.
- Разработано и вшито в прошивку 7 цветовых схем интерфейса экрана интернет-радио.
- Реализовано управление яркостью экрана интернет-радио.
- Реализован режим энергосбережения (выключения подсветки экрана).
- Реализованы функции выключения и включения по заданному времени.
- Реализованы куранты часов (каждый час, каждые полчаса, каждые 15 и 45 минут). Можно установить один из 7 типов звучания курантов или выставить озвучивание текущего времени голосом.
- Для людей с плохим зрением реализовано озвучивание меню управления интернет-радио голосом.
- В режиме радио реализована функция анализа качества связи с интернет-станцией и восстановление соединения при критичном ухудшении или потере связи с сайтом радиостанции.
- Реализована блокировка/снятие блокировки нажатия кнопок и вращения энкодера - полезная опция для интернет-радио в карманном исполнении.
- Реализованы функции "случайная радио-станция" для режима радио и "случайная композиция" для режима аудиопроигрывателя.
- На дисплее устройства и в его web-интерфейсе реализовано отображение состояние заряда питающего аккумулятора.
- В web-интерфейсе реализован постраничный просмотр списков станций интернет-вещания с возможностью перехода на выбранную из списка станцию.
- В web-интерфейсе реализован поиск станций интернет-вещания по их названию.
- По просьбам пользователей предусмотрен выбор способа переключения со станции на станцию при помощи поворотов ручки энкодера: мгновенный (поворот - переключение) или с предпросмотром (повороты энкодера для пролистывания станций в списке; нажатие кнопки энкодера - загрузка выбранной станции; нажатие кнопки - отмена выбора и возвращение на экран "Радио").
Компоненты, необходимые для сборки:
- Модуль ESP32-S3 (обязательный элемент). Тестировалось на модуле ESP32-S3 Dual USB разработки AITEXM ROBOT.
- Модуль DAC PCM5102 (обязательный элемент).
- Дисплей 1.8 TFT SPI 128x160 with sd-card reader - ST7735 TFT (обязательный элемент).
- Энкодер с кнопкой (обязательный элемент).
- Модуль усилителя НЧ LM4881 или любой подходящий аналог (факультативный элемент).
- Инфракрасный беспроводной модуль дистанционного управления HX1838 (TL1838) с пультом (факультативный элемент).
- Транзистор 2N3906 или аналог (если хотите регулировать яркость дисплея).
- Три резистора 1кОм.
- Выключатель питания.
- Разъём внешнего питания type-c (мама).
- Один - два аудио-разъёма 3.5 стерео (мама).
- sd-карта не более 32 Гб.
Порядок сборки, прошивки и настройки.
- Соберите устройство, согласно приложенной принципиальной схеме.
- Скачайте и распакуйте архив скетча. (Избегайте кириллических символов в путях к скетчу и библиотекам).
- В Arduino IDE откройте файл InternetRadio.ino.
- Установите в настройках Arduino IDE свою плату ESP-32.
- Установите в пункте настроек "Partition scheme" опцию "Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)" и остальные параметры, согласно прилагаемому скриншоту:
- Перед компиляцией скетча обязательно:
- в папку библиотек Arduino\libraries\Adafruit_GFX_Library перепишите файл glcdfont.c из архива скетча.
- туда же обязательно перепишите из архива скетча папку FontsRus, даже если не планируете использовать.
- Попробуйте скомпилировать скетч. При отсутствии необходимых библиотек доустановите их из среды Arduino IDE. (Рекомендованные версии библиотек смотрите в отдельном списке ниже данной инструкции).
- На предварительно отформатированную в FAT32 sd-карту запишите содержимое архива папки SD-card.
- Вставьте sd-карту в слот на модуле дисплея.
- Теперь всё готово для заливки прошивки в ESP-32. Загрузите скетч на плату.
Если всё сделано правильно, то:
- При включении в wi-fi радио объявляет себя как "microMedia".
- Первым делом смартфон нужно подключить к этой сети. Пароль: 12345678.
- Далее открыть в браузере адрес 192.168.4.1 и там уже настроить соединение интернет-радио с интернетом.
- Выберите ваш роутер из списка и введите пароль доступа. В случае успеха вы услышите первые звуки интернет-трансляции первой станции из большого списка станций.
- После чего для управления интернет-радио через web-интерфейс необходимо узнать ip-адрес самого устройства в сети. Для этого достаточно нажать один раз кнопку BUTTON и в нижней части всплывшего на дисплее окошка с меню посмотреть и вбить в адресную строку web-браузера вашего компьютера (планшета, смартфона) отображаемый ip-адрес.
Принципиальная схема

(Контроллер зарядки и питания устройства на принципиальной схеме не изображены).
Архив скетча, шрифтов для дисплея и содержимое sd-карты
Версия 2.23 (65.1 Mb в zip-архиве)
Версия 2.43 (65.6 Mb в zip-архиве)
(Bin-файлы для прошивки находятся в папках SD-card.)
Arduino IDE и необходимые библиотеки
Скетч успешно компилировался на Arduino IDE версий 2.0.17 и 2.3.3.
ESP32-audioI2S-master (https://github.com/schreibfaul1/ESP32-audioI2S) - версия 2.0.0
GyverEncoder (https://github.com/GyverLibs/GyverEncoder) - версия 4.10
GyverButton (https://github.com/GyverLibs/GyverButton) - версия 3.8
IRremote (https://github.com/Arduino-IRremote/Arduino-IRremote) - версия 3.5.0 - критично. На более высоких версиях будут ошибки компиляции.
Adafruit GFX Library (https://github.com/adafruit/Adafruit-GFX-Library) - версия 1.11.9 (Если с этой версией вместо русских букв "козябры", то используйте версию 1.11.0).
Adafruit ST7735 and ST7789 Library (https://github.com/adafruit/Adafruit-ST7735-Library)- версия 1.10.4
GyverPortal (https://github.com/GyverLibs/GyverPortal) - версия 3.6.6
ESP32Time (https://github.com/fbiego/ESP32Time) - версия 2.0.5
NTPClient от Fabrice Weinberg (https://github.com/arduino-libraries/NTPClient) - версия 3.2.1
GyverEncoder (https://github.com/GyverLibs/GyverEncoder) - версия 4.10
GyverButton (https://github.com/GyverLibs/GyverButton) - версия 3.8
IRremote (https://github.com/Arduino-IRremote/Arduino-IRremote) - версия 3.5.0 - критично. На более высоких версиях будут ошибки компиляции.
Adafruit GFX Library (https://github.com/adafruit/Adafruit-GFX-Library) - версия 1.11.9 (Если с этой версией вместо русских букв "козябры", то используйте версию 1.11.0).
Adafruit ST7735 and ST7789 Library (https://github.com/adafruit/Adafruit-ST7735-Library)- версия 1.10.4
GyverPortal (https://github.com/GyverLibs/GyverPortal) - версия 3.6.6
ESP32Time (https://github.com/fbiego/ESP32Time) - версия 2.0.5
NTPClient от Fabrice Weinberg (https://github.com/arduino-libraries/NTPClient) - версия 3.2.1
(вверх)(вниз) - в режимах "Радио", "Проигрыватель" и "Часы" - увеличение / уменьшение громкости; в меню - перемещение курсора по вертикали
(вправо)(влево) - в режимах "Радио", "Проигрыватель" и "Часы" - переключение станций или композиций; в меню - перемещение курсора по горизонтали или включение/выключение опций
(OK) - главное меню и подменю
(*) - смена режима между "Радио" и "Проигрыватель"
(#) - включение выключение звука
(1) - часы или радио / проигрыватель
(2) - переключение между списками "Избранное" и "Всё" для радио и проигрывателя
(3) - случайная станция радио / случайная композиция проигрывателя
(4) - смена жанра назад
(5) - все жанры
(6) - смена жанра вперёд
(7) - смена локации радиостанции назад
(8) - все страны
(9) - смена локации радиостанции вперёд
(0) - включение / выключение
(вправо)(влево) - в режимах "Радио", "Проигрыватель" и "Часы" - переключение станций или композиций; в меню - перемещение курсора по горизонтали или включение/выключение опций
(OK) - главное меню и подменю
(*) - смена режима между "Радио" и "Проигрыватель"
(#) - включение выключение звука
(1) - часы или радио / проигрыватель
(2) - переключение между списками "Избранное" и "Всё" для радио и проигрывателя
(3) - случайная станция радио / случайная композиция проигрывателя
(4) - смена жанра назад
(5) - все жанры
(6) - смена жанра вперёд
(7) - смена локации радиостанции назад
(8) - все страны
(9) - смена локации радиостанции вперёд
(0) - включение / выключение
Обзор 1-й версии интернет-радио
Обзор 2-й версии интернет-радио
Обзор 2-й версии интернет-радио
Мной были разработаны и собраны два устройства. Ещё одно в рамках тестирования было собрано участником форума samand587.
Версия 1.20. По факту - 2.20. Изначальная версия скетча, опубликованная здесь на форуме.
Версия 2.21. С помощью участника форума Сергея (sergggg) в схему и в скетч добавлено отображение состояния заряда аккумуляторной батареи.
Схема подключения: к минусовому контакту АКБ подключается резистор 100 кОм; к плюсовому контакту - резистор 200 кОм; оба резистора соединяются свободными контактами на пине 4 ESP-32.
Состояние заряда АКБ отображается в режимах "Радио" и "Проигрыватель" в верхнем правом углу дисплея интернет-радио в виде пиктограммы, а так же через web-интерфейс в правом верхнем углу шапки страницы, напротив надписи "интернет-радио". В web-интерфейсе можно через настройки в разделе "Экран и шрифт" установить в каких единицах будет отображаться текущий заряд АКБ: в процентах или в вольтах.


Версия 2.22. Доработана индикация заряда АКБ на дисплее устройства. Теперь, помимо пиктограммы с изображением батарейки, левее отображается состояние заряда в процентах или в вольтах, в зависимости от настроек индикации.


Версия 2.23.
Версия 2.40.
Версия 2.41.
Версия 2.42 от 09.05.2025
Версия 2.43 от 11.05.2025
Версия 2.21. С помощью участника форума Сергея (sergggg) в схему и в скетч добавлено отображение состояния заряда аккумуляторной батареи.
Схема подключения: к минусовому контакту АКБ подключается резистор 100 кОм; к плюсовому контакту - резистор 200 кОм; оба резистора соединяются свободными контактами на пине 4 ESP-32.
Состояние заряда АКБ отображается в режимах "Радио" и "Проигрыватель" в верхнем правом углу дисплея интернет-радио в виде пиктограммы, а так же через web-интерфейс в правом верхнем углу шапки страницы, напротив надписи "интернет-радио". В web-интерфейсе можно через настройки в разделе "Экран и шрифт" установить в каких единицах будет отображаться текущий заряд АКБ: в процентах или в вольтах.


Версия 2.22. Доработана индикация заряда АКБ на дисплее устройства. Теперь, помимо пиктограммы с изображением батарейки, левее отображается состояние заряда в процентах или в вольтах, в зависимости от настроек индикации.


Версия 2.23.
- Добавлена новая цветовая схема интерфейса "Калейдоскоп".
- Сделано обновление прошивки с sd-карты. Для этого необходимо откомпилировать скетч с Partition Scheme "Minimal SPIFFS". Файл прошивки firmware.bin выложить в корень sd-карты.
- Оптимизирована процедура индексации аудио-файлов в папках Проигрывателя.
Версия 2.40.
- Улучшена стабильность работы.
- Изменён формат хранения списков радиостанций в ini-файлах папки Radio: добавлено поле названия станции вещания, которое определяется и сохраняется автоматически для каждой станции. (ini-файлы предыдущей версии совместимы с новой версией прошивки и будут автоматически преобразовываться в новый формат в процессе соединения с радиостанций для прослушивания).
- Добавлена возможность постраничного просмотра списка интернет-станций в режиме "Радио" через web-интерфейс.
- В раздел "Настройки" web-интерфейса добавлен блок настроек "Радио", где можно установить желаемое количество станций для постраничного просмотра. См. п.3.
Версия 2.41.
- Исправлена коллизия с перезагрузкой ESP при нахождении в меню настроек. Спасибо участнику форума с ником VILUKAS (https://community.alexgyver.ru/members/vilukas.100909/)
Версия 2.42 от 09.05.2025
- В web-интерфейс добавлен поиск станций интернет-вещания по общему списку и списку любимых станций.
- Улучшена стабильность работы без перезагрузок ESP.
Версия 2.43 от 11.05.2025
- Реализован альтернативный способ выбора станций интернет-вещания через энкодер: поворот энкодера - просмотр информации о следующей/предыдущей станции без перехода на неё; нажатие на кнопку энкодера - переход на выбранную станцию вещания; нажатие на кнопку - отмена выбора и возвращение в окно "Радио".
- В раздел "Настройки / Воспроизведение" интернет-радио и в "Настройки - Радио" web-интерфейса добавлена возможность установить способ выбора станций: классический или альтернативный.
Буду признателен за конструктивную критику, указания на ошибки (куда ж без них!), сообщения об успешных повторах устройства с фотографиями ваших реализаций и прочее. Спасибо за внимание!
Вложения
-
53.8 KB Просмотры: 59
-
55.7 KB Просмотры: 1,392
Изменено: