| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-S2 | ESP32-S3 |
|---|---|---|---|---|---|
Aquila - проект самодельного квадрокоптера на ESP32
Вдохновленный в свое время трудами Joop Brokking и в самообразовательных целях пишу проект квадрокоптера на базе ESP32 и FreeRTOS. Современный софт для дронов развивался десятилетиями и разобраться в нем непрофессионалам непросто. Этот проект начинался с уровня "IMU + палка + 2 мотора" и постепенно развился до более-менее летающего уровня. Здесь Вы не найдете никаких прорывов и научной новизны, но если Вам интересно поразбираться как может быть построен софт на базе FreeRTOS для какого-либо робота - здесь можно найти несложные и рабочие конструкции для заимствования.
Элементная база
CPU ESP32-S3-mini
IMU MPU6000 2шт
память для логов W25N01GVZEIG
расширитель портов MCP23017
ШИМ-контроллер PCA9685
монитор напряжения и тока INA219
компас IST8310
лидар Benewake TFmini-S
GPS M9N
RGB LED FL3195
Барометр MS5611
Принципиальная схема всего этого хозяйства в сборе https://cloud.mail.ru/public/YBk3/L4gjcgRvh
Структура задач FreeRTOS https://cloud.mail.ru/public/YBk3/L4gjcgRvh
Дополнительно
По мере возможности комментирую сделанное на youtube-канале @well_techn, хотя в процессе развития проекта ранняя информация может отличаться от актуального кода, это, увы, неизбежно.
Изменения
| Дата | Изменения |
|---|---|
| 2026/02 | - в конце main_flying_cycle дописан кусок, детектирующий "аварию". При фиксации в полете угла по pitch или roll, превышающего установленный предел, или при фиксации акселерометром ускорения более заданного порога в течение заданного времени аварийно отключаются двигатели и запускается задача emergency_mode - чуть изменена запись логов, чтобы можно было внепланово записывать снимок данных в момент активации emergency_mode |
| 2025/12 | - добавлена возможность что-нибудь отправлять по WiFi(telnet) в полете (задача sending_something_over_wifi), хотя это занимает значительную часть ресурсов ядра и нарушает стройность работы, так как WiFi работает на максимальном приоритете - можно выбирать #define'ами из wt_alldef.h что пишется в логи во внешнюю флэш, чтобы не писать лишнее - добавлена возможность выводить в telnet сохраненные калибровочные коэффициенты |
| 2025/09 | - добавлен Emergency mode - когда в полете теряется связь и железка (предположительно) падает - передатчик Ebyte перенастраивается на минимальную эфирную скорость 2400 и периодически отправляем свои координаты (типа маяк), плюс пищим и моргаем, чтобы легче было найти если что - добавлен сбор данных с PX4FLow - добавлена проверка напряжения питания и тока потребления при инициализации - обновлены error коды |
| 2025/07 | - обновлен алгоримт проверки данных от IMU и разная косметика |
| 2025/06 | - добавлена опция вывода сервисного меню через WiFi - telnet. Это особенно удобно при калибровке, чтобы не запутываться в кабеле пока вращаем устройства. В зависимости от определения TELNET_CONF_MODE при входе в режим конфигурации запускается WiFi, при подключении к которому сервисные меню отображаются через примитивный Telnet (задача tasks - configuration_mode_telnet). Все меню, организованные ранее через USB, можно смотреть, например, через Putty, в том числе скачивать логи. В режиме полета WiFi по прежнему не используется. |
| 2025/05 | - добавлен 2d фильтр Калмана для вычисления высоты и вертикальной скорости по показаниям барометра и акселерометра (на основе rblilja/AltitudeKF) - добавлены калибровки акселерометра и магнетометра по методу Magneto на борту МК с сохранением результатов во флеш для последующего использования (на основе трудов bermerlin@gmail.com) |
| 2025/04 | - софт перегруппирован и разбит по файлам - добавлен одноконтурный ПИД на удержание высоты по лидару - добавлен "сервисный режим" и "сервисные задачи" - при старте с установленной перемычкой заходим в терминальное меню, откуда можно выполнять калибровки, считывание логов и тд |
| 2025/03 | - добавлена поддержка Mavlink в рамках вывода телеметрии на Minim-OSD |