АУДИО Интернет-радио microMedia на ESP32-S3

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
149
138
www.1812.ru
Интернет-радио + аудиоплеер + часы-будильник с боем и курантами на ESP32-S3

radio0.jpg

Устройство обладает следующим функционалом:
1. Может работать с практически неограниченным списком радиостанций. Причём переключение между станциями происходит мгновенно.
2. Управление радио осуществляется и элементами управления на самом радио, и через web-интерфейс, и через ИК-пульт.
3. Точно так же как и в смартфоне (планшете) организовано подключение радио по wi-fi к интернету. Сохраняются все ранее использованные точки доступа и при повторном попадании прибора в зону их действия соединение с интернетом не требует повторной авторизации.
4. Радио имеет три режима работы: интернет-радио, часы, музыкальный проигрыватель.
5. В режиме музыкального проигрывателя осуществляется воспроизведение звуковых файлов с sd-карты. Пока реализована вложенность папок с аудио-файлами равная единице.
6. В режиме интернет-радио можно фильтровать весь список радиостанций по двум параметрам: жанр (20 жанров) и локация (6 локаций).
7. И в режиме радио, и в режиме проигрывателя поддерживается дополнительный маркер "избранное".
8. Реализована очень полезная функция - автоматический уровень громкости, которая выравнивает громкость звучания разных интернет-станций.
9. В web-интерфейс встроен простой редактор списка радиостанций, который позволяет управлять списками станций в самом устройстве.
10. Проверен и введен по умолчанию список из более 4 000 интернет-станций с указанием их жанра и локации.
11. Разработано и вшито в прошивку 6 цветовых схем интерфейса экрана интернет-радио.
12. Реализовано управление яркостью экрана интернет-радио.
13. Реализован режим энергосбережения (выключения подсветки экрана).
14. Реализованы функции выключения и включения по заданному времени.
15. Реализованы куранты часов (каждый час, каждые пол-часа, каждые 15 и 45 минут). Можно установить один из 7 типов звучания курантов или выставить озвучивание текущего времени голосом.
16. Для людей с плохим зрением реализовано озвучивание меню управления интернет-радио голосом.
17. В режиме радио реализована функция анализа качества связи с интернет-станцией и восстановление соединения при критичном ухудшении или потери связи с сайтом радиостанции.
18. Реализована блокировка/снятие блокировки нажатия кнопок и вращения энкодера - полезная опция для интернет-радио в карманном исполнении.
19. Реализованы функции "случайная радио-станция" для режима радио и "случайная композиция" для режима аудиопроигрывателя.

Компоненты, необходимые для сборки:
1. Модуль ESP32-S3 (обязательный элемент). Тестировалось на модуле ESP32-S3 Dual USB разработки AITEXM ROBOT.
2. Модуль DAC PCM5102 (обязательный элемент).
3. Дисплей 1.8 TFT SPI 128x160 with sd-card reader - ST7735 TFT (обязательный элемент).
4. Энкодер с кнопкой (обязательный элемент).
5. Модуль усилителя НЧ LM4881 или любой подходящий аналог (факультативный элемент).
6. Инфракрасный беспроводной модуль дистанционного управления HX1838 (TL1838) с пультом (факультативный элемент).
7. Транзистор 2N3906 или аналог (если хотите регулировать яркость дисплея).
8. Три резистора 1кОм.
9. Выключатель питания.
10. Разъём внешнего питания type-c (мама).
11. Один - два аудио-разъёма 3.5 стерео (мама).
12. sd-карта не более 32 Гб.

Порядок сборки, прошивки и настройки.

1. Соберите устройство, согласно приложенной принципиальной схеме.
2. Скачайте и распакуйте архив скетча. (Избегайте кириллических символов в путях к скетчу и библиотекам).
3. В Arduino IDE откройте файл InternetRadio.ino.
4. Установите в настройках Arduino IDE свою плату ESP-32.
5. Установите в пункте настроек "Partition scheme" опцию "Huge App" и остальные параметры, согласно прилагаемому скриншоту:
ide05.jpg
6. После того как скетч успешно скомпилировался обязательно:
- в папку библиотек Arduino\libraries\Adafruit_GFX_Library перепишите файл glcdfont.c из архива скетча.
- туда же обязательно перепишите из архива скетча папку FontsRus, даже если не планируете использовать.
7. Попробуйте скомпилировать скетч. При отсутствии необходимых библиотек доустановите их из среды Arduino IDE. (Используйте версию библиотеки IRremote не выше 3.0.0).
8. На предварительно отформатированную в FAT32 sd-карту запишите содержимое архива папки SD-card.
9. Вставьте sd-карту в слот на модуле дисплея.
10. Теперь всё готово для заливки прошивки в ESP-32. Загрузите скетч на плату.

