Поддержка ICM-20948 в Flix
Все, кто пробовали собирать мой дрон, заметили, что сейчас довольно проблемно купить модуль GY-91 (плата с IMU). MPU-9250 окончательно сняли с производства, и, видимо, на складах она тоже закончилась, поэтому на большинстве плат вместо нее стоят MPU-6500 (без магнитометра), а многие вообще идут с браком.
Официальная замена для MPU-9250 от InvenSense — это ICM-20948. Эта IMU имеет примерно те же функции, она чуть менее шумная и она сейчас производится и доступна. На Ali появились новые платки с одноименным названием (см. фото и видео), их много и они не дорогие. Поэтому я решил поддержать ICM-20948 в Flix.
Поддержка реализована на уровне библиотеки FlixPeriph. Я придумал простой универсальный интерфейс для обоих драйверов — MPU-9250 и ICM-20948. Этот интерфейс содержит базовый набор функций, который должен более-менее подходить для любой IMU.
Код Flix работает с этим интерфейсом, поэтому для использования ICM-20948 нужно просто заменить тип переменной с MPU9250 на ICM20948, а все дальнейшие вызовы останутся теми же. Если в FlixPeriph будут добавлены другие IMU, то они также будут использовать этот интерфейс и не будут требовать изменения кода Flix.
Таким образом, Flix теперь можно собрать как на плате GY-91 (или MPU6500), так и на новой плате ICM-20948.
Именно ICM-20948 я подумываю использовать в версии Flix с печатной платой, хотя это не точно. Кстати, а какие новые IMU вообще сейчас в тренде? Какие у них особенности и преимущества? Может сейчас для квадрокоптеров стоит использовать совсем другие IMU?
Все, кто пробовали собирать мой дрон, заметили, что сейчас довольно проблемно купить модуль GY-91 (плата с IMU). MPU-9250 окончательно сняли с производства, и, видимо, на складах она тоже закончилась, поэтому на большинстве плат вместо нее стоят MPU-6500 (без магнитометра), а многие вообще идут с браком.
Официальная замена для MPU-9250 от InvenSense — это ICM-20948. Эта IMU имеет примерно те же функции, она чуть менее шумная и она сейчас производится и доступна. На Ali появились новые платки с одноименным названием (см. фото и видео), их много и они не дорогие. Поэтому я решил поддержать ICM-20948 в Flix.
Поддержка реализована на уровне библиотеки FlixPeriph. Я придумал простой универсальный интерфейс для обоих драйверов — MPU-9250 и ICM-20948. Этот интерфейс содержит базовый набор функций, который должен более-менее подходить для любой IMU.
Код Flix работает с этим интерфейсом, поэтому для использования ICM-20948 нужно просто заменить тип переменной с MPU9250 на ICM20948, а все дальнейшие вызовы останутся теми же. Если в FlixPeriph будут добавлены другие IMU, то они также будут использовать этот интерфейс и не будут требовать изменения кода Flix.
Таким образом, Flix теперь можно собрать как на плате GY-91 (или MPU6500), так и на новой плате ICM-20948.
Именно ICM-20948 я подумываю использовать в версии Flix с печатной платой, хотя это не точно. Кстати, а какие новые IMU вообще сейчас в тренде? Какие у них особенности и преимущества? Может сейчас для квадрокоптеров стоит использовать совсем другие IMU?
👍32❤1👏1
Начало учебника и смена концепции
Как вы знаете, этот проект затевался, как проект по созданию учебника по разработке полетного контроллера квадрокоптера. И сегодня я, наконец, публикую первую версию сайта с учебником и одну из его глав, которая описывает работу с гироскопом:
📖 quadcopter.dev/gyro.html.
Можно сказать, что это проба пера, так что жду ваших комментариев! Контент учебника хранится в основном репозитории, так что любой желающий может прислать pull request с исправлениями и дополнениями.
Вместе с этим, я хочу немного сменить концепцию проекта. У прошивки Flix уже появилось несколько реальных пользователей, и еще больше людей начали собирать дрон на ее основе. Руководствуясь полученной обратной связью, я решил разделить прошивку на две версии.
1️⃣ Текущая версия кода Flix станет иллюстрацией к учебнику. Код в ней будет ориентирован на минимализм и ограниченную функциональность. Эта версия кода будет называться «каноничной» и будет находиться в ветке canonical.
2️⃣ В основной же ветке будет разрабатываться новая, «фичная» версия. Она будет основана на каноничной версии, продолжит использовать Arduino и в ней будет та же базовая архитектура, но у нее не будет такого жесткого ограничения на сложность и объем кода. В нее я буду добавлять востребованные фичи, например, хранение параметров во флеше, более полную поддержку MAVLink, удержание позиции и другие. То есть фичный Flix должен стать лаконичным, но полнофункциональным полетным контроллером.
В итоге, используя учебник и каноничный код, любой желающий сможет разобраться в принципах работы полетного контроллера, а затем вникнуть в актуальную версию Flix и модифицировать ее. При этом обе версии останутся совместимыми друг с другом, то есть они будут работать на одном и том же железе.
Как вы знаете, этот проект затевался, как проект по созданию учебника по разработке полетного контроллера квадрокоптера. И сегодня я, наконец, публикую первую версию сайта с учебником и одну из его глав, которая описывает работу с гироскопом:
📖 quadcopter.dev/gyro.html.
Можно сказать, что это проба пера, так что жду ваших комментариев! Контент учебника хранится в основном репозитории, так что любой желающий может прислать pull request с исправлениями и дополнениями.
Вместе с этим, я хочу немного сменить концепцию проекта. У прошивки Flix уже появилось несколько реальных пользователей, и еще больше людей начали собирать дрон на ее основе. Руководствуясь полученной обратной связью, я решил разделить прошивку на две версии.
1️⃣ Текущая версия кода Flix станет иллюстрацией к учебнику. Код в ней будет ориентирован на минимализм и ограниченную функциональность. Эта версия кода будет называться «каноничной» и будет находиться в ветке canonical.
2️⃣ В основной же ветке будет разрабатываться новая, «фичная» версия. Она будет основана на каноничной версии, продолжит использовать Arduino и в ней будет та же базовая архитектура, но у нее не будет такого жесткого ограничения на сложность и объем кода. В нее я буду добавлять востребованные фичи, например, хранение параметров во флеше, более полную поддержку MAVLink, удержание позиции и другие. То есть фичный Flix должен стать лаконичным, но полнофункциональным полетным контроллером.
В итоге, используя учебник и каноничный код, любой желающий сможет разобраться в принципах работы полетного контроллера, а затем вникнуть в актуальную версию Flix и модифицировать ее. При этом обе версии останутся совместимыми друг с другом, то есть они будут работать на одном и том же железе.
👍52🔥29👏4❤3
Подсистема параметров
Я добавил в прошивку Flix подсистему параметров, которая хранит их во флеш-памяти (а не в коде).
Как и все в моей прошивке, эта подсистема реализована в минималистическом стиле. В переменной parameters хранится список названий параметров и указателей на соответствующие переменные в памяти. При запуске прошивки эти переменные инициализируются значениями из флеша. Если по ходу работы какой-то параметр меняется, он автоматически сохраняется во флеш. За это отвечают функции setupParameters() и flushParameters() (upd: переименовано в syncParameters()).
Для работы с флешем используется стандартная библиотека Preferences. Это удобная обертка над NVS (non-volatile storage) — специальной областью флеша в ESP32, выделенной для хранения настроек программы. А чтобы все это работало и в симуляции, я реализовал такую же библиотеку Preferences.h, но с обычным текстовым файлом в качестве хранилища. В итоге код и поведение параметров в симуляторе практически ничем не отличается от реального дрона.
Учтены две основные проблемы с флешем:
⚠️ Запись во флеш медленная: она может занять до нескольких миллисекунд. Блокировка цикла управления полетом на такое время не желательна, поэтому flushParameters() срабатывает, только когда моторы не активны. При изменении параметров в полете (а это вполне возможно), сохранение будет отложено до приземления.
⚠️ У флеша ограниченное количество циклов перезаписи. Поэтому функция flushParameters() проверяет параметры только раз в секунду, на случай, если они вдруг начнут меняться слишком часто.
Кроме того, параметры полностью поддержаны в MAVLink — то есть с ними можно полноценно работать через QGroundControl, просматривать и изменять. Для этого добавляется поддержка сообщений PARAM_REQUEST_LIST, PARAM_REQUEST_READ и PARAM_SET.
Запись параметров во флеш и поддержка MAVLink сильно улучшает user-experience при использовании прошивки. Особенно, в процессе калибровки IMU и пульта управления — менять и пересобирать код теперь для этого не нужно.
Я добавил в прошивку Flix подсистему параметров, которая хранит их во флеш-памяти (а не в коде).
Как и все в моей прошивке, эта подсистема реализована в минималистическом стиле. В переменной parameters хранится список названий параметров и указателей на соответствующие переменные в памяти. При запуске прошивки эти переменные инициализируются значениями из флеша. Если по ходу работы какой-то параметр меняется, он автоматически сохраняется во флеш. За это отвечают функции setupParameters() и flushParameters() (upd: переименовано в syncParameters()).
Для работы с флешем используется стандартная библиотека Preferences. Это удобная обертка над NVS (non-volatile storage) — специальной областью флеша в ESP32, выделенной для хранения настроек программы. А чтобы все это работало и в симуляции, я реализовал такую же библиотеку Preferences.h, но с обычным текстовым файлом в качестве хранилища. В итоге код и поведение параметров в симуляторе практически ничем не отличается от реального дрона.
Учтены две основные проблемы с флешем:
⚠️ Запись во флеш медленная: она может занять до нескольких миллисекунд. Блокировка цикла управления полетом на такое время не желательна, поэтому flushParameters() срабатывает, только когда моторы не активны. При изменении параметров в полете (а это вполне возможно), сохранение будет отложено до приземления.
⚠️ У флеша ограниченное количество циклов перезаписи. Поэтому функция flushParameters() проверяет параметры только раз в секунду, на случай, если они вдруг начнут меняться слишком часто.
Кроме того, параметры полностью поддержаны в MAVLink — то есть с ними можно полноценно работать через QGroundControl, просматривать и изменять. Для этого добавляется поддержка сообщений PARAM_REQUEST_LIST, PARAM_REQUEST_READ и PARAM_SET.
Запись параметров во флеш и поддержка MAVLink сильно улучшает user-experience при использовании прошивки. Особенно, в процессе калибровки IMU и пульта управления — менять и пересобирать код теперь для этого не нужно.
👍25🔥8👏2❤1
С наступающим новым годом!🎄
В этом году была написана очень удачная статья на Хабре, канал набрал 1000 подписчиков, в прошивку добавлено много чего нового, у Flix появились реальные пользователи и была опубликована первая глава учебника.
Лучшие посты 2024-го года:
• Сборка и полет второй версии дрона.
• Зарегистрирован домен quadcopter.dev.
• Полет кверх ногами.
• Раннее видео на 1000 подписчиков.
• Подбор MOSFET-транзистора.
• Реализация Fail-Safe.
• Анализ полетных логов.
• Описание архитектуры симулятора.
• Управление с телефона.
• Выполнение флипа.
• Как работает калибровка IMU.
Спасибо за подписку на канал и за ваш фидбэк. В будущем году будет интересно!
В этом году была написана очень удачная статья на Хабре, канал набрал 1000 подписчиков, в прошивку добавлено много чего нового, у Flix появились реальные пользователи и была опубликована первая глава учебника.
Лучшие посты 2024-го года:
• Сборка и полет второй версии дрона.
• Зарегистрирован домен quadcopter.dev.
• Полет кверх ногами.
• Раннее видео на 1000 подписчиков.
• Подбор MOSFET-транзистора.
• Реализация Fail-Safe.
• Анализ полетных логов.
• Описание архитектуры симулятора.
• Управление с телефона.
• Выполнение флипа.
• Как работает калибровка IMU.
Спасибо за подписку на канал и за ваш фидбэк. В будущем году будет интересно!
🔥25🎉20🎄14👍10🍾2🙏1
Обновления
▶️ Многие спрашивали про возможность использования ESC и бесколлекторных моторов с Flix. Я вернул поддержку ESC в motors.ino. Для их использования нужно установить соответствующие значения PWM_PIN, PWM_MAX (например, 1000 и 2000 мкс) и PWM_STOP (остановка мотора, на некоторых ESC будет отличаться от PWM_PIN). Также необходимо снизить частоту ШИМ — PWM_FREQUENCY, чтобы нужная ширина импульса «влезала» в эту частоту. Например, при значении PMW_MAX в 2000, частота должна быть около 400 Гц.
▶️ Я увеличил разрешение ШИМ для моторов с 8 бит (256 значений) до 12 (4096 значений). Повлияло ли это как-то на полет — сказать сложно, но раз уж ESP32 позволяет, то почему бы и нет.
▶️ Параметризованы максимальные углы наклона полета и максимальная угловая скорость. Теперь их можно настраивать через QGroundControl в реальном времени.
▶️ Много упрощений и оптимизаций кода. Например, для вращения кватерниона теперь используется метод rotate вместо оператора умножения, благодаря чему код подсистемы оценки ориентации становится совсем уж простым и тривиальным.
🚀 Подписчик @peter_ukhov доделал и опубликовал полную схему актуальной версии Flix. Кроме того, по этой же ссылке доступна схема его собственной модификации дрона с ERLS-приемником. Теперь для сборки актуальной версии в дополнение к текстовому описанию в readme можно использовать и наглядную схему!
▶️ Многие спрашивали про возможность использования ESC и бесколлекторных моторов с Flix. Я вернул поддержку ESC в motors.ino. Для их использования нужно установить соответствующие значения PWM_PIN, PWM_MAX (например, 1000 и 2000 мкс) и PWM_STOP (остановка мотора, на некоторых ESC будет отличаться от PWM_PIN). Также необходимо снизить частоту ШИМ — PWM_FREQUENCY, чтобы нужная ширина импульса «влезала» в эту частоту. Например, при значении PMW_MAX в 2000, частота должна быть около 400 Гц.
▶️ Я увеличил разрешение ШИМ для моторов с 8 бит (256 значений) до 12 (4096 значений). Повлияло ли это как-то на полет — сказать сложно, но раз уж ESP32 позволяет, то почему бы и нет.
▶️ Параметризованы максимальные углы наклона полета и максимальная угловая скорость. Теперь их можно настраивать через QGroundControl в реальном времени.
▶️ Много упрощений и оптимизаций кода. Например, для вращения кватерниона теперь используется метод rotate вместо оператора умножения, благодаря чему код подсистемы оценки ориентации становится совсем уж простым и тривиальным.
🚀 Подписчик @peter_ukhov доделал и опубликовал полную схему актуальной версии Flix. Кроме того, по этой же ссылке доступна схема его собственной модификации дрона с ERLS-приемником. Теперь для сборки актуальной версии в дополнение к текстовому описанию в readme можно использовать и наглядную схему!
🔥25👍11❤3🙏1
В чате задали вопрос про допустимость хранения величин, с которым оперирует прошивка, в переменных типа float (вместо double).
Вообще, на вопрос о выборе типа переменной с плавающей точкой хорошо отвечает прикрепленная таблица (источник).
Как известно, числа с плавающей точкой хранятся в экспоненциальной форме, а это значит, что они теряют точность при увеличении значения. Таблица показывает, как разрешение каждого из типов (half, float и double) зависит от значения хранимого числа. Так, для чисел больше 8388608, разрешение float уже падает до единицы, то есть тип фактически становится целочисленным.
В случае нашей прошивки, углы, угловые и линейные скорости, расстояния и пр. обычно имеют «человеческий» масштаб — находятся в пределах 1000. Для таких величин разрешения float более, чем достаточно — ~0.00006 в худшем случае.
Другая ситуация может возникнуть с большими значениями. Например — время с момента запуска прошивки (переменная t).
Значение dt, которое рассчитывается из t, при рабочей частоте в 1000 Гц будет плавать вокруг 0.001. Из таблицы видно, что при t > 1024 сек (17 мин), разрешение float уже достигает 0.0001 — всего на порядок меньше нашего dt. Это уже можно назвать «пограничьем» допустимого. А 17 минут — это вполне реальное время работы прошивки.
Поэтому я изменил тип переменной времени с float на double. В прошивке мало операций с абсолютным временим, так что на быстродействие это не повлияет.
Кстати, аналогичная ситуация в робототехнике возникает с глобальными координатами (широта и долгота).
Вообще, на вопрос о выборе типа переменной с плавающей точкой хорошо отвечает прикрепленная таблица (источник).
Как известно, числа с плавающей точкой хранятся в экспоненциальной форме, а это значит, что они теряют точность при увеличении значения. Таблица показывает, как разрешение каждого из типов (half, float и double) зависит от значения хранимого числа. Так, для чисел больше 8388608, разрешение float уже падает до единицы, то есть тип фактически становится целочисленным.
В случае нашей прошивки, углы, угловые и линейные скорости, расстояния и пр. обычно имеют «человеческий» масштаб — находятся в пределах 1000. Для таких величин разрешения float более, чем достаточно — ~0.00006 в худшем случае.
Другая ситуация может возникнуть с большими значениями. Например — время с момента запуска прошивки (переменная t).
Значение dt, которое рассчитывается из t, при рабочей частоте в 1000 Гц будет плавать вокруг 0.001. Из таблицы видно, что при t > 1024 сек (17 мин), разрешение float уже достигает 0.0001 — всего на порядок меньше нашего dt. Это уже можно назвать «пограничьем» допустимого. А 17 минут — это вполне реальное время работы прошивки.
Поэтому я изменил тип переменной времени с float на double. В прошивке мало операций с абсолютным временим, так что на быстродействие это не повлияет.
Кстати, аналогичная ситуация в робототехнике возникает с глобальными координатами (широта и долгота).
👍19🔥6
Обновил раму дрона.
У старой рамы было слабое место в зоне крепления «стаканов» для моторов. Я его укрепил, продолжив ребро жесткости луча в виде своеобразного свода вниз (см. картинку). А еще в ней плохо держались моторы, постоянно норовили выскочить — я уменьшил диаметр «стаканов» и укоротил боковой разрез так, что он остался только в верхней части. Кроме того, чуть обновил размеры контейтера для батареи и сделал другие мелкие изменения.
Новый файл рамы выложен — теперь это Flix версии 1.1.
В процессе сборки дрона на новой раме я сделал краткую инструкцию по сборке в фотографиях — посмотрите, сборка выглядит довольно занятно.
У старой рамы было слабое место в зоне крепления «стаканов» для моторов. Я его укрепил, продолжив ребро жесткости луча в виде своеобразного свода вниз (см. картинку). А еще в ней плохо держались моторы, постоянно норовили выскочить — я уменьшил диаметр «стаканов» и укоротил боковой разрез так, что он остался только в верхней части. Кроме того, чуть обновил размеры контейтера для батареи и сделал другие мелкие изменения.
Новый файл рамы выложен — теперь это Flix версии 1.1.
В процессе сборки дрона на новой раме я сделал краткую инструкцию по сборке в фотографиях — посмотрите, сборка выглядит довольно занятно.
👍29🔥6🙏1
Flix: разработка полетного контроллера с нуля
Обновил раму дрона. У старой рамы было слабое место в зоне крепления «стаканов» для моторов. Я его укрепил, продолжив ребро жесткости луча в виде своеобразного свода вниз (см. картинку). А еще в ней плохо держались моторы, постоянно норовили выскочить — я…
Расскажу, как именно я сломал предыдущую раму, и что я поменял в связи с этим в коде.
В некоторых случаях QGroundControl может дать дрону команду на полный газ сразу же при подключении. Это может произойти, если внешний пульт не откалиброван, или если вы развернете окно QGroundControl, в котором виртуальный стик газа был не на нуле, или еще бог знает по каким внутренним причинам. В этом случае моя прошивка, естественно, сразу же переводила дрон в состояние armed и отправляла его в небеса (или в стену).
Тут становится понятно, зачем в большинстве полетных прошивок предусмотрен механизм для арминга, когда стик газа необходимо подержать в нижнем (правом) положении. Это позволяет гарантировать, что дрон внезапно не полетит сразу же после включения, и что пульт откалиброван (как минимум у пилота точно есть возможность дать нулевой газ).
Моя прошивка минималистическая, и такой механизм арминга я решил пока не вводить. Вместо этого я добавил fail-safe с таким условием: дрон не должен лететь, если он получает команду газа без предшествующей команды нулевого газа.
Это условие добавлено в файл failsafe.ino в виде функции armingFailsafe(). Она запоминает момент времени, когда последний раз был получен нулевой газ, и не дает перевести дрон в armed, если с этого момента прошло более 0.1 с.
Это делает прошивку намного безопаснее: внезапный полный газ при подключении QGroundControl или пульта с поднятым стиком газа почти гарантированно приводит к «крэшу».
В некоторых случаях QGroundControl может дать дрону команду на полный газ сразу же при подключении. Это может произойти, если внешний пульт не откалиброван, или если вы развернете окно QGroundControl, в котором виртуальный стик газа был не на нуле, или еще бог знает по каким внутренним причинам. В этом случае моя прошивка, естественно, сразу же переводила дрон в состояние armed и отправляла его в небеса (или в стену).
Тут становится понятно, зачем в большинстве полетных прошивок предусмотрен механизм для арминга, когда стик газа необходимо подержать в нижнем (правом) положении. Это позволяет гарантировать, что дрон внезапно не полетит сразу же после включения, и что пульт откалиброван (как минимум у пилота точно есть возможность дать нулевой газ).
Моя прошивка минималистическая, и такой механизм арминга я решил пока не вводить. Вместо этого я добавил fail-safe с таким условием: дрон не должен лететь, если он получает команду газа без предшествующей команды нулевого газа.
Это условие добавлено в файл failsafe.ino в виде функции armingFailsafe(). Она запоминает момент времени, когда последний раз был получен нулевой газ, и не дает перевести дрон в armed, если с этого момента прошло более 0.1 с.
Это делает прошивку намного безопаснее: внезапный полный газ при подключении QGroundControl или пульта с поднятым стиком газа почти гарантированно приводит к «крэшу».
👍28👏4🔥3❤1🤔1
Еще один успешно собранный дрон, от пользователя @Alexey_Karakash!
Видео, кстати, демонстрирует фичу, которая работает из коробки благодаря поддержке MAVLink и QGroundControl. Возможно подключить аппаратуру непосредственно к телефону или к компьютеру c запущенным QGroundControl (по проводу или по Bluetooth) и управлять дроном через Wi-Fi с аппаратуры, без необходимости установки RC-приемника.
✅ Как и обещал, сделал страницу с «реестром» успешно собранных дронов. Для каждого проекта есть краткое описание и ссылки на дополнительные материалы, включая кастомные 3D-модели для печати. Если у вас получится собрать дрон по моим инструкциям, а еще лучше, его как-либо модифицировать, пишите о результатах в чат или присылайте pull request с описанием проекта! #user
Видео, кстати, демонстрирует фичу, которая работает из коробки благодаря поддержке MAVLink и QGroundControl. Возможно подключить аппаратуру непосредственно к телефону или к компьютеру c запущенным QGroundControl (по проводу или по Bluetooth) и управлять дроном через Wi-Fi с аппаратуры, без необходимости установки RC-приемника.
✅ Как и обещал, сделал страницу с «реестром» успешно собранных дронов. Для каждого проекта есть краткое описание и ссылки на дополнительные материалы, включая кастомные 3D-модели для печати. Если у вас получится собрать дрон по моим инструкциям, а еще лучше, его как-либо модифицировать, пишите о результатах в чат или присылайте pull request с описанием проекта! #user
👍33🔥14⚡4❤3👏1
Хочу сделать плату
Много было вопросов про печатную плату для моего квадрокоптера, кто-то даже начинал ее делать. Решил вот ее сделать сам. Разрабатывать буду в полностью открытом режиме: буду публиковать промежуточные этапы и учитывать ваш фидбэк. Сама прошивка останется совместимой как с версией Flix на плате, так и с «обычной» версией из отдельных компонентов. Я не большой умелец в пайке, поэтому хочу, чтобы плата была изготовлена «под ключ» — сразу с напаянными компонентами.
В комментариях я хотел бы обсудить — а как ее, собственно, лучше сделать?
Вопросы:
1️⃣ Какой сейчас самый доступный способ изготовить такую плату и доставить ее в Москву?
2️⃣ Какой софт лучше использовать для разводки платы?
3️⃣ Какие компоненты можно использовать, чтобы плату можно было произвести целиком сразу с напайкой, их надо брать из какого-то определенного списка?
Немного забегая вперед — плату я хочу сделать чуть более универсальной, чем только для квадрокоптера. Но подробности и полное описание того, чего я хочу сделать — в следующем посте! #pcb
Много было вопросов про печатную плату для моего квадрокоптера, кто-то даже начинал ее делать. Решил вот ее сделать сам. Разрабатывать буду в полностью открытом режиме: буду публиковать промежуточные этапы и учитывать ваш фидбэк. Сама прошивка останется совместимой как с версией Flix на плате, так и с «обычной» версией из отдельных компонентов. Я не большой умелец в пайке, поэтому хочу, чтобы плата была изготовлена «под ключ» — сразу с напаянными компонентами.
В комментариях я хотел бы обсудить — а как ее, собственно, лучше сделать?
Вопросы:
1️⃣ Какой сейчас самый доступный способ изготовить такую плату и доставить ее в Москву?
2️⃣ Какой софт лучше использовать для разводки платы?
3️⃣ Какие компоненты можно использовать, чтобы плату можно было произвести целиком сразу с напайкой, их надо брать из какого-то определенного списка?
Немного забегая вперед — плату я хочу сделать чуть более универсальной, чем только для квадрокоптера. Но подробности и полное описание того, чего я хочу сделать — в следующем посте! #pcb
🔥20👍9⚡2
Что хочу разместить на плате
Как я уже писал, я хочу сделать плату чуть более универсальной, чем только для квадрокоптера. На ней сможет работать Flix, но она будет подходить и для других проектов, которым может потребоваться мощный микроконтроллер с Wi-Fi и инерциальный датчик: например, для учебных мобильных роботов или чего похожего.
Список компонентов, которые я собираюсь на ней разместить (вначале обязательные, в конце — под вопросом):
🔹 Микроконтроллер + обвязка. Классический ESP32 либо более новый ESP32-S3. Последний мощнее и нативно поддерживает USB — то есть не требуется преобразователь USB-UART. Правда, по некоторым параметрам он хуже, например, в нем меньше PWM выходов. Пока думаю над выбором.
🔹 Вход питания от LiPo-аккумулятора и цепь для измерения заряда аккумулятора.
🔹 Датчик IMU. Наиболее вероятные кандидаты: ICM-20948 или ICM-42688-P/ICM-20602/MPU-6500 (без магнитометра).
🔹 Выходы на коллекторные моторы — MOSFET и обвязка.
🔹 Один или несколько светодиодов для индикации состояния.
🔹 Разъем для подключения шлейфа камеры, аналогичный плате ESP32-CAM. Для реализации простейших алгоритмов компьютерного зрения.
🔹 Слот для SD-карты?
🔹 Барометр?
Также хочу развести на плате гребенку со всеми основными пинами ESP32. К ним можно будет припаять RC-приемник, ESC бесколлекторных моторов, дополнительные датчики и что угодно еще — как на обычной отладочной плате ESP32.
Жду ваших комментариев и предложений! #pcb
Как я уже писал, я хочу сделать плату чуть более универсальной, чем только для квадрокоптера. На ней сможет работать Flix, но она будет подходить и для других проектов, которым может потребоваться мощный микроконтроллер с Wi-Fi и инерциальный датчик: например, для учебных мобильных роботов или чего похожего.
Список компонентов, которые я собираюсь на ней разместить (вначале обязательные, в конце — под вопросом):
🔹 Микроконтроллер + обвязка. Классический ESP32 либо более новый ESP32-S3. Последний мощнее и нативно поддерживает USB — то есть не требуется преобразователь USB-UART. Правда, по некоторым параметрам он хуже, например, в нем меньше PWM выходов. Пока думаю над выбором.
🔹 Вход питания от LiPo-аккумулятора и цепь для измерения заряда аккумулятора.
🔹 Датчик IMU. Наиболее вероятные кандидаты: ICM-20948 или ICM-42688-P/ICM-20602/MPU-6500 (без магнитометра).
🔹 Выходы на коллекторные моторы — MOSFET и обвязка.
🔹 Один или несколько светодиодов для индикации состояния.
🔹 Разъем для подключения шлейфа камеры, аналогичный плате ESP32-CAM. Для реализации простейших алгоритмов компьютерного зрения.
🔹 Слот для SD-карты?
🔹 Барометр?
Также хочу развести на плате гребенку со всеми основными пинами ESP32. К ним можно будет припаять RC-приемник, ESC бесколлекторных моторов, дополнительные датчики и что угодно еще — как на обычной отладочной плате ESP32.
Жду ваших комментариев и предложений! #pcb
👍17🔥16
Пока мы обсуждали печатные платы, пользователи собрали четыре успешно полетевших Flix'а! Ничего себе. Значит, что-то в моем проекте есть, раз люди готовы потратить столько сил, чтобы его повторить. А это ведь сделать намного сложнее, чем собрать дрон из готовых компонентов.
🚀 @peter_ukhov собрал уже второй дрон. Очень аккуратное проектирование и сборка. Используется кастомная модель рамы и кастомный держатель ESP32: микроконтроллер не приклеен, а вставлен в специальные пазы. Транзисторы расположены снизу лучей и закреплены в специальных держателях. А еще это первый Flix на IMU ICM-20948 (используется плата GY-ICM20948V2).
🚀 Первый Flix от иностранного подписчика! Пользователь @yi_lun с Тайваня смог собрать дрон в рамках школьного проекта, и он успешно полетел! Здорово, что мой проект нашел отклик и в других странах.
🚀 Сборка от пользователя @p_kabakov. Первый Flix на МК, отличном от классического ESP32. А конкретно — на ESP32-C3. Этот микроконтроллер имеет совершенно иную архитектуру (RISC-V), но благодаря поддержке Arduino, код фактически не пришлось менять, и он просто заработал!
🚀 И еще один полетевший дрон, собранный в близком к эталонному виде, но с четырехлопастными пропеллерами. Автор: @fisheyeu.
Как обычно, я добавил все проекты в свой реестр успешно собранных дронов. Там же находятся ссылки на все материалы от авторов, включая кастомные 3D-модели. #user
🚀 @peter_ukhov собрал уже второй дрон. Очень аккуратное проектирование и сборка. Используется кастомная модель рамы и кастомный держатель ESP32: микроконтроллер не приклеен, а вставлен в специальные пазы. Транзисторы расположены снизу лучей и закреплены в специальных держателях. А еще это первый Flix на IMU ICM-20948 (используется плата GY-ICM20948V2).
🚀 Первый Flix от иностранного подписчика! Пользователь @yi_lun с Тайваня смог собрать дрон в рамках школьного проекта, и он успешно полетел! Здорово, что мой проект нашел отклик и в других странах.
🚀 Сборка от пользователя @p_kabakov. Первый Flix на МК, отличном от классического ESP32. А конкретно — на ESP32-C3. Этот микроконтроллер имеет совершенно иную архитектуру (RISC-V), но благодаря поддержке Arduino, код фактически не пришлось менять, и он просто заработал!
🚀 И еще один полетевший дрон, собранный в близком к эталонному виде, но с четырехлопастными пропеллерами. Автор: @fisheyeu.
Как обычно, я добавил все проекты в свой реестр успешно собранных дронов. Там же находятся ссылки на все материалы от авторов, включая кастомные 3D-модели. #user
🔥46👏11👍10❤2