28 июня 2018

Тинивуп для сына

Авиамоделизмом занимаюсь с детства. Ходил в кружок, ездил на соревнования. После школы жизнь закрутила, институт-семья-работа, было не до любимого хобби. После переезда из Москвы в Крым родился младший сын. Когда он подрос, появилось немного больше свободного времени, тогда и решил вернуться к своему хобби, да еще и сына привлечь. Купил свой первый вертолет NineEagles Solo Pro V2, который был почти клоном первого микровертолета с одним основным ротором Blade mSR. Думал, ну вот, будем вместе заниматься, будет интересно! Но увы, сын растет гуманитарием и затащить его в мое хобби не получалось до текущего момента. Недавно он увидел у моего друга тинивуп в действии. Смотрю, заинтересовался. В общем, пообещал ему сделать такой же, чтобы могли вместе полетать:)


К выбору компонентов подошел основательно. Квадрик должен быть максимально надежным и простым в обслуживании. О бесколлекторном варианте речь даже не шла. Основа модели - полетный контроллер. Решил попробовать новую модель Eachine BeeCore V2 D16 с интегрированным приемником на SPI-шине.


Краткие характеристики полетного контроллера Eachine BeeCore V2 D16:
  • Прошивка BetaFlight CRAZYBEEF3FR
  • Процессор STM32F303
  • Гироскопы MPU6000 на SPI-шине
  • Питание 1S (3.5-4.35В)
  • Интегрированный чип приемника CC2500 на SPI-шине
  • BetaFlight OSD на чипе AT7456E
  • Степап 5В/0.8А с LC-фильтром
  • Контроль напряжения
  • Поддержка пищалки
  • Вес 3.25 грамма
Полетный контроллер приехал отлично упакованный, в жесткой коробочке. Какие-либо повреждения хрупкой вещи были исключены.


На коробке отмечен протокол работы приемника, но это немного некорректная информация. В случае, если стоит отметка FRSKY, то подразумевается, что на контроллере стоит чип CC2500. А уж какой с ним на самом деле будет использован протокол - решает сам пользователь. На текущий момент поддерживается FrSky D16 и D8, но, если на то будет воля разработчиков, можно будет запустить и протокол Futaba S-FHSS, который использует тот же чип CC2500. В остальных случаях интерпретация будет такой: FLYSKY - чип A7105, DSM2 - чип CYRF6936.

В комплекте было все тоже самое, что и с полетным контроллером RacerStar CrazyBee F3 FR: пять высоких демпферов, пять тонких винтиков, липучка и три силовых провода с разъемами LOSI, PH2.0 и PH1.25.


Схему подключения Eachine BeeCore V2 D16 взял из документации. Все примитивно: моторы - в разъемы, камера четырьмя проводками припаивается к соответствующим выводам.


Для сборки квадрика использовал следующие компоненты: рама BetaFPV65S, от донора Eachine E011 моторы и пропеллеры, камера LST S2, низкие демпферы из комплекта и самодельное крепление для камеры. Забыл добавить на фотографию силовой провод с PH2.0-разъемом.


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


Мне достался вариант с массивными кусками пластика непонятного назначения спереди и сзади, без фиксации проводов от моторов и без боковых перемычек. Да еще и весом 4 грамма, хотя был указан вес в 3 грамма. Для примера, рама донора весит 3.75 грамма. Уже хотел использовать ее, но останавливало крепление полетного контроллера только в трех точках. Пришлось брать в руки скальпель и хирургическим путем уменьшать вес рамы. Срезал массивные куски пластика - вес рамы стал 3.6 грамма. И то неплохо.


Уже припаял к полетному контроллеру силовой провод с PH2.0-разъемом, стал примерять плату на раму и обнаружил, что силовой провод категорически коротковат. Стоковый провод длиной всего 35мм, а для удобного подключения аккумулятора требуется длина в 55мм! Пришлось разбирать разъем, разжимать контакты и ставить более длинный провод толщиной 24AWG. Полетный контроллер установил на низкие демпферы из такого комплекта, не стал обрезать те, что были с полетным контроллером.


