И хотя основной принцип, лежащий в их основе, может казаться простым, для правильного функционирования дронов и реализации ими нужных задач применяются сложные технологии и вычислительные системы. Например, для сохранения стабильности в полёте необходимы прецизионные датчики вроде гироскопа, а также эффективная обработка считываемых ими данных. Нашим же проектом станет сборка небольшого дрона, управляемого с помощью смартфона.
Это будет миниатюрный квадрокоптер, который можно собрать из доступных компонентов в виде микроконтроллера ESP32, инерциального измерительного блока MPU6050, бесколлекторного двигателя и пластиковых пропеллеров.
Характеристики нашего будущего WiFi-дрона:
- Управление по WiFi с помощью смартфона.
- MPU6050 IMU для контроля стабильности полёта.
- Всё на одной печатной плате: конструировать на 3D-принтере ничего не придётся.
- Простота будущего апгрейда: можно будет расширить возможности дрона внешними модулями, например, добавить функцию удержания конкретной высоты или позиции.
- Небольшой размер и вес.
- Встроенное зарядное устройство.
- Встроенный USB-интерфейс для программирования и отладки.
- Поддержка приложений Android и iOS.
- Открытый исходный код.
▍ Схема дрона
Вся схема нашего WiFi-дрона:
Порт USB-C служит для зарядки и программирования. Его контроллер мощности на базе P-канального МОП-транзистора U2 и диода D1 позволяет легко переключаться между питанием от USB-источника и батареи. За регуляцию напряжения при этом отвечает LDO-стабилизатор MIC5219 3.3 В от Microchip. Движковый выключатель активирует тепловизор, а контроллер TP4056 управляет зарядкой батареи. Контроль напряжения облегчается за счёт классической схемы делителя. Модуль CP2102 вкупе с двойным МОП-транзистором упрощает сброс ESP32. Сам ESP32 при этом имеет стандартную обвязку. Гироскоп MPU6050, подключённый к ESP32 через контакты ввода/вывода, помогает стабилизировать полёт и контролировать перемещение дрона. Наконец, для управления электродвигателем в его схеме применяется N-канальный МОП-транзистор SI2302, дополненный защитными диодами и резисторами. Помимо индикаторов зарядки и питания, функциональный мониторинг дополняют отладочные светодиоды, включая синий для калибровки, зелёный для обнаружения подключения и красный для индикации низкого заряда батареи.
Более подробное описание и прочие детали описаны на странице проекта.
▍ Печатная плата
Для этого проекта мы решили собрать кастомную печатную плату. Это позволит сделать конечный продукт максимально компактным, а также упростит его сборку и использование. Причём мы специально включили в схему лапы коптера, чтобы их можно было через неё отключать. Вот верхний и нижний слои платы:
Вот сама плата:
А вот весь коптер в сборе:
▍ Направление пропеллеров
Установите пропеллеры А и В в соответствии с рисунком ниже. Во время самотестирования при включении проверьте, вращаются ли пропеллеры должным образом и в правильном направлении.
▍ Прошивка коптера
Программное обеспечение для нашего малыша основано на прошивке ESP-дрона от Espressif. Код написан на фреймворке ESP-IDF и скомпилирован под его версией 4.4.5. Для установки и настройки ESP32 IDF 4.4.5 пройдите по ссылке. Можете либо собрать прошивку с нуля, используя код из указанного далее репозитория проекта, либо просто залить бинарник, лежащий там же в репозитории. Используйте код именно с указанного ресурса GitHub, так как есть много его модификаций, подходящих под дизайн нашей платы.
▍ Заливка прошивки
Залить ПО на коптер можно тремя способами.
▍ Способ 1: сборка из исходного кода с помощью ESP-IDF
- Для начала установки и настройки ESP-IDF, следуя подробной инструкции от Espressif. Вам понадобится версия ESP-IDF 4.4.х.
- После установки ESP-IDF клонируйте репозиторий прошивки дрона с помощью Git и перейдите в её каталог.
git clone https://github.com/Circuit-Digest/ESP-Drone.git cd ESP-Drone/Firmware/esp-drone
- Изменять конфигурацию прошивки можно с помощью
menuconfig
. Но для нашего случая вполне подойдут её текущие настройки.
idf.py menuconfig
- Теперь для сборки и заливки прошивки используйте показанную ниже команду
flash
, заменивPORT
на имя последовательного порта вашего ESP32-S2. Эта команда автоматически соберёт и зальёт программу на плату.
idf.py -p PORT flash
▍ Способ 2: использование ESPTOOL
Для использования ESPTool у вас должен быть установлен ESP-IDF. Соответствующие инструкции есть в предыдущем видео. После установки и настройки перейдите в терминале в каталог образа прошивки и залейте её с помощью следующей команды:
esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin
▍ Способ 3: использование ESP32 Flash Download Tool
- Скачайте ESP32 Flash Download Tool.
- Распакуйте его и запустите двойным кликом по файлу
.exe
. В окне выбора типа микросхемы отметьте ESP32 и кликните «ОК». - Выберите файл прошивки с ESPDrone.bin и добавьте этот адрес в
0x00
. Выберите нужный порт и кликните по Erase. По завершении стирания прошивки кликните START для заливки новой. - На этом всё — ваш самодельный коптер готов к полёту.
▍ Использование коптера
Расположите четырёхкрылого на плоской поверхности и включите. После включения полётный контроллер создаст точку WiFi. Подключитесь к ней с паролем
12345678
и откройте приложение. Версия для iOS доступна в App Store — ищите ESP-Drone APP. Для Android приложение можно скачать по этой ссылке. Помните, что оно разработано и распространяется сторонними лицами, так что устанавливайте по своему усмотрению. Интерфейс приложения выглядит так:Для установки связи с коптером кликните по кнопке «Connect». После успешной установки подключения его светодиод замигает зелёным. Кнопка «Turn Lock» позволяет переключать левый контроллер в режим только «Up»/«Down». Левый стик служит для подъёма и посадки коптера, а правый — для управления его движением. Если коптер отключится от приложения или уйдёт в перезагрузку при попытке посадки, это сигнал о низком заряде батареи. Мы установили в него аккумулятор 1300 мАч 30C, вы же можете использовать аналог с более высокой токоотдачей.
▍ Предполётная проверка
- Располагайте коптер фронтальной частью вперёд (задняя часть определяется по антенне).
- Устойчиво расположите коптер на возвышенной поверхности и включите.
- После установки соединения, убедитесь, что зелёный светодиод мигает.
- Мигающий красный светодиод сигнализирует о необходимости зарядки батареи.
- Слегка сдвиньте вперёд контроллер «Thrust», чтобы проверить, реагирует ли коптер на команду.
- Используйте правый контроллер для проверки команд направления.
Более подробное описание и прочие детали доступны на странице проекта.
Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Комментарии (45)
verych
29.12.2024 10:242мм мало, скорее всего у такой рамы будет много вибраций, которые мешают и гире и, если поставить, камере. Из текстолита рамы нормальные, но вот лучи лучше бы съемные
Arkology
29.12.2024 10:24DIY коптер на ESP32 с открытым исходным кодом - это Flix на гитхабе, а не это вот безобразие.
nikolz
29.12.2024 10:24Можно ( т е я могу) вообще без платы и 3D печати обойтись. Взять модуль ESP32 и модули гироскопа и магнитометра. Адаптер USB лучше убрать с коптера, что уменьшит вес и размеры.
Направляющие для двигателей - трубки из углепластика.
Еще надо поставить Web-камеру и сделать на ESP потоковое видео.
osmanpasha
29.12.2024 10:24А как к ESP подключается веб-камера?
nikolz
29.12.2024 10:24https://github.com/espressif/esp-idf/tree/master/examples/peripherals/usb/host/uvc
https://github.com/nopnop2002/esp-idf-video-streaming?ysclid=m5ahyzpw6j253279092
osmanpasha
29.12.2024 10:24Спасибо, не знал, что оно такое тянет. Но на самом деле, для реального применения на коптере что-то не впечатляет. Там написано, что камера будет работать на 320x240 30 FPS или 640x480 15 FPS, а в приведенных логах, кажется, реальная скорость выходит 10 fps. И ещё не ясно, какая задержка у видео будет на выходе.
ComixOs
29.12.2024 10:24А зачем тогда нужны контроллеры полета, если есть ESP32?
Ведь при хорошем исполнении, можно поставить большие движки и wifi модуль - чтобы летать дальше ну и соответственно батарею сделать, таким образом получить "взрослый" FPV, может даже с возможностью нести полезную нагрузку. Поправьте, если ошибаюсьRecosh
29.12.2024 10:24ESP это же RISC архитектура. В она аппаратно отличается от ARM, на которых летают фпв шки.
Пид луп, фильтра, драйвера под imu, все эт требует аппаратных фич от процессора.
LAutour
29.12.2024 10:24ESP32, ESP32-S2, ESP32-S3 - это XTensa (основные ядра). ESP c RISC архитектурой либо имеют мало GPIO (С,H-серии), либо не имеет WiFi (недавно вышедший P4). А по аппаратным фичам для расчетов - в ESP32-S3 есть поддержка векторных операций.
SergeyNovak
29.12.2024 10:24Какие нужны для этого аппаратные функции ARM кроме плюс-минус-умножить-делить?
randomsimplenumber
29.12.2024 10:24А зачем тогда нужны контроллеры полета, если есть ESP32?
Контроллер полета - готовое изделие. esp32 - просто чип. Может вы хотели спросить, почему stm32 а не esp32? Возможно, из-за периферии - в stm32 ее много.
randomsimplenumber
Даже не знаю что хуже - 3Д печать или кастомная плата вот такой вот формы
QwertyOFF
Из нейлонов для мелких коптеров вполне нормальные рамы печатают. А вот плату на выброс после первого серьезного падения
kenomimi
А что не так? Текстолит относительно легкий, 2мм там за глаза. Можно полить мягкой смолой сверху слегонца - будет еще и защищен от внешнего воздействия. Батареи в пластике есть, если смущает обычная (меня смущает — падение мягкой батареи на крышу здания может сделать пожар). Малый размер, не возбуждает органы и ПВО в наше неспокойное время... Не рокет сайнс, конечно, но как игрушка вполне себе годно.
GennPen
Любая механическая поломка на плате (не важно по каким причинам) равносильна замены всей платы в сборе.
randomsimplenumber
Ну так то стеклотекстолит очень прочный материал. Сравнимо с дюралюминием.
GennPen
Да, только стеклотекстолит при превышении нагрузки ломается, а не гнется.
randomsimplenumber
Это домашний комнатный коптер, он высоко не летает. Откуда превышение нагрузки?
GennPen
Ну, например упал. Думаю, даже метровой высоты ему хватит падения.
randomsimplenumber
Может и да. Моё замечание больше про изготовление своими руками. Изготовить такую плату непросто. Припаять esp32 тоже не для каждого. Если же всё спаяно на заводе - что остаётся ? одеть пропеллеры и подключить батарею?
Dm_Dm
Надеть.
WaspCity
Установить.
LAutour
А чего там сложного? Там вполне удобный для пайки модуль.
randomsimplenumber
Да, сорян, забыл что в виде модуля оно и удобно и компактно. Вычеркиваем ;) Претензии к плате оставляем.
randomsimplenumber
3Д принтер более демократично кмк.
voted
А что если пожар и есть самоцель? У дронов нынче много применений.