ТЕХНИЧЕСКОЕ РУКОВОДСТВО — СПРАВОЧНИК

ДОКУМЕНТАЦИЯ

ТЕХНИЧЕСКАЯ ДОКУМЕНТАЦИЯ — ВОЛКОВ

Исчерпывающее руководство · Расширенная настройка · Справочник модулей

Полное техническое руководство системы Volkov UAV Control. Охватывает все модули интерфейса, протоколы связи MSP, внутреннюю архитектуру и систему плагинов для разработчиков.

01 Панель управления 02 Pre-Arm 03 Моторы 04 Прошивка 05 UART 06 OSD 07 PID 08 Реал-тайм 09 Миссия 10 CLI 11 Flasher 12 Blackbox 13 Diff/Backup 14 LUA 15 Маркетплейс 16 Dev Plugins
МОД-01

Панель управления

Главный интерфейс мониторинга — телеметрия в реальном времени

Панель управления — Volkov UAV

Главный интерфейс системы для мониторинга квадрокоптера на рабочем столе (bench) или в режиме подключения через MAVLink/Wi-Fi.

Функции и возможности

  • Индикатор положения (Авиагоризонт): Отображает углы Roll, Pitch и Yaw. Приложение непрерывно опрашивает FC через пейлоад MSP_ATTITUDE. Пространственные отклонения в интерфейсе указывают на инерциальные сбои MPU6000 или аналогичного гироскопа.
  • Монитор батареи и потребления: Данные по амперажу и ячейкам в реальном времени получаются через MSP_ANALOG. Служит ранним предупреждением при нестабильном напряжении PDB.
Операционная заметка Только для чтения (Read-Only). Не изменяет данные дрона — используется как основной ситуационный диагностический инструмент после подключения по USB или Serial.
МОД-02

Проверка Pre-Arm

Валидация безопасности перед взлётом

Проверка Pre-Arm — Volkov UAV

Блок, определяющий, разрешит ли микроконтроллер ESC начать последовательность оборотов. Дрон не будет армирован, если хотя бы один флаг в красном состоянии.

Распространённые аппаратные блокировки (флаги)

ФлагЗначениеКак исправить
CLI_ACTIVE FC находится в режиме командной строки. Закройте вкладку CLI, отключитесь или введите exit.
NOPREARM Отсутствует валидация безопасного взлёта. Проверьте переключатель "Pre-Arm" на вашем пульте управления.
CALIBRATING Гироскопы всё ещё калибруются. Держите аппарат плоско и неподвижно. Нажмите Calibrate ACC и повторите попытку.

Элементы управления действиями

Кнопки Calibrate ACC (Акселерометр) и Calibrate MAG (Магнетометр) отправляют импульсы MSP_ACC_CALIBRATION. Калибровку необходимо проводить на строго горизонтальной поверхности — это значение влияет на расчёт PID Angle (стабилизированный полёт).

МОД-03

Тест моторов

Управление DSHOT — проверка вращений и Motor Mapping

Тест моторов — Volkov UAV

Этот режим позволяет отправлять явные PWM-прерывания каждому мотору дрона для тестирования вращений, состояния подшипников и порядка моторов (Motor Mapping).

⚠ Опасность — снимите пропеллеры Активация этих каналов подаёт реальный ток на Power Distribution Board и запустит моторы без активного PID-цикла. Снимите все пропеллеры перед перемещением ползунка — это может причинить вред людям и имуществу.

Техническое функционирование

Кнопка подтверждения отключает маску безопасности протокола. При перемещении ползунка любого мотора система отправляет MSP_SET_MOTOR, упакованный в 16 бит, для регулировки ускорения в наносекундах (PWM) или цифровых команд через протокол DShot.

Реверс мотора: Можно изменить направление вращения мотора без перепайки кабелей ESC — используется возможность реверса прошивки BLHeli/Bluejay.

МОД-04

Основная конфигурация

Обнаружение и анализ базовой прошивки контроллера полёта

Прошивка — Volkov UAV

Обнаруживает и отображает версию базового микроконтроллера. Показывает жизненно важные схемы используемого Target и варианта (INAV или BTFL). В зависимости от этих схем последующие окна изменятся, чтобы избежать инъекции нестабильных команд (INAV использует совершенно иную индексированную карту PID, чем Betaflight).

