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

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

Это будет миниатюрный квадрокоптер, который можно собрать из доступных компонентов в виде микроконтроллера 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)


  1. randomsimplenumber
    29.12.2024 10:24

    Даже не знаю что хуже - 3Д печать или кастомная плата вот такой вот формы


    1. QwertyOFF
      29.12.2024 10:24

      Из нейлонов для мелких коптеров вполне нормальные рамы печатают. А вот плату на выброс после первого серьезного падения


    1. kenomimi
      29.12.2024 10:24

      А что не так? Текстолит относительно легкий, 2мм там за глаза. Можно полить мягкой смолой сверху слегонца - будет еще и защищен от внешнего воздействия. Батареи в пластике есть, если смущает обычная (меня смущает — падение мягкой батареи на крышу здания может сделать пожар). Малый размер, не возбуждает органы и ПВО в наше неспокойное время... Не рокет сайнс, конечно, но как игрушка вполне себе годно.


      1. GennPen
        29.12.2024 10:24

        Любая механическая поломка на плате (не важно по каким причинам) равносильна замены всей платы в сборе.


        1. randomsimplenumber
          29.12.2024 10:24

          Ну так то стеклотекстолит очень прочный материал. Сравнимо с дюралюминием.


          1. GennPen
            29.12.2024 10:24

            Да, только стеклотекстолит при превышении нагрузки ломается, а не гнется.


            1. randomsimplenumber
              29.12.2024 10:24

              Это домашний комнатный коптер, он высоко не летает. Откуда превышение нагрузки?


              1. GennPen
                29.12.2024 10:24

                Ну, например упал. Думаю, даже метровой высоты ему хватит падения.


                1. randomsimplenumber
                  29.12.2024 10:24

                  Может и да. Моё замечание больше про изготовление своими руками. Изготовить такую плату непросто. Припаять esp32 тоже не для каждого. Если же всё спаяно на заводе - что остаётся ? одеть пропеллеры и подключить батарею?


                  1. Dm_Dm
                    29.12.2024 10:24

                    Надеть.


                    1. WaspCity
                      29.12.2024 10:24

                      Установить.


                  1. LAutour
                    29.12.2024 10:24

                      Припаять esp32 тоже не для каждого

                    А чего там сложного? Там вполне удобный для пайки модуль.


                    1. randomsimplenumber
                      29.12.2024 10:24

                      Да, сорян, забыл что в виде модуля оно и удобно и компактно. Вычеркиваем ;) Претензии к плате оставляем.


      1. randomsimplenumber
        29.12.2024 10:24

        3Д принтер более демократично кмк.


      1. voted
        29.12.2024 10:24

        А что если пожар и есть самоцель? У дронов нынче много применений.


  1. verych
    29.12.2024 10:24

    2мм мало, скорее всего у такой рамы будет много вибраций, которые мешают и гире и, если поставить, камере. Из текстолита рамы нормальные, но вот лучи лучше бы съемные


  1. almaz1c
    29.12.2024 10:24

    Напомнило crazyflie


  1. Arkology
    29.12.2024 10:24

    DIY коптер на ESP32 с открытым исходным кодом - это Flix на гитхабе, а не это вот безобразие.


  1. nikolz
    29.12.2024 10:24

    Можно ( т е я могу) вообще без платы и 3D печати обойтись. Взять модуль ESP32 и модули гироскопа и магнитометра. Адаптер USB лучше убрать с коптера, что уменьшит вес и размеры.

    Направляющие для двигателей - трубки из углепластика.

    Еще надо поставить Web-камеру и сделать на ESP потоковое видео.


    1. lonelymyp
      29.12.2024 10:24

      Вебкамеру он не поднимает. ESPCam есть готовый.


      1. NekitGeek
        29.12.2024 10:24

        А ещё можно на ESP32 S3 модуле с камерой сделать, там возможностей побольше будет.


    1. osmanpasha
      29.12.2024 10:24

      А как к ESP подключается веб-камера?


      1. nikolz
        29.12.2024 10:24

        1. osmanpasha
          29.12.2024 10:24

          Спасибо, не знал, что оно такое тянет. Но на самом деле, для реального применения на коптере что-то не впечатляет. Там написано, что камера будет работать на 320x240 30 FPS или 640x480 15 FPS, а в приведенных логах, кажется, реальная скорость выходит 10 fps. И ещё не ясно, какая задержка у видео будет на выходе.


          1. nikolz
            29.12.2024 10:24

            согласен. лучше поставить аналоговую камеру. или OV5640


  1. j_aleks
    29.12.2024 10:24

    прикольная игрушка, как отправная точка юного дронодела...


  1. ComixOs
    29.12.2024 10:24

    А зачем тогда нужны контроллеры полета, если есть ESP32?
    Ведь при хорошем исполнении, можно поставить большие движки и wifi модуль - чтобы летать дальше ну и соответственно батарею сделать, таким образом получить "взрослый" FPV, может даже с возможностью нести полезную нагрузку. Поправьте, если ошибаюсь


    1. Recosh
      29.12.2024 10:24

      ESP это же RISC архитектура. В она аппаратно отличается от ARM, на которых летают фпв шки.

      Пид луп, фильтра, драйвера под imu, все эт требует аппаратных фич от процессора.


      1. LAutour
        29.12.2024 10:24

        ESP32, ESP32-S2, ESP32-S3 - это XTensa (основные ядра). ESP c RISC архитектурой либо имеют мало GPIO (С,H-серии), либо не имеет WiFi (недавно вышедший P4). А по аппаратным фичам для расчетов - в ESP32-S3 есть поддержка векторных операций.


      1. SergeyNovak
        29.12.2024 10:24

        Какие нужны для этого аппаратные функции ARM кроме плюс-минус-умножить-делить?


        1. randomsimplenumber
          29.12.2024 10:24

          Много аппаратных таймеров, не менее 4.


    1. randomsimplenumber
      29.12.2024 10:24

      А зачем тогда нужны контроллеры полета, если есть ESP32?

      Контроллер полета - готовое изделие. esp32 - просто чип. Может вы хотели спросить, почему stm32 а не esp32? Возможно, из-за периферии - в stm32 ее много.