Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog

Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog Машинки

Описание выводов для crius и нюансы подключения

Надеюсь вы уже

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

Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog


На картинке выделены разъемы для подключения вышеописанных устройств. Как видите каждый разъем объединяет 3 контакта:

S

— сигнал,

— питание ( 5в) и

G

— земля. Так же у разъемов есть надписи вида

A

цифра и

D

цифра — к ним подключаются регуляторы скорости, сервоприводы и иногда дополнительные каналы приемника радио управления (соответствуют выводам на Arduino). Входы отмеченные как THR, ROLL, PITCH, YAW, MODE предназначены для подключения соответствующих выводов приемника.

От каждого регулятора скорости (ESC) идет 3 провода, один из которых 5v (красный или оранжевый по середине), но подавать питание на плату Crius нужно только с одного из ESC, а от других можно (и даже нужно) запитать оставшихся потребителей: приемник и сервы подвеса.

Для подключения к другим потребителям можно отломить 2 контакта от гребенки и запаять их вместе:

Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog
Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog
Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog

В комплекте с контроллером идет набор проводов — их надо использовать для подключения приемника, при этом достаточно соединить только сигнальные провода, один общий контакт (земля) и подключить провод питания с одного из регуляторов скорости.

Что хорошего в пк dys f4 pro?

По своему функционалу DYS F4 Pro V2 очень похож на другие полетные контроллеры «все-в-одном»: Kakute F4 и Betaflight F3, они все имеют встроенные PDB и OSD (это позволяет сильно упросить сборку коптера, а выглядит такой коптер аккуратнее).

Есть несколько фишек, которые отличают DYS F4 Pro V2 от других полетных контроллеров:

Характеристики DYS F4 Pro:

  • STM32 F4 с MPU6000
  • Напряжение питания: 2S — 6S
  • Стабилизатор: 5В / 3A
  • Встроенное Betaflight OSD
  • Встроенный датчик тока
  • Поддержка Betaflight (Omnibus F4 target)
  • Встроенная флеш память для blackbox: 8MB

Все платы «все-в-одном» имеют довольно толстый слой меди и требует более высокой температуры пайки. Если у вас есть проблемы с пайкой, то дополнительно проверьте качество припоя (англ).

Что, где, почем?


Все описанные контроллеры можно легко найти на

или

Цена может варьироваться от 25 до 100 долларов, в зависимости от магазина и наглости.

Cl racing f7 v2 daul — лучший полетник для регуляторов 4-в-1

  • F7, 2x ICM20602
  • Антивибрационное крепление
  • Betaflight OSD
  • PDB
  • 5V/3A BEC
  • 32MB памяти для черного ящика (Blackbox)
  • Напряжение питания: 2S — 8S LiPo

CL Racing F7 — это преемник популярных моделей CL Racing F4 и F4S. У него похожий дизайн, удобное расположение элементов и нормальный размер контактных площадок.

Это один из наиболее доступных полетных контроллеров в нашем списке, и при этом у него отличный набор функций: SmartAudio, ESC Telemetry, управление камерой (достаточно простого подключения, без резистора и конденсатора). Есть, конечно, и память для blackbox.

Процессор серии F7, поэтому не нужно ничего мудрить с инверсией сигналов SBUS и SmartPort.

CL Racing F7 разработан специально для работы совместно с регуляторами «4-в-1». Разъем для регулей позволяет использовать их телеметрию, а также общий датчик тока.

CL Racing F7 — один из первых ПК с функцией VTX pitmode, эта функция позволяет вам включать/выключать видеопередатчик тумблером на аппе.

Одна из отличительных черт второй версии — два гироскопа, они работают все время, а для уменьшения шума/помех данные усредняются. А вместе с RPM фильтром, тюнинг сильно упрощяется.

Вот полный обзор первой весии. Обзор второй версии (англ).

Купить на: Banggood | RDQ | AliExpress

Diatone mamba f722s

Помимо всех обычных функций, которые можно ожидать от ПК на F7, у Mamba F722S есть встроенный Bluetooth модуль, который позволяет менять настройки Betaflight прямо с телефона.

Имеются и два стабилизатора, на 5 и 9 вольт для питания видеопередатчика и курсовой камеры, это уменьшает помехи на видео от регуляторов и моторов. Гироскопы — MPU6000, у них отличная репутация, меньше шумят, чем серия ICM.

Регуляторы 4-в-1 рассчитаны на макс. ток 50 А и поддерживают питание до 6S LiPo, так что полетник очень надежный и универсальный.

Купить: Banggood | GetFPV | AliExpress

Dys f4 pro

  • F4, MPU6000 SPI
  • Софтмаунт
  • Betaflight OSD
  • Встроенная PDB
  • 5 В / 3 А BEC
  • 8MB памяти для blackbox
  • Питание: 2S – 6S