Автоматическое определение Система отправляет запросы MSP_API_VERSION, MSP_FC_VARIANT и MSP_FC_VERSION при начальном подключении. Создание профиля прошивки происходит полностью прозрачно для пользователя.
МОД-05

Назначение портов (UART)

Маршрутизация периферии — STM32 F4/F7/H7

Порты UART — Volkov UAV

Модуль маршрутизированной конфигурации. Процессоры STM32F4/F7/H7 имеют физические порты (Передатчик/Приёмник или TX/RX).

Настраиваемая периферия

ТипФизический примерТребуемый Baud Rate
Serial RX Приёмник ELRS, Crossfire или SBUS 115200 до 400000+
GPS / Сенсор GPS-модуль (Beitian, Matek) 57600 или 115200
VTX / SmartAudio TBS Unify, Rush Tank (аналоговый) Определяется протоколом IRC Tramp
Критическое предупреждение Отключение протокола MSP на вашем VCP (USB) заблокирует доступ к плате и потребует перепрошивки. При сохранении Volkov генерирует последовательный пейлоад MSP_SET_SERIAL_CONFIG, требующий перезагрузки платы (Reboot) для применения.
МОД-06

Визуальный редактор OSD

Drag-and-drop для проектирования On-Screen Display FPV

Редактор OSD — Volkov UAV

Утилита drag-and-drop для проектирования компоновки интерфейса On-Screen Display, накладываемого на видеопоток FPV-камеры.

Как влиять на значения

Canvas точно симулирует стандартную аналоговую видеоматрицу MAX7456 или цифровую (Canvas Mode для Walksnail/DJI). Сетка отображается в координатах X,Y.

Добавляйте или перемещайте элементы, такие как напряжение батареи, таймер полёта или авиагоризонт. При сохранении Volkov вычисляет математические смещения и молча инъектирует их через серию терминальных команд set osd_vbat_pos = X... в CLI.

МОД-07

Настройка PID

Пропорциональный, интегральный и дифференциальный регуляторы — динамика полёта

Настройка PID — Volkov UAV

Сердце динамики полёта мультироторного аппарата. Управляет реакцией пропорциональных регуляторов в коде дрона на внешние воздействия.

Что означает каждый параметр?

  • P (Пропорциональный): Грубая корректирующая сила. Насколько агрессивно дрон будет стремиться к наклону, который задаёт стик. Слишком высокое значение: дрон быстро вибрирует (высокочастотные колебания).
  • I (Интегральный): Математическая память. Исправляет накопленные ошибки со временем — порывы ветра, гравитационный дисбаланс. Слишком низкое: дрон дрейфует под действием инерции.
  • D (Дифференциальный): Предиктивный гаситель движения. Предугадывает направление инерции и мягко тормозит, избегая отскоков при резком отпускании стика. Слишком высокое — моторы перегреются!
МОД-08

Настройка в реальном времени

Real-Time Tuning — изменения в полёте без записи в EEPROM

Real-Time Tuning — Volkov UAV

Продвинутый экспериментальный модуль. Позволяет изменять значения P-I-D в воздухе без необходимости открывать тяжёлый интерфейс и без записи в EEPROM (статическую память).

Оперативное преимущество При подключении Volkov UAV System через Wi-Fi телеметрию к совместимому приёмнику (ESP8266 VTX или RX-Wifi), Slider интерактивно отправляет команду, и изменения вступают в силу мгновенно во время планирования на малой высоте или реального теста колебаний.
МОД-09

Планировщик миссий

Только INAV — автономный полёт GPS/Глонасс

Планировщик миссий — Volkov UAV

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

Функциональное взаимодействие

  • Создание: С помощью интерактивной спутниковой картографии (Leaflet.js + OpenStreetMap) нажмите правую кнопку мыши для вставки точных координат (Широта/Долгота). Перетаскивайте точки для изменения позиции.
  • Атрибуты стратегических точек: Меню под картой позволяет выбрать действие: переход к точке (WAYPOINT), зависание (HOLD_TIME) или возврат домой (RTH).
  • Экспорт координат: После завершения картирования миссии записываются в буфер EEPROM INAV. Мультиротор выполнит её по переключателю (режим AUTO-NAV).
