MANUAL TÉCNICO — GUÍA DE REFERENCIA

DOCUMENTACIÓN

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

Guía exhaustiva · Configuración avanzada · Referencia de módulos

Manual técnico completo del sistema Volkov UAV Control. Cubre todos los módulos de la interfaz, protocolos de comunicación MSP, arquitectura interna y el sistema de plugins para desarrolladores.

01 Panel de Control 02 Pre-Arm 03 Motores 04 Firmware 05 UARTs 06 OSD 07 PIDs 08 Real-Time 09 Misión 10 CLI 11 Flasher 12 Blackbox 13 Diff/Backup 14 LUA 15 Marketplace 16 Dev Plugins
MOD-01

Panel de Control

Interfaz maestra de monitoreo — Telemetría en tiempo real

Panel de Control — Volkov UAV

Es la interfaz maestra del sistema destinada al monitoreo del cuatricóptero en la mesa de trabajo (bench) o de manera enlazada mediante MAVLink/Wi-Fi.

Funciones y capacidades

  • Attitude Indicator (Horizonte Artificial): Proyecta los giros de Roll, Pitch y Yaw. La aplicación sondea continuamente el FC utilizando el payload MSP_ATTITUDE. Las perturbaciones espaciales en la interfaz revelan fallas inerciales del MPU6000 o giroscopio equivalente.
  • Monitor de Batería y Consumo: Los datos en tiempo real de amperaje y celdas son obtenidos vía MSP_ANALOG. Funciona como alerta temprana si la placa PDB no está entregando voltaje estable.
Nota operacional Es una vista de solo-lectura (Read-Only). No modifica datos en tu dron, sino que sirve como diagnóstico situacional primario tras conectar por USB o Serial.
MOD-02

Chequeo Pre-Arm

Validación de seguridad antes del despegue

Chequeo Pre-Arm — Volkov UAV

Bloque que define si el microcontrolador autorizará a los ESCs a iniciar la secuencia de revoluciones. El dron no se armará si algún flag está en rojo.

Bloqueos de hardware comunes (Flags)

FlagSignificadoCómo corregirlo
CLI_ACTIVE FC está en modo línea de comandos. Cierra la pestaña CLI, desconéctate o escribe exit.
NOPREARM Falta validación de despegue seguro. Verificar el switch de "Pre-Arm" en tu radio de control principal.
CALIBRATING Los giroscopios siguen calibrándose. Mantén la aeronave plana e inmóvil. Haz clic en Calibrate ACC e intenta nuevamente.

Controles de acción

Los botones Calibrate ACC (Acelerómetro) y Calibrate MAG (Magnetómetro) mandan pulsos MSP_ACC_CALIBRATION a la matriz. Es crucial realizar la calibración en una superficie 100% nivelada; este valor impacta en el cálculo del PID Angle (vuelo estabilizado).

MOD-03

Prueba de Motores

Control DSHOT — Validación de rotaciones y Motor Mapping

Prueba de Motores — Volkov UAV

Este entorno habilita enviar interrupciones PWM explícitas a cada motor del dron para testear rotaciones, estado de los rodamientos y orden de motores (Motor Mapping).

⚠ Peligro de seguridad — Remover hélices La activación de estos canales inyecta corriente real al Power Distribution Board e iniciará los motores sin el PID loop habilitado. Remueve todas las hélices físicas antes de deslizar la barra o causará daños humanos y a la propiedad.

Funcionamiento técnico

El botón de aceptación deshabilita la máscara de seguridad del protocolo. Al arrastrar el control de cualquier motor individual, el sistema envía un MSP_SET_MOTOR empaquetado en 16-bits para ajustar la aceleración en nanosegundos (PWM) u órdenes digitales vía protocolo DShot.

Reverso de motor: Puedes hacer que un motor rote hacia el lado contrario sin desoldar los cables del ESC. Hace uso de la reversibilidad del firmware BLHeli/Bluejay.

MOD-04

Configuración Principal

Detección y análisis del firmware base del controlador de vuelo

Base de Firmware — Volkov UAV

Detecta y detalla la versión base del microcontrolador conectado. Muestra esquemas vitales del Target utilizado y la variante (INAV o BTFL). Dependiendo de estos esquemas, las siguientes ventanas cambiarán para evitar inyectar comandos inestables (INAV utiliza un mapa PID indexado radicalmente distinto a Betaflight).

