Проект ESP32-Radiola кросс-платформенный, т.е. компиляция и сборка будет работать как на Linux-, так Windows- совместимых OS. Для этого нужно скачать и установить для Вашей ОС среду разработки VS Code от MicroSoft по этой ссылке https://code.visualstudio.com/download
Затем в 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" и установите формат строк как на картинке:
-
Перед первой настройкой проекта командой
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
Реализовано сейчас:
- Максимальное количество радиостанций в Радиоле 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 можно подключить термометр, если у Вас подключен энкодер.
!!!!Перед прошивкой обязательно проверьте контрольные суммы всех трёх бинарных файлов!!!!
Удобная программа для проверки контрольной суммы файла #HashTab.
(После установки увидите инструкцию в картинках)
адреса:
-
bootloader.bin - 0x1000
-
partitions.bin - 0x8000
-
ESP32Radiola(-release или -debug).bin - 0x10000 и 0x200000
ESP32-Radiola - если что-то пошло не так...