По функционалу DYS F4 очень похож на Kakute F4. Отличное расположение элементов, контактные площадки для силовых проводов (питание, регули) выступают за пределы платы, что упрощает пайку.

Только один последовательный порт с аппаратной инверсией сигнала для SBUS. Если нужна телеметрия, то придется использовать неинвертированный сигнал. Для тех, кто не планирует использовать Smart Port — это не проблема, это просто еще один дополнительный порт для прочих устройств (инвертированный UART нельзя использовать для других устройств).

Купить на Banggood | AliExpress | Обзор

Holybro kakute f7 aio — лучший полетник для отдельных регуляторов

  • F7, ICM20689 SPI (32KHz Looptime)
  • Софтмаунт датчиков
  • Betaflight OSD
  • Встроенная PDB
  • 5 В / 2 А BEC
  • MicroSD слот для blackbox
  • Питание: 2S – 6S

У большинства ПК антивибрационное крепление используется для всей платы, но у Kakute F7 плата с гироскопами демпфируется отдельно. Т.е. не нужно беспокоиться о демпферах, они уже есть. Гироскопы ICM относительно более шумные, но я не стал бы беспокоиться об этом, из-за довольно эффективного софтмаунта.

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

Если в ПК установлен процессор серии F4, то приходится возиться с инверсией сигнала для SmartPort телеметрии и для SBUS. Это не проблема если у вас проц F7, т.к. инверсия настраивается программно.

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

Беспокойство вызывает только шлейф, который можно повредить при крашах. Его можно заменить, тем более что в комплекте есть запасной. Однако это требует некоторых навыков пайки.

Думаю, этот ПК подойдет опытным пилотам, которым нужна высокая скорость работы гироскопов и частота 32к. Есть и не AIO версия, которую можно использовать вместе с регуляторами 4-в-1. Подробнее в обзоре.

Купить на Banggood | AliExpress | Gearbest | GetFPV

Kiss (1 плата)

Из-за того, что прошивка без исходного кода, пользователи не имеют выбора.

Kiss fc v2

  • Процессор F7, гиры MPU6000
  • Идет с прошивкой KISS FC Firmware

После 2х лет ожидания, Flyduino наконец-то выпустила KISS V2 для замены первой версии ПК. У KISS огромная толпа фанатов, которым нравятся характеристики этих ПК. Когда вы платите $80 за KISS FC V2, то вы платите не только за железо, но и за закрытую прошивку, которая работает только на ПК KISS.

Лично я считаю, что KISS летает плавнее и мягче, чем Betaflight, которая летает более точно (больше похоже на движения робота). Не самое точно описание, но как уж смог.

Это один из первых контроллеров, сделанных в виде буквы «H» и с контактными площадками для подпаивания проводов. А еще они же первыми заменили сквозные отверстия для штыревых разъемов на плоские пятаки для пайки с обеих сторон платы.

Во второй версии улучшено расположение контактов, теперь регули подключаются по углам платы. Имеющийся разъем также упростит проводку при использовании определенных PDB. Установка и настройка значительно проще, чем Betaflight.

На KISS можно поставить Betaflight, но, по-моему, есть и другие, более удачные ПК для Betaflight. Причина выбора KISS — это их закрытая прошивка.

Купить GetFPV | RMRC  | Обзор.

Matek f405 ctr

  • F4, MPU6000
  • Betaflight OSD
  • Встроенная PDB
  • 5 UART
  • Слот для MicroSd флэшки
  • BEC: 5V/2A

CTR — это новая версия Matek F405 AIO.

AIO — довольно хороший ПК с отличным функционалом и удобным расположением элементов. Однако, было довольно много жалоб на рывки по курсу и сильные вибрации, из-за очень чувствительных к шуму гироскопов.

И вот, наконец, Matek решили заменить гироскопы, на более устойчивые к шуму MPU6000, ну и добавили ещё кое-какие улучшения. Прочитав наш обзор, вы узнаете, почему это один из лучших ПК для Betaflight и iNav.

Купить на Banggood | AliExpress | Обзор

Omnibus fireworks v2

  • F4
  • ICM20608 на отдельной плате с демпферами
  • Betaflight OSD
  • Встроенный датчик тока

Полетные контроллеры Omnibus F3 и F4 были одними из самых популярных и надежных плат в индустрии дронрейсинга довольно долгое время.

В Omnibus Fireworks V2 меня привлек дизайн разъемов для регулей. Вы получаете питание, сигнал и телеметрию по углам платы, что сильно упрощает пайку и сборку.

Кроме того, гироскопы демпфированы каким-то гелем и хорошо защищены пластиковым корпусом. Гироскопы ICM20608 работают с частотами до 32 кГц. Думаю, вы даже можете сами заменить гироскопы, т.к. они подсоединены шлейфом.

Купить на Banggood