Если всё сделано правильно, то:
1. При включении в wi-fi радио объявляет себя как "microMedia".
2. Первым делом смартфон нужно подключить к этой сети. Пароль: 12345678.
3. Далее открыть в браузере адрес 192.168.4.1 и там уже настроить соединение интернет-радио с интернетом.
Выберите ваш роутер из списка и введите пароль доступа. В случае успеха вы услышите первые звуки интернет-трансляции первой станции из большого списка станций.
4. После чего для управления интернет-радио через web-интерфейс необходимо узнать ip-адрес самого устройства в сети. Для этого достаточно нажать один раз кнопку BUTTON и в нижней части всплывшего на дисплее окошка с меню посмотреть и вбить в адресную строку web-браузера вашего компьютера (планшета, смартфона) отображаемый ip-адрес.

Принципиальная схема
schemas.png

(Контроллер зарядки и питания устройства на принципиальной схеме не изображены).

Архив скетча, шрифтов для дисплея и содержимое sd-карты
59.4 Mb в zip-архиве

Arduino IDE и необходимые библиотеки
Скетч успешно компилировался на Arduino IDE версий 2.0.9 и 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


Версия 2 интернет-радио:
radio01.jpg

Версия 1 интернет-радио:
radio02.jpg

radio03.jpg

web01.jpgweb02.jpgweb03.jpgweb04.jpgweb05.jpgweb07.jpgweb08.jpgweb09.jpg

Обзор 1-й версии интернет-радио

Обзор 2-й версии интернет-радио

Мной были разработаны и собраны два устройства. Ещё одно в рамках тестирования было собрано участником форума samand587.

Буду признателен за конструктивную критику, указания на ошибки (куда ж без них!), сообщения об успешных повторах устройства с фотографиями ваших реализаций и прочее. Спасибо за внимание!
 

Вложения

Изменено:

vglukas

✩✩✩✩✩✩✩
5 Мар 2025
14
7
@iponkada2, Если можно бросьте пожалуйста ссылку на IDE 2.0.9, че то не могу найти.

@iponkada2, Да, стоит 2.0.0.

@iponkada2, Согласно списка выше 2.0.0 и надо?

@iponkada2, Эту библиотеку я качал с Гитхаба, только гораздо раньше.
 

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@vglukas, у меня днём компиляция удалась.сейчас пришёл с работы домой ,ссд с системой у меня переносной.попробовал снова получилось.шить не пробовал.да думаю зальётся тока вот результат какой будет..(у 2 версии ардуины нет обновлялки, хотя толкуют ,что она встроенная.там). вин у меня 10 ардуина иде последняя 2.3.4.. выкинул из библиотек всё то на ,что ругался компилятор, установил всё согласно списка(версии точь в точь). версия ядра 2.0.9 ,по ходу и 2.0.11 прокатит..версия шины на гитхабе 2.13, но там-же есть ссылка написано 2.0.12 но раскрывается как 2.0. ( с 2.0.13 у меня ругалась на аудио2с) в настройках(инструментах) память -16м , патришен -.хуга 3...(как и рекомендовано)..писирам-"опи писирам"(иначе ругается -памяти мало)...извиняюсь канешна -лениво язык менять...У меня ещё включена детализация при компиляции-красиво скрашивает ожидание результата..попробуйте должно случиться .. .да и . ещё удалил все сд файлы и библиотеки на которые ардуина указала
 
Изменено:

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@vglukas,
Пока не собирался собирать это радио(занимаюсь Бендером из соседней ветки) но стало интересно скомпилить прошивку и получил ошибки один в один с Вашими.


@Olegsan,
Что такое версия шины 2.13?


