VR, AI, провода и пена
5 постов
5 постов
С одной сервой планер летает не долго и не далеко, можно кинуть с горки и постараться волной провести его подальше. Но это нужно ходить подымать и забираться обратно. Лениво, напрашиваются элероны и моторчик.
Для элеронов нужно еще 2 сервы и резка крыла. А это дополнительный вес и уменьшение прочности. Гемини подсказал вариант реализации поворота без руля направления и элеронов только за счет дифференциальной тяги двух моторов.
По идее при разном газе получится не только управлять рысканием, но еще и креном за счет разных реактивного момента и подъемной силы. Собственно китайский SU-35 только двумя моторами и управляется.
Моторы выбирал между коллекторными 8520 и бесколлекторными от тинивупов. Вторые будут меньше по весу, тяги должно быть больше, предсказуемей поведение при разрядке. На алике для них заказал микро регуляторы, так как те что есть тяжелые, а плату от вупа пихать в самолет жалко. Плюс аликовские копеечные. На странице товара указана неправильная распиновка, нужно смотреть по шелкографии на плате.
Управляются регуляторы той же библиотекой, что и сервоприводы, значения передаются в микросекундах. Гемини присоветовал добавить сглаживание чтобы сильно не дергать питание. Также на приемнике нужно выставить Failsafe(PULSE_MIN) для обоих каналов к котором подключены моторы, тогда при потере связи самолет не улетит, а если сядет не станет наматывать траву винтами.
На Thingiverse попалась идея крепления сборки такого регулятора с мотором на передней кромке крыла. Немного переделал под себя и распечатал несколько вариантов на пробу. Удачный выложил на Github проекта в папку STL.



Крепление мотора и регулятора на крыло
В хозяйстве нашлись несколько моторов TC0803 от подбитого вупа Eachine Trashcan. Один целый, один со сломаным валом и два с погнутым. Надо два, поэтому пришлось один выпрямлять.


Выпрямление вала на моторе
Для этого разобрал мотор, снял колокол, зажал вал в патроне гравера и надел на внутреннюю часть вала стержень шариковой ручки. Нужно осторожно надавливать на стержень и после этого проверять по линейке биение противоположного конца стержня во время прокручивания патрона.
Когда вал выпрямлен, можно собирать мотор и прикручивать его вместе с ESC к креплению.
Для Dart 250G в свое время делал миниатюрные PDB под 2S аккумулятор. Одна сопля и можно ее использовать с 1S в этом проекте.


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