Detección automática El sistema emite peticiones MSP_API_VERSION, MSP_FC_VARIANT y MSP_FC_VERSION en la conexión inicial. La instanciación del perfil de firmware es completamente transparente para el usuario.
MOD-05

Asignación de Puertos (UARTs)

Enrutamiento de periféricos — STM32 F4/F7/H7

Puertos UART — Volkov UAV

Módulo de configuración enrutada. Los procesadores STM32F4/F7/H7 cuentan con puertos físicos (Transmisor/Receptor o TX/RX).

Periféricos a configurar

TipoEjemplo físicoBaud Rate requerido
Serial RX Receptor ELRS, Crossfire o SBUS 115200 a 400000+
GPS / Sensor Módulo GPS (Beitian, Matek) 57600 o 115200
VTX / SmartAudio TBS Unify, Rush Tank (analógico) Definido por IRC Tramp
Advertencia crítica Deshabilitar el protocolo MSP en tu VCP (USB) te excluirá de la placa y necesitará un flasheo de puente. Al guardar, Volkov genera un payload secuenciado MSP_SET_SERIAL_CONFIG que requiere reinicio de placa (Reboot) para aplicar.
MOD-06

Editor de OSD Visual

Drag-and-drop para el diseño del On-Screen Display FPV

Editor OSD — Volkov UAV

Utilidad de drag-and-drop para diseñar la distribución de la interfaz On-Screen Display superpuesta al feed de vídeo (cámara FPV).

Cómo incidir en los valores

El canvas simula exactamente la matriz de vídeo analógica estándar MAX7456 o digital (Canvas Mode para Walksnail/DJI). La cuadrícula está mapeada por coordenadas X,Y.

Añade o manipula items como Voltaje de Batería, Timer de Vuelo o Horizonte Artificial. Al guardar, Volkov calcula los offsets matemáticos y los inyecta a través de una serie de terminales set osd_vbat_pos = X... en la CLI de manera completamente silenciosa.

MOD-07

Afinación de PIDs

Controladores Proporcional, Integral y Derivativo — Dinámica de vuelo

Ajuste PID — Volkov UAV

El corazón de la dinámica de vuelo de un multirrotor. Manipula la reacción de los controladores proporcionales en el código del drone a los estímulos externos.

¿Qué significa cada modificador?

  • P (Proporcional): Fuerza bruta correctiva. Cuánto intentará el dron acercarse a la inclinación que tu stick le pide. Demasiado alto: el dron vibra rápidamente o enmudece frenéticamente (oscilación de alta frecuencia).
  • I (Integral): Memoria matemática. Corrige los errores acumulados a lo largo del tiempo — ráfagas de viento, desequilibrio de gravedad. Muy bajo: el drone arrastra (drift) su posición con inercia.
  • D (Derivada): Amortiguador del movimiento predictivo. Adivina a dónde va la inercia y aplica frenos suaves para evitar "bounce backs" al soltar el stick. ¡Muy alto provoca que los motores se prendan fuego por temperatura!
MOD-08

Afinación en Tiempo Real

Real-Time Tuning — Cambios en vuelo sin flashear EEPROM

Real-Time Tuning — Volkov UAV

Módulo avanzado y experimental. Facilita cambiar los valores P-I-D por aire sin necesidad de tocar la interfaz pesada y sin flashear a EEPROM (memoria estática).

Ventaja operacional Al conectar Volkov UAV System por Telemetría Wifi a un receptor compatible (ESP8266 VTX o receptor RX-Wifi), el Slider envía interactivamente el comando y permite que los cambios entren vigentes instantáneamente durante el planeo a pocos metros del suelo o un test de oscilación real.
MOD-09

Planificador de Misión

Exclusivo INAV — Vuelo autónomo GPS/Glonass

Planificador de Misión — Volkov UAV

Genera perfiles de vuelo totalmente autónomos donde el multirrotor utiliza un receptor Satelital GPS/Glonass y sensores barométricos para rutear el camino sin asistencia del piloto.