Raceflight (1 плата)

До того, как исходники прошивки стали закрытыми, была поддержка и других ПК. Думаю, что они идут по пути KISS и не оставят своим пользователям выбора, кроме как использовать только их железо.

Revolt f4

  • Процессор F4, гиры Invensense 20602
  • Разработан для Raceflight

ПК Revolt F4 разработан командой Raceflight и специально для Raceflight. Используется самая большая частота обновления данных с гироскопов — до 32 кГц.

Кто-то может не согласиться с мнением «быстрее — значит лучше», но многие пользователи были впечатлены полетом на Revolt F4 с прошивкой Raceflight. Их софт: RF1 (Raceflight One) также развивается в сторону упрощения настройки коптера пользователем.

Revolt F4 — это просто ПК безо всяких свистелок и перделок. Даже встроенного BEC нет, т.е. ему требуется внешнее питание (и дополнительный контакт BAT для контроля напряжения на аккумуляторе). RF объясняют это тем, что хотели минимизировать шумы. Но обычно в таких случаях пользователи жалуются на усложнение процесса сборки. Еще не хватает контакта VBAT, для измерения напряжения аккумулятора.

С тех пор появились несколько новых версий этого ПК с доп. функциями, например RevoltOSD, с поддержкой питания напрямую от LiPo аккумулятора, с OSD, а также Minivolt — по сути уменьшенную версию Revolt.

Кстати говоря, Lumenier Skitzo FC— это Revolt после ребрендинга, это та же самая плата, только другого цвета и с другой ценой.

Купить:

А теперь – о самом полетном контроллере

После такого вступления стало понятно, что написать полетный контроллер на таких могучих инструментах – совершенно просто. И действительно, если разобраться, то ничего сложного.

Структурная схема управляющего ПО показана на рисунке

Как видно из рисунка, ПО состоит из двух частей:

Так как тратить много времени не хотелось, то драйвер для USB в STM32 был взят прямо нативный и при помощи Interop был слинкован с оберткой на Ada.

Плата оказалась оснащена минимальным количеством периферийных устройств: 

Полетный контроллер реализован по простой схеме и «крутит» 2 цикла:

  1. внешний

  2. внутренний

Внешний цикл это цикл опроса периферии (CMD task на рисунке) в ожидании команд с радиопередатчика. Если команды нет, он передает признаки «сохраняем высоту, держим горизонт». Если команда с пульта есть, передаем ее – целевой угол наклона, целевую мощность на пропеллеры. Частота внешнего цикла 20 Гц.

Внутренний цикл – цикл опроса гиро-акселерометра и распределения мощности на двигатели. Цикл оборудован 3 PID-регуляторами, и математикой Махони для расчета текущего положения по сигналам с гироскопов. В расчетах внутри используем кватернионы, для генерации управляющего сигнала – углы Эйлера. Частота размыкания внутреннего цикла – 200 Гц. Да, Ада без проблем успевает диспетчеризировать с такой скоростью.

Так как у нас нет ни баровысотомера, и другого способа измерить высоту, то для грубого удержания высоты используем интеграцию вертикальной скорости.

Внутренний цикл реализует опрос PID и стабилизацию аппарата:

Забавно, что большинство опен-сорсных реализаций Махони (для Arduino и не только) – на Cи и Wiring оказались содержащими разнообразные баги. Это мешало системе заработать. После того, как было выпито пол-ящика лимонада и съедена корзина круассанов, алгоритм воссоздали с нуля по описанию из [MHN], и система тут же заработала.

Данная схема, как и любая упрощенная модель, испытывает сложности при приближениях параметров к предельным. Здесь это 90 по крену и тангажу – при их превышении для безопасности реализовано отключение двигателей (disarm).

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

Но для первого приближения вышло отлично, хотя и совсем не подходит для акробатического квадрокоптера.

Статья получилась неожиданно длинная, поэтому придется разбить ее на две части.  Мы в первой части постарались познакомить вас с инструментами предков, которые на удивление неплохи: по крайней мере, мы сделали выводы, что дальнейшие проекты для эмбеддед хочется делать на Ada, а не на Си.

Итог на текущий момент

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

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

И конечно, на время испытательных полетов все runtime-проверки все равно останутся включены, хотя конечный итоговый результат – проверки не нужны, так как заведомо известно, что они выполняются.

Для себя мы сделали вывод, что для embedded будем стараться писать только на Ada.

Баг в betaflight 3.1.7

По всей видимости в этом ПК есть какой-то баг с обработкой SBUS. Если вы прошьете Betaflight 3.1.7 то она будет еще раз инвертировать уже инвертированный сигнал с UART1. Если у вас возникли проблемы с получением SBUS на этом ПК, просто попробуйте использовать Betaflight 3.1.6.

ПК приходят с уже прошитой Betaflight 3.1.6.

