Читать на русском
·
Read this in English
·
阅读中文版
·
Lee esto en español
हिन्दी में पढ़ें
·
اقرأ بالعربية
·
Leia em português
·
Lire en français
Auf Deutsch lesen
·
日本語で読む
·
한국어로 읽기
·
Läs på svenska
Это не мультфильм: вся прошивка ведёт модель самолёта в замкнутом контуре — те же байты iBUS на входе, тот же ШИМ на выходе.
| Что это | Открытый полётный контроллер и автопилот для радиоуправляемых самолётов. Основная плата — STM32H743 (класс плат Pixhawk): на плате DevEBox прошивка уже запущена и управляется с пульта — есть видео, сейчас подключаются датчики. Прежняя основа — ESP32-S3 за ~$10, на ней пройден стенд со всеми датчиками. |
| Что умеет | 12 режимов полёта — от стабилизации до возврата домой, кругов по GPS, запуска с руки, автопосадки и парения в термиках. Трубка Пито из двух дешёвых барометров. Телеметрия MAVLink в QGroundControl и Mission Planner. |
| Мультикоптеры | Та же прошивка — для квадро, гексы, окты, Y6 и X8: описываете раму, винты, моторы и батарею, а PID и фильтры прошивка выводит сама по физической модели. Пока проверено в симуляторе — COPTER.md. |
| Главная фишка | Любой тумблер или крутилка пульта = любая функция. Одна строка в Controls.h — и SwD уже не реверс мотора, а сброс груза. |
| Почему можно верить | 522 автотеста (плюс 9 на самой плате с настоящей SD-картой), 94 % кода под тестами, 33 сборки «плата × датчики» без единого предупреждения, замкнутые симуляции каждого режима. |
| Честно | В воздухе пока был ручной режим (первый прототип). STM32H743 пока проверена на столе, без датчиков. Автопилот проверен на стенде, тестами и симуляциями и ждёт лётных испытаний — статус ниже. |
// include/config/Controls.h
constexpr Binding BINDINGS[] = {
Bind::modes (Channels::SWC, MODE_MANUAL, MODE_STABILIZE, MODE_AUTO_TAKEOFF),
Bind::feature(Channels::SWB, Feature::FLAPS),
Bind::feature(Channels::SWD, Feature::MOTOR_REVERSE),// реверс мотора — только в DISARM
Bind::knob (Channels::VRA, Knob::STAB_GAIN), // "мягче / жёстче" прямо в полёте
Bind::knob (Channels::VRB, Knob::CRUISE_SPEED),
};Хотите на SwD парение в термиках вместо реверса? Bind::mode(Channels::SWD, MODE_SOARING). Сброс груза на SwB? Bind::feature(Channels::SWB, Feature::PAYLOAD_DROP). Ошиблись — например, повесили два режима на один тумблер или заняли стик — сборка не пройдёт: таблицу проверяет компилятор (static_assert). При включении борт сам печатает, что на каком тумблере.
12 режимов · 11 функций · 8 крутилок — всё с примерами в справочнике автопилота.
| Режим | Суть | |
|---|---|---|
| 🕹️ | MANUAL | рули = стики, как без полётника |
| 🧭 | STABILIZE | стик задаёт угол; отпустил — самолёт сам в горизонте |
| 📏 | ALT_HOLD | + держит высоту по барометру |
| 🌀 | ACRO | стик задаёт скорость вращения — для фигур |
| 🛣️ | CRUISE | курс, высота и скорость держатся сами; стики только поправляют |
| ⭕ | LOITER | круги над точкой по GPS (радиус — крутилкой) |
| 🏠 | RTH | домой на 40 м и круги над головой; сам включается при потере связи |
| 🛫 | AUTO_TAKEOFF | взлёт с полосы: хвостовое или носовое колесо, хвост вверх, отрывает крыло |
| 🤾 | LAUNCH | запуск с руки: мотор после броска, набор высоты |
| 🛬 | AUTO_LAND | планирование и выравнивание у земли |
| 🦅 | SOARING | мотор выключен, находит термики и кружит в них |
| 🆘 | RESCUE | «спасите»: крылья ровно, нос вверх — из любой спирали |
Плюс: калибровка самолёта на земле с пульта (горизонт и стояночный угол, этапы — сигналами мотора и рулей), геозабор, автотриммер «кривого» самолёта, координация разворота, защита от сваливания по трубке Пито, закрылки и воздушный тормоз, сброс груза, стабилизированная камера, пищалка «ищите меня в траве».
Не «функция вернула число», а полёт: пульт → кадр iBUS → прошивка → ШИМ → отклонения рулей → модель самолёта с подъёмной силой, сваливанием, ветром и термиками → датчики → снова прошивка. 17 таких полётов — часть обычных тестов (pio test -e native).
Квадро, гекса, окта, Y6, X8 — на тех же платах. PID, фильтры, холостые и расходы руками не подбираются: в CopterConfig.h — рама, винт, мотор, батарея и масса (или готовая сборка из каталога: от вупа 65 мм до гексы с винтами 15"), остальное прошивка выводит сама по модели мотора и винта — с запасом, который держит коптер, у которого тяга и инерция вдвое «не те». В полёте сама учит газ висения и ведёт режекторы за оборотами моторов.
| Режимы | ACRO (airmode), HORIZON, ANGLE, ALT_HOLD; на тумблерах — таблица aux как в Betaflight (по умолчанию ARM — SwA, режим — SwC), порядок каналов — map |
| Настройки как в Betaflight | CLI: set/get/diff/save, 4 PID-профиля и 4 профиля расходов, PID в единицах BF, diff из BF вставляется целиком; описание коптера — тоже настройки; протокол @params/@set для приложения |
| Защиты | ARM только при всех проверках (каждая причина отказа — кодом, как в status BF, и словами), потеря связи → горизонт, снижение и DISARM на земле, переворот и отказ мотора → моторы стоп |
| Регуляторы | PWM, OneShot125/42, Multishot; DShot — следующий этап |
| Полётники | Matek H743, DevEBox H743 и почти любой F405 из-под Betaflight (ICM-42688-P, SPL06/DPS310): распиновку tools/bf_board.py снимает с самой платы — даже если её таргета нет ни в одном репозитории; родная прошивка сохраняется по DFU |
| FPV | видеопередатчик по SmartAudio/Tramp с потолком мощности и уровнем с тумблера, OSD (AT7456E): батарея, ток, мА·ч, время, дом, предупреждения; телеметрия в пульт по CRSF; GPS, компас и точка дома; Li-ion с его порогами; PINIO (камеры, 12 В); пищалка |
| Проверено | 12 сборок × 3 варианта «не той» физики в симуляторе с 6 степенями свободы: висение ±0.3 м, наклон по стику за 0.14–0.35 с, посадка при потере связи. В воздухе — ещё нет |
pio run -e matek-h743-quad -t upload # потом в консоли: t — настройка, m — моторы (без пропеллеров!)Подробно — COPTER.md.
Нормальный датчик воздушной скорости стоит как половина полётника. Здесь — два барометра: BMP581 в трубке (полное давление) и основной барометр в фюзеляже (статика). Прошивка сама обнуляет разницу чипов на земле, фильтрует, считает плотность воздуха по высоте и температуре и замечает перепутанные шланги. Что это даёт: CRUISE держит воздушную скорость, а не газ; защита от сваливания; честная скорость в телеметрии. Сборка — в справочнике.
Плата пишет каждый полёт: IMU на 500 Гц, углы и решения автопилота, ПИД, все выходы, стики, барометр, компас, GPS, батарея и события — с ARM и газа до посадки, с 10 секундами до старта. ESP32-S3 — во встроенный флеш (13.9 МБ, около 11 минут), STM32H743 — на SD-карту (64 МБ — около часа; карта остаётся обычной FAT32, прошивка пишет в заранее созданный файл BLACKBOX.BIN). Стирание — только на земле. После полёта python tools/blackbox.py download скачивает полёт по USB и раскладывает в CSV; с SD-карты полёты разбираются и без платы: python tools/blackbox.py ring E:/BLACKBOX.BIN. Подробно — BLACKBOX.md.
| Плата | Статус | Что проверено |
|---|---|---|
| STM32H743VIT6 | ✅ основная · 🔧 DevEBox, датчики подключаются + 🧪 тесты | на плате: загрузка, консоль по USB, SD-карта и чёрный ящик (тесты на плате), приём iBUS, ARM и управление сервами и мотором с пульта (запуск на видео); на ПК — вся прошивка: задачи FreeRTOS, флеш, MAVLink, I2C и SPI. Датчики к плате ещё не подключали |
| Matek H743-WING V3 | 🧪 тесты · готовый полётник | вся прошивка на ПК с датчиками платы (ICM-42688-P, DPS310), внешней шиной I2C и калибровкой установки IMU; на настоящей плате ещё не проверяли |
| ESP32-S3 N16R8 | ✅ прежняя основная, на стенде | все датчики, сервы, iBUS, OLED, дашборд вживую; прошивка целиком — в тестах |
| ESP32 38-pin | 🧪 тесты | прошивка целиком в тестах с набором ICM-45686 |
| ESP32-C3 SuperMini | первый прототип; сборка всех наборов |
| Датчик | Что это | Шины |
|---|---|---|
| LSM6DSV + QMC6309 | IMU + компас (модуль) | I2C / SPI |
| ICM-45686 + QMC6309 | IMU + компас (замена) | I2C / SPI |
| SPL06-001 | барометр фюзеляжа | I2C / SPI |
| DPS310 | барометр на плате Matek H743 | I2C |
| BMP581 | основной барометр и барометр в трубке Пито | I2C / SPI |
| MPU6050/6500, ICM-42688, BMP388, BME280, QMC5883P/L | стендовые и прежние | I2C / SPI |
| u-blox M10 | GPS, 10 Гц, UBX | UART |
| iBUS · SBUS · CRSF | приёмник пульта: FlySky, FrSky, Futaba, RadioMaster, ExpressLRS, TBS Crossfire | UART |
Датчик меняется одной строкой (SENSOR_KIT_LSM6DSV_PITOT), плата — одним флагом сборки. Все 4 платы × 7 наборов датчиков и Matek H743 со своим набором собираются без предупреждений: tools/build_matrix.sh.
![]() |
![]() |
| Стенд на ESP32-S3: IMU, барометр, компас, OLED, сервы, приёмник. | Тест винтомоторной группы. |
Прошивка для STM32H743 запущена на плате DevEBox без единого датчика и управляется с обычного пульта: приёмник по iBUS, ARM, сервы и мотор отвечают на стики и тумблеры в ручном режиме. Весь запуск снят на видео.
Что это доказывает: тракт «пульт → iBUS → прошивка → ШИМ» работает на настоящем железе, а не только в тестах. Что ещё не доказано: датчики (IMU, барометр, GPS) к этой плате не подключали, поэтому режимы автопилота на ней пока не пробовались.
| 522 автотеста | модули, драйверы по регистрам чипов, замкнутые полёты, прошивка ESP32 и STM32 целиком на ПК; плюс 9 тестов на самой плате STM32 с настоящей SD-картой |
| 94.1 % строк, 85.2 % ветвлений | покрытие gcovr, включая код STM32 |
| 33/33 сборки | 4 платы × 7 наборов датчиков + Matek H743, -Wall -Wextra, ноль предупреждений; плюс 2 сборки коптера |
| 0 замечаний | cppcheck и clang-tidy по всему коду |
| Эталоны, а не копии кода | формулы датчиков — по датащитам (Bosch, ST, TDK, Goertek), MAVLink — по pymavlink |
pio test -e native -e native-stm32 # все тесты, ~1.5 минуты, железо не нужноПодробно — TESTING.md.
flowchart LR
RC["Пульт FS-i6<br/>iBUS"] --> SW["PilotSwitches<br/>Controls.h"]
SENS["IMU · барометры · компас<br/>GPS · трубка Пито"] --> AP
SW --> AP["Autopilot<br/>12 режимов · навигация<br/>failsafe · геозабор"]
AP --> FC["FlightController<br/>ARM · микшер · закрылки"]
FC --> OUT["Сервы · ESC<br/>груз · камера"]
AP -.-> TLM["Дашборд Wi-Fi<br/>MAVLink · OLED"]
- Header-only C++, одна единица трансляции, никакой динамической памяти в полётном контуре. Любитель
.h/.cpp? Для вас — параллельная веткаfeature/split-headers: генерируется из этой скриптом, прошивка с LTO того же размера. - HAL — единственный слой, знающий MCU: новая плата — это новый
Board, а не переписанный автопилот. - Драйвер датчика не знает шину: один класс работает по I2C и по SPI.
- Безопасность — порядком операций: потеря связи > ARM > режим > газ; ни один режим не протащит газ мимо ARM.
Подробно — ARCHITECTURE.md.
Проще всего — OpenPlane Studio: приложение для Windows настраивает плату под ваш самолёт по шагам, собирает прошивку и прошивает её одной кнопкой, а потом помогает наладить всё на земле по живым данным с платы. Из командной строки:
pip install platformio
git clone https://github.com/damir-lebedev/OpenPlaneProject && cd OpenPlaneProject
pio run -e stm32h743-devebox -t upload # DevEBox H743: USB DFU, консоль по USB
pio run -e matek-h743 -t upload # Matek H743-WING V3: кнопка BOOT + USB
pio run -e esp32-s3 -t upload && pio device monitor # ESP32-S3
pio run -e stm32h743 -t upload # STM32H743 (ST-Link)
pio run -e matek-h743-quad -t upload # мультикоптер на Matek H743 (docs/COPTER.md)DevEBox: на плате нет кнопки BOOT0 — перед первой заливкой соедините пин BT0 с 3V3 и нажмите RST; потом клавиша D в консоли сама перезагружает плату в загрузчик (подробно).
В мониторе порта: h — меню, b — какие чипы видны на шинах, s — датчики, p — проверка выходов (пропеллер снять!). Дальше — гайд пилота.
| Что | Где проверено |
|---|---|
| Ручное управление, микшер | |
| ARM, failsafe, закрылки, сервы, мотор | 🔧 на стенде (S3) |
| Двунаправленный ESC BLHeli 80A, реверс только в DISARM | 🧪 тесты; с регулятором ещё не проверяли |
| Автовзлёт с хвостовым и носовым колесом, калибровка на земле с пульта, сигналы мотором и рулями | 🧪 тесты и симуляции с моделью шасси; мелодию ESC после паузы импульсов — проверить на стенде |
| STABILIZE | 🔧 на стенде: рули отвечают на наклоны в правильную сторону |
| Датчики стенда (MPU6500, BMP388, QMC5883P), OLED, дашборд | 🔧 на стенде |
| Остальные режимы, навигация, трубка Пито, MAVLink | 🧪 тесты и замкнутые симуляции |
| Новые датчики (LSM6DSV, ICM-45686, QMC6309, SPL06, BMP581) | 🧪 регистровые эмуляторы по датащитам |
| STM32H743: SD-карта, чёрный ящик, консоль по USB | 🔧 на плате DevEBox (тесты на плате) |
| STM32H743: iBUS, ARM, ШИМ на серво и мотор, ручное управление | 🔧 на плате без датчиков, снято на видео |
| Приёмники SBUS и CRSF (ExpressLRS) | 🧪 тесты: разбор кадров, failsafe, UART с инверсией; с настоящим приёмником ещё не проверяли |
| Matek H743-WING V3: датчики на плате, внешняя шина I2C, калибровка установки IMU | 🧪 вся прошивка на ПК; на настоящей плате ещё не проверяли |
| STM32H743: датчики (IMU, барометр, компас, GPS) и режимы автопилота | 🧪 вся прошивка на ПК; к плате датчики ещё не подключали |
| Мультикоптеры: настройка из описания, режимы, failsafe, защиты | 🧪 симулятор с 6 степенями свободы (12 сборок × 3 физики) и вся прошивка на ПК; в воздухе ещё не было |
Модель самолёта в симуляциях упрощённая, коэффициенты — стартовые. Каждый новый режим сначала пробуется на высоте, с пальцем на тумблере MANUAL.
- Ручное управление, ARM, failsafe, объектная прошивка, веб-дашборд
- Стенд ESP32-S3 со всеми датчиками — вживую
- 12 режимов, навигация по GPS, RTH при потере связи, геозабор
- Тумблеры и крутилки одной строкой, сброс груза, камера, автотриммер
- Трубка Пито из двух барометров, защита от сваливания
- Новые датчики: LSM6DSV, ICM-45686, QMC6309, SPL06, BMP581
- STM32H743: полная прошивка, MAVLink, настройки во флеше
- Замкнутые симуляции всех режимов, прошивка целиком в тестах
- Чёрный ящик: полёт во флеш (ESP32-S3) и на SD-карту (STM32H743), выгрузка и разбор в CSV
- STM32H743 запущена на плате: пульт → iBUS → сервы и мотор (без датчиков, на видео)
- Приложение OpenPlane Studio: настройка по шагам, прошивка одной кнопкой, наладка на земле
- Приёмники SBUS и CRSF (ExpressLRS, TBS Crossfire) рядом с iBUS — выбор в
Config.hили в OpenPlane Studio - Готовый полётник Matek H743-WING V3: датчики на плате, прошивка одной кнопкой (на железе ещё не проверяли)
- Мультикоптеры (квадро, гекса, окта, Y6, X8): настройка из описания коптера, проверено в симуляторе
- STM32H743: подключить датчики и пройти стенд так же, как ESP32-S3
- Коптер: DShot, цикл 4 кГц, чёрный ящик и MAVLink, лётные испытания
- Популярные полётники на STM32F405: SpeedyBee F405 WING, Matek F405-WTE
- Лётные испытания автопилота на новом планере
- Своя плата полётника (FC_BOARD.md) на STM32H743
- Полёт по маршрутным точкам, миссии MAVLink
- Адаптивная обратная связь (заготовка уже проверена в симуляции)
- Датчик тока и батареи, телеметрия на пульт (iBUS-SENS)
- Автономная доставка: маршрут → сброс груза → домой
Подробно — ROADMAP.md.
Небольшие самолёты-доставщики и мониторинговые борта — это либо закрытые дорогие платформы, либо разрозненные хобби-проекты. OpenPlane целится в середину: открытый, проверяемый автопилот на массовом железе, где каждая функция покрыта тестами и может быть адаптирована под задачу — доставка медикаментов в труднодоступные места, мониторинг полей и лесов, поисковые работы.
Что уже сделано на свои: архитектура, которая переносится между платами без переписывания; автопилот с полным набором режимов; инфраструктура тестов, на которой новые функции появляются быстро и не ломают старые. Что ускорят ресурсы: лётные испытания, своя плата полётника на STM32H743, полёт по маршруту и сброс груза. Куда и зачем — ROADMAP.md.
| Документ | Для кого |
|---|---|
| COPTER.md | мультикоптеры: каталог сборок, свой коптер, первый запуск, режимы, защиты, как проверено |
| AUTOPILOT_GUIDE.md | пилоту: каждый режим, функция и крутилка, как повесить на тумблер, трубка Пито, наземная станция |
| PILOT_GUIDE.md | сборка, распиновка, пульт, failsafe, первый полёт |
| DEVELOPER_GUIDE.md | разработчику: файлы, знаки, API, как добавить датчик, режим, плату |
| ARCHITECTURE.md | слои, задачи, такт управления, автоматы |
| TESTING.md | тесты, симуляции, покрытие, анализ |
| reference/ | справочник по каждому классу |
| FC_BOARD.md · ROADMAP.md | плата полётника · куда движется проект |
| airframe/ | планер Astro-Cargo: проект Fusion 360 и STL для печати, известные недостатки версии v2 |
Приложение: OpenPlane Studio — настройка платы по шагам, сборка и прошивка одной кнопкой, наладка на земле по живым данным; интерфейс на русском и английском.
Связанный проект: esp32-rc-joystick — пульт FS-i6 как USB-джойстик для симулятора на той же ESP32-S3: сначала налетать часы в симуляторе, потом — в поле.
Нужны руки и головы: аэродинамика и авиамоделизм, 3D-печать и прочность, встраиваемый C++, датчики и автопилоты, наземные интерфейсы. Issues и pull request'ы — в ветку main; начать — с DEVELOPER_GUIDE.md.
OpenPlane License — лицензия на основе MIT с дополнительными условиями. Код, документацию и файлы модели можно использовать, копировать, менять и продавать, в том числе в коммерческих продуктах. Условия такие:
- Укажите автора — Damir Lebedev (Damn / Проклятый). Имя должно стоять там, где его увидят пользователи вашего продукта: в документации, README или на странице «О проекте». Текст лицензии оставляйте вместе с кодом.
- Военное применение запрещено. Нельзя использовать проект для армий и военизированных организаций, на войне, при создании оружия, боеприпасов, систем доставки и наведения.
- Нельзя намеренно вредить людям и имуществу без их предварительного письменного согласия на этот вред. Свою собственную технику ломать можно, если это никому не угрожает: например, стрелять из пневматического пистолета по собственному дрону. Калечить и убивать людей нельзя.
- Соблюдайте технику безопасности и законы при сборке, испытаниях и полётах.
Если условия нарушены, разрешение на использование прекращается. Из-за запретов на отдельные виды использования это не «открытая» лицензия в понимании OSI: код доступен для чтения, копирования и изменения, но формально проект относится к source-available, а не к open source.
Юридическую силу имеет только английский текст в файле LICENSE: переводы лицензии на другие языки даны для удобства.
Прошивка управляет летательным аппаратом и не сертифицирована. Всё, что вы с ней делаете, — на ваш страх и риск; автор ответственности не несёт.
OpenPlane © 2026 Damir Lebedev (Damn / Проклятый) — https://github.com/damir-lebedev/OpenPlaneProject
Первый прототип сломался в первом же полёте — поэтому здесь всё на виду: код, тесты, проблемы. Собирайте, ломайте, чините вместе с нами.