Interacción funcional

  • Generación: Usando la cartografía satelital interactiva (Leaflet.js + OpenStreetMap), se hace Clic-Derecho para insertar coordenadas exactas (Latitud/Longitud). Modifica gráficamente su posición haciendo Drag & Drop en el punto.
  • Atributos de puntos estratégicos: El menú bajo el mapa permite seleccionar si la acción enviada representará ir al punto (WAYPOINT), quedarse suspendido (HOLD_TIME) o retornar a casa (RTH).
  • Exportación de coordenadas: Al finalizar un mapeo rural o civil, estas misiones se escriben en bloques limitados al buffer EEPROM de INAV. El multi-rotor la ejecutará bajo switch (Modo AUTO-NAV).
MOD-10

Terminal CLI

Acceso bruto al núcleo del microprocesador — Command Line Interface

Terminal CLI — Volkov UAV

Acceso bruto e irrestricto al núcleo y terminal madre del microprocesador. Al abrir la consola, Volkov interrumpe el parser binario de MSP dictando mediante la secuencia # entrar en un volcado sincrónico de strings.

Aquí el ingeniero/piloto puede pedir listados de memoria avanzados tipeando comandos como tasks para ver CPU Load, interactuar mediante diff all o corregir un giro de motor aplicando filtros específicos que no constan en la interfaz gráfica principal.

Comando de guardado Tras realizar ediciones se requiere terminar introduciendo el comando save para grabar a FLASH. Sin este paso, los cambios se pierden al reiniciar la placa.
MOD-11

Instalador de Firmware

Flasher con sistema Anti-Brick — Protocolo DFU

Flasher de Firmware — Volkov UAV

Módulo crítico enfocado a borrar y escribir un Sistema Operativo completo en el microprocesador STM usando protocolo DFU (Device Firmware Upgrade).

Protección sistémica analítica (Anti-Brick)

Volkov cuenta con un validador que requiere leer dinámicamente desde el sub-registro REST API de Github el Target oficial (Ejemplo: SPEEDYBEEF405). El Dropdown restringe forzosamente que no instales un objetivo equivocado.

Sin dispositivo DFU detectado Si el chip no es encontrado ("No DFU Device"), debes presionar el botón de inicio de DFU montado directamente en tu PCB y proceder a conectar el USB manteniéndolo presionado para lograr enrutar la memoria FLASH.
MOD-12

Visor Blackbox

Inspector de logs BBL — Análisis forense de vuelo

Visor Blackbox — Volkov UAV

El vuelo en drones deja un rastro inmensurable de métricas matemáticas en bruto (G-Forces de impacto, resonancias y ruido eléctrico interno) habitualmente grabados a una memoria SD o FLASH de 16MB nativa, conocidos como Logs BBL.

A diferencia de sistemas antiguos, Volkov hace de escudo entre binarios crudos sin resolución matemática, exigiendo la dependencia ejecutada del ecosistema blackbox_decode externo nativo oficial (C++), impidiendo que se representen gráficamente anomalías espúreas o heurísticas simuladas y falsas.

Análisis de flyaways Si detectas fallos mecánicos o "flyaways" sin explicación alguna, la Caja Negra responderá dónde el P, I, D ha desbordado en su ciclo matemático exacto.
MOD-13

Diff y Backup

Gestor de auditoría diferencial — Resguardo y clonación de perfiles

Diff y Backup — Volkov UAV

Sistema que extrae vía interfaz textual serial o USB un resguardo seguro. La herramienta corre tras bastidores diff all e intercepta las diferencias generadas por el ingeniero y su hardware respecto al sistema por defecto del fabricante.

Genera archivos compactos que permiten reproducir perfiles enteros o "clonar" la identidad programática de un dron y calcarla en otra flota secundaria, sin escribir sobre configuraciones ajenas inalteradas.

MOD-14

Editor LUA y Transferencia

IDE con sintaxis OpenTX/EdgeTX — Transferencia V-FAT al radiocontrol

Editor LUA — Volkov UAV

Entorno IDE con resaltado de sintaxis enfocado a scripts asincrónicos LUA destinados a controles de mando de Radiocomando (Mandos como Radiomaster Boxer o TX16S).

Mecanismo de subida remoto (V-FAT Upload)