Еще один странный баг, связан с прошивкой, она не пройдет, если выбрана опция «erase all settings».

Готовые платы контроллера


Как я уже писал выше — можно сделать свой контроллер из набора доступных датчиков и Arduino, но проще (а часто еще и выгоднее) купить готовую платку, на которой уже есть AVR чип и набор необходимых датчиков.

Самая популярная плата — Crius MultiWii, выпускается в двух вариантах Lite и Standart Edition, а так же недавно появилась новая версия, отличающаяся только наличием удобного I2C входа и более мелким размером.

Crius MultiWii Lite Edition имеет на борту только 2 датчика: гироскоп и акселерометр. Standart Edition, кроме имеющихся в Lite датчиках, может похвастаться барометром BMP085 и компасом. Новая версия платы имеет I2C разъем для подключения GPS модуля, который представляет из себя UART GPS приемник и AVR чип (Arduino), который выступает посредником между GPS и MultiWii контроллером (а в обозримом будущем полностью возьмет на себя GPS функционал, для разгрузки основного мозга).

В некоторых интернет-магазинах можно найти другие аналогичные контроллеры, поэтому если вы встретили нечто с 2мя или 4мя датчиками и 328p чипом (или 1280/2560), то с 99% вероятностью — это MultiWii контроллер.

Графический конфигуратор


Графический конфигуратор написан на

и является кросплатформенным Java приложением, на данный момент скомпилирован для Linux, Windows и MacOS операционных систем 32 и 64 битных архитектур.

Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog
Внешний вид немного пугает, но часто сюда лазить не приходится. Запустите конфигуратор после вставки полетного контроллера в компьютер. В левом верхнем углу выберите порт контроллера и нажмите кнопку START — должны побежать кривые на графике и цифры рядом с ним (в идеале всё должно быть ровно).Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog
Справа от графика расположена объемная модель вашего коптера, а так же указатели компаса и наклона аппарата. Если аппарат расположен параллельно горизонту, а на картинке PITCH и ROLL наклонены — нажмите кнопку CALIB_ACC, чтобы контроллер запомнил это положение и всегда стремился к нему.Обзор: полетный контроллер все-в-одном — DYS F4 Pro V2 Flight Controller | RCDetails Blog
Сверху над графиком расположены настройки PID регулятора, активации режимов и некоторые статусные данные. Чтобы увидеть значения нужно нажать кнопку READ, для их изменения нажать на окошко с цифрой и подвигать мышкой, а чтобы сохранить — нажать WRITE. Никогда не меняйте за 1 раз несколько значений PID реглятора — иначе не поймете от чего стало лучше или хуже. А что и как крутить можно прочитать тут.

Детальный осмотр tattoof4s

В комплекте с ПК TattooF4S идут:

  • 2 провода сечением 16AWG (длина 9 см)
  • 5 нейлоновых винтиков M3 длиной 22 мм
  • 9 стоек M3 высотой 5 мм
  • 5 стоек M3 высотой 3 мм
  • 5 нейлоновых гаек M3

Я немного разочарован тем, что в комплекте нет ни резиновых шайб для софтмаунта, ни разъема XT60 и Low ESR конденсатора; хотя всё это довольно дешевые детали и их легко купить где-угодно.

Дополнительная информация:

Форм-фактор TattooF4S примерно такой же как у других полетных контроллеров с расстоянием между крепежными отверстиями в 30,5 мм. Удивительно, сколько всего разработчики смогли разместить на этой плате, тут есть всё, что я обычно использую в ПК «все-в-одном» плюс еще 4 регулятора.

Такое железо не только экономит место, но и делает сборку проще, а результат — красивее и аккуратнее: почти нет пайки и многих проводов. Просто подключи моторы к ПК и всё.

Однако, как раз из-за ограниченной площади, на плате мало места для контактных площадок, от некоторых пришлось избавиться (например, UART 3 можно увидеть в конфигураторе, но для него нет контактов на плате).

Как вы можете видеть на фотографиях, плата залита защитным покрытием. На ней все контактные площадки расположены сверху; снизу нет ни одной, это сильно упрощает пайку.

Иной подход

Иной подход это верификация ПО. Обычно при этих словах люди начинают думать об абстрактных монадах и академических манускриптах, сложно читаемых и плохо применимых на практике. Но оказалось, что не все так плохо.

Прежде всего, верификация НЕ является гарантией того, что программа не содержит ошибок, а является только проверкой, что программа гарантирует некоторые свойства. А уже дело программиста таким образом обеспечить контроль свойств, чтобы получить нужные результаты.

В случае с SPARK, верификация базово предоставляет нам гарантии:

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

SPARK также учитывает ограничения на типы, которые описаны в Ada. В случае обычного исполнения ошибка несоответствия типов упадет в Runtime; SPARK же позволяет статически доказать, что ограничения на типы не могут быть нарушены никаким потоком исполнения.

