21 января 2022

ExpressLRS BackPack - управление видеоканалами посредством пульта

ExpressLRS - уникальная система. Благодаря энтузиастам, система обросла кучей дополнительных функций, среди которых есть одна очень интересная: одновременный выбор видеоканала для приемника в очках и передатчика у модели. Можно задать необходимую частоту работы видеосистемы в пульте, затем включить квадрик с очками и они автоматически переключатся на нужный канал. Функция реализована через дополнительный чип ESP8285 на плате передающего модуля - BackPack. К видеоприемнику на SPI-шину подключается дополнительный управляющий модуль так же на базе ESP8285 - VRX-BackPack. Вся схема работает по ESPnow-протоколу.

Какие ExpressLRS-модули поддерживают функцию BackPack? Список не очень большой:

В качестве принимающей стороны (VRX-Backpack) может выступать обычный ESP-01F-модуль с понижающим стабилизатором AMS1117. Компания Happymodel выпустила компактный аналог этого модуля EP82-Backpack, его и буду использовать.

Так же подойдет большинство приемников на 2.4ГГц:

Функцию переключения видеоканалов с пульта можно прикрутить к следующим видеоприемникам:

Итак, исходные данные: Happymodel ES24TX, Happymodel EP82-Backpack и ImmersionRC Rapidfire. Все, что требуется - это припаять пятью проводками EP82-Backpack к видеоприемнику, как на схеме:

Получилось вот так. Модуль закатал в термоусадку. В очках подсуну его над приемником.

Дальше - прошивка модуля и принимающей стороны. Согласно инструкции, выставляю перемычки по центру на модуле Happymodel ES24TX. Да там прямо на плате подписано, как их выставить для прошивки ESP8285. В таком виде подключаю к компьютеру через USB-разъем.

Важно! После подключения надо выполнить некоторые манипуляции с кнопками модуля. Удерживая нажатой кнопку "Backpack GPIO0", нажать и отпустить кнопку "Backpack RESET", затем отпустить кнопку "Backpack GPIO0". Чип ESP8285 перейдет в режим программирования.

Запускаю ExpressLRS-конфигуратор, перехожу на вкладку "Backpack". В опциях выбираю свой модуль, включаю прошивку через UART, задаю BINDING_PHRASE (можно такую же, как для связи с моделью). Опционально можно задать параметры домашней локальной сети, чтобы было удобнее обновлять прошивку в будущем. В самом низу выбираю устройство для прошивки и нажимаю "BUILD & FLASH".

Прошивка для Backpack-чипа обновляется не очень часто, так что можно использовать свежий срез исходных текстов (git branch - master). Там будут все текущие обновления. Прошивка довольно быстро соберется и зальется в модуль. Первичный этап завершен.

Все выключаю и переставляю перемычки в нормальный режим, как указано в инструкции. Это важно! Если этого не сделать, то в дальнейшем обновление прошивки через WiFi не будет запускаться из ExpressLRS-скрипта в пульте.

С модулем разобрались. Можно установить его в пульт и проверить обновление прошивки через WiFi.

Если в качестве принимающей стороны (VRX-Backpack) используется самодельный модуль, то, кроме как через FTDI-адаптер, прошивку в него не залить. Перед этим надо закоротить IO0-контакт на общий.

Если используется обычный ExpressLRS-приемник (лучше всего подойдет Happymodel EP1/EP2), то, кроме варианта прошивки через FTDI-адаптер, можно прошить его и через WiFi, как и в случае обычного обновления прошивки. Если приемник уже был прошит на ExpressLRS-2.0.0 или старше, то в строке адреса браузера надо добавить параметр "?force=true", чтобы получилось "http://10.0.0.1/?force=true".

В моем случае, Happymodel EP82-Backpack уже имеет на борту Backpack-прошивку версии 0.1.0, поэтому так смело заранее и припаял его к приемнику:) Обновлять прошивку буду через WiFi. В ExpressLRS-конфигураторе собираю Backpack-прошивку из свежего среза со своими параметрами под RapidFire-приемник.

Выбираю вариант для ESP01F-модуля, коим по сути и является EP82-Backpack. Жму кнопку "BUILD" и через некоторое время получаю файл прошивки. Бросаю его на телефон и перехожу к следующей стадии.

Осталось только поднять точку доступа на EP82-Backpack. Включаю очки, нажимаю маленькую кнопку на модуле. Модуль начнет быстро мигать синим огоньком. С телефона нахожу точку доступа "ExpressLRS Rapidfire Backpack", подключаюсь к ней с паролем "expresslrs".

Перехожу в браузер и открываю адрес "http://10.0.0.1". Перематываю страницу вниз, выбираю файл прошивки с телефона и нажимаю "Update".

Несколько секунд и прошивка обновлена! Уф, все! Осталось проверить, как включается режим обновления прошивки на передающем модуле (TX-Backpack) и принимающем (VRX-Backpack). Запускаю ExpressLRS-скрипт в пульте, перехожу в раздел "WiFi Connectivity" и по очереди пробую запустить пункты "Enable Backpack WiFi" и "Enable vRX WiFi". В ответ на это в ExpressLRS-конфигураторе появляются необходимые устройства. Работает!

Конечно же пробую обновить прошивки еще раз через WiFi, чтобы окончательно убедиться в работоспособности всего хозяйства:)

По функционалу замечаний нет. Запустил ExpressLRS-скрипт в пульте, выбрал канал в разделе "VTX Administrator" и он включается и у модели, и в очках, если в настройках модели включена телеметрия.

На этом можно было бы и завершить, но вскрылась неприятная проблема. При включении очков приемник перескакивает на 8-й канал в любой сетке (уже исправлено). Как-то это не правильно, при включении приемник должен оставаться на последнем выбранном канале. Начал искать сведения о проблеме и наткнулся на этот багрепорт. Проблема возникает только с Rapidfire-приемником. Следуя по ссылкам, прихожу к запросу на изменение кода, исправляющее проблему. Обновляю прошивку для EP82-Backpack с патчем из этого запроса.

Вот, только после этого все окончательно нормально заработало! Можно закрыть приемник крышкой и забыть об этом дополнительном модуле:)

В будущем хотелось бы иметь переключение каналов при смене модели в пульте, чтобы управление видеоустройствами было частью функционала "Model Match".