Квадрокоптер на ардуино своими руками

Добавил пользователь Владимир З.
Обновлено: 18.09.2024

Еще в 2014 году Йозеф Холмнер (Josef Holmner) построил свой самодельный квадрокоптер с продолжительностью полета около 30 минут. Для управления он разработал носимый контроллер, который позволил ему маневрировать своим устройством, используя только одну руку.
Как вы можете видеть на видео, управление тангажом и креном
регулируется углом его руки, вертикальное движение осуществляется двумя кнопками в его ладони, а скорость полёта зависит от изгиба указательного пальца. Чтобы приступить к работе, Холмнеру понадобились
передатчик и приёмник, Arduino Nano, цифровой потенциометр, датчик изгиба (flex sensor), пара кнопок, IMU (плата инерциальной ориентации) и перчатка. Изобретатель разобрал передатчик и заменил потенциометр на цифровой, который может управляться Arduino. После извлечения электроники из своего первоначального корпуса, он разместил её внутри изготовленной на 3D-принтере коробке и приклеил прежний держатель батареи к нижней части корпуса.
Устройство держится на предплечье ремнями с липучкой. Датчик изгиба был пришит к указательному пальцу перчатки, кнопки установлены в ладони, а IMU на тыльной стороне руки. Он
также сделал разъём между между перчаткой и коробкой и добавил четыре светодиода, которые показывают угол наклона перчатки.

Холмнер опубликовал код для Arduino и схемные решения в Интернете. Обязательно посмотрите устройство в действии!

Теперь, когда вы выбрали или спроектировали раму БПЛА, выбрали моторы, несущие винты, ESC и батарею, можно приступить к выбору полётного контроллера. Полётный контроллер для мультироторного беспилотного летательного аппарата представляет собой интегральную схему, обычно состоящую из микропроцессора, датчиков и входных/выходных контактов. После распаковки контроллер полёта не знает какой конкретный тип или конфигурацию БПЛА вы используете, поэтому изначально необходимо будет установить определенные параметры в программном обеспечении, после чего заданная конфигурация загружается на борт. Вместо того, чтобы просто сравнивать доступные в настоящее время полётные контроллеры, подход, который мы здесь использовали, перечисляет, какие элементы ПК отвечают за какие функции, а также аспекты, на которые необходимо обратить внимание.

Основной процессор


8051 vs AVR vs PIC vs ARM: Семейство микроконтроллеров составляющее основу большинства современных контроллеров полёта. Arduino основан на AVR (ATmel), и сообщество, похоже, сосредоточено на MultiWii, как на предпочтительном коде. Microchip является основным производителем чипов PIC. Трудно утверждать, что одно лучше другого, всё сводится к тому, что может делать программное обеспечение. ARM (например, STM32) использует 16/32-битную архитектуру, при этом десятки используют 8/16-битные AVR и PIC. Поскольку одноплатные компьютеры становятся все менее и менее дорогостоящими, ожидается появление полётных контроллеров нового поколения, которые могут работать с полноценными операционными системами, такими как Linux, или Android.

Программная память/Флэш: Флэш-память — это место, где хранится основной код. Если программа сложная, она может занимать много места. Очевидно, что чем больше память, тем больше информации она может хранить. Память также актуальна при хранении данных в полёте, таких как координаты GPS, планы полёта, автоматическое движение камеры и т.д. Код, загруженный на флэш-память, остается на чипе даже после отключения питания.

EEPROM: электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ) обычно используется для хранения информации, которая не изменяется во время полёта, например настройки, в отличие от данных, хранящихся на SRAM, к которым могут относиться показания датчика и т.д.

Дополнительные порты Ввода/Вывода: большинство микроконтроллеров имеют большое количество цифровых и аналоговых портов ввода и вывода, на контроллере полёта некоторые используются под датчики, другие для связи, либо для общего ввода и вывода. К этим дополнительным портам могут быть подключены RC сервоприводы, системы подвеса, зуммеры и многое другое.

Питание


Повторим. В идеале не нужно запитывать контроллер полёта отдельно от основной батареи. Единственное исключение — если вам нужна резервная АКБ на случай, когда основная батарея отдаёт столько энергии, что BEC не может вырабатывать достаточно тока/ напряжения, вызывая тем самым отключение питания/сброс. Но, в таком случае вместо резервной батареи часто используют конденсаторы.

Сенсоры