Например:

Или другой пример:

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

Отдельный плюс SPARK в том, что система позволяет “натягивать” гарантии на программу поэтапно, то есть программа может быть частично верифицированной. То есть часть модулей можно объявить верифицируемыми, а часть – (пока) нет.

Сам SPARK делит верификацию на уровни: от “каменного” (Stone level) через “Бронзовый” и “Серебряный” уровни до “Золотого” (Gold) и “Платинового”. Каждый из уровней усиливает гарантии:

Мы остановились на уровне Gold, потому что наш квадрокоптер все-таки не Boeing 777 MAX. 

Как работает верификация в SPARK: прувер собирает описание контрактов и типов, на их основе генерирует правила и ограничения, и далее передает их в солвер (SMT – Z3), который проверяет выполнимость ограничений. Результат решения прувер привязывает к конкретным строкам, в которых возникает невыполнимость.

Более подробно можно почитать в [SUG]

Иной язык

Несмотря на то, что сейчас “рулят” си-подобные ECMA-языки, мы нормально отнеслись к тому, что от этого придется отказаться. Более того, кажется, что чем больше программа, тем больше вредит укорочение ключевых слов и конструкций. Что касается Rust, то он – субъективно – в отношении минимализма издалека сильно напоминает Perl, к сожалению.

И наоборот, по ощущениям, пространные, многобуквенные конструкции раздражают, когда разум летит вперед, но не мешают, когда во главу угла ставится надежность, понятность, и легкость чтения. В этом смысле Ada (а SPARK это подмножество Ada) вполне хорош. Теперь давайте посмотрим, что же язык Ada может дать embedded-разработчику.

 Профили

Сам язык и стандартная библиотека позволяет определять и использовать так называемые “профили”. Профиль это набор ограничений, выполнение которых контролирует компилятор. Например, можно определить ограничение “нельзя использовать динамическую память”.

Мы используем профиль Ravenscar, специально для embedded-разработки. Он включает пару дюжин ограничений, которые делают вашу разработку для микроконтроллеров более удобной и верифицируемой: нельзя на ходу переназначать приоритеты задач-потоков, переключать обработчики прерываний, сложные объекты из stdlib-ы и такое.

Вот ограничения профиля Ravescar, для примера

 Runtime

Когда в embedded необходимо создать более-менее сложное приложение, там всегда заводится RTOS, и ее выбор и интеграция это отдельная песня. В случае с Ada с этим больше нет сложностей – сама Ada включает в себя минимальную исполняемую среду с вытесняющим планировщиком потоков (в Ada это tasks, задачи), с интегрированными в сам язык средствами синхронизации (семафоры, рандеву, называются entries) и даже средствами избегания дедлоков и инверсии приоритетов. Это оказалось очень удобно для квадрокоптера, как станет понятно ниже.

Для embedded-разработчика доступны на выбор также разные рантаймы:

Вот пример описания пустой задачи

Хочется обратить внимание, что эти задачи – это по сути легковесные green threads, так как под ними нет никаких настоящих потоков не существует. Поэтому мы не страдаем от отсутствия корутин, ведь задачи не тяжелее них, зато встроены в язык.

Кроме этого, в Ada есть достаточно мощная stdlib для ядра STM32, включая полную реализацию рантайма. Возможно, и для вашей архитектуры она тоже есть.

Почему не “rustRustRUST”!

Когда мы говорим, про гарантии в языках программирования, сразу вспоминается Rust и его гарантии относительно указателей. Почему тут не он? Нам кажется, что Spark мощнее.

Ada не очень любит указатели – там они называются access types, и в большинстве случаев там они не нужны, но если нужны, то – в Spark также есть проверки владения, как в Rust. Если вы аллоцировали объект по указателю, то простое копирование указателя означает передачу владения (которую проконтролирует компилятор/верификатор), а передачу во временное владение (или доступ на чтение) верификатор также понимает и контролирует.

В общем, концепция владения объектом по указателю, и уровень доступа через этот указатель – есть не только в Rust, и его преимуществами можно пользоваться и в других инструментах, в частности, в Ada/SPARK. Подробно можно почитать в [UPS]

Вот пример кода с владением

Почему мы пишем, что в Ada/SPARK не нужны указатели? В отличие от Си, где базовым инструментом является указатель (хочешь ссылку – вот указатель, хочешь адрес в памяти – вот указатель, хочешь массив – вот указатель – ну вы поняли?), в Ada для всего этого есть строгий тип.

Если уже и этого мало, есть интероп с СИ – то есть код можно компилировать совместно, и слинковать на этапе сборки. Но в этом случае гарантии поведения модуля как черного ящика остаются на разработчике. Для интеропа используются атрибуты – вот так, например, мы оборачиваем функцию на Си в доступ для Ada.

