Flix: разработка полетного контроллера с нуля
2.1K subscribers
61 photos
33 videos
3 files
69 links
По всем вопросам @okalachev
Чат обсуждения: @opensourcequadcopterchat
GitHub: https://github.com/okalachev/flix
Учебник: https://quadcopter.dev
Download Telegram
Flix становится серьезным проектом, а главное, что должно быть у серьезного проекта — это, конечно же, логотип. Я нарисовал вот такой.

Как вам? Пожалуйста, проголосуйте реакцией на пост. Если будет больше положительных реакций, логотип будет принят.
👍148👎19🔥71
Решил опубликовать промежуточный результат проектирования платы. Дорожки почти не рисовал, но распределил компоненты. Разъем для камеры все-таки вернул обратно (раз уж она работает!), будет совместно использовать почти все GPIO с гребенки.

Все рекомендовали 4-слойную плату. Вот я как их использовал:

🔹Верхний слой: условно «сигнальный». ESP32, IMU (U5) очень близко центру + стабилизатор (U4), барометр (U6), индикатор питания (LED1) и RGB-светодиод (LED2), кнопка Boot, USB-C.
🔹2-й слой: полностью земля — это общая рекомендация для большинства плат.
🔹3-й слой: оставлен под питание 3.3V и сигналы.
🔹Нижний слой: силовая часть. Buck-Boost (U3) и его обвязка (включая индуктивность L1) и силовые цепи моторов. Туда я же ставлю разъем для камеры CAM1 и его обвязку — на верхнюю сторону платы он не помещается.

Что думаете? Хотелось бы узнать ваши советы и комментарии перед тем, как продолжать! #pcb
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍323🔥32🏆1
Продолжаю улучшать UX: настройка Wi-Fi.

Пора добавлять в прошивку возможность настройки Wi-Fi через QGroundControl (сейчас конфигурируется только правкой кода). Конфигурация Wi-Fi включает в себя режим, а также имя сети (SSID) с паролем.

QGC позволяет менять числовые параметры, но SSID и пароль — это строки. И хотя в MAVLink есть Extended Parameter Protocol со строками, QGC его не поддерживает (что печально). Поэтому настройку я реализовал частично через параметры, частично через консоль.

Режим Wi-Fi выбирается параметром WIFI_MODE со следующими значениями:

🔹0 — Wi-Fi отключен.
🔹1 — режим точки доступа (AP), дефолт. Реквизиты настраиваются из консоли командой ap <ssid> <password>. Тут все как раньше, но с удобной настройкой.
🔹2 — режим клиента (STA). Реквизиты роутера настраиваются командой sta <ssid> <password>.
🔹3 — зарезервировано для будущей поддержки ESP-NOW.

Я протестировал полет в режиме клиента, и работает он не очень хорошо. Чувствуется какая-то стремная задержка в управлении — видимо, из-за ретрансляции пакетов через роутер. Кроме того, этот режим не особо применим для занятий в группе, так как в нем нет никакой защиты от управления чужим дроном. Можно реализовать аутентификацию по IP-адресу, но это ненадежно — IP-адрес легко подменить. В общем, режим не сверх-полезный.

Кстати, проблема с безопасностью существует и с ESP-NOW, и как именно ее лучше всего решить — я пока не придумал.

Также для удобства я добавил параметры линка:

🔹MAV_SYS_ID — MAVLink ID дрона. В одной сети может быть несколько дронов с разными ID, и QGC это поддерживает. Может быть полезно для каких-то роевых полетов и тому подобного.
🔹MAV_RATE_SLOW, MAV_RATE_FAST — частота «медленной» (heartbeat'ы) и «быстрой» телеметрии. Можно сделать отображение ориентации в QGC более плавным при необходимости. По умолчанию стоит 2 и 10 Гц соответственно.
🔹WIFI_LOC_PORT, WIFI_REM_PORT — выбор UDP-портов для MAVLink (14550 по умолчанию).

Изменения находятся в ветке wifi-config. Протестируйте, кто хочет, и напишите, что думаете!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥91🦄1
Media is too big
VIEW IN TELEGRAM
Насыпал еще параметров — теперь для конфигурации ШИМ моторов.

Коллекторные моторы управляются ШИМом, и у него есть два основных параметра: частота (Гц) и разрешение (в битах). Я добавил соответствующие параметры для настройки «на лету» через QGroundControl: MOT_PWM_FREQ и MOT_PWM_RES.

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

Я протестировал полет на разных конфигурациях ШИМ, начиная с заведомо нерабочих. Результат — на видео. После 2 000 Гц в стабильности полета разницы не очень заметно, но вот громкость действительно уменьшается с каждым увеличением частоты.

Также я добавил параметры для более легкого подключения бесколлекторных моторов. Теперь достаточно поменять MOT_PWM_STOP, MOT_PWM_MIN и MOT_PWM_MAX. По умолчанию MOT_PWM_MAX равен -1, что означает управление через duty cycle (для коллекторных моторов).

Ну а чтобы было совсем красиво, номера пинов тоже стали параметрами: MOTOR_PIN_FL, MOTOR_PIN_FR, MOTOR_PIN_RL, MOTOR_PIN_RR. Можно менять прямо на ходу, без правки кода и перезагрузки.
👍296🔥5😁2🏆2🦄1
Наконец-то развел плату!

Удалось ужать ее до 36x36 мм (было 40x40). Поменял транзисторы на более компактные AON7524 в DFN-корпусе. IMU заменена на ICM-40609-D (типа версия специально для дронов).

Перепробовал много разных компоновок выходных пинов, остановился на такой. В итоге выведено I2C, SPI, 9 GPIO (правда, только 4 не задействованы камерой).

Постарался зонировать, по-крайней мере не пересекать DC-DC блок и чувствительные компоненты.

Осталось окончательно доделать и буду заказывать. А где и как вы заказываете печатные платы?
🔥46👍10🎉53🍾1
Новые сборки

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

▶️ Первый дрон авторства @goldarte из Красногорска. Он был собран довольно давно, но видео прикольное, поэтому решил выложить. Артур — мой бывший коллега по COEX. Обещал прикрутить к Flix MoCap-систему собственной разработки, но пока что-то так и не прикрутил. Так что просто хороший дрон.

▶️ Второй — еще один рабочий дрон с моей прошивкой на кастомной печатной плате! Плату разработал и собрал подписчик из Крыма.

▶️ Еще один дрон от пользователя из Жарни, Франция. Полностью кастомная рама, выложена здесь: https://cults3d.com/en/3d-model/gadget/armature-pour-flix-drone.

▶️ И еще один был сделан в Университете Квинсленда, Австралия, в качестве магистерского дипломного проекта студента под кураторством @arkymatsekh. Студенту понравилось.

Все дроны летают (хотя бы как-то). Это обязательно условие для размещения в официальном реестре сборок Flix. #user
👍26🔥73👏3
Плата Flix заказана. На JLCPCB.

Доделал некоторые изменения по мотивам ваших комментариев: добавил teardrops, поменял настройки thermal relief, местами увеличил полигоны и добавил больше via на землю. Теперь что-то еще поменять можно будет только в следующей итерации!

Доставка платы будет сложная, через форвардера, но надеюсь, что все пройдет гладко.
🔥42👍11🎉3🍾1
Про вайб-кодинг

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

И я подумал, что может быть полезным ввести какой-то стандартный знак, иконку, плашку или что-то подобное для проектов, которые используют такой же принцип. Например, плашка с надписью «No vibe code» или «No vibe code is used» со ссылкой на разъяснения причин такого решения.

Как вы думаете, нужно ли такое? А может такое уже есть?
👍429🔥4🤔1💯1