Стал думать, как зафиксировать провода от моторов. Обычно фиксируют резиновыми колечками за моторы, но по опыту знаю, что они все время теряются при авариях. Поэтому сделал проще - просто приклеил провода к раме "китайскими соплями". Это эластичный клей B-7000, который можно потом легко удалить.

Схема подключения камеры LST S2 выглядит, как на рисунке. Кроме этого добавится еще один провод для управления передатчиком.


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


Крепление создал в программе OpenSCAD. Это очень удобный и простой 3D-редактор, позволяющий создавать модели не визуально, а кодом из примитивов. Как программист, освоил его за пару вечеров. К плюсам редактора стоит отнести возможность создавать параметрические модели. Меняешь ряд переменных и модель автоматически перерисовывается по заданным условиям. Для меня основным преимуществом редактора стала возможность подтягивать контуры из SVG-файлов, созданных в векторном редакторе Inkscape, то есть, Inkscape используется как скетчер. И уж поверьте, в таком качестве это самый лучший скетчер из всех, что я видел в других 3D-редакторах:) У редактора OpenSCAD есть только один огромный недостаток - отсутствие какого-либо сглаживания. Ни фасок, ни плавного перехода между примитивами не сделать. Только создавать все это вручную.

Чтобы создать STL-файл модели крепления камеры, надо скачать и установить девелоперскую сборку редактора OpenSCAD из раздела "Development Snapshots". Затем загрузить и распаковать в отдельный каталог архив с моделью крепления камеры.


Открываем в редакторе файл "cameramount.scad" и включаем показ параметров последним пунктом в меню "Вид". Можно подстроить под себя угол наклона камеры, продольное расположение, ширину камеры и горизонтальный сдвиг относительно центра, угол и длину крюка, толщину всех деталей крепления. Перед созданием модели надо скрыть камеру, все углы задать в ноль, включить печать поддержки и удлиненных частей крепления, которые позже будут срезаны. Удлинять пришлось из-за того, что горячее сопло принтера ездит по одному месту и пластик не успевает остыть. Затем нажать F6 для создания окончательной модели и можно сохранить результат в STL-файл.


С печатью из нейлона есть некоторые хитрости. Нейлон очень сильно усаживается при остывании и деталь отрывает от стола. Для фиксации деталей из нейлона на столе принтера использую лак "Пластик-71". Вокруг мелких деталей будет достаточно задать широкий брим, а при печати больших деталей еще потребуется и несколько слоев рафта по площади раза в четыре больше самой детали! Иначе оторвет.

После печати удаляю поддержку, укорачиваю скальпелем удлиненные элементы и разъединяю фиксатор линзы с основанием крепления. Там заложен зазор и при печати пластик не намертво спаивается. Фиксатор линзы аккуратно приподнимаю и в районе переднего крепежного отверстия грею паяльным феном, включенным на 250-260 градусов. Благодаря небольшой канавке, заложенной в конструкцию детали, фиксатор линзы легко установить в вертикальное положение, немного нагрев его основание. Так же поднимается и крюк. Такой хитрый ход сделан для того, чтобы пластик располагался вдоль направления экструзии. Это заметно увеличивает прочность детали и не позволяет ей расслоиться. Если кажется, что камера стоит в креплении недостаточно надежно, можно мазнуть "китайскими соплями" вокруг линзы перед установкой, тогда камеру будет непросто разделить с креплением:)


Последним штрихом в установке камеры стал отдельный провод, идущий от контакта кнопки передатчика к контакту "BUZZ-" полетного контроллера. Так уже делал у предыдущей модели. Через этот провод буду управлять передатчиком камеры прямо с пульта отдельным тумблером.

Осталось изготовить канопу. Как и планировал, буду делать ее методом вакуумной формовки. Для этого надо изготовить молд-форму будущей канопы. Пробовал нарисовать молд в 3D-редакторе FreeCAD - получилось, но результат не очень понравился. Вернулся к понравившемуся OpenSCAD. Несмотря на отсутствие сглаживания, удалось нарисовать более-менее приличную канопу, да еще и с возможностью менять некоторые параметры.