Для соблюдения нужного layout или битности в коде также не нужны указатели: Ада при необходимости позволяет детально описать, как именно структура будет располагаться в памяти. Минус ошибки на конвертации из логического в физическое представления и обратно – прощайте битовые сдвиги, сложения на кольце, арифметика указателей.

IDE

Для работы доступна вполне приятная и удобная IDE, но всегда можно использовать и VSCode с плагинами, и другие текстовые редакторы.

О производительности и надежности

Вполне валидным аргументом может быть вопрос с эффективностью ПО. Что касается эффективности, то в интернете доступно свежее исследование [EFF], из которого хочется привести табличку, показывающую, что “старичок» Ada еще огого:

Если говорить о надежности, то SPARK/Ada известен как один из языков с наименьшим количеством ошибок. В планируемом на 21 запуске кубсатов [LIC] полетное ПО планируется реализовывать на Ada, предыдущий спутник BasiLEO тоже на Ada был единственным среди 12, кому удалось приступить к планируемой миссии.

История изменений

  • март 2023 — первая версия статьи
  • июль 2023 — обновление статьи, сделаны отдельные разделы для разных прошивок (BF, RF, KISS), добавлены DYS F4, Kakute F4, Matek F4; убраны Lux V2 и DRC Soul
  • Январь 2023 — обновил список
  • Август 2023 — обновление списка: Kakute F7, Fireworks V2
  • Ноябрь 2023 — CL Racing F4S заменен на F7
  • Сентябрь 2023 — обновление списка

Какой лучше?

Есть простое правило — чем дороже полетный контроллер, тем стабильнее и надежнее будет мультикоптер. Дело в том, что ведущие производители используют качественные аппаратные комплектующие и качественное программное обеспечение для настройки и управления.

Из достоинств, следует отметить: достаточно удобное расположение разъемов для подключения необходимых устройств и сопутствующей периферии; надежность разъемов; пластиковый корпус, для защиты от внешних воздействий. Также имеется встроенная виброразвязка для защиты чувствительных датчиков расположенных на плате от вредных вибраций корпуса полетного контроллера, неизбежно возникающих при работе силовой установки. Таким образом, можно сказать, что это законченный продукт, максимально подготовленный для полетов «из коробки».

Практически у всех «именитых» контроллеров есть копии, иногда довольно хорошего качества, что иногда не может оставить равнодушным при постройке, например, резервного аппарата. Так или иначе, этот выбор скорее из серии «религиозных». В любом случае, выбирая полетный контроллер, помните о том, что это «мозг» вашей системы, а главное при полетах – безопасность (да и скупой платит дважды).

Лучшие полетные контроллеры на betaflight

Основные характеристики полетных контроллеров в нашем списке:

Кроме того, есть довольно специфичные полетные контроллеры (англ), например, для системы передачи HD видео от фирмы DJI.

Небольшая предыстория

В самом начале развития проекта была большая проблема с датчиками — их просто не было или были, но по невероятно высоким ценам, поэтому первым датчиком для этого полетного контроллера стал Wii Motion Plus (WMP) от приставки Nintendo Wii, а от сюда в общем то и пошла приставка Wii в названии.

Недостатки

Мне нравится этот ПК, но он не идеален.

Несмотря на то, что используется прошивка BLHeli_32, телеметрия с регуляторов не доступна.

Изначально в него залита прошивка Betaflight версии 3.1.7., это старая прошивка, вышедшая в апреле 2023 года, а тип железа (target) DHF4. Однако, я не смог найти более новую версию прошивки, гугл тоже с ходу не помог.

Некоторое время спустя я выяснил что подходит таргет LUXF4OSD, возможно это клон платы Lumenier F4 Alpha AIO. В итоге я всё же прошил Betalight 3.3.

Обновление от 13 апреля 2023

После примерно 30 отлетанных аккумуляторов у ПК появился некоторый «занос», коптер может случайным образом дрифтануть в сторону. Возможно это относится к качеству сборки или качеству отдельных деталей. Возможно у меня просто бракованная плата…

В любом случае, мне понравилось то, насколько просто можно собрать квадрик (не считая мелких пятаков для пайки) и насколько он компактный. Отличная концепция, но реализация может быть и получше. Ждем вторую версию 🙂

Купить Racerstar TattooF4S: Banggood | Amazon

Обновление от 26 марта 2023

Первый полет на этом ПК; контроллер очень понравился в плане полетных характеристик! Никаких осцилляций при использовании моторов Dragonfly 2207 2500 и пропов DAL Cyclone 5045×3. Видео очень чистое, но, конечно, я добавил конденсатор на 1000 мкФ (англ), и из резиновых бобышек сделал софтмаунт ПК.

