В качестве примера применения интерфейса командной строки (CLI) модулей Reflex 2.0 / 3.0 предлагаем проект управления по WiFi с помощью модуля ESP32. Во вложении есть pdf-версия данного описания.
Что понадобится
1) Модуль Reflex 2.0 или Reflex 3.0
2) Модуль ESP32 (объем flash-памяти от 4 Мбайт)
3) Arduino IDE
Arduino IDE
1) Скачайте Arduino IDE (https://www.arduino.cc/en/software)
2) Установите поддержку модулей ESP32: https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html
3) Установите библиотеки: AsyncTCP, ESPAsyncWebServer, ESPmDNS, Arduino_JSON. Обратите внимание: существует несколько аналогичных библиотек с немного отличающимися названиями; библиотеки должны называться именно так, как указано.
4) Выберите схему разделов (меню Tools – partition scheme) ESP32: No OTA (large APP). В зависимости от модуля, набор и названия схем разделов могут быть разными. Необходимо, чтобы на приложение отводилось не менее 2 Мбайт и присутствовал раздел NVS.
5) Откройте скетч и загрузите его в модуль.
Проект ChipStudio
На блоке контроллера активируйте интерфейс командной строки (CLI). Подключите к линии CLI контроллера блоки, которыми нужно управлять по сети WiFi посредством ESP32.
Внимание: сделать веб-интерфейс универсальным, подходящим под любой проект ChipStudio невозможно. С целью обобщения различных вариантов наборов регулировок и, на сколько это возможно, избавления пользователей от правки непосредственно кода веб-страницы управления содержимое веб-страницы управления формируется динамически на основе проекта ChipStudio, исходя из названий и количества значений таблиц данных блоков регулировок. Таким образом, все блоки регулировок, не имеющие в названиях «Vol», «Single», «Nx», с таблицей данных не менее 3-х значений отображаются в виде слайдеров. Блок, имеющий в названии «Nx», отображается в виде группы элементов «radio buttons», формирующих селектор. Названия позиций селектора и их соответствие значениям в таблице данных проекта ChipStudio задается в исходном коде ПО для ESP32. Селектор может быть только один. Все настройки распознавания проекта ChipStudio можно изменить в исходном коде ПО для ESP32.
Если к ESP32 не подключен модуль Reflex, содержимое проекта ChipStudio для веб-страницы управления сформировано не будет и раздел проекта ChipStudio будет пустым.
Подключение ESP32 к модулю Reflex
Внимание: убедитесь, что питание на модули ESP32 и Reflex подается одновременно, либо на модуль Reflex питание подается раньше, чем на модуль ESP32.
Настройка сети WiFi
При первом включении создается WiFi-сеть «ReflexConfig», без пароля подключитесь к ней. Чтобы подключиться к устройству, в адресной строке браузера наберите «reflex.local» (без кавычек). Для такого подключения необходимо, чтобы браузер / ОС поддерживали mDNS и эта поддержка была активирована. Если браузер / ОС не поддерживают mDNS, к устройству можно подключиться, введя в адресную строку браузера IP-адрес устройства. Его можно узнать, просканировав сеть с помощью программы сканирования IP адресов.
При подключении к устройству отобразится страница настройки WiFi-сети. Введите название WiFi-сети, в которой будет использоваться устройство, и пароль к ней. Нажмите «Save» для сохранения настроек. При следующем включении устройство будет работать в режиме управления модулем Reflex. Для изменения настроек WiFi-сети при отключенном питании нужно GPIO35 модуля ESP32 соединить с контактом 3V3, затем включить модуль.
Управление модулем Reflex
После настройки WiFi-сети устройство будет работать в режиме управления модулем Reflex. Чтобы подключиться к устройству, в адресной строке браузера наберите «reflex.local» (без кавычек). Управляющее устройство — смартфон, планшет, ПК и т. д. — и модуль Reflex совместно с модулем ESP32 должны быть подключены к одной сети WiFi. При подключении к устройству отобразится страница управления.
Страницу управления можно разделить на 3 области:
1) область управления регулировками проекта ChipStudio — ChipStudio project. Она формируется на основе загруженного в модуль Reflex проекта ChipStudio. Количество и названия слайдеров соответствуют блокам регулировок проекта ChipStudio, которые подходят под определенные условия (описаны выше). Названия позиций селектора задаются в исходном коде ПО для ESP32.
2) область управления воспроизведением — Play control. Это управление плеером, запущенным на хост-устройстве; оно аналогично нажатию соответствующих кнопок на самом модуле Reflex.
3) область отображения информации о модуле Reflex — красная область внизу страницы. Здесь отображаются название модуля Reflex, заданное пользователем, и текущие характеристики аудиопотока: частота и разрядность.
Отображение элементов страницы может отличаться в зависимости от используемого браузера.
Файлы исходного кода ПО для ESP32
Исходный код ПО для ESP32 состоит из нескольких файлов.
«AppConfig.cpp», «AppConfig.h» — приложение для настройки WiFi-сети.
«AppControl.cpp», «AppControl.h» — приложение для управления модулем Reflex.
«AudioFreqs.cpp», «AudioFreqs.h» — содержат перечень частот аудиопотока для отображения на странице управления.
«ChipStudioProject.cpp», «ChipStudioProject.h» — реализация управления проектом ChipStudio, загруженным в модуль Reflex; надстройка над «CLIport.cpp», реализующая команды CLI, относящиеся к ChipStudio («CS+»).
«CLICommands.cpp», «CLICommands.h» — содержат команды интерфейса командной строки (CLI).
«CLIport.cpp», «CLIport.h» — реализация интерфейса командной строки: отправка команд; прием ответа.
«Config.h» — содержит настройки ПО.
«Reflex_WiFi.ino» — файл скетча среды Arduino IDE.
«ServerConfig.cpp», «ServerConfig.h» — содержат разметку, стили, скрипт для страницы приложения по настройки WiFi-сети.
«ServerControl.cpp», «ServerControl.h» — содержат разметку, стили, скрипт для страницы приложения по управлению модулем Reflex.
«SoundCard.cpp», «SoundCard.h» — надстройка над «CLIport.cpp», реализующая команды CLI, относящиеся к аудиокарте («AUDIO+»).
«UserSettings.cpp», «UserSettings.h» — реализация записи / чтения пользовательских настроек (WiFi-сеть).
Настройки ПО
Файл «Config.h» содержит настройки ПО, которые пользователь может изменить по своему усмотрению.
CONFIG_GPIO — номер вывода ESP32 для выбора режима настройки WiFi-сети.
IP_ADDR_VIA_SERIAL0 — если строка не закомментирована, в порт Serial0 будет выводиться IP-адрес устройства.
APP_CTRL_MDNS_NAME — имя устройства для обращения в адресной строке браузера с использованием mDNS («указанное_имя.local») в режиме управления модулем Reflex.
APP_CONF_MDNS_NAME — имя устройства для обращения в адресной строке браузера с использованием mDNS («указанное_имя.local») в режиме настройки WiFi-сети.
CONFIG_WIFI_NET — название WiFi-сети устройства в режиме настройки.
CLI_UART_NUM — номер UART модуля ESP32, который будет использоваться для интерфейса командной строки (CLI).
CLI_UART_TX — номер вывода GPIO модуля ESP32, соответствующего линии UART_TX.
CLI_UART_RX — номер вывода GPIO модуля ESP32, соответствующего линии UART_RX.
AUDIO_POLL_PERIOD — период опроса частоты и разрядности аудиокарты.
SERIAL0_LOG — если строка не закомментирована, в порт Serial0 будет выводиться отладочная информация.
LOG_BAUDRATE — скорость передачи данных порта Serial0.
BOD_DISABLE — если строка не закомментирована, у модуля ESP32 будет отключен монитор питания.
Настройки распознавания проекта ChipStudio
const char MuxBlock[] = "Nx"; — подстрока в названии блока регулировок, по которой идентифицируется мультиплексор; на его основе формируется селектор на странице управления.
const char* MuxItems[] = { "USB", "ANALOG", "TOSLINK", "RCA", }; — названия позиций селектора, отображаемые на странице управления; количество позиций должно соответствовать значению MuxValuesCount.
uint8_t MuxValues[] = { 0, 1, 2, 3, }; — значения позиций селектора, равные номерам соответствующих значений в таблице данных мультиплексора проекта DSP; количество значений должно соответствовать значению MuxValuesCount.
const uint8_t MuxValuesCount = 4; — количество значений таблицы данных мультиплексора проекта DSP.
const char* NotEqualBlocks[] = { "Vol", "Single", MuxBlock, }; — подстроки в названии блока регулировок, по которым определяется, что если название не содержит таких подстрок, то данный блок будет отображаться на странице управления как слайдер.
const uint8_t NotEqualBlocksCount = 3; — количество подстрок в NotEqualBlocks[].
const uint8_t MinEqualValues = 3; — минимальное количество значений в таблице данных блока, необходимое, чтобы он отображался на странице управления как слайдер.
Что понадобится
1) Модуль Reflex 2.0 или Reflex 3.0
2) Модуль ESP32 (объем flash-памяти от 4 Мбайт)
3) Arduino IDE
Arduino IDE
1) Скачайте Arduino IDE (https://www.arduino.cc/en/software)
2) Установите поддержку модулей ESP32: https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html
3) Установите библиотеки: AsyncTCP, ESPAsyncWebServer, ESPmDNS, Arduino_JSON. Обратите внимание: существует несколько аналогичных библиотек с немного отличающимися названиями; библиотеки должны называться именно так, как указано.
4) Выберите схему разделов (меню Tools – partition scheme) ESP32: No OTA (large APP). В зависимости от модуля, набор и названия схем разделов могут быть разными. Необходимо, чтобы на приложение отводилось не менее 2 Мбайт и присутствовал раздел NVS.
5) Откройте скетч и загрузите его в модуль.
Проект ChipStudio
На блоке контроллера активируйте интерфейс командной строки (CLI). Подключите к линии CLI контроллера блоки, которыми нужно управлять по сети WiFi посредством ESP32.
Внимание: сделать веб-интерфейс универсальным, подходящим под любой проект ChipStudio невозможно. С целью обобщения различных вариантов наборов регулировок и, на сколько это возможно, избавления пользователей от правки непосредственно кода веб-страницы управления содержимое веб-страницы управления формируется динамически на основе проекта ChipStudio, исходя из названий и количества значений таблиц данных блоков регулировок. Таким образом, все блоки регулировок, не имеющие в названиях «Vol», «Single», «Nx», с таблицей данных не менее 3-х значений отображаются в виде слайдеров. Блок, имеющий в названии «Nx», отображается в виде группы элементов «radio buttons», формирующих селектор. Названия позиций селектора и их соответствие значениям в таблице данных проекта ChipStudio задается в исходном коде ПО для ESP32. Селектор может быть только один. Все настройки распознавания проекта ChipStudio можно изменить в исходном коде ПО для ESP32.
Если к ESP32 не подключен модуль Reflex, содержимое проекта ChipStudio для веб-страницы управления сформировано не будет и раздел проекта ChipStudio будет пустым.
Подключение ESP32 к модулю Reflex
| | Reflex 2.0 | Reflex 3.0 |
| ESP32 UART_TX – 32 | RX – GPIO21 | RX – разъем Rpi 10 контакт |
| ESP32 UART_RX – 33 | TX – GPIO20 | TX – разъем Rpi 8 контакт |
| ESP32 GND | GND | GND |
Внимание: убедитесь, что питание на модули ESP32 и Reflex подается одновременно, либо на модуль Reflex питание подается раньше, чем на модуль ESP32.
Настройка сети WiFi
При первом включении создается WiFi-сеть «ReflexConfig», без пароля подключитесь к ней. Чтобы подключиться к устройству, в адресной строке браузера наберите «reflex.local» (без кавычек). Для такого подключения необходимо, чтобы браузер / ОС поддерживали mDNS и эта поддержка была активирована. Если браузер / ОС не поддерживают mDNS, к устройству можно подключиться, введя в адресную строку браузера IP-адрес устройства. Его можно узнать, просканировав сеть с помощью программы сканирования IP адресов.
При подключении к устройству отобразится страница настройки WiFi-сети. Введите название WiFi-сети, в которой будет использоваться устройство, и пароль к ней. Нажмите «Save» для сохранения настроек. При следующем включении устройство будет работать в режиме управления модулем Reflex. Для изменения настроек WiFi-сети при отключенном питании нужно GPIO35 модуля ESP32 соединить с контактом 3V3, затем включить модуль.
Управление модулем Reflex
После настройки WiFi-сети устройство будет работать в режиме управления модулем Reflex. Чтобы подключиться к устройству, в адресной строке браузера наберите «reflex.local» (без кавычек). Управляющее устройство — смартфон, планшет, ПК и т. д. — и модуль Reflex совместно с модулем ESP32 должны быть подключены к одной сети WiFi. При подключении к устройству отобразится страница управления.
Страницу управления можно разделить на 3 области:
1) область управления регулировками проекта ChipStudio — ChipStudio project. Она формируется на основе загруженного в модуль Reflex проекта ChipStudio. Количество и названия слайдеров соответствуют блокам регулировок проекта ChipStudio, которые подходят под определенные условия (описаны выше). Названия позиций селектора задаются в исходном коде ПО для ESP32.
2) область управления воспроизведением — Play control. Это управление плеером, запущенным на хост-устройстве; оно аналогично нажатию соответствующих кнопок на самом модуле Reflex.
3) область отображения информации о модуле Reflex — красная область внизу страницы. Здесь отображаются название модуля Reflex, заданное пользователем, и текущие характеристики аудиопотока: частота и разрядность.
Отображение элементов страницы может отличаться в зависимости от используемого браузера.
Файлы исходного кода ПО для ESP32
Исходный код ПО для ESP32 состоит из нескольких файлов.
«AppConfig.cpp», «AppConfig.h» — приложение для настройки WiFi-сети.
«AppControl.cpp», «AppControl.h» — приложение для управления модулем Reflex.
«AudioFreqs.cpp», «AudioFreqs.h» — содержат перечень частот аудиопотока для отображения на странице управления.
«ChipStudioProject.cpp», «ChipStudioProject.h» — реализация управления проектом ChipStudio, загруженным в модуль Reflex; надстройка над «CLIport.cpp», реализующая команды CLI, относящиеся к ChipStudio («CS+»).
«CLICommands.cpp», «CLICommands.h» — содержат команды интерфейса командной строки (CLI).
«CLIport.cpp», «CLIport.h» — реализация интерфейса командной строки: отправка команд; прием ответа.
«Config.h» — содержит настройки ПО.
«Reflex_WiFi.ino» — файл скетча среды Arduino IDE.
«ServerConfig.cpp», «ServerConfig.h» — содержат разметку, стили, скрипт для страницы приложения по настройки WiFi-сети.
«ServerControl.cpp», «ServerControl.h» — содержат разметку, стили, скрипт для страницы приложения по управлению модулем Reflex.
«SoundCard.cpp», «SoundCard.h» — надстройка над «CLIport.cpp», реализующая команды CLI, относящиеся к аудиокарте («AUDIO+»).
«UserSettings.cpp», «UserSettings.h» — реализация записи / чтения пользовательских настроек (WiFi-сеть).
Настройки ПО
Файл «Config.h» содержит настройки ПО, которые пользователь может изменить по своему усмотрению.
CONFIG_GPIO — номер вывода ESP32 для выбора режима настройки WiFi-сети.
IP_ADDR_VIA_SERIAL0 — если строка не закомментирована, в порт Serial0 будет выводиться IP-адрес устройства.
APP_CTRL_MDNS_NAME — имя устройства для обращения в адресной строке браузера с использованием mDNS («указанное_имя.local») в режиме управления модулем Reflex.
APP_CONF_MDNS_NAME — имя устройства для обращения в адресной строке браузера с использованием mDNS («указанное_имя.local») в режиме настройки WiFi-сети.
CONFIG_WIFI_NET — название WiFi-сети устройства в режиме настройки.
CLI_UART_NUM — номер UART модуля ESP32, который будет использоваться для интерфейса командной строки (CLI).
CLI_UART_TX — номер вывода GPIO модуля ESP32, соответствующего линии UART_TX.
CLI_UART_RX — номер вывода GPIO модуля ESP32, соответствующего линии UART_RX.
AUDIO_POLL_PERIOD — период опроса частоты и разрядности аудиокарты.
SERIAL0_LOG — если строка не закомментирована, в порт Serial0 будет выводиться отладочная информация.
LOG_BAUDRATE — скорость передачи данных порта Serial0.
BOD_DISABLE — если строка не закомментирована, у модуля ESP32 будет отключен монитор питания.
Настройки распознавания проекта ChipStudio
const char MuxBlock[] = "Nx"; — подстрока в названии блока регулировок, по которой идентифицируется мультиплексор; на его основе формируется селектор на странице управления.
const char* MuxItems[] = { "USB", "ANALOG", "TOSLINK", "RCA", }; — названия позиций селектора, отображаемые на странице управления; количество позиций должно соответствовать значению MuxValuesCount.
uint8_t MuxValues[] = { 0, 1, 2, 3, }; — значения позиций селектора, равные номерам соответствующих значений в таблице данных мультиплексора проекта DSP; количество значений должно соответствовать значению MuxValuesCount.
const uint8_t MuxValuesCount = 4; — количество значений таблицы данных мультиплексора проекта DSP.
const char* NotEqualBlocks[] = { "Vol", "Single", MuxBlock, }; — подстроки в названии блока регулировок, по которым определяется, что если название не содержит таких подстрок, то данный блок будет отображаться на странице управления как слайдер.
const uint8_t NotEqualBlocksCount = 3; — количество подстрок в NotEqualBlocks[].
const uint8_t MinEqualValues = 3; — минимальное количество значений в таблице данных блока, необходимое, чтобы он отображался на странице управления как слайдер.
Вложения
-
61,6 КБ Просмотры: 158
-
61,6 КБ Просмотры: 151
-
35 КБ Просмотры: 170
-
272,8 КБ Просмотры: 194
-
48,2 КБ Просмотры: 156
-
21,6 КБ Просмотры: 155
-
280,4 КБ Просмотры: 150