Skip to content

Радиола-ESP32. Простой медиацентр на базе TDA7293 и аудиопроцессора TDA7313 + web-радио (на VS1053B) под управлением ESP32-WROVER. Форум проекта:

License

Notifications You must be signed in to change notification settings

SinglWolf/ESP32-Radiola

Repository files navigation

ESP32-Radiola - Музыкальный центр своими руками

Проект ESP32-Radiola кросс-платформенный, т.е. компиляция и сборка будет работать как на Linux-, так Windows- совместимых OS. Для этого нужно скачать и установить для Вашей ОС среду разработки VS Code от MicroSoft по этой ссылке https://code.visualstudio.com/download

Image alt

Затем в VS Code нужно установить необходимые компоненты: Russian Language Pack for Visual Studio Code и PlatformIO IDE.

Инструкция: Установка и настройка IDE для программирования ESP32

Для полноценной работы необходима подержка Java. Скачать можно по ссылке https://www.java.com/ru/download/

В проекте ESP32-Radiola использованы некоторые методы, идеи и файлы из Ka-Radio32.

ВНИМАНИЕ!!! ESP32-Radiola НЕСОВМЕСТИМА С Ka-Radio32

Все вопросы по проекту пишите в ESP32-Radiola - Музыкальный центр с управлением на ESP32 своими руками.

демо веб-интерфейса Радиолы

Используемое железо (HARDWARE):

  • *ESP32-WROVER 4M flash, 4M SPIRAM - микроконтроллер, который рулит всем доступным железом в проекте ;-).
    (Возможно использовать ESP32-WROOM 4M flash без SPIRAM, буфер под поток радио будет меньше).

  • *VS1053B (аудио-декодер для web-радио).

  • *Цветной TFT дисплей 18x320x240. Драйвер SPI на ILI9341. (У меня размер экрана 3,2 дюйма.)

  • Тачскрин на XPT2046.

  • Корпус - старый системный блок компьютера.

  • Силовой трансформатор - от усилителя Вега 50У-122С, с дополнительной обмоткой.

  • Радиаторы - от усилителя Вега 50У-122С.

  • Аудиоколонки - от усилителя Вега 50У-122С.

  • 2 платы усилителя на TDA7293.

  • TDA7313 - аудиопроцессор.

  • UPC1237 - защита колонок от щелчков при включении/выключении и появлении постоянного напряжения.

  • BA3121 - изолирующий усилитель для подавления помех (шумов) при подключении VS1053B к TDA7313.

  • DS3231SN - часы реального времени. (Если нет интернета, короче :-)).

  • Вентилятор охлаждения радиаторов усилителя - 4-х пиновый (с ШИМ) от какой-то материнской платы компьютера.

  • DS1820 - датчик температуры для контроля нагрева радиаторов усилителя. (Можно мерить температуру в комнате :-))

  • IR-модуль с простым пультом.

  • BTx01 - блютуз-модуль (ссылка в магазин на Ali)

* Жирным шрифтом отмечена минимальная рабочая конфигурация

Внешний вид и схему подключения некоторых компонентов можно глянуть в каталоге pictures.

Проект делаю для себя. Никаких хроник изменений не веду. Как только реализую основные задачи, напишу развёрнутый мануал.

(Прошивать на чистую FLASH!!!)

ИНФОРМАЦИЯ

  • У Радиолы две прошивки.
    Релизная - для постоянного пользования.
    Отладочная - для анализа поведения, отадки и поиска возможных ошибок.

  • Вся забота об отслеживании изменений в файлах, необходимых для работы веб-интерфейса, теперь лежит на PlatformIO. При любом изменени в этих файлах, автоматически пересоздаются заголовочные файлы с массивами данных в формате языка С.

  • Проект Радиола собран на framework-espidf 4.1.0.

  • Проект Радиола можно запускать как на Linux, так и на Windows.

  • По-умолчанию в VS Code формат конца сток CRLF. В Linux же LF. Если Вы будете работать проекте под управлением ОС Windows, обязательно настройте Linux-совместимый формат конца строк. Для этого зайдите в настройки параметров, наберите в строке поиска "eol" и установите формат строк как на картинке:

    Image alt

  • Перед первой настройкой проекта командой Run Menuconfig, обязательно сделать копию файла defconfig с именем sdkconfig в корне проекта. В файле defconfig записана необходимая первоначальная настройка ESP32!

ПРОШИВКА собрана без поддержки тачскрина!!! Если Вы хотите подключить дисплей с тачскрином:

В файле .platformio\packages\framework-espidf\components\driver\spi_master.c

Строка 147, заменить

#define NO_CS 3     //Number of CS pins per SPI host

на

#define NO_CS 5     //Number of CS pins per SPI host

и определить пин тачскрина через задачу Run Menuconfig -> Настройка ESP32-Радиолы --> Конфигурация GPIOS

Image alt

