Продолжаю улучшать UX: настройка Wi-Fi.
Пора добавлять в прошивку возможность настройки Wi-Fi через QGroundControl (сейчас конфигурируется только правкой кода). Конфигурация Wi-Fi включает в себя режим, а также имя сети (SSID) с паролем.
QGC позволяет менять числовые параметры, но SSID и пароль — это строки. И хотя в MAVLink есть Extended Parameter Protocol со строками, QGC его не поддерживает (что печально). Поэтому настройку я реализовал частично через параметры, частично через консоль.
Режим Wi-Fi выбирается параметром
🔹 0 — Wi-Fi отключен.
🔹 1 — режим точки доступа (AP), дефолт. Реквизиты настраиваются из консоли командой ap <ssid> <password>. Тут все как раньше, но с удобной настройкой.
🔹 2 — режим клиента (STA). Реквизиты роутера настраиваются командой sta <ssid> <password>.
🔹 3 — зарезервировано для будущей поддержки ESP-NOW.
Я протестировал полет в режиме клиента, и работает он не очень хорошо. Чувствуется какая-то стремная задержка в управлении — видимо, из-за ретрансляции пакетов через роутер. Кроме того, этот режим не особо применим для занятий в группе, так как в нем нет никакой защиты от управления чужим дроном. Можно реализовать аутентификацию по IP-адресу, но это ненадежно — IP-адрес легко подменить. В общем, режим не сверх-полезный.
Кстати, проблема с безопасностью существует и с ESP-NOW, и как именно ее лучше всего решить — я пока не придумал.
Также для удобства я добавил параметры линка:
🔹
🔹
🔹
Изменения находятся в ветке wifi-config. Протестируйте, кто хочет, и напишите, что думаете!
Пора добавлять в прошивку возможность настройки Wi-Fi через QGroundControl (сейчас конфигурируется только правкой кода). Конфигурация Wi-Fi включает в себя режим, а также имя сети (SSID) с паролем.
QGC позволяет менять числовые параметры, но SSID и пароль — это строки. И хотя в MAVLink есть Extended Parameter Protocol со строками, QGC его не поддерживает (что печально). Поэтому настройку я реализовал частично через параметры, частично через консоль.
Режим Wi-Fi выбирается параметром
WIFI_MODE со следующими значениями:Я протестировал полет в режиме клиента, и работает он не очень хорошо. Чувствуется какая-то стремная задержка в управлении — видимо, из-за ретрансляции пакетов через роутер. Кроме того, этот режим не особо применим для занятий в группе, так как в нем нет никакой защиты от управления чужим дроном. Можно реализовать аутентификацию по 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🔥9❤1🦄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. Можно менять прямо на ходу, без правки кода и перезагрузки.
Коллекторные моторы управляются ШИМом, и у него есть два основных параметра: частота (Гц) и разрешение (в битах). Я добавил соответствующие параметры для настройки «на лету» через 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. Можно менять прямо на ходу, без правки кода и перезагрузки.
👍29❤6🔥5😁2🏆2🦄1
Наконец-то развел плату!
Удалось ужать ее до 36x36 мм (было 40x40). Поменял транзисторы на более компактные AON7524 в DFN-корпусе. IMU заменена на ICM-40609-D (типа версия специально для дронов).
Перепробовал много разных компоновок выходных пинов, остановился на такой. В итоге выведено I2C, SPI, 9 GPIO (правда, только 4 не задействованы камерой).
Постарался зонировать, по-крайней мере не пересекать DC-DC блок и чувствительные компоненты.
Осталось окончательно доделать и буду заказывать. А где и как вы заказываете печатные платы?
Удалось ужать ее до 36x36 мм (было 40x40). Поменял транзисторы на более компактные AON7524 в DFN-корпусе. IMU заменена на ICM-40609-D (типа версия специально для дронов).
Перепробовал много разных компоновок выходных пинов, остановился на такой. В итоге выведено I2C, SPI, 9 GPIO (правда, только 4 не задействованы камерой).
Постарался зонировать, по-крайней мере не пересекать DC-DC блок и чувствительные компоненты.
Осталось окончательно доделать и буду заказывать. А где и как вы заказываете печатные платы?
🔥46👍11🎉5❤3🍾1
Новые сборки
Пока я вожусь с платой, подписчики из самых разных уголков мира собрали еще несколько интересных дронов с моей прошивкой.
▶️ Первый дрон авторства @goldarte из Красногорска. Он был собран довольно давно, но видео прикольное, поэтому решил выложить. Артур — мой бывший коллега по COEX. Обещал прикрутить к Flix MoCap-систему собственной разработки, но пока что-то так и не прикрутил. Так что просто хороший дрон.
▶️ Второй — еще один рабочий дрон с моей прошивкой на кастомной печатной плате! Плату разработал и собрал подписчик из Крыма.
▶️ Еще один дрон от пользователя из Жарни, Франция. Полностью кастомная рама, выложена здесь: https://cults3d.com/en/3d-model/gadget/armature-pour-flix-drone.
▶️ И еще один был сделан в Университете Квинсленда, Австралия, в качестве магистерского дипломного проекта студента под кураторством @arkymatsekh. Студенту понравилось.
Все дроны летают (хотя бы как-то). Это обязательно условие для размещения в официальном реестре сборок Flix. #user
Пока я вожусь с платой, подписчики из самых разных уголков мира собрали еще несколько интересных дронов с моей прошивкой.
▶️ Первый дрон авторства @goldarte из Красногорска. Он был собран довольно давно, но видео прикольное, поэтому решил выложить. Артур — мой бывший коллега по COEX. Обещал прикрутить к Flix MoCap-систему собственной разработки, но пока что-то так и не прикрутил. Так что просто хороший дрон.
▶️ Второй — еще один рабочий дрон с моей прошивкой на кастомной печатной плате! Плату разработал и собрал подписчик из Крыма.
▶️ Еще один дрон от пользователя из Жарни, Франция. Полностью кастомная рама, выложена здесь: https://cults3d.com/en/3d-model/gadget/armature-pour-flix-drone.
▶️ И еще один был сделан в Университете Квинсленда, Австралия, в качестве магистерского дипломного проекта студента под кураторством @arkymatsekh. Студенту понравилось.
Все дроны летают (хотя бы как-то). Это обязательно условие для размещения в официальном реестре сборок Flix. #user
👍26🔥7❤4👏3
✅ Плата Flix заказана. На JLCPCB.
Доделал некоторые изменения по мотивам ваших комментариев: добавил teardrops, поменял настройки thermal relief, местами увеличил полигоны и добавил больше via на землю. Теперь что-то еще поменять можно будет только в следующей итерации!
Доставка платы будет сложная, через форвардера, но надеюсь, что все пройдет гладко.
Доделал некоторые изменения по мотивам ваших комментариев: добавил teardrops, поменял настройки thermal relief, местами увеличил полигоны и добавил больше via на землю. Теперь что-то еще поменять можно будет только в следующей итерации!
Доставка платы будет сложная, через форвардера, но надеюсь, что все пройдет гладко.
🔥43👍13🎉4🍾2
Про вайб-кодинг
В некоторых своих неважных проектах я уже довольно активно применяю вайб-кодинг. Но в Flix я с самого начала принципиально решил его не использовать. Разве что только в каких-то периферийных утилитах, не в ядре. Каждая строчка кода продумана и осознанна моим собственным, неэффективным, естественным интеллектом.
И я подумал, что может быть полезным ввести какой-то стандартный знак, иконку, плашку или что-то подобное для проектов, которые используют такой же принцип. Например, плашка с надписью «No vibe code» или «No vibe code is used» со ссылкой на разъяснения причин такого решения.
Как вы думаете, нужно ли такое? А может такое уже есть?
В некоторых своих неважных проектах я уже довольно активно применяю вайб-кодинг. Но в Flix я с самого начала принципиально решил его не использовать. Разве что только в каких-то периферийных утилитах, не в ядре. Каждая строчка кода продумана и осознанна моим собственным, неэффективным, естественным интеллектом.
И я подумал, что может быть полезным ввести какой-то стандартный знак, иконку, плашку или что-то подобное для проектов, которые используют такой же принцип. Например, плашка с надписью «No vibe code» или «No vibe code is used» со ссылкой на разъяснения причин такого решения.
Как вы думаете, нужно ли такое? А может такое уже есть?
👍50❤11🔥6🤔2💯1
Платы Flix благополучно доехали. Получил буквально только что.
Пока еще ничего не проверял, даже не включал. Работает ли что-нибудь — полная интрига.
По времени от заказа до получения вышел ровно месяц (не быстро).
Теперь надо проверить работоспобность всех подсистем, написать драйвер для IMU, и тестировать!
Пока еще ничего не проверял, даже не включал. Работает ли что-нибудь — полная интрига.
По времени от заказа до получения вышел ровно месяц (не быстро).
Теперь надо проверить работоспобность всех подсистем, написать драйвер для IMU, и тестировать!
👍38🔥24❤13🙏1
Результаты первых тестов платы
✅ Подсистема питания работает, плата запускается от USB, от батареи, и от обоих источников одновременно. Менял вход аккумулятора от 4.2 до 2.5В, buck-boost отрабатывает корректно. ⚠️ Обнаружил такую проблему: если плату сначала запитать от батареи, а потом подключить по USB, то она не будет видна в системе. Думаю, это скорее всего связано с прошивкой, вряд ли с разводкой.
✅ Заливка прошивки работает. В arduino-cli для этого нужно использовать такой FBQN: esp32:esp32:esp32s3:FlashSize=16M,PSRAM=opi. Также в Arduino и arduino-cli необходимо включать опцию USB CDC On Boot, чтобы все выводы в Serial можно было видеть по USB (аналогично тому, как это работает в платах с обычной ESP32).
❌ Но тут обнаружилась проблема: прошивка иногда стартует не с первого раза. То есть надо переткнуть питание 2 или 3 раза, и только тогда она запускается. Как будто есть какая-то проблема с пинами IO0 или EN. Подскажите, что это может быть?
✅ Прошивка Flix базово работает, Wi-Fi раздается, консоль отвечает. Я добавил в прошивку параметр RC_RX_PIN, который позволяет выбрать пин для SBUS‑интерфейса, и по умолчанию он равен -1, то есть SBUS теперь по умолчанию не запускается.
✅ RGB-светодиод — работает. ⚠️ Но когда управляющий пин не задействован прошивкой, то тыкая пальцем в плату, иногда можно включать его в рандомный цвет. Возможно, тут стоит что-то поменять в разводке, чтобы такого не было.
✅ Проверил выводы на моторы, они работают. ⚠️ В левом верхнем выводе перепутана полярность на шелкографии, но это не критично.
Работу IMU пока не проверил: ICM‑40609‑D довольно новая, и пока никто не написал для нее библиотеку для Arduino. Так что теперь займусь ее написанием.
В целом: супер-критичных косяков пока не нашел. В комментариях — несколько видео разных тестов.
✅ Подсистема питания работает, плата запускается от USB, от батареи, и от обоих источников одновременно. Менял вход аккумулятора от 4.2 до 2.5В, buck-boost отрабатывает корректно. ⚠️ Обнаружил такую проблему: если плату сначала запитать от батареи, а потом подключить по USB, то она не будет видна в системе. Думаю, это скорее всего связано с прошивкой, вряд ли с разводкой.
✅ Заливка прошивки работает. В arduino-cli для этого нужно использовать такой FBQN: esp32:esp32:esp32s3:FlashSize=16M,PSRAM=opi. Также в Arduino и arduino-cli необходимо включать опцию USB CDC On Boot, чтобы все выводы в Serial можно было видеть по USB (аналогично тому, как это работает в платах с обычной ESP32).
❌ Но тут обнаружилась проблема: прошивка иногда стартует не с первого раза. То есть надо переткнуть питание 2 или 3 раза, и только тогда она запускается. Как будто есть какая-то проблема с пинами IO0 или EN. Подскажите, что это может быть?
✅ Прошивка Flix базово работает, Wi-Fi раздается, консоль отвечает. Я добавил в прошивку параметр RC_RX_PIN, который позволяет выбрать пин для SBUS‑интерфейса, и по умолчанию он равен -1, то есть SBUS теперь по умолчанию не запускается.
✅ RGB-светодиод — работает. ⚠️ Но когда управляющий пин не задействован прошивкой, то тыкая пальцем в плату, иногда можно включать его в рандомный цвет. Возможно, тут стоит что-то поменять в разводке, чтобы такого не было.
✅ Проверил выводы на моторы, они работают. ⚠️ В левом верхнем выводе перепутана полярность на шелкографии, но это не критично.
Работу IMU пока не проверил: ICM‑40609‑D довольно новая, и пока никто не написал для нее библиотеку для Arduino. Так что теперь займусь ее написанием.
В целом: супер-критичных косяков пока не нашел. В комментариях — несколько видео разных тестов.
👍22❤7🔥6🙏1