МОД-10

Терминал CLI

Прямой доступ к ядру микропроцессора — командная строка

Терминал CLI — Volkov UAV

Неограниченный прямой доступ к ядру и главному терминалу микропроцессора. При открытии консоли Volkov прерывает бинарный парсер MSP, вводя последовательность # для перехода в синхронный дамп строк.

Здесь инженер/пилот может запрашивать расширенные листинги памяти командами вроде tasks (просмотр загрузки CPU), взаимодействовать через diff all или применять специфические фильтры, недоступные в графическом интерфейсе.

Команда сохранения После внесения изменений необходимо ввести команду save для записи во FLASH. Без этого шага изменения будут потеряны при перезагрузке платы.
МОД-11

Установщик прошивки

Flasher с защитой Anti-Brick — протокол DFU

Flasher прошивки — Volkov UAV

Критический модуль для стирания и записи полной операционной системы в микропроцессор STM по протоколу DFU (Device Firmware Upgrade).

Системная аналитическая защита (Anti-Brick)

Volkov имеет валидатор, который динамически считывает официальный Target из REST API реестра Github (например: SPEEDYBEEF405). Выпадающий список принудительно предотвращает установку неверного целевого объекта.

Устройство DFU не обнаружено Если чип не найден ("No DFU Device"), нажмите кнопку DFU, расположенную непосредственно на плате управления, и подключите USB удерживая кнопку, чтобы войти в режим записи FLASH.
МОД-12

Просмотрщик Blackbox

Инспектор BBL-логов — криминалистический анализ полёта

Просмотрщик Blackbox — Volkov UAV

Полёт дрона оставляет огромный след необработанных математических метрик (ударные G-силы, резонансы, внутренний электрический шум), обычно записываемых на карту памяти SD или встроенную FLASH 16МБ — известные как BBL-логи.

В отличие от устаревших систем, Volkov служит щитом между необработанными бинарными данными и графическим представлением, требуя выполнения нативной зависимости blackbox_decode (C++), предотвращая отображение ложных аномалий или симулированных артефактов.

Анализ неконтролируемых полётов При обнаружении механических неисправностей или необъяснимых "flyaway", Чёрный ящик покажет точный математический цикл, где P, I, D вышли за пределы нормы.
МОД-13

Diff и резервное копирование

Диффенциальный аудит — резервирование и клонирование профилей

Diff и Backup — Volkov UAV

Система, извлекающая надёжную резервную копию через текстовый последовательный или USB-интерфейс. Инструмент запускает в фоне diff all и перехватывает различия, внесённые инженером, относительно заводских настроек производителя.

Генерирует компактные файлы, позволяющие воспроизводить целые профили или "клонировать" программную идентичность одного дрона на другой парк, не затрагивая неизменённые конфигурации.

МОД-14

Редактор LUA и передача

IDE с синтаксисом OpenTX/EdgeTX — передача V-FAT на пульт

Редактор LUA — Volkov UAV

Среда IDE с подсветкой синтаксиса, ориентированная на асинхронные LUA-скрипты для пультов управления (таких как Radiomaster Boxer или TX16S).

Механизм удалённой загрузки (V-FAT Upload)

После завершения сложного редактирования (например скрипт, читающий CRSF-телеметрию Crossfire на вашем экране), Volkov фрагментирует весь код на асинхронные блоки (Chunked Payload Structs) и через команду MSP_SDCARD_WRITE отправляет пакет за пакетом через интерфейс дрона на реальную SD-карту в её директорию (/SCRIPTS/TELEMETRY/).

МОД-15

Маркетплейс плагинов

Экосистема масштабируемых модулей — сообщество разработчиков

Маркетплейс плагинов — Volkov UAV

Экосистема масштабируемых и автоматически загружаемых модулей, размещённых на наших асинхронных серверах, значительно расширяющих возможности наземной станции управления.

  • Живая структура: Плагины извлекаются по требованию централизованно с plugins.volkov.uy, обрабатывая стабильные спецификации или метаданные локального репозитория.
  • Система инъекции: Кнопка Load Local Plugin... позволяет устанавливать файлы в нативном коде (Python *.py), хранящиеся в внутренней директории ПО (src/plugins/community/), где они интегрируются в Volkov Plugin Manager.