С точки зрения аппаратного обеспечения, контроллер полёта по сути является обычным программируемым микроконтроллером, только со специальными датчиками на борту. Как минимум, контроллер полёта будет включать в себя 3-осевой гироскоп, но без автовыравнивания. Не все контроллеры полёта оснащаются указанными ниже сенсорами, но они также могут включать их комбинацию:

  • Гироскоп: Гироскоп измеряет скорость изменения углов по трём угловым осям (назовём их: альфа, бета и гамма). Обычно измеряется в градусах в секунду. Обратите внимание, что гироскоп не измеряет абсолютные углы напрямую, но вы можете выполнить итерацию, чтобы получить угол, который, как и у акселерометра, способствует дрейфу. Выход реального гироскопа имеет тенденцию быть аналоговым или I2C, но в большинстве случаев вам не нужно беспокоиться об этом, так как все поступающие данные обрабатываются кодом контроллера полёта. Гироскоп должен быть установлен так, чтобы его оси вращения совпадали с осями БПЛА.
  • Инерционный измерительный блок (IMU): IMU — по сути, это небольшая плата, которая содержит как акселерометр, так и гироскоп (обычно многоосевые). Большинство из них включают трёхосевой акселерометр и трёхосевой гироскоп, другие могут включать дополнительные сенсоры, например трёхосевой магнитометр, обеспечивающий в общей сложности 9 осей измерения.
  • Компас/Магнитометр: Электронный магнитный компас способный определять магнитное поле Земли и использовать эти данные для определения направления компаса беспилотника (относительно северного магнитного полюса). Этот сенсор почти всегда присутствует, если система имеет GPS вход и доступно от одной до трех осей.
  • Давление/Барометр: Так как атмосферное давление изменяется по мере удаления от уровня моря, можно использовать сенсор давления, чтобы получить довольно точные показания высоты БПЛА. Для расчёта максимально точной высоты, большинство контроллеров полёта получают данные одновременно от сенсора давления и спутниковой системы навигации (GPS). При сборке обратите внимание, что предпочтительнее, чтобы отверстие в корпусе барометра было накрыто куском поролона, это уменьшить отрицательное влияние ветра на чип.
  • Расстояние: Датчики расстояния все чаще используются на беспилотниках, поскольку GPS-координаты и датчики давления не могут рассказать вам, насколько далеко вы находитесь от земли (холма, горы или здания), либо столкнётесь ли вы с объектом или нет. Датчик расстояния, обращенный вниз, может быть основан на ультразвуковой, лазерной или лидарной технологии (ИК-сенсоры могут испытывать проблемы в работе при солнечном свете). Датчики расстояния редко входят в стандартный комплект полётного контроллера.

Режимы полёта

  • ACRO — обычно режим по умолчанию, из всех имеющихся сенсоров, контроллером полёта задействуется только гироскоп (беспилотник не может автоматически выравниваться). Актуален для спортивного (акробатического) полёта.
  • ANGLE — стабильный режим; из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп и акселерометр. Углы ограничены. Будет удерживать беспилотник в горизонтальном положении (но без удержания позиции).
  • BARO (Altitude Hold) — стабильный режим; из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр и барометр. Углы ограничены. Барометр используется для удержания определенной (фиксированной) высоты, когда с аппаратуры управления не подаются никакие команды.
  • MAG (Heading Hold) — режим блокировки курса (направления компаса), беспилотник будет сохранять Yaw ориентацию. Из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр и компас.
  • HEADFREE (CareFree, Headless, Безголовый) — исключает отслеживание ориентации (Yaw) дрона и тем самым позволяет перемещаться в 2D направлении согласно перемещению стика управления ROLL/PITCH. Из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр и компас.
  • GPS/Return to Home — автоматически использует компас и GPS, чтобы вернуться к месту взлёта. Из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр, компас, и модуль GPS.
  • GPS/Waypoint — позволяет беспилотнику автономно следовать по предварительно установленным GPS точкам. Из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр, компас, и модуль GPS.
  • GPS/Position Hold — удерживает текущую позицию с помощью GPS и барометра (если доступен). Из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп, акселерометр, компас, и модуль GPS.
  • Failsafe (аварийный/отказоустойчивый режим) — если другие режимы полёта заданы не были, беспилотник переходит в режим Acro. Из всех имеющихся сенсоров, контроллером полёта задействуется только гироскоп. Актуален при сбоях в программном обеспечении беспилотника, позволяет восстановить контроль над БЛА посредством ранее предустановленных команд.

Программное обеспечение


ПИД-регулятор (назначение и настройка)

Proportional Integral Derivate (PID) или Пропорционально-интегрально-дифференцирующий регулятор (ПИД) — часть программного обеспечения полётного контроллера, которое считывает данные с сенсоров и вычисляет, как быстро должны вращаться моторы, чтобы сохранить желаемую скорость перемещения БЛА.