Реализовано сейчас:

  • Максимальное количество радиостанций в Радиоле 128.
  • Два плейлиста: ОБЩИЙ и ИЗБРАННОЕ.
  • Поддержка загрузки и выгрузки плейлистов радиостанций в стандартном формате M3U.
  • Индикация выхода нового релиза Радиолы. Цвет логотипа Радиолы в верхнем левом углу на странице веб-интерфейса меняется с зелёного на красный.
  • Настройка конфигурации Радиолы и переопределение пинов ESP32 производится через через web-интерфейс. А так же через задачу Run Menuconfig -> Настройка ESP32-Радиолы из среды PlatformIO при самостоятельной сборке прошивки.
  • Сброс конфигурации Радиолы до заводских настроек через кнопку в вебинтерфейсе на вкладке опций.
  • Тестовая поддержка модуля BTx01, через консоль UART и TELNET. Доступные команды для модуля BTx01 можно посмотреть, набрав в консоли "help".
  • Функция регулировки яркости подсветки дисплея реализована в тестовом режиме, без настройки в интерфейсах.
  • Обучаемый ИК-пульт с сохранением кодов в NVS.
  • 4 сервера точного времени (NTP). Системное время Радиолы синхронизируется с NTP каждый час. Можно прописать свои сервера NTP. Все поля должны быть заполнены. Сервер с номером 0: имеет высший приоритет. Часовые пояса настроены с учётом наличия летнего времени в регионе. Переход на летнее время происходит автоматически. Если Вашего региона нет в списке часовых поясов Радиолы, пожалуйста, сообщите мне об этом и я в ближайшей ревизии прошивки Радиолы его добавлю.
  • Обновление через OTA (времменно недоступно).
  • Управление громкостью воспроизведения радиостанций/выбор станций через энкодер.
  • Анонсы проекта можно смотреть в веб-интерфейсе.
  • Управление всеми функциями TDA7313 через web-интерфейс.
  • Датчик температуры DS18B20 для контроля температуры радиаторов усилителя (или в комнате).
  • Вывод показаний датчика температуры DS18B20 на странице веб-интерфейса.
  • Тахометр (счётчик оборотов) вентилятора охлаждения радиаторов усилителя.
  • Вывод показаний тахометра на странице веб-интерфейса.
  • Звуковая индикация (пищалка) нажатий кнопок пульта (энкодера).

TODO (приоритет):

  • Реализовать поддержку воспроизведения потоков через защищённый протокол HTTPS
  • Исправить отображение длинной строки в заголовке интерфейса.
  • Реализовать в веб-интерфейсе настройку энкодера.
  • Реализовать в веб-интерфейсе кнопку "Отображать часы во время проигрывания станций".
  • Реализовать ручное/автоматическое управление оборотами вентилятора охлаждения радиаторов усилителя в зависимости то температуры радиаторов.
  • Реализовать регулировку яркости подсветки дисплея (ручная, в зависимости от времени суток, в зависимости от уровня освещённости).
  • Добавить поддержку RTC DS3231 (часы).
  • Реализовать возможность сборки прошивки с поддержкой тачскрина без правки в системных библиотеках

TODO (перспектива):

  • Сделть 1 кнопку для вкл\выкл звука и совместить с функцией, чтобы при удержании кнопки при включении сбрасывались все настройки.
  • Реализовать обнвление прошивки через OTA с локального сервера.
  • Добавить поддержку эквалайзера TDA7317.
  • Создать приложение под андроид для управления Радиолой.
  • Реализовать извлечение потока\плейлиста из URL с редиректом на другой ресурс.
  • etc...

Распиновка по-умолчанию

ESP VS1053
TFT
TOUCH
TDA7313
TDA7317
DS3231
DS1820 FAN IR BUZZ STAND
BY
BTx01 ENC KBD LDR
19 MISO
23 MOSI
18 CLK
5 XCS
32 XDCS
4 DREQ
21 **SDA
22 **SCL
27 CS
2 DC
25 STB
35 +IR
26 LED
12 TACH
13 *PWM *DT
14 *DS *CLK
0 T_CS
33 +BUZ
36 RX
15 TX
(EN) RESET
34 *SW *KEY
39 LDR

* - отмечены пины, которые можно использовать для подключения только ОДНОГО интерфейса!!!

Например, если вы не желаете иметь термометр и управление оборотами вентилятора, к GPIO13(PWM) можно подключить вывод (DT) энкодера. И, наоборот, если вы желаете подключить энкодер, увы, придётся отказаться от управления оборотами вентилятора и термометра.

!!! ВНИМАНИЕ НЕ ПОДКЛЮЧАЙТЕ ОДНОВРЕМЕННО КЛАВИАТУРУ И ЭНКОДЕР !!!

** - отмечены пины, которые можно использовать для подключения другого интерфейса!!!

Например, если у Вас не подключены TDA7313, TDA7317 и DS3231, к этим GPIO можно подключить термометр, если у Вас подключен энкодер.

flash_download_tools_v3.8.5

!!!!Перед прошивкой обязательно проверьте контрольные суммы всех трёх бинарных файлов!!!!

Удобная программа для проверки контрольной суммы файла #HashTab.
(После установки увидите инструкцию в картинках)

адреса:

  • bootloader.bin - 0x1000

  • partitions.bin - 0x8000

  • ESP32Radiola(-release или -debug).bin - 0x10000 и 0x200000

Image alt

ESP32-Radiola - если что-то пошло не так...

демо веб-интерфейса

Принципиальная схема Радиолы Image alt

Принципиальная схема периферийных устройств Радиолы Image alt

Прототип Image alt Image alt Image alt

About

Радиола-ESP32. Простой медиацентр на базе TDA7293 и аудиопроцессора TDA7313 + web-радио (на VS1053B) под управлением ESP32-WROVER. Форум проекта:

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published