Отсек для распределительной платы
Тестировать моторы с регуляторами нужно обязательно с надетыми пропеллерами, иначе мотор быстро раскрутится и процессор простенького ESC захлебнется в эвентах, мотор начнет троить и остановится.
Проверил силовую установку на столе, всё работает. Но после сборки выяснилось что 250mAh аккумулятор сильно греется и быстро садится. Решил открыть калькулятор ecalc и пересчитать сетап.
Подставил примерные комплектующие и посмотрел каких вообще характеристик стоит ожидать от самолета. Вышло что эффективней будет поставить двойные 55мм пропеллеры от Walkera Ladybird, а аккумулятор можно взять помощнее. Батарейка 600мАч от Eachine QX90C весит почти в 2 раза больше 250мАч, но взлетный вес не прибавился, потому что снялись носовые утяжелители.
Собрал самолет с новыми винтами и аккумом, подвесил на веревке к сушилке и потестил. Электроника хорошо отрабатывает дифференциальную тягу: при отклонении джойстика один пропеллер заметно ускоряется, создавая нужный момент для разворота. Триммировать по Yaw не пришлось, при равных значениях сигнала на моторах направление удерживается.
Сейчас самолет весит 77г и готов к полевым испытаниям. В следующей части мы наконец-то выберемся на улицу, проверим стабильность связки Bluetooth + ESP-NOW в чистом поле и узнаем, как этот малыш покажет себя в реальном полете под управлением VR-контроллера.
После тестов планера с приемником на улице стало понятно что дальность Bluetooth у VR контроллера никакая. Пара метров - и сервы начинают подлагивать, в 5 метрах связи уже нет. Запустить с определенным положением руля можно, но управлять полетом уже не получится.
Решил пускать сигнал с VR пульта через ретранслятор. Тем более что изначально планировалось ставить на самолёт более лёгкую плату - двухграмовую ESP32C3 Pro Mini с выносной антенной, но из-за того что пульт не поддерживал BLE пришлось делать на Lolin32 Lite с обычным ESP32.
Гемини подсказал, что связать две платы ESP32 можно по протоколу ESP-NOW и это будет прям очень быстро (единицы миллисекунд) и далеко (сотни метров).
Схема такая получается: сигнал с VR контроллера отправляется по Bluetooth на плату ESP32, которая висит с павербанком где-то рядом на дереве. Миксуем каналы так как нам нужно и сразу же отправляем пакет дальше по ESP-NOW на приемник самолёта.
Плату ESP32 для работы ретранслятором доделывать не нужно, возможно потом добавлю буззер для оповещений и всё. А вот на плате приемника надо закоротить диод для питания от 1S аккумулятора, иначе будет вырубаться уже при 3.9В. Если использовать внешнюю антенну через IPX разъем, то перепаять переключатель рядом с SMD антенной на сторону разъема.
Чтобы связать приемник с ретранслятором нужно включить платы с прижатым к земле контактом Bind (pin6 на приемнике, pin13 на ретрансляторе). Приемник в состоянии бинда шлёт в эфир свой мак адрес, а ретранслятор ждет такое сообщение и получив запишет его.
Далее от приемника требуется только принять пакет с каналами управления и выдать PWM на пины сервам/моторам. Весь тюнинг будет делаться через прошивку ретранслятора, так что приемник можно паковать внутрь самолёта.
Скетчи для ретранслятора и приемника загрузил на Github. В папке со скетчем нужно переименовать config_template.h в config.h и внести нужные настройки. Для приемника это например значения каналов при Failsafe, а для ретранслятора - калибровки контроллера и выбор микшера.
На кнопки VR контроллера ABCD повесил через микшер трим Yaw/Pitch чтобы можно было компенсировать потенциальную разницу в установке моторов и начальный угол руля высоты.
На этом программная и аппаратная часть ретранслятора готовы. Сервопривод на столе откликается мгновенно, лаги исчезли, а связка Bluetooth + ESP-NOW работает стабильно. Дальность приема в поле на штатных антеннах составила не менее 100м, что для визуального полета мне пока будет достаточно. В следующей статье расскажу про подключение и тест моторов.
Чтобы управлять сервами на нашем самолете нужно передать с VR контроллера на ESP32 аналоговые значения c двух осей джойстика.
Так как контроллер у меня с Bluetooth, буду использовать библиотеку Bluepad32 для Arduino. Устанавливается она через менеджер плат, для этого нужно добавить в настройках ссылку на json.
После установки нужно выбирать плату уже из нового набора и прошивать со стиранием, это влияет на потребление во время работы.


Настройки платы
Скетч собрал в DeepSeek и выложил на Github. Можно просто скопировать и залить на плату.
После прошивки порядок действий такой:
Ресет ESP32 с кнопки
Включить VR контроллер
Нажать одновременно @+A
Подождать несколько секунд, плата ищет беспроводной gamepad, когда найдет включается LED (pin22)
Нажать одновременно @+B
После этого в терминал Arduino будут сыпаться значения с осей и кнопок VR контроллера, а на пины 12 и 14 начнет подаваться сигнал управления сервами.
Припаял землю и сигнал сервы к контактам G и 12, а питание к ноге разъема аккумулятора.
Закрываю и проверяю.
Во время проверки выяснилось что одна из вертолетных серв сдохла – все время грелась, жужжала и дергалась. Из-за удара об землю или может стёрся проводящий слой на резисторе. Решено было ограничиться управлением одним рулём высоты, провести тесты, а креном заняться потом.
Сначала канцелярским ножом отрезал кусок потолочной плитки, зашкурил рисунок и вклеил 1мм карбоновый пруток. Затем обтянул цветным скотчем. Всё это должно усилить руль.