Однако, пайка контактов не простой процесс! Контакты очень маленькие и расположены очень плотно, было не просто припаять все провода. Не говоря уже о том, что есть всего один контакт 5В, который используется сразу несколькими устройствами: камера, видеопередатчик и т.д., т.е. пришлось припаять несколько проводов к одному крохотному контакту.

Несмотря на это, работает контроллер превосходно, чуть позже добавлю подробностей.

Определение

Полетный контроллер — (он же: мозги, полетная плата, компьютер, контроллер) это устройство, которое обеспечивает полет коптера, управляя газом, креном, тангажом и рысканьем (throttle, pitch, roll, yaw).

Особенности полетного контроллера tattoof4s

Отличительная особенность TattooF4S — это встроенные регуляторы скорости под управлением BLHeli_32, при этом общий вес платы всего 16,5 грамм! Это делает её отличным выбором для ультралегких коптеров, т.к. в них частенько ограничено пространство и имеются сложности с расположением проводов.

Кроме того, этот вариант несколько дешевле, чем отдельный ПК  регуляторы «4-в-1», которые обычно стоят $30 и $50 соответственно. TattoF4S стоит $75.

И, наконец, весь ПК покрыт лаком, это снижает вероятность случайного короткого замыкания (естественно пятаки для пайки не лакированы).

Полет с gps

Более года назад я пообещал полет по GPS, по маршруту и прочие плюшки навигации. Пока на MultiWii контроллере удалось испытать удержание позиции.

В целом неплохо, коптер плавал в круге радиусом около 7 метров (ничего не настраивал предварительно), но потом внезапно рванул куда-то в даль от меня и тесты были отложены.

Но зато начал понемногу осваивать фото и видео съемку с воздуха.


Получается так себе, но еще 2/3 лета впереди и куча планов, в том числе отдельный пульт для оператора.

Задавайте вопросы, если таковые имеются, постараюсь ответить и дополнить эту статью.

Принцип работы

Полетный контроллер отдает команды регуляторам оборотов посредством широтно-импульсной модуляции (ШИМ/PWM), где режим регулятора задается длительностью импульсов, либо по последовательному интерфейсу Inter-Integrated Circuit (IIC/I2C), где режим регулятора задается цифровыми сигналоми: первый — определяет адрес устройства, второй — задает значение от 0 до 255. Чаще всего используется метод PWM.

Нижеследующий список содержит контроллеры из нашего прошлого, они не попали в основные списки из-за других, более новых ПК. Однако я хочу их упомянуть, потому что в некоторых случаях их стоит иметь в виду при покупке.

Распаковка

В комплекте идут: кабель с разъемом XT60, пищалка, стойки, нейлоновые гайки и винты.

Составные части

Основным мозгом контроллера является AVR процессор, а если точнее — простая платка Arduino, к которой через I2C порт цепляются различные датчики. На данный момент, чтобы полететь вам понадобится любая Arduino совместимая плата и

гироскоп

, например ITG3205 выпиленный (это не сленг, а я прямом смысле слова выпиленный) из китайского клона контроллера WMP, но в такой конфигурации коптером будет довольно сложно управлять, так как выравнивать его параллельно земле (а значит и устранять дрейф) придется руками. И тут на помощь приходит

акселерометр

, которой всегда знает где «низ», т.е. земля, и поможет держать летательный аппарат параллельно земле. Таким образом для спокойного и стабильного полета нужны Arduino и два трехосевых датчика: гироскоп и акселерометр.

Дополнительно можно добавить такие датчики как магнитометр, барометр и GPS приемник.Магнитометр (он же компас) знает как повернут ЛА относительно направления магнитного поля земли и может помочь при удержании курса, GPS навигации или в режиме carefree для новичков, когда, вне зависимости от направления реального носа аппарата, коптер будет лететь от пилота на команду «вперед» и к пилоту на команду «назад».

На магнитометр очень негативно влияют магнитные поля от источников питания, проводов, моторов и всего что может давать электромагнитные волны, поэтому при проектировании рамы ЛА стоит располагать этот датчик как можно дальше от всего металлического и намагниченного.

Барометр (он же датчик атмосферного давления) может пригодиться для удержания высоты, но стоит учесть, что удержания высоты напрямую зависит от точности датчика, например BMP085 (установленный во многих полетных контроллерах) даст точность не более -1 метра, т.е. при самых хороших условиях ваш ЛА будет плавать по высоте в пределах 1 метра или больше.

Более современный датчик MS5611 может давать точность до 10см. На барометр может влиять любое изменения давления вокруг, ветер или потоки воздуха от пропеллеров, поэтому рекомендуется ставить этот датчик «под колпак» или приклеивать к нему кусочек поролона (как на микрофонах), но при этом очень важно не закрыть отверстие в датчике (например налив туда клея).