МОД-16

Руководство по разработке плагинов

Официальный API для разработчиков — архитектура, сигналы и публикация

Добро пожаловать в официальную документацию для разработчиков. Система плагинов Volkov позволяет перехватывать телеметрию, управлять командами Serial/MSP и добавлять графические интерфейсы без изменения базового кода конфигуратора.

1. Архитектура и минимальная структура

Локальные плагины размещаются по пути: src/plugins/community/<имя_плагина>.py

Volkov использует архитектуру частичной горячей загрузки через PluginManager. При запуске приложение сканирует путь и инициализирует классы, определённые в файле.

python
class MyCustomPlugin:
    def __init__(self, controller, translator):
        # Manager внедряет FlightController и Translator
        self._controller = controller
        self._translator = translator

    def get_name(self) -> str:
        """Возвращает человекочитаемое название плагина для интерфейса."""
        return "My Custom Plugin"

    # --- Опциональные ---
    def get_ui_widget(self):
        """Возвращает QWidget из PySide6 для встраивания во вкладку."""
        return None

    def get_msp_handlers(self) -> dict:
        """Возвращает dict, сопоставляющий ID команды MSP с callback."""
        return {}

2. Доступный API

Объект controller (FlightController): Главная точка входа для общения с дроном.

  • controller.is_connected() -> bool: Проверяет активное соединение.
  • controller.send_msp_command(id, payload): Позволяет отправлять произвольные бинарные команды.
  • controller.telemetry_updated и connection_changed: Qt-сигналы для подписки.

Определение визуального интерфейса (get_ui_widget)

python
def get_ui_widget(self):
    from PySide6.QtWidgets import QWidget, QVBoxLayout, QPushButton

    widget = QWidget()
    layout = QVBoxLayout(widget)
    btn = QPushButton("Выполнить действие!")
    btn.clicked.connect(self._my_action)
    layout.addWidget(btn)
    return widget

Подписка на MSP-сообщения (get_msp_handlers)

python
def get_msp_handlers(self) -> dict:
    return {
        108: self._on_attitude_received  # MSP_ATTITUDE
    }

def _on_attitude_received(self, data: dict):
    print(f"Текущий угол тангажа: {data.get('pitch')}")

3. Функциональный пример: Battery Logger

Плагин, пассивно записывающий телеметрические данные и сохраняющий их в CSV при завершении сессии.

python
from datetime import datetime

class BatteryLoggerPlugin:
    def __init__(self, controller, translator):
        self.controller = controller
        self.last_voltage = 0.0
        if self.controller:
            self.controller.telemetry_updated.connect(self._on_telem)
            self.controller.connection_changed.connect(self._on_conn)

    def get_name(self) -> str:
        return "CSV Battery Logger"

    def _on_telem(self, data: dict):
        if "voltage" in data:
            self.last_voltage = data["voltage"]

    def _on_conn(self, is_connected: bool):
        if not is_connected and self.last_voltage > 0:
            with open("battery_log.csv", "a") as f:
                now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                f.write(f"{now},{self.last_voltage}\n")
            self.last_voltage = 0.0

4. Процесс публикации в каталоге

  • Разместите плагин: Загрузите файл на Github, Gitlab или Gist. Получите URL, заканчивающийся на .py в сыром виде (raw).
  • Создайте PR в JSON-каталог: Перейдите в репозиторий volkov-plugins и добавьте объект в catalog.json, указав переменную download_url.
json
{
    "name": "My Custom Plugin",
    "author": "Your Name / Github",
    "version": "1.0.0",
    "description": "Краткое описание того, что делает плагин.",
    "tags": ["telemetry", "gps"],
    "stable": true,
    "license": "MIT",
    "installed": false,
    "download_url": "https://raw.githubusercontent.com/user/plugin/main/plugin.py"
}
Best practices Ограничивайте асинхронные callback'и, чтобы не блокировать глобальный поток serial_reader. Весь код, обновляющий UI в QObjects, должен быть отправлен через QMetaObject.invokeMethod, если он выполняется вне главного GUI-потока.