Канопа как бы состоит из двух деталей: нижняя часть и верхняя. В прилагаемом архиве есть два варианта канопы: с нарисованным низом без сглаживания острых кромок и с низом, созданным отдельной моделью в редакторе FreeCAD. В остальном канопы идентичны. Чтобы получить необходимую форму, можно задать угол наклона камеры, продольное положение, высоту установки и прочие параметры. Затем стоит увеличить детализацию и только тогда сохранить модель в SLT-файл.


Канопу печатал из ABS-пластика на минимальной скорости, чтобы качество конечной модели было достаточным. Попробовал для сравнения два слайсера с практически одинаковыми параметрами: Slic3r PE и Simplify3D. По качеству конечной модели первый оказался немного лучше.


В качестве материала для формовки канопы рассматривал несколько вариантов: одноразовые тарелки, пластиковые папки-скоросшиватели и пластиковые бутылки. Для начала решил попробовать пластиковые тарелки. Выбрал самые большие из самого толстого пластика.

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


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


Тогда процесс пошел лучше, но не каждый раз удачно. Заготовку надо равномерно прогревать феном по всей поверхности, иначе получается, что где-то пластик будет сильно тонким, а где-то не успеет обтянуть форму молда. Непростой процесс. Получилось сделать всего пару каноп. Во первых, материал пластиковых тарелок подойдет, прочности хватит. Но лучше, если бы он был листовым:) Наиболее подходящим будет материал от бутылок. Во вторых, швейные пяльцы абсолютно не подходят. Надо жесткий и прочный каркас, так как пластик в процессе остывания сильно усаживается и на каркас приходятся значительные нагрузки. Ну и пылесос надо чем мощнее, тем лучше, в разумных пределах:)

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


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


Квадрик готов! Итоговый вес получился 25.25 грамм. Это катастрофически много по сравнению с бесколлекторным вариантом, который весил менее 20 грамм!

Осталась настройка. Как раз удачно обновилась прошивка BetaFlight до версии 3.4.0-RC3, ее и поставлю. Тем более там была исправлена проблема с тряской по осям, если приемник работает через SPI-шину. Вот и проверю. Для настройки потребуется новая версия конфигуратора BetaFlight-10.3.0. Перед прошивкой рекомендую почитать про особенности настройки новой версии 3.4.0, а так же ознакомиться с рекомендациями проекта MockingBird.

Для начала сразу о грустном. Все прошил, настроил с приемником в режиме FrSky D16. Как обычно, все завелось, телеметрия есть, LUA-скрипты работают.


Начал летать - отлично, тряски по осям нет, как было с CrazyBee F3 FR. Отлетал аккумуляторов пять наверное, все хорошо. Продолжаю потихоньку настраивать PID-ы, подгонять поудобнее расходы. На следующем аккумуляторе сразу после взлета квадрик падает, переворачивается и начинает молотить пропеллерами, на пульт не реагирует. Хорошо, что перевернулся, прижало его к полу. Аккуратно поднял его, отключил аккумулятор. Думаю, ну ладно, бывает. Снова взлетаю, через пару минут падаю в соседней комнате с теми же симптомами. Итог - зависает полетный контроллер. Похожее поведение случалось и с RacerStar CrazyBee F3 FR, только там хоть моторы отключались, а тут продолжали работать на тех же оборотах, которые были на момент зависания. Видимо и тут придется отказаться от телеметрии и перейти на режим FrSky D8.

Есть еще один маленький недочет разработчиков прошивки. У полетного контроллера Eachine BeeCore V2 D16 отсутствует датчик тока, но в ресурсах прошивки он присутствует. Прошивка используется одна и та же с CrazyBee F3 FR, видимо из-за этого. Там датчик тока есть.

В полетный контроллер заливаю прошивку CRAZYBEEF3FR последней версии. Сразу переназначаю управляющий вывод на пищалку под управление передатчиком камеры через Pinio.

resource BEEPER 1 NONE
resource PINIO 1 C15
set pinio_box = 40,255,255,255

В портах вижу наличие одного UART-порта, но его выводов на плате нет.


В основных настройках включаю PID-цикл 8/8кГц, включаю на приемнике протокол FRSKY_D, задаю возможность арминга при любом положении. Отключаю динамические фильтры, не нужны они на коллекторнике.


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

Чтобы привязать приемник к пульту, надо либо нажать и подержать пару секунд кнопку BIND на плате полетного контроллера, либо ввести в консоли конфигуратора следующую команду:

frsky_bind

Так как доступ к кнопке BIND заблокирован канопой, проще всего ввести команду. В это же время аналогичная процедура запускается на передатчике.


На вкладке питания поднимаю максимальное напряжение до 4.4В, минимальное снижаю до 2.9В и отключаю датчик тока. Мелкие аккумуляторы значительно просаживаются под нагрузкой, по показаниям можно летать до 2.8В. После снятия нагрузки напряжение вернется к 3.5В.


В параметрах FailSafe выставил минимальное значение на первый AUX-канал, чтобы квадрик уходил в дизарм при потере сигнала.


PID-ы задирал до невозможности, ибо только с такими значениями появилось ощущение стабильного ровного предсказуемого полета. Расходы подобрал так, чтобы квадрик мог вращаться в районе 1000 градусов в секунду. На таком мелком аппарате флипы-роллы должны происходить максимально быстро, чтобы успеть подхватить над землей. Экспоненты не ставил, так как в пульте стоят ломанные семиточечные кривые на питч/ролл: -100,-36,-18,0,18,36,100. Этот как бы уменьшенные расходы в околонулевой зоне, но не с экспоненциальной, а с линейной характеристикой до определенного предела. Мне так удобнее показалось.


При полете в режиме стабилизации ограничил угол наклона квадрика в 30 градусов. На самом деле, это не пригодилось, ибо сына сразу стал обучать полетам в акро-режиме, но с ограничением по углу наклона.


В фильтрах все поменялось. Теперь нет необходимости переходить в консоль, чтобы задать значения для lowpass2-фильтра, все стало доступно напрямую из конфигуратора. Не буду сильно углубляться в настройку фильтров, иначе размер статьи увеличится в два раза. Рекомендации по настройке были по ссылке выше.


Во вкладке приемника ограничил количество AUX-каналов до четырех, выполнив в консоли команду:

set max_aux_channels = 4

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


Не стал трогать переменные rx_range, в передатчике просто выставил исходящий диапазон сигнала 1000-2000, немного подредактировав каждый из каналов.


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

set acro_trainer_angle_limit = 15

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

В настройках OSD вывел на экран только ник пилота, RSSI, напряжение аккумулятора, уровень газа, полетный режим и полетное время.


Еще немного пошевелил новые опции относительно фильтрации входящего сигнала и iterm_relax. Так же убрал в ноль новый параметр throttle_boost, отключив эту функцию. По итогу, квадрик полетел очень классно! Четкое предсказуемое управление, отличный подхват. На радостях полетал по дому на предельной скорости, попугал жену и кошку:) Итоговый файл настроек можно скачать здесь.

Обучение сына начал с визуальных полетов в акро-режиме с ограничением. Основная задача состояла в том, чтобы мозг ребенка перестал думать, в какую сторону дергать стики в той или иной ситуации, все должно работать на уровне рефлексов. Так же учил держать высоту, подхватывать при снижении, работать стиками короткими толчками. За несколько занятий сын уверенно висел над кроватью, не вылетая за ее пределы. На улице получилось не так хорошо, как дома:) Следующий этап - полеты по камере, но чуть позже.


Полетный контроллер Eachine BeeCore V2 D16 показал себя отлично, несмотря на некоторые проблемы, вызванные не очень стабильной работой прошивки BetaFlight. Кстати, уже появился в продаже его конкурент от BetaFPV с F411-процессором и так же приемником на SPI-шине. Рама BetaFPV65S старой редакции таки подвела. Сломалась пара лучей в месте крепления мотормаунтов. Временно поставил раму от донора Eachine E011, но уже заказал несколько обновленных версий рамы BetaFPV65S. Тему с самодельной канопой пока пришлось отложить, не могу придумать из чего и как сделать рамку для фиксации пластика. Нет ни подходящих инструментов, ни материалов в шаговой доступности. Немного позже нарисую крепление камеры под обычную канопу от BetaFPV.

Таких квадриков у меня будет два, чтобы летать вместе с сыном. На первое время отдам ему пульт Devo10 и очки Eachine EV100, а там посмотрим, может что и поинтереснее организую, если втянется:)