Cuando finalizas una edición compleja (por ejemplo un script que lea la telemetría CRSF del receptor crossfire de tu pantalla), Volkov fragmentará todo el texto en bloques asíncronos (Chunked Payload Structs) y mediante el comando MSP_SDCARD_WRITE enviará paquete a paquete la lectura a través de la interfaz del drone para guardarlos crudos a la tarjeta SD en su directorio estipulado (/SCRIPTS/TELEMETRY/).

MOD-15

Marketplace de Plugins

Ecosistema de módulos escalables — Comunidad de desarrolladores

Marketplace de Plugins — Volkov UAV

Ecosistema de módulos escalables y auto-descargables alojados en nuestros servidores asíncronos que amplían dramáticamente las capacidades del control de tierra.

  • Estructura viva: Los plugins se extraen on-demand de manera centralizada desde plugins.volkov.uy procesando sus especificaciones estables o metas del repositorio local.
  • Sistema de inyección: El botón Load Local Plugin... permite instalar ficheros en código nativo (Python *.py) que se alojan en el directorio interno del software (src/plugins/community/) y se adhieren a la instancia general del Volkov Plugin Manager.
MOD-16

Guía de Desarrollo de Plugins

API oficial para desarrolladores — Arquitectura, señales y publicación

Bienvenido a la documentación oficial para desarrolladores. El sistema de plugins de Volkov te permite interceptar telemetría, manipular comandos Serial/MSP y agregar interfaces gráficas sin modificar el código base del configurador.

1. Arquitectura y estructura mínima

Los plugins locales se alojan en la ruta: src/plugins/community/<nombre_del_plugin>.py

Volkov utiliza una arquitectura de hot-loading parcial a través del PluginManager. En el inicio, la aplicación escanea la ruta e inicializa las clases definidas en el archivo.

python
class MiCustomPlugin:
    def __init__(self, controller, translator):
        # El manager inyecta el FlightController y el Translator
        self._controller = controller
        self._translator = translator

    def get_name(self) -> str:
        """Devuelve el nombre humano del plugin para la interfaz."""
        return "Mi Custom Plugin"

    # --- Opcionales ---
    def get_ui_widget(self):
        """Retorna un QWidget de PySide6 para empotrarse en una Tab."""
        return None

    def get_msp_handlers(self) -> dict:
        """Retorna un dict mapeando un ID de comando MSP a un callback."""
        return {}

2. API disponible

El objeto controller (FlightController): Tu principal punto de entrada para hablar con el dron.

  • controller.is_connected() -> bool: Comprueba si hay conexión activa.
  • controller.send_msp_command(id, payload): Permite enviar comandos binarios arbitrarios.
  • controller.telemetry_updated y connection_changed: Señales Qt a las que suscribirse.

El objeto translator: Soporte multi-idioma mediante diccionarios i18n incrustados.

Definición de interfaz visual (get_ui_widget)

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

    widget = QWidget()
    layout = QVBoxLayout(widget)
    btn = QPushButton("¡Haz algo!")
    btn.clicked.connect(self._mi_accion)
    layout.addWidget(btn)
    return widget

Suscripción a mensajes 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"Alabeo actual: {data.get('pitch')}")

3. Ejemplo funcional: Battery Logger

Plugin que graba pasivamente los datos telemétricos y los vuelca en un CSV al finalizar la sesión.

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. Proceso de publicación en catálogo

  • Hostea tu plugin: Sube tu archivo a Github, Gitlab o Gist. Obtén la URL terminada en .py en bruto (raw).
  • Haz un PR al catálogo JSON: Dirígete al repositorio volkov-plugins e integra tu objeto en catalog.json declarando la variable download_url dinámica hacia tu archivo.
json
{
    "name": "Mi Custom Plugin",
    "author": "Tu Nombre / Github",
    "version": "1.0.0",
    "description": "Descripción breve de lo que hace el plugin.",
    "tags": ["telemetry", "gps"],
    "stable": true,
    "license": "MIT",
    "installed": false,
    "download_url": "https://raw.githubusercontent.com/tu-usuario/mi-plugin/main/plugin.py"
}
Best practices Limita los callbacks asíncronos para no bloquear el hilo serial_reader global. Todo código que emita actualizaciones a la UI en QObjects debe enviarse primero a QMetaObject.invokeMethod si ocurre fuera del main GUI thread.