GPS приемник, полезная и одновременно бесполезная вещь. С одной стороны помогает включать такие хорошие штуки как удержание позиции и возврат на точку старта (возврат домой), а с другой эта самая точка очень приблизительная и зависит от точности приемника, количества видимых спутников или погодных условий, поэтому зависнуть около окна женской раздевалки может получиться в круге диаметром около 3-10 метров (а при добавлении хорошего барометра в сплюснутом шаре).

На момент написания статьи есть попытки добавить сонар (ультразвуковой дальномер) и оптический сенсор перемещения (какие устанавливаются в мышках). Сонар позволит добиться очень точного удержания высоты (около 1см) на малой высоте (примерно до 3 метров), но очень сильно зависит от поверхности, например высокая трава или бугры будут давать помехи и резкую смену высоты, т.е. коптер будет подпрыгивать или резко снижаться.

А вот оптический сенсор может помочь GPS приемнику для более точного удержания позиции.Проект может похвастаться большим количеством поддерживаемых датчиков различного назначения и с каждым релизом их число возрастает, а учитывая открытость проекта можно приделать и свои датчики.Вот их список, официально поддерживаемых в прошивке MultiWii 2.0 (а в скобочках в последней develop прошивке):

Так как же быть иначе?

После быстрого совещания возникли вот такие мысли:

В качестве нового подхода решили, что лучше всего опираться на возможность верификации ПО – до необходимого уровня, без злоупотреблений. Но для языка типа С доступных промышленных зрелых решений не существует, только прототипы [FC] и рекомендации.

При выборе языка мы поставили себе вот какие требования:

Оказалось, что из практических инструментов в эти требования хорошо подходит один очень старый, незаслуженно забытый инструмент. Да, это Ada. А точнее, его модерновое, регулярно обновляемое ядро SPARK. В [SRM] описаны основные отличия SPARK от Ada, их не так много.

Что такое SPARK, будет ясно дальше, мы покажем, как именно оно было применено, почему Ада понравилась больше, чем С, как работает прувер, и почему мы при этом ничего не потеряли, а только приобрели. И почему мы не взяли Rust.

Установка

Я рекомендую использовать антивибрационное крепление (можно купить тут: Banggood | Amazon | GetFPV), это снизит уровень вибраций передаваемых на гироскоп ПК.

Подразумевается, что вы должны установить этот контроллер в направлении стрелки на плате, но тогда разъем USB будет направлен вперед, т.е. он будет скрыт внутри рамы.

Наверное, лучше всего поставить его боком. На самом деле не важно какой стороной повернут ПК,  скорее всего, вы подключите контроллер к компьютеру всего один раз, а потом для настройки будете использовать Betaflight OSD или LUA скрипты.

Также вам может понадобится ремаппинг ресурсов, чтобы поменять порядок моторов.

Функции

В общем случае, полетный контроллер выполняет следующие функции:

  • Собирает информацию с датчиков (установленных на нем или внешних: компас, GPS, гироскопы и т.п.);
  • Устанавливает/рассчитывает свое положение в пространстве, согласно датчикам;
  • Собирает информацию о внешних управляющих воздействиях (отклонения стика пилотом или следующий шаг алгоритма программы/автопилотирования);
  • Рассчитывает неувязки и Пропорционально-Интегрально-Дифференциальные (PID) коэффициенты, в соответствие с прошивкой/программой автопилотирования или ручного управления;
  • Отправляет управляющие/корректирующие сигналы на исполнительные механизмы (на регуляторы оборотов).

Характеристики

  • F4, гироскоп MPU6000
  • Напряжение питания: 2S — 4S
  • Поддержка betaflight OSD
  • Встроенный датчик тока
  • BEC: 5V/2A
  • Каждый регулятор скорости рассчитан на 30 А (и 35 А — пиковое значение)
  • Прошивка регуляторов: BLHeli_32 с поддержкой DShot1200
  • Вес: 16,5 грамм
  • Размеры: 41,5 х 50 х 6 мм

Отличные характеристики, а и довольно современный функционал, мне и правда очень нравится идея интеграции регулей в ПК. Скоро выясним, сильно ли они шумят, и не будет ли на них жалоб. Если нет, тогда я скоро соберу коптер на TattooF4S.

Заключение

В целом ничего нового, но DYS сделала хорошую работу, улучшила то что есть у других производителей. Проблема с аппаратной инверсией для smart port может стать довольно серьезной проблемой для тех, кто хочет использовать телеметрию.

Думаю, плата станет довольно популярной, если надежность не подкачает. Надеюсь выявленные ошибки будут исправлены в ближайшем будущем.

Дополнительно отпишусь после использования платы на коптере.

Смотрите про коптеры:  Промышленная робототехника: что такое промышленный робот (устройство), какие бывают, как выглядит и из чего состоит
Оцените статью
Радиокоптер.ру
Добавить комментарий