Drone X

Радиоканал ELRS 4.x и failsafe

8 блок(ов) теории · 11 заданий · 145 баллов

Команда доходит от стика до мотора за миллисекунды — но только пока жив радиолинок. ExpressLRS (ELRS) — открытый радиостек пульта и приёмника: обе стороны летают на одной открытой прошивке сообщества, без проприетарных утилит. «Мини» работает в полосе 2,4 ГГц — той же, что Wi-Fi: на этой частоте антенна короткая, в считанные сантиметры, а на 32-граммовом whoop длинной антенне негде жить. Третья причина — скорость: packet rate (частота пакетов) на 2,4 ГГц — 250–500 пакетов в секунду, режимы Lua — D250 и D500; чем чаще пакеты, тем короче путь от «шевельнул стик» до «дрон повернул».

Радиолинок симметричен: пульт шлёт команды, приёмник возвращает телеметрию. Схема тракта — на диаграмме: Lua-скрипт пульта задаёт параметры связи, эфир несёт пакеты, приёмник на плате AIO отдаёт каналы полётнику по UART и докладывает назад качество связи. Модуль разбирает каждый элемент тракта по отдельности — и собирает его обратно в терминальных заданиях.

Радиотракт ELRS: Lua-скрипт пульта (PACKET_RATE, SWITCH_MODE, Save; BIND_PHRASE только для чтения — зашита при прошивке) → пакеты 250–500 Гц на 2,4 ГГц → приёмник ELRS на AIO (антенна → чип → UART, CRSF 16 каналов × 11 бит) → обратная телеметрия LQ/RSSI; при потере сигнала — Stage 1 500 мс → Stage 2 Drop

Связь начинается с binding phrase — «пароля» радиолинка; с ним вы познакомились при бинде «Мини» (модуль 7, шаг s08 гайда /build/mini-whoop). Задаётся фраза при прошивке — обе стороны радиолинка прошиваются с одинаковой фразой: пультовый TX-модуль и приёмник (RX) — в конфигураторе при перепрошивке, у приёмника есть и WebUI. В Lua-скрипте (Lua-скрипт ELRS — меню настройки радиостека прямо на экране пульта) фраза видна, но поле BIND_PHRASE — только для чтения: менять его там нельзя, можно лишь сверить, какая фраза зашита. Из фразы обе стороны выводят одинаковые параметры радиоканала, поэтому совпавшие фразы дают автоматическую связь: кнопка бинда не нужна. Не совпали — приёмник «глух» к этому пульту, и «фразой на включении» это не лечится: фраза живёт в прошивке, меняется только перепрошивкой.

В том же Lua-скрипте живут настраиваемые соседи фразы: PACKET_RATE — частота пакетов (D250/D500); SWITCH_MODE — способ упаковки тумблерных каналов AUX (auxiliary, вспомогательные; Wide — больше тумблеров в эфире). Поменяли — нажмите Save, и параметры применятся прошивкой. Ровно этот маршрут — открыть Lua, задать PACKET_RATE и SWITCH_MODE, сверить read-only BIND_PHRASE, сохранить — вы пройдёте в терминальном задании модуля.

Приёмник разговаривает с пультом и в обратную сторону — это телеметрия. Два главных показателя. LQ (link quality, качество связи, %) — доля доставленных пакетов: сколько из отправленных дошло до приёмника. RSSI (received signal strength indicator, индикатор мощности принятого сигнала, дБм) — насколько мощный сигнал дошёл; дБм — логарифмическая шкала с отрицательными числами, и чем ближе значение к нулю, тем мощнее сигнал. Учебная шкала курса для ориентировки, не норматив: −40 дБм — сигнал мощный, дрон рядом; −100 — связь на грани пропадания.

Дальность и качество — не одно и то же, поэтому важны оба показателя. Сигнал может оставаться мощным, но пакеты начнут теряться от помех: RSSI хороший, а LQ падает — и стики «дёргаются». Может быть и наоборот: слабый, но чистый канал, где почти каждый пакет доходит. Именно эту пару вы посчитаете кодом: статистику ряда RSSI и экспоненциальное сглаживание LQ.

Значения каналов едут от приёмника к полётнику по UART (последовательная шина из модуля 7) в протоколе CRSF (Crossfire serial protocol — последовательный протокол радиоприёмников TBS/ELRS). Пакет RC_CHANNELS несёт 16 каналов, и каждый упакован в 11 бит: 16 × 11 = 176 бит = 22 байта полезной нагрузки. 11 бит — значения 0…2047; рабочий диапазон канала CRSF — 172–1811, где 172 — минимум газа, а центр — около 992. Биты идут сплошным потоком little-endian — начиная с младшего бита первого байта; канал 1 занимает биты 0–10. Разобрать такой пакет по битам — кодовое задание модуля.

Тот же тракт отвечает и за задержку. При packet rate 500 Гц пакет приходит каждые 2 мс; ещё около 1 мс — передача значения по UART; около 0.5 мс — обработка команды ESC (регулятором оборотов из модуля 3). Итого ≈ 3.5 мс от стика до мотора. Числа оценочные, порядок важен: путь команды короче, чем реакция человека на картинку, — поэтому радиостек выбирают в том числе по частоте пакетов.

Самый важный вопрос модуля: что будет, когда пульт умрёт в воздухе. Без настроенного failsafe (поведение полётника при потере сигнала) дрон честно держит последние принятые команды: газ остался каким был — аппарат уносит по прямой, пока не сядет батарея. Поэтому failsafe настраивают до первого полёта. Схема двухступенчатая: Stage 1 — прошивка ждёт заданную задержку (в заданиях — 500 мс): вдруг помеха пройдёт и сигнал вернётся; не вернулся — Stage 2 исполняет выбранную процедуру.

Курсовой вариант — Drop: по истечении Stage 1 моторы останавливаются мгновенно, аппарат падает (плавное снижение с малым газом — отдельная процедура Land, не Drop). Вариант автопилота ArduPilot — RTL (return to launch, возврат к точке взлёта): аппарат сам летит домой — это тема модуля 11. Проверка процедуры проста и в гайде идёт до установки пропов (шаг s08, пропы — только s10, /build/mini-whoop): пульт выключают — и проверяют, что Stage 2 сработала: винты остановились, аппарат не унесло на последнем газу.

Задания

0/11 заданий · 0/145 баллов

1. Почему whoop летает на 2,4 ГГц

10 балл(ов)

Радиостек «Мини» — ExpressLRS 4.x в полосе 2,4 ГГц (реф. mini-whoop#s08, /build/mini-whoop). Выберите вариант, который верно объясняет, почему именно эта полоса удобна для whoop: антенна, packet rate, открытость стека.

1 / 11