Потолочка с карбоновым прутком (карусель)
Весь пенопласт и самолетную пену режу 9мм канцелярским ножом со свежим лезвием.
Из пачки соуса швейным ножом вырезал петли.
На thingiverse не нашел качалок от своей сервы, начал переделывать то что есть, в итоге нарисовал собственный комплект под свои сервы. Модели положил на Github проекта.
Сделал прорези посередине торцов руля и вклеил туда ухупором петли.
Вырезал лезвием позади крыла сквозной отсек под серву и после установки забил оставшуюся полость.


Серва установлена на свое место
Из 1мм карбонового прутка и канцелярской скрепки изготовил тягу.



Сборка тяги (карусель)
Примотал к прутку куски скрепки с помощью нитки и смочил ее клеем. Циакринового не нашлось, весь высох, зато нашелся китайский двухкомпонентный, тоже просроченный, но удерживать нитку на месте способен.
Длина тяги вышла 22см, что немало, но так как усилие у нас идёт под прямым углом да и не такое оно большое получается, решил обойтись без боуденов и направляющих.
Канцелярским ножом вырезал отсек под плату ESP32 с аккумулятором.
Так же прорезал спереди углубления для грузов, с помощью которых можно будет плавно управлять центром тяжести.
Подбирал разные грузы для смещения ЦТ ближе к носу, попробовал припой, стальные шарики, болты и гайки M6, свинцовые пломбы, в итоге остановился на 10р монетах.


Приемник и аккумулятор на своих местах
Фиксирую кабину куском велосипедной камеры.
Самолет стал весить 70г, немного увеличилась площадь крыльев. Покидал тушку с выключенной электроникой для проверки летных качеств и такое ощущение что немного отклонив сервой хвост вверх он начинает парить лучше чем до переделки.
В следующей части расскажу про прошивку ESP32 и подключение VR контроллера.
Возникла идея скрестить пульт от VR шлема и детский метательный планер.
Чтобы не вышло слишком длинно сделаю несколько отдельных статей для каждого этапа эксперимента.
Всё должно быть легально, легко переноситься и управляться одной рукой.
Буду использовать то что есть в наличии дома либо максимально доступные и дешёвые комплектующие с Авито и Алика.
Выбрал обычный планер из EPP, это доступно и конструкция легко воспроизводима.
Немаловажно ещё то, что прохожим внешний вид самолёта знаком по витринам Союзпечати и вопросов у них не должно возникать. Остановился на размахе крыльев 48см. Есть еще 36см и 85см. Маленький будет хуже летать, а большой с обвесом уже не влезет в 150г.
С давних пор валяется кучка запчастей от вертолётика Pilotage Стрекоза Мини.
Аппаратура была переделана под использование с симулятором FPV Freerider, а вот две сервы ждали своего часа.
Сервы с маркировкой PL0609-02D, 4 грамовые, на 20 зубьев, разъем JST 1.25мм, питаются напрямую от 1S аккума.
Аккумулятор буду использовать 6 грамовый от Mobula6 на 250mAh.
Приемником будет выступать плата с ESP32. Если пульт будет с BLE, то подойдёт любая плата: ESP32S, ESP32H, ESP32C и обычная. Если пульт с Bluetooth, то заработает только обычная ESP32.
Одна из самых легких плат на ESP32 - Lolin32 lite. На ней есть запаяный разъем под аккумулятор, но если решите подключать батарейку от тинивупа с таким же разъемом проверяйте полярность.
У меня нашелся самый простой восьмикнопочный с аналоговым джойстиком, именно этот с Bluetooth, но вроде как бывают в таком же корпусе с BLE.
Полноценный AETR из него не достанешь, но для начала пойдет. Можно например джойстиком влево-вправо отклонять элероны, вверх-вниз - руль высоты, а двумя передними кнопками прощелкивать заданные значения газа.
Проект (пока) несложный, поэтому код буду писать для Arduino в какой-нибудь простой бесплатной иишке, например DeepSeek. Рабочий вариант получается быстро и с первого раза. Код буду выкладывать на Github, там же лежат файлы stl от качалок и кабанчиков.
На этом первая часть закончена. Выбор основных компонентов закрыт, осталось собрать это в кучу и заставить работать. Следующая часть будет про подключение VR контроллера к ESP32. Если появятся вопросы по текущему этапу — напишу дополнение к этой части.