Симптом: Raspberry Pi подключена к полётному контроллеру, но Mission Planner не видит аппарат по UDP, параметры не скачиваются или поток пропадает при смене Wi-Fi. В обратной ситуации QGroundControl подключается, а Mission Planner — нет. Это не одна «настройка Raspberry Pi»: нужно разделить питание, UART, MAVLink на борту, маршрутизатор и UDP-соединение с GCS.

Сначала разложи цепочку по узлам
Если нарушен один узел, внешне симптомы похожи. Поэтому «Pi пингуется» ещё не означает, что на ней есть MAVLink: ping проверяет IP, а не байты от UART. Аналогично, запущенный MAVProxy ещё не доказывает, что Mission Planner получает поток.
Проводка и питание: типовые ошибки
Для примера из официальной схемы TELEM2 автопилота соединяется с GND, TX и RX Raspberry Pi. Передача должна идти перекрёстно: TX автопилота на RX Pi, RX автопилота на TX Pi. Нельзя ориентироваться только на одинаковые подписи на разъёмах: у разных плат маркировка и нумерация могут отличаться.
SERIAL2, но это не универсальное правило для каждой платы и прошивки. Сначала открой pinout и параметрную страницу конкретного FC, затем меняй именно тот SERIALx, который физически связан с нужным UART.Безопасная проверка мультиметром
- Отключи аккумулятор и USB, сними пропеллеры.
- Проверь общий GND и отсутствие короткого замыкания между 5 V и GND.
- Уточни, откуда питается Pi: отдельный BEC, carrier board или USB. Суммируй пиковый ток Pi, камеры, модема и периферии.
- Не подавай одновременно несколько 5 V источников, если плата не предусматривает их OR-ing.
Параметры ArduPilot: сначала порт, потом UDP
Официальный пример для TELEM2 использует MAVLink 2 и скорость 921600:
| Параметр | Пример | Что проверяет |
|---|---|---|
SERIAL2_PROTOCOL |
2 |
MAVLink 2 на выбранном последовательном порту. |
SERIAL2_BAUD |
921 |
921600 бод; значение на Pi и в маршрутизаторе должно совпадать. |
| Физический порт | TELEM2 | Конкретное соответствие TELEM2 ↔ SERIAL2 нужно сверить по FC. |
После изменения параметров сделай перезагрузку автопилота и снова проверь поток. Если ты подключаешься к другому UART, не копируй SERIAL2_* механически: номер должен соответствовать физическому порту.
Настройка UART Raspberry Pi
На Raspberry Pi официальная инструкция предлагает включить аппаратный serial и отключить login shell на нём:
sudo raspi-config # Interface Options → Serial Port # login shell over serial: No # serial port hardware: Yes sudo reboot ls -l /dev/serial0
Ожидаемый результат — доступный алиас /dev/serial0. Если его нет, сначала исправь UART и только потом устанавливай маршрутизатор. Подключение по Wi-Fi само по себе UART не заменяет.
Выбери один маршрут до Mission Planner
Для первичной диагностики достаточно одного процесса, который читает serial и выдаёт UDP. Не запускай одновременно MAVProxy и mavlink-router на одном UART: они будут конкурировать за устройство.
MAVProxy: короткий тест
mavproxy.py --master=/dev/serial0 --baudrate 921600 --aircraft MyCopter # после подтверждения потока добавь выход на IP компьютера с Mission Planner mavproxy.py --master=/dev/serial0 --baudrate 921600 --out=udp:GCS_IP:14550
GCS_IP — адрес компьютера в сети, а 14550 — пример порта. Если Mission Planner настроен на другой порт, значение должно совпадать с ним. В официальной документации ArduPilot также приведён вариант запуска MAVProxy как фонового маршрутизатора и отдельно отмечено, что на слабой Raspberry Pi при высокой нагрузке могут понадобиться альтернативы.
mavlink-router: отдельный маршрутизатор
Этот вариант удобен, когда поток должен стабильно работать как сервис. Синтаксис и имена секций сверяй с версией установленного пакета:
[UartEndpoint to_fc] Device = /dev/serial0 Baud = 921600 [UdpEndpoint mission_planner] Mode = Normal Address = GCS_IP Port = 14550
Официальная документация ArduPilot ссылается на проект mavlink-router для установки и запуска. Не воспринимай пример выше как универсальный готовый конфиг: путь к файлу, права сервиса и названия параметров зависят от пакета и дистрибутива.
Mission Planner по UDP: что должно совпасть
В верхней панели Mission Planner выбери сетевое UDP-соединение и подключись. Для списка соединений официальная документация показывает формат вроде udp://127.0.0.1:14550. При отдельной Raspberry Pi адрес должен указывать на IP Pi или на тот endpoint, который слушает компьютер, в зависимости от режима маршрутизатора.
--out=udp:GCS_IP:14550 означает, что Pi отправляет поток на компьютер. Если GCS сам слушает входящий порт, укажи этот порт в Mission Planner. Не подставляй 127.0.0.1 на компьютере, если MAVLink реально приходит с другой машины.Если процесс на Pi запущен, но параметры не скачиваются, проверь Windows Firewall и IP-адрес компьютера. Mission Planner прямо указывает на firewall как на одну из причин проблем UDP/TCP. Если подключение есть, но команды и параметры не проходят, отдельно проверь MAVLink2 Signing: поток может быть виден, а управление — отвергаться.
Интерактив: где обрывается твоя цепочка
Диагностическое дерево / MAVLink over UDP
Проверь фактический маршрут
Отметь только то, что реально проверено на своей сборке. Дерево остановится на первом блокере и даст следующий шаг.
Есть прогресс и reset
Без этого интерактив не разрешает переход к проверке питания и моторов.
Заполнено: 0 из 6 проверок
Как отличить четыре похожих симптома
| Симптом | Первая проверка | Не делай сразу |
|---|---|---|
| Pi не видит поток в serial | TX/RX/GND, UART-консоль, /dev/serial0, питание. |
Менять UDP-порты и firewall. |
| MAVProxy видит FC, Mission Planner нет | IP компьютера, UDP-порт, firewall Windows. | Менять SERIALx наугад. |
| Mission Planner подключён, параметры не приходят | Signing, маршрутизация, один активный router. | Считать это доказательством исправного управления. |
| Поток обрывается через время | Питание Pi, нагрузка CPU, Wi-Fi и логи сервиса. | Поднимать baudrate без проверки кабеля и помех. |
Критерий успешной проверки
- На Pi стабильно открывается
/dev/serial0и маршрутизатор получает MAVLink без ошибок. - Mission Planner подключается по выбранному UDP-порту и скачивает параметры.
- В окне статистики нет постоянного роста ошибок и потерь.
- Команды проверяются только на снятых пропеллерах; первый реальный полёт выполняется в безопасном режиме и месте.
Источники и связанные материалы
- ArduPilot: Communicating with Raspberry Pi via MAVLink — проводка,
SERIAL2_*, UART, MAVProxy и маршрутизация. - ArduPilot: MAVLink Routing — системы, компоненты, sysid/compid и правила пересылки сообщений.
- Mission Planner: Connect to AutoPilot — UDP/TCP, список соединений, firewall и Signing.
- mavlink-router на GitHub — неофициальный к ArduPilot маршрутизатор MAVLink.
- ArduPilot Discuss: MavLink Routing with a router software — практическое обсуждение выбора маршрутизатора и ограничений MAVProxy на слабых платах.
Сноска 3. Примеры параметров и команд показывают диагностическую цепочку, а не готовую конфигурацию для любого FC. Перед изменениями сверяй версию ArduPilot, pinout платы, тип Raspberry Pi, Linux-дистрибутив и фактический IP компьютера.