@Олег Поляков,
Большая просьба в архив с прошивкой положить все нужные библиотеки, я то решение найду а вот остальным будет проще.
 
Изменено:

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@iponkada2, I2S шина звука.ссылка ведёт на гитхаб аудио мастер версия 2.0.13. там-же на странице справа ,релиз.находится ссылка на архив 3.0.12- раскрывается как 2.0. я у себя удалил из библиотек аудио мастера(тупо делете) и установил то что скачал--как библиотеки.зип архив.. .пардонте 3.0.12 архив ...исправил
 
Изменено:

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@Olegsan,
3.0.12 есть у меня, уже подставил и вроде как собралось. Сравнил я 2.0.0 и 3.0.12 совсем разные. Не зная секрета хрен скомпилить. Только что успешно скомпилилось. Но автор утверждает что нужна именно 2.0.0, а 3.0.12 это самая последняя и из этого вытекает - а будет ли все работать? С Бендером я просидел пару вечеров чтобы адаптировать его рот к новой библиотеке. Просьба к автору в силе - предоставьте свою библиотеку i2S.
 
Изменено:

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@iponkada2, а дальше. зашить то оно зашьётся . а как реализуется ?у меня ёрадио наS3+7789 поёт.разбирать пока не хочу. придётся ещё есп заказать..
 

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@vglukas, попробуйте удалить всё ,что система считает лишним...ежели жалко , то перекиньте в другую папку..а когда переносили,переписывали архивы- всё распаковалось? у меня винзащита гробит многие архивы-пишет архив повреждён
 

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@Olegsan,
Выше я дописал свой ответ, s3 есть у меня и почти подходящий 7789, придется внепланово испытывать. На ядре 2.0.17 тоже собирается. Ну я немного сжульничал некоторые библиотеки и файл glcdfont (они почти идентичны) оставил от Ё посмотрим как это запоёт в железе.
 

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@vglukas,
Установите последнюю версию i2S и все соберётся.
На этой странице найдете архив с библиотеками. Ардуино показывает что установлено 2.0.0 хотя по факту стоит 3.0.12, вот автор заглянул в Ардуино и сказал ставьте 2.0.0.
 
Изменено:
  • Лойс +1
Реакции: Олег Поляков

VILUKAS

✩✩✩✩✩✩✩
22 Мар 2025
3
2
Все таки прошил, теперь вторая задача запустить, как показывает практика не все SD корректно читаются.
 

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@Олег Поляков,
Проблема в i2s библиотеке, Вы указали не ту версию. Я выше писал что установил 3.0.12 а Ардуино отображает 2.0.0. Люди согласно рекомендации ставят 2.0.0 и в результате ошибки. Вот я и хочу чтобы вы предоставили библиотеку которая у Вас установлена, это снимет много лишних вопросов и телодвижений.
 

iponkada2

★✩✩✩✩✩✩
10 Апр 2024
102
41

@Олег Поляков,
Выше я писал что в папку с библиотеками положил 3.0.13 а в Ардуино отображается 2.0.0. Похоже и у Вас та же история. Зайдите в папку библиотеки и скажите сколько там папок возле файлов Audio, если три то 2.0.0, а если пять то 3.0.12.Screenshot_2025-03-23-23-42-26-562_ru.zdevs.zarchiver.pro.jpgScreenshot_2025-03-23-23-42-09-979_ru.zdevs.zarchiver.pro.jpg
 

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@iponkada2, немного не корректно -3.0.12 -это название архива. а в архиве как раз версия ( джисон-блокнот) 2.0.0 ...как то так.. автор прав. увы однако всех тонкостей не углядишь
 
  • Лойс +1
Реакции: Олег Поляков

vglukas

✩✩✩✩✩✩✩
5 Мар 2025
14
7
А собака была в библиотеке i2s, как ни странно библиотека которую я когда то скачивал с Гитхаба с пропиской что она 2.0.0 не подошла, не подошла и с IDE, а вот то что 3.12 это 2.0.0 я не знал. Когда поставил все прошилось, но проверить не смог 7789 даже на пол экрана работать не захотел, мигает белым экран, на ешке работал бы на пол экрана, а здесь нет, а 7735 еще в пути.
 
  • Лойс +1
Реакции: Олег Поляков