Разработчики готовых к полёту БЛА как правило оптимально настраивают параметры ПИД-регулятора, поэтому большинство RTF беспилотников отлично пилотируются прямо из коробки. Чего не скажешь про кастомные сборки БЛА, где актуально использование универсального полётного контроллера подходящего для любой мультироторной сборки, с возможностью регулировки значений PID до тех пор, пока они не будут соответствовать требуемым характеристикам полёта конечного пользователя.


GUI

Graphical User Interface (GUI) или Графический интерфейс пользователя — это то, что используется для визуального редактирования кода (при помощи компьютера), который будет загружен в полётный контроллер. Программное обеспечение, поставляемое с контроллерами полёта, продолжает становиться все лучше и лучше; первые контроллеры полёта использовали в основном текстовые интерфейсы, которые требовали, чтобы пользователи понимали почти весь код и меняли определенные разделы в соответствии с проектом. В последнее время в GUI применяются интерактивные графические интерфейсы, с целью облегчить пользователю настройку необходимых параметров.

Связь

    (взлёт и снижение) (вращение вокруг своей оси влево и вправо) (движение вперёд и назад) (движение влево и вправо)
  • Арминг (Arming или Arm)/Дизарминг (Disarming или Disarm) — постановка/снятие с охраны моторов.
  • Управление подвесом (панорамирование вверх/вниз, вращение по часовой стрелке/против часовой стрелки, зуммирование)
  • Смена режимов полёта (ACRO/ANGLE и т.д.)
  • Активировать/Задействовать полезную нагрузку (парашют, зуммер или другое устройство)
  • Любое другое применение
  • Не все RC передатчики могут обеспечить полный диапазон RC сигналов от 500мс до 2500мс; некоторые искусственно ограничивают этот диапазон, так как большинство используемых RC предназначены для радиоуправляемых автомобилей, самолётов и вертолётов.
  • Дальность/Макс. воздушный радиус действия (измеряется в футах или метрах) RC-системы — практически никогда не предоставляются производителями, поскольку на этот параметр влияют множество факторов, таких как помехи, температура, влажность, заряд батареи и другие.
  • Некоторые RC-системы имеют приёмник, который также имеет встроенный передатчик для передачи данных от датчика (например, GPS-координат), которые в последствии будут отображаться на ЖК-дисплее RC передатчика.


Bluetooth

Bluetooth и более поздние продукты BLE (Bluetooth Low Energy) изначально предназначались для передачи данных между устройствами без заморочек сопряжения или согласования частот. Некоторые имеющиеся на рынке контроллеры полёта могут отправлять и получать данные по беспроводной связи через соединение Bluetooth, что упрощает поиск неисправностей в полевых условиях.

Wi-Fi

Управление по Wi-Fi обычно достигается посредством Wi-Fi роутера, компьютера (в том числе ноутбук, десктоп, планшет) или смартфон. Wi-Fi в состоянии справится как с передачей данных, так и с передачей видеопотока, но одновременно с этим эту технологию сложнее настроить/реализовать. Как и для всех Wi-Fi устройств, расстояние удаления ограничено Wi-Fi передатчиком.

Смартфон

Хоть это и не тип связи, самого вопроса, как управлять дроном используя смартфон, достаточно, чтобы уделить ему отдельный раздел. Современные смартфоны это по сути мощные компьютеры, которые по случайному совпадению могут также совершать телефонные звонки. Почти все смартфоны имеют встроенный модуль Bluetooth, а также модуль WiFi, каждый из которых используется для управления дроном и/или получения данных и/или видео.


Инфракрасное излучение (Infrared (IR))

Инфракрасная связь (то что можно найти в каждом телевизионном пульте дистанционного управления) редко используется для управления дронами, так как даже в обычных комнатах (не говоря уже об открытом пространстве) присутствует так много инфракрасных помех, что они не очень надёжны. Несмотря на то, что технологию можно использовать для управления БПЛА, не может быть предложена как основной вариант.

Дополнительные соображения

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

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

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

  1. Четыре отверстия на расстоянии 30.5мм или 45мм друг от друга в квадрате.
  2. Плоская нижняя часть для использования с наклейкой.
  3. Четыре отверстия в прямоугольнике (стандарт не установлен).

Сообщество: поскольку вы создаете кастомный дрон, участие в онлайн-сообществе может значительно помочь, особенно, если вы столкнулись с проблемами или хотите получить совет. Получение рекомендаций от сообщества или просмотр отзывов пользователей, касательно качества и простоты использования различных контроллеров полёта, может также быть полезным.

Аксессуары: Для полноценного использования продукта, помимо самого контроллера полёта, могут потребоваться сопутствующие элементы (аксессуары или опции). Такие аксессуары могут включать, но не ограничиваются ими: модуль GPS и/или GPS антенна; кабели; монтажные принадлежности; экран (LCD/OLED);

Пример

Итак, учитывая все эти различные сравнительные характеристики, какую информацию вы можете получить о контроллере полёта и что может включать контроллер полета? В качестве примера мы выбрали Quadrino Nano Flight Controller.

Главный процессор

Сенсоры


Quadrino Nano включает микросхему MPU9150 IMU, которая включает в себя 3-осевой гироскоп, 3-осевой акселерометр и 3-осевой магнитометр. Это помогает сделать плату достаточно маленькой, не жертвуя качеством датчика. Барометр MS5611 предоставляет данные о давлении и покрыт кусочком пены. Интегрированный Venus 838FLPx GPS с внешней GPS антенной (в комплекте).

Программное обеспечение


Quadrino Nano был создан специально для использования новейшего программного обеспечения MultiWii (на базе Arduino). Вместо того, чтобы изменять код Arduino напрямую, было создано отдельное, более графическое программное обеспечение.

Diy Kit

Квадрокоптер – отличный вариант проведения свободного времени. Можно купить Arduino дрон в ближайшем магазине или заказать в Китае, но есть альтернатива в виде сборки его своими руками. Да, это вполне реально сделать даже при отсутствии особых навыков и большой денежной суммы, ведь простейшие модели обойдутся вам в сумму 70-80 долларов США. Подобная сумма вполне подъемна даже для бедного студента, который сможет собрать отличный дрон своими руками.

Квадрокоптер на Arduino

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

Всем доброго времени суток! Я с другом решил сделать квадрокоптер. Хотелось бы посоветоваться на счет этого дела.

Начну с того, что квадрокоптер должен делать/уметь:

• Использовать стандартные датчики (акселерометр, гироскоп, барометр, компас)

• Полет вне помещения

• Дистанция связи больше 1 км, в идеале 4,7 км (без усилителя, при мин передаче данных)

• Полет более 1 часа

• Управление через компьютер (именно так, и не как иначе, в этом ВСЯ СУТЬ проекта)

• В будущем: установка системы фото/видео сьемки

• В будущем: переем и передача звука (от и к квадрокоптеру)

Строить квадрокоптер решили на Arduino MEGA 2560.

Теперь поговорим, что на данный момент имеется:

• Рама. Чертеж взят отсюда . (уже готовая, вес 870 гр.)


• GY-521 MPU-6050 (Гироскоп + Акселерометр) ( ссылка )


• Датчик расстояния - ультразвуковой дальномер HC-SR04 ( ссылка )


И то, что выбрали для дальнейшей покупки:

• Сами мозги Arduino MEGA2560 Rev.3 ( ссылка )


• Двигатели + регуляторы A2212 1000KV + 30A ESC ( ссылка )



• Беспроводной модуль связи. И тут 2 варианта:


или 3DRobotics 3DR ( ссылка )

Какой модуль лучше удовлетворит требования? (+условие, что с ним возможно удобно работать, отсутствие проблемы с драйверами)

• GY-271 HMC5883L I2C 3-осевой электронный компас ( ссылка )



Дальше пару вопросов с выбором АКБ:

1. Обязательно ли использовать Li-Po батарею или можно использовать Li-Ion АКБ? Не нашел нормальной статьи об их разнице. Зато нашел Аккумулятор Li ионная 30А 3500mah 3.7V ( ссылка )
Будет ли нормальным аккумулятором система:
при последовательном соединении 3 батареек увеличить напряжение и получить 11,1V
при параллельном соединении еще 3 (или больше) увеличить общую емкость.
На какое время полета можно рассчитывать (естественно примерно) ?

Дополнительные вопросы:

1. Посоветуйте хорошую недорогую (не GoPro) камеру для трансляции видео на компьютер
и тут вопрос: обязательно ли подключать отдельный видеопередатчик (порядком за высокую цену) или может хватить вычислительной мощности Arduino Mega 2560?

2. Какой можете посоветовать GPS модуль, хороший и недорогой?

Теперь пару вопросов о прошивке Arduino MEGA2560:

1. Существуют уже готовые прошивки для коптеров: Ardupilot, MegapirateNG, MiltiWii, AeroQuad. Я не особо знаю их "+" и "-" поэтому посоветуйте какой код будет легче переделать под наши требования к коптеру. Вообще я нашел статью о Ardupilot ( ссылка ). Подойдет ли данный вариант?

2. Есть ли отдельные примеры, которые показывают использование компьютера как пульта ДУ?

Читайте также: