АУДИО Интернет-радио 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.

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

Вложения

Изменено:

iponkada2

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

@vglukas,
У меня есть маленький 7735 нужно его попробовать, половину не будет видно ну и пусть. Тоже закажу нормальный 7735 и всё-таки попробую 7789 запустить а в идеале на него перейти.
 

iponkada2

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

@Олег Поляков,
И так мы определились что никому ничего не понятно и для того чтобы у всех получилось то что Вы задумали не хватает маленькой детали - дайте Вашу рабочую версию библиотеки.
 

vglukas

✩✩✩✩✩✩✩
5 Мар 2025
14
7
И все-таки следующий вопрос, компиляция прошла, при любых раскладах, даже если дисплей не тот должна же появиться точка доступа - но ее нет, не может же дисплей блокировать дальнейшую загрузку, опробовал две разные SD низкоскоростную на 2гб и десятку на 15 гб, на результат это не повлияло. Может есть смысл попробовать подгрузить стандартную с ешки, тогда даже 7789 будет работать на пол экрана.но что то мне не верится что что прошивка заработает в данной конфигурации. Еще вопрос а нельзя ли изменить пины, чтобы уйти с 35-38 пинов и 19 -20.?
 

iponkada2

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

@vglukas,
Абсолютно такой же результат. Подключал на 1гб и на 16гб - цыкличный ребут. Дисплеи цеплял 7789-2,4 и 7735-0.96(80*160) оба моргают. Ридер самопал, может провода длинные. Стандартную от Ёшки это имеется ввиду библиотека? Если да то она это и есть просто там дописуют две строчки от шума в пару пикселей, именно с ней я и компилировал, до Ё библиотек добавил недостающие и вперёд и все скомпилировалось.
Вопрос автору - в каком минимальном обвесе запустится радио? Esp и карты памяти достаточно для запуска? Покажите пожалуйста лог загрузки рабочего радио из монитора порта. Прошивать esp нужно с подключенной картой или без. И скриншот настроек прошивки платы из Ардуино может мы что-то выставляем не правильно.
 
Изменено:

vglukas

✩✩✩✩✩✩✩
5 Мар 2025
14
7
Выковырял 1.8 ST7735 из ешки(проверил рабочий), подключено все по схеме кроме IR иусилителя, транзистор для регулировки яркости подсветки не использовал подключил на 3,3 вольта. Схема не завелась, перепрошил с подключеным питанием переферии, эффект тот же. Не работает- дисплей белый, точки доступа нет. Видимо кроме той библиотеки есть еще подводные камни, и без подробной мурзилки здесь не обойтись. Все эти мытарства больше похожи на игру что где когда а не на тест прошивки.
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
149
138
www.1812.ru
@vglukas, по пинам: в скетче прописываете номера своих пинов в соответствующие константы, благо ESP32 в этом вопросе очень демократичен.

При первой загрузке прибор не может соединится с роутером, поскольку тот не задан, и выдает на экран инструкцию:
1000043483.jpg

Вы, разумеется, её не видите, поэтому ничего не нажимаете, и точка доступа не появляется.
 

iponkada2

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

@vglukas,
На каком ядре собирали? Я на 17 сейчас ставлю 9 и попробую ещё раз.
Тоесть для старта энкодер обязателен?
Как только все получится попробую написать инструкцию.
Вот так цыклически ребутится, с экраном, картой и энкодером.
 

Вложения

Изменено:

iponkada2

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

@vglukas,
Аналогично, сейчас пробую старую прошивку установить, если заведется то значит есть ошибка с подключением навесного.
Мне интересно на первой странице Гайвера библиотеку скачало куча народу а инфы что кто-то что-то собрал ноль. Есть тут кто кроме автора собрал радио?
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
149
138
www.1812.ru
@iponkada2, отвечаю со смартфона, поэтому извините, пока вдали от рабочего компа с проектом, буду не столь детален.
На первой странице обсуждения пользователь samand587, у которого радио заработало, выложил скриншот с настройками платы.

Компилировать можно без sd-карты. При работе карта необходима.

Энкодер - обязательный элемент схемы.

Все обязательные элементы я пометил в списке в описательной части проекта.

Логи смогу дать как только доберусь до компа.
 
  • Лойс +1
Реакции: iponkada2

vglukas

✩✩✩✩✩✩✩
5 Мар 2025
14
7
У меня собрана схема полностью и с кнопками и с энкодером, но дело в том что загрузки нет, дисплей не выводит ничего, на нажатия кнопок, енкодера не реагирует.
 

iponkada2

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

@vglukas,
И я склоняюсь к тому что схема не соответствует скетчу. На какой Ардуино собираете? Попробую на той что для Ё.
В старом архиве есть картинка настроек с разными ядрами и отключённой psram иииии появилась точка доступа, сейчас экран навешу. На прошивке из старого архива. Завтра на новой прошивке попробую.
Вопрос автору psrsm нужно включать? Он сдесь задействован? Без него все ожило. Сейчас 7789 подключу и добавлю фото.
Я почти добрался до истины, радует что запустил и что мой самопальный ридер работает.
 

Вложения

Изменено:
  • Лойс +1
Реакции: Олег Поляков

iponkada2

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

@Олег Поляков,
Как я понимаю psram не задействован, включая его ничего не запускается. Задача для следующей версии радио - включить psram и добавить экран 7789(это пожелание). Ещё не всё успел попробовать но очень нравится. Тёска, ПЯТЬ балов.
 
  • Лойс +1
Реакции: Олег Поляков

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
149
138
www.1812.ru

@iponkada2, спасибо от души за высокую оценку! Понимаю, что пришлось изрядно помучаться, чтобы запустить эту "чёртову балалайку".
То, что уже 2 её повтора зафиксированы (ваш - второй) - для автора лучшая из возможных наград, т.к. даёт стимул к улучшению уже давно сделанного.
Не помню, но, кажется, я Вам обещал ещё одну поделку выложить, а именно - лазерный тир. Буду готовить публикацию здесь, на форуме.
 
  • Лойс +1
Реакции: iponkada2

Olegsan

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

iponkada2

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

@Olegsan,
Бинарники для слабаков! Я лично получаю удовольствие решая задачи и как видите удачно. Ё допиливаю под себя, Бендера перевел на последнюю Ё прошивку.
 

Olegsan

✩✩✩✩✩✩✩
13 Мар 2025
23
5
@Олег Поляков, вопрос к автору как бы не по теме. как то я только попробовал пользоваться иде 2.3.4 и в нём нет аплоуда системы и скетча, вроде это всё внутри системы. это правда ? в данной версии не нужно проводить лишних телодвижений при прошивке? не нужно обновлять систему ? и не встречалась ли Вам у товарища Wolle i2s библиотека под
es9038
 
Изменено: