Оглавление:

Дрон Arduino с GPS: 16 шагов
Дрон Arduino с GPS: 16 шагов

Видео: Дрон Arduino с GPS: 16 шагов

Видео: Дрон Arduino с GPS: 16 шагов
Видео: Остановка двигателей Дронов DJI ✅ #shorts 2024, Июль
Anonim
Дрон Arduino с GPS
Дрон Arduino с GPS

Мы решили создать управляемый Arduino и стабилизированный квадрокоптер с функцией GPS и видом от первого лица (FPV) с функциями возврата домой, перехода в координаты и удержания GPS. Мы наивно предполагали, что объединение существующих программ Arduino и проводки для квадрокоптера без GPS с системами передачи GPS будет относительно простым и что мы можем быстро перейти к более сложным задачам программирования. Однако для того, чтобы объединить эти два проекта, пришлось изменить очень многое, и в итоге мы создали квадрокоптер FPV с поддержкой GPS без каких-либо дополнительных функций.

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

Мы также включили все шаги, которые мы предприняли на пути к более автономному квадрокоптеру. Если вы чувствуете себя комфортно, углубляясь в Arduino или уже имеете большой опыт работы с Arduino и хотите использовать нашу точку остановки в качестве отправной точки для вашего собственного исследования, то это руководство также для вас.

Это отличный проект, чтобы узнать что-то о создании и кодировании для Arduino, независимо от того, сколько у вас опыта. Кроме того, мы надеемся, что вы уйдете с дроном.

Настройка выглядит следующим образом:

В списке материалов части без звездочки необходимы для обеих целей.

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

Детали с двумя звездочками требуются только для более ограниченного квадрокоптера.

Шаги, общие для обоих проектов, не имеют маркера после заголовка.

Шаги, необходимые только для более ограниченного неавтономного квадрокоптера, имеют "(Uno)" после названия.

Шаги, необходимые только для незавершенного автономного квадрокоптера, имеют после названия "(Mega)".

Чтобы построить четырехугольник на основе Uno, выполните шаги по порядку, пропуская любые шаги с "(Mega)" после названия.

Чтобы работать с мега-квадроциклом, выполните шаги по порядку, пропуская любые шаги с "(Uno)" после названия.

Шаг 1. Соберите материалы

Компоненты:

1) Одна рамка квадрокоптера (точная рамка, скорее всего, не имеет значения) (15 долларов США)

2) Четыре бесщеточных двигателя 2830, 900 кВ (или аналогичные) и четыре комплекта монтажных принадлежностей (4x 6 долларов + 4x 4 доллара = всего 40 долларов)

3) Четыре регулятора 20A UBEC (4x 10 долларов = 40 долларов всего)

4) Один блок распределения питания (с подключением XT-60) (20 долларов США)

5) Один LiPo аккумулятор 3 с, 3000-5000 мАч с подключением XT-60 (3000 мАч соответствует примерно 20 минутам полета) (25 долларов США)

6) Множество пропеллеров (они много ломаются) (10 долларов)

7) Один Arduino Mega 2560 * (40 долларов США)

8) Один Arduino Uno R3 (20 долларов)

9) Второй Arduino Uno R3 ** (20 долларов)

10) Один Arduino Ultimate GPS Shield (вам не нужен экран, но для использования другого GPS потребуется другая проводка) (45 долларов США)

11) Два беспроводных трансивера HC-12 (2x 5 $ = 10 $)

12) Один гироскоп / акселерометр MPU-6050, 6DOF (степень свободы) (5 долларов США)

13) Одна пара 9-канального передатчика / приемника Turnigy 9x 2,4 ГГц (70 долларов США)

14) Женские (наращиваемые) заголовки Arduino (20 долларов США)

15) Зарядное устройство LiPo Battery Balance (и адаптер 12 В постоянного тока, не входит в комплект) (20 долларов США)

17) Переходный шнур USB A - B с вилки на вилку (5 долларов США)

17) Клейкая лента

18) Термоусадочная трубка

Оборудование:

1) Паяльник

2) Припой

3) Пластиковая эпоксидная смола

4) Зажигалка

5) Инструмент для зачистки проводов

6) Набор шестигранных ключей

Дополнительные компоненты для передачи видео FPV (вид от первого лица) в реальном времени:

1) Маленькая камера FPV (это ссылка на довольно дешевую и некачественную камеру, которую мы использовали, вы можете заменить ее на лучшую) (20 долларов)

2) Пара видеопередатчик / приемник 5,6 ГГц (использовано 832 модели) (30 долларов США)

3) Литий-полимерный аккумулятор емкостью 500 мАч, 3 с (11,1 В) (7 долларов США) (мы использовали его с банановой вилкой, но, оглядываясь назад, мы рекомендуем вам использовать подключенный аккумулятор, так как он имеет разъем, совместимый с передатчиком TS832, и, следовательно, не имеет) т требует пайки).

4) 2 аккумулятора LiPo емкостью 1000 мАч 2 с (7,4 В) или аналогичный (5 долларов США). Количество мАч не критично, если оно больше 1000 мАч или около того. То же самое, что и выше, относится к типу вилки одной из двух батарей. Другой будет использоваться для питания монитора, так что паять придется несмотря ни на что. Наверное, лучше всего приобрести для этого штекер XT-60 (что мы и сделали). Ссылка для этого типа находится здесь: 1000 мАч 2 с (7,4 В) LiPo с разъемом XT-60.

5) ЖК-монитор (опционально) (15 долларов США). Вы также можете использовать адаптер AV-USB и программное обеспечение для копирования DVD, чтобы просматривать их прямо на ноутбуке. Это также дает возможность записывать видео и фотографии, а не просто просматривать их в реальном времени.

6) Если вы купили батареи с вилками, отличными от подключенных, вам могут понадобиться соответствующие переходники. В любом случае приобретите адаптер, соответствующий вилке аккумулятора, от которого питается монитор. Вот где взять адаптеры XT-60

* = только для более сложного проекта

** = только для более простого проекта

Расходы:

Если начать с нуля (но с паяльником и т. Д.), Без системы FPV: ~ 370 долларов

Если у вас уже есть RC-передатчик / приемник, зарядное устройство LiPo и аккумулятор LiPo: ~ 260 долларов

Стоимость системы FPV: 80 $

Шаг 2: соберите раму

Соберите раму
Соберите раму
Соберите раму
Соберите раму
Соберите раму
Соберите раму

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

Шаг 3. Установите двигатели и подключите Esc

Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc
Установите двигатели и подключите Esc

Теперь, когда рама собрана, выньте четыре двигателя и четыре монтажных приспособления. Вы можете использовать винты, входящие в монтажный набор, или винты, оставшиеся от рамы квадрокоптера, чтобы прикрутить двигатели и крепления на место. Если вы купите крепления, с которыми мы связаны, вы получите два дополнительных компонента, изображенных выше. У нас были хорошие моторные характеристики без этих деталей, поэтому мы отказались от них, чтобы уменьшить вес.

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

У вас также должно быть четыре конуса пропеллера с внутренней резьбой. Отложите их пока.

Теперь выньте свои ESC. С одной стороны будут выходить два провода, красный и черный. Для каждого из четырех ESC вставьте красный провод в положительный разъем на PDB, а черный - в отрицательный. Обратите внимание, что если вы используете другую PDB, на этом этапе может потребоваться пайка. Теперь подключите каждый из трех проводов, идущих от каждого двигателя. На этом этапе не имеет значения, какой провод ESC вы подключаете к какому проводу двигателя (если вы подключаете все провода одного ESC к одному и тому же двигателю!) Вы исправите любую обратную полярность позже. Перепутать провода не опасно; это только приводит к тому, что двигатель вращается назад.

Шаг 4: подготовьте Arduino и Shield

Подготовьте Arduino и Shield
Подготовьте Arduino и Shield
Подготовьте Arduino и Shield
Подготовьте Arduino и Shield

Примечание перед тем, как начать

Во-первых, вы можете спаять все провода напрямую. Однако мы сочли бесценным использование заголовков контактов, поскольку они обеспечивают большую гибкость при устранении неполадок и адаптации проекта. Далее следует описание того, что мы сделали (и рекомендовали сделать это другим).

Подготовьте Arduino и щит

Выньте Arduino Mega (или Uno, если вы работаете с неавтономным квадрокоптером), экран GPS и штабелируемые заголовки. Припаяйте охватываемый конец штабелируемых разъемов на месте на экране GPS в ряды контактов, параллельных предварительно припаянным контактам, как показано на изображении выше. Также припаивайте штабелируемые разъемы к ряду выводов с маркировкой 3V, CD,… RX. Используйте кусачки, чтобы отрезать лишнюю длину штифтов, выступающих снизу. Поместите мужские заголовки с загнутыми вершинами во все эти штабелируемые заголовки. Это то, к чему вы будете припаять провода для остальных компонентов.

Прикрепите экран GPS к верхней части, убедившись, что контакты совпадают с контактами на Arduino (Mega или Uno). Обратите внимание, что при использовании Mega большая часть Arduino все равно будет открыта после того, как вы установите щит на место.

Поместите изоленту на нижнюю часть Arduino, закрыв все открытые пайки контактов, чтобы предотвратить короткое замыкание, когда Arduino опирается на PDB.

Шаг 5: соедините компоненты вместе и установите батарею (Uno)

Соедините компоненты вместе и установите батарею (Uno)
Соедините компоненты вместе и установите батарею (Uno)
Соедините компоненты вместе и установите батарею (Uno)
Соедините компоненты вместе и установите батарею (Uno)
Соедините вместе компоненты и установите батарею (Uno)
Соедините вместе компоненты и установите батарею (Uno)
Соедините вместе компоненты и установите батарею (Uno)
Соедините вместе компоненты и установите батарею (Uno)

Схема выше почти идентична схеме, сделанной Джупом Брукингом, поскольку мы в значительной степени основывали наш дизайн на его конструкции.

* Обратите внимание, что эта схема предполагает правильно установленный экран GPS, и поэтому GPS не отображается на этой схеме.

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

-Убедитесь, что переключатель на щите GPS установлен в положение «Прямая запись».

-Теперь подключите все компоненты в соответствии со схемой выше (кроме аккумулятора!) (Важное примечание о проводах данных GPS ниже).

-Обратите внимание, что вы уже подключили ESC к двигателям и PDB, так что эта часть схемы готова.

-Кроме того, обратите внимание, что данные GPS (желтые провода) поступают с контактов 0 и 1 на Arduino (а не с отдельных контактов Tx и Rx на GPS). Это связано с тем, что GPS настроен на «прямую запись» (см. Ниже), он выводит данные непосредственно на последовательные порты оборудования на uno (контакты 0 и 1). Это наиболее наглядно показано на второй картинке выше полной разводки.

-При подключении RC-приемника см. Рисунок выше. Обратите внимание, что провода данных входят в верхнюю строку, а Vin и Gnd находятся во второй и третьей строках, соответственно (и в самом дальнем столбце контактов).

-Для подключения трансивера HC-12, RC-приемника и 5Vout от PDB к Vin Arduino мы использовали штабелируемые разъемы, тогда как для гироскопа мы припаяли провода непосредственно к плате и использовали термоусадочные трубки вокруг припой. Вы можете выбрать любой из компонентов, однако рекомендуется пайка непосредственно на гироскоп, поскольку это экономит место, что упрощает установку небольшой детали. Использование заголовков - это немного больше работы, но обеспечивает большую гибкость. Пайка проводов напрямую - более безопасное соединение в долгосрочной перспективе, но означает, что использовать этот компонент в другом проекте сложнее. Обратите внимание, что если вы использовали заголовки на щите GPS, у вас все еще есть приличная гибкость, независимо от того, что вы делаете. Крайне важно убедиться, что провода данных GPS на контактах 0 и 1 на GPS легко снять и заменить.

В конце нашего проекта мы не смогли разработать хороший метод крепления всех наших компонентов к раме. Из-за нехватки времени в нашем классе наши решения в основном касались двусторонней ленты из вспененного материала, изоленты, изоленты и стяжек. Мы настоятельно рекомендуем вам потратить больше времени на проектирование устойчивых монтажных конструкций, если вы планируете этот долгосрочный проект. С учетом всего вышесказанного, если вы просто хотите быстро создать прототип, не стесняйтесь следовать в нашем процессе. Однако убедитесь, что гироскоп надежно закреплен. Это единственный способ, которым Arduino знает, что делает квадрокоптер, поэтому, если он движется в полете, у вас возникнут проблемы.

Когда все подключено и установлено, возьмите LiPo аккумулятор и вставьте его между верхней и нижней пластинами рамы. Убедитесь, что его разъем указывает в том же направлении, что и разъем PDB, и что они действительно могут подключаться. Мы использовали клейкую ленту, чтобы удерживать батарею на месте (липкая лента тоже работает, но раздражает больше, чем клейкая лента). Клейкая лента работает хорошо, потому что аккумулятор можно легко заменить или снять для зарядки. Тем не менее, вы должны быть уверены, что вы плотно закрепили аккумулятор, как если бы аккумулятор двигался во время полета, это могло серьезно нарушить баланс дрона. Пока НЕ подключайте аккумулятор к PDB.

Шаг 6: соедините компоненты вместе и установите батарею (мега)

Соедините вместе компоненты и установите батарею (Mega)
Соедините вместе компоненты и установите батарею (Mega)
Соедините вместе компоненты и установите батарею (Mega)
Соедините вместе компоненты и установите батарею (Mega)
Соедините вместе компоненты и установите батарею (Mega)
Соедините вместе компоненты и установите батарею (Mega)

Схема выше была подготовлена с использованием программного обеспечения Fritzing, которое настоятельно рекомендуется, особенно для схем с участием Arduino. В основном мы использовали общие детали, так как наши детали, как правило, не входили в библиотеку деталей Fritzing.

-Обратите внимание, что эта схема предполагает правильно установленный экран GPS, и поэтому GPS не отображается на этой схеме.

-Переведите переключатель на Mega 2560 в положение «Soft Serial».

-Теперь подключите все компоненты в соответствии с приведенной выше схемой (кроме аккумулятора!)

-Обратите внимание, что вы уже подключили ESC к двигателям и PDB, так что эта часть схемы готова.

-Перемычки от контакта 8 к Rx и от контакта 7 к Tx существуют, потому что (в отличие от Uno, для которого был сделан этот экран), в мегапикселе отсутствует универсальный асинхронный приемник-передатчик (UART) на контактах 7 и 8, и, следовательно, мы должны использовать аппаратные последовательные контакты. Есть и другие причины, по которым нам нужны аппаратные последовательные контакты, о которых мы поговорим позже.

-При подключении RC-приемника см. Рисунок выше. Обратите внимание, что провода данных входят в верхнюю строку, а Vin и Gnd находятся во второй и третьей строках, соответственно (и в самом дальнем столбце контактов).

-Для подключения приемопередатчика HC-12, RC-приемника и 5Vout от PDB к Vin Arduino мы использовали штабелируемые разъемы, тогда как для гироскопа мы спаяли провода напрямую и использовали термоусадочные трубки вокруг припоя. Вы можете выбрать любой из компонентов. Использование заголовков - это немного больше работы, но обеспечивает большую гибкость. Пайка проводов напрямую - более безопасное соединение в долгосрочной перспективе, но означает, что использовать этот компонент в другом проекте сложнее. Обратите внимание, что если вы использовали заголовки на щите GPS, у вас все еще есть приличная гибкость, независимо от того, что вы делаете.

В конце нашего проекта мы не смогли разработать хороший метод крепления всех наших компонентов к раме. Из-за нехватки времени в нашем классе наши решения в основном касались двусторонней ленты из вспененного материала, изоленты, изоленты и стяжек. Мы настоятельно рекомендуем вам потратить больше времени на проектирование устойчивых монтажных конструкций, если вы планируете этот долгосрочный проект. С учетом всего сказанного, если вы просто хотите быстро создать прототип, не стесняйтесь следовать нашему процессу. Однако убедитесь, что гироскоп надежно закреплен. Это единственный способ, которым Arduino знает, что делает квадрокоптер, поэтому, если он движется в полете, у вас будут проблемы.

Когда все подключено и установлено, возьмите LiPo аккумулятор и вставьте его между верхней и нижней пластинами рамы. Убедитесь, что его разъем указывает в том же направлении, что и разъем PDB, и что они действительно могут подключаться. Мы использовали клейкую ленту, чтобы удерживать батарею на месте (липкая лента тоже работает, но раздражает больше, чем клейкая лента). Клейкая лента работает хорошо, потому что аккумулятор можно легко заменить или снять для зарядки. Тем не менее, вы должны быть уверены, что вы плотно закрепили аккумулятор, как если бы аккумулятор двигался во время полета, это могло серьезно нарушить баланс дрона. Пока НЕ подключайте аккумулятор к PDB.

Шаг 7: привязать получателя

Получатель привязки
Получатель привязки
Получатель привязки
Получатель привязки

Возьмите RC-приемник и временно подключите его к источнику питания 5 В (либо включив Arduino с помощью USB или питания 9 В, либо с помощью отдельного источника питания. Пока не подключайте LiPo к Arduino). Возьмите фиксирующий штифт, который идет в комплекте с RC-приемником, и вставьте его в контакты BIND на приемнике. Либо закоротите верхний и нижний контакты в столбце BIND, как показано на фотографии выше. Красный индикатор на приемнике должен быстро мигать. Теперь возьмите контроллер и нажмите кнопку на задней панели, когда он выключен, как показано выше. При нажатой кнопке включите контроллер. Теперь мигающий свет на приемнике должен загореться. Получатель привязан. Снимите стяжной трос. Если вы использовали другой источник питания, повторно подключите приемник к 5V от Arduino.

Шаг 8: (Необязательно) Соедините вместе и установите систему камеры FPV

(Необязательно) Соедините вместе и установите систему камеры FPV
(Необязательно) Соедините вместе и установите систему камеры FPV
(Необязательно) Соедините вместе и установите систему камеры FPV
(Необязательно) Соедините вместе и установите систему камеры FPV

Сначала спаяйте адаптер XT-60 с проводами питания и заземления на мониторе. Они могут отличаться от монитора к монитору, но питание почти всегда будет красным, а земля почти всегда черным. Теперь вставьте адаптер с припаянными проводами в литий-полимерный аккумулятор емкостью 1000 мАч с вилкой XT-60. Монитор должен включиться (обычно) с синим фоном. Это самый сложный шаг!

Теперь прикрутите антенны к приемнику и передатчику.

Подключите к передатчику маленький Lipo емкостью 500 мАч. Крайний правый вывод (справа под антенной) - это заземление (V_) батареи, следующий вывод слева - это V +. По ним идут три провода, идущие к камере. Ваша камера должна иметь штекер типа «три в одном», который подходит к передатчику. Убедитесь, что желтый провод данных находится посередине. Если вы использовали батареи, к которым мы подключили разъемы, предназначенные для этого, этот шаг не требует пайки.

Наконец, подключите другую батарею емкостью 1000 мАч к выходному проводу постоянного тока, который идет в комплекте с приемником, и, в свою очередь, подключите его к порту входа постоянного тока на приемнике. Наконец, подключите черный конец кабеля AVin, входящего в комплект поставки ресивера, к порту AVin на ресивере, а другой конец (желтый, гнездовой) - к желтому штекеру кабеля AVin вашего монитора.

На этом этапе вы должны увидеть изображение с камеры на мониторе. Если вы не можете, убедитесь, что приемник и передатчик включены (вы должны увидеть цифры на их маленьких экранах) и что они находятся на одном канале (мы использовали канал 11 для обоих и добились хороших результатов). Далее может потребоваться сменить канал на мониторе.

Установите компоненты на раму.

После того, как все настройки заработают, отключите батареи, пока не будете готовы к полету.

Шаг 9: Настройте прием данных GPS

Настройка приема данных GPS
Настройка приема данных GPS
Настройка приема данных GPS
Настройка приема данных GPS

Подключите свой второй Arduino ко второму трансиверу HC-12, как показано на схеме выше, помня, что установка будет получать питание, как показано, только если она подключена к компьютеру. Загрузите предоставленный код трансивера, откройте монитор последовательного порта до 9600 бод.

Если вы используете более простую настройку, вы должны начать получать предложения GPS, если ваш экран GPS включен и правильно подключен к другому приемопередатчику HC-12 (и если переключатель на экране находится в положении «Прямая запись»).

При использовании Mega убедитесь, что переключатель находится в положении «Soft Serial».

Шаг 10: Выполните код настройки (Uno)

Этот код идентичен тому, который использовал Джуп Броккинг в его учебнике по квадрокоптеру Arduino, и он заслуживает всей благодарности за его написание.

При отключенном аккумуляторе подключите компьютер к Arduino с помощью USB-кабеля и загрузите прилагаемый установочный код. Включите ваш RC-передатчик. Откройте монитор последовательного порта до 57600 бод и следуйте инструкциям.

Общие ошибки:

Если не удается загрузить код, убедитесь, что контакты 0 и 1 отключены от щита UNO / GPS. Это тот же аппаратный порт, который устройство использует для связи с компьютером, поэтому он должен быть свободным.

Если код пропускает сразу несколько шагов, убедитесь, что ваш переключатель GPS находится в положении «Прямая запись».

Если приемник не обнаружен, убедитесь, что на вашем приемнике горит постоянный (но тусклый) красный свет, когда передатчик включен. Если да, проверьте проводку.

Если гироскоп не обнаружен, это может быть вызвано повреждением гироскопа или типом гироскопа, отличным от того, для записи в который предназначен код.

Шаг 11: Выполните код настройки (Mega)

Этот код идентичен тому, который использовал Джуп Броккинг в его учебнике по квадрокоптеру Arduino, и он заслуживает всей благодарности за его написание. Мы просто адаптировали проводку Mega так, чтобы входы приемника соответствовали правильным контактам прерывания смены контактов.

При отключенном аккумуляторе подключите компьютер к Arduino с помощью USB-кабеля и загрузите прилагаемый установочный код. Откройте монитор последовательного порта до 57600 бод и следуйте инструкциям.

Шаг 12: откалибруйте регуляторы скорости (Uno)

Еще раз, этот код идентичен коду Joop Brokking. Все модификации были сделаны с целью интеграции GPS и Arduino, и их можно будет найти позже, в описании конструкции более совершенного квадрокоптера.

Загрузите прикрепленный калибровочный код ESC. На мониторе последовательного порта напишите букву «r» и нажмите «Return». Вы должны начать видеть перечисленные значения контроллера дистанционного управления в реальном времени. Убедитесь, что они варьируются от 1000 до 2000 на крайних значениях газа, крена, тангажа и рыскания. Затем напишите «а» и нажмите «Return». Отпустите калибровку гироскопа, а затем убедитесь, что гироскоп регистрирует движение квадрокоптера. Теперь отключите Arduino от компьютера, полностью переведите дроссельную заслонку на контроллер и подключите аккумулятор. ESC должны циклировать разные звуковые сигналы (но это может отличаться в зависимости от ESC и его прошивки). Полностью опустите дроссельную заслонку. ESC должны издавать более низкие звуковые сигналы, а затем замолчать. Отключите аккумулятор.

При желании на этом этапе вы можете использовать конусы, входящие в комплект принадлежностей для монтажа двигателя, чтобы плотно прикрутить пропеллеры. Затем введите цифры 1–4 на мониторе последовательного порта, чтобы включить двигатели 1–4 соответственно на минимальной мощности. Программа зарегистрирует количество тряски из-за дисбаланса стоек. Вы можете попытаться исправить это, добавив небольшое количество скотча к одной или другой стороне реквизита. Мы обнаружили, что можем получить хороший полет без этой ступеньки, но, возможно, немного менее эффективно и громче, чем если бы мы уравновешивали опоры.

Шаг 13: калибровка регуляторов скорости (мега)

Этот код очень похож на код Броккинга, однако мы адаптировали его (и соответствующую проводку) для работы с Mega.

Загрузите прикрепленный калибровочный код ESC. На мониторе последовательного порта напишите букву «r» и нажмите «Return». Вы должны начать видеть перечисленные значения контроллера дистанционного управления в реальном времени. Убедитесь, что они варьируются от 1000 до 2000 на крайних значениях газа, крена, тангажа и рыскания.

Затем напишите «а» и нажмите «Return». Отпустите калибровку гироскопа, а затем убедитесь, что гироскоп регистрирует движение квадрокоптера.

Теперь отключите Arduino от компьютера, полностью переведите дроссельную заслонку на контроллер и подключите аккумулятор. ESC должны издать три низких звуковых сигнала, за которыми следует высокий сигнал (но это может быть разным в зависимости от ESC и его прошивки). Полностью опустите дроссельную заслонку. Отключите аккумулятор.

Изменения, которые мы внесли в этот код, заключались в том, чтобы переключиться с использования PORTD для выводов ESC на использование PORTA, а затем изменить байты, записанные в эти порты, чтобы мы активировали правильные выводы, как показано на схеме подключения. Это изменение связано с тем, что контакты регистра PORTD находятся не в том же месте на Mega, что и на Uno. Мы не смогли полностью протестировать этот код, так как работали со старым небрендированным Mega, который был в магазине нашей школы. Это означало, что по какой-то причине не все контакты регистров PORTA могли правильно активировать ESC. У нас также были проблемы с использованием оператора или равенства (| =) в некоторых из наших тестовых кодов. Мы не уверены, почему это вызывало проблемы при записи байтов для установки напряжений на выводах ESC, поэтому мы изменили код Брукинга как можно меньше. Мы думаем, что этот код очень близок к функциональному, но ваш опыт может отличаться.

Шаг 14: подняться в воздух !! (Уно)

И снова эта третья часть гениального кода - работа Джупа Броккинга. Изменения во всех этих трех частях кода присутствуют только при нашей попытке интеграции данных GPS в Arduino.

Когда ваши пропеллеры надежно закреплены на раме и все компоненты закреплены, закреплены лентой или иным образом установлены, загрузите код полетного контроллера в ваш Arduino, затем отключите Arduino от вашего компьютера.

Вынесите квадрокоптер на улицу, подключите аккумулятор и включите передатчик. При желании можно взять с собой ноутбук, подключенный к системе приема GPS, а также к устройству приема видео и монитору. Загрузите код трансивера в свой наземный Arduino, откройте монитор последовательного порта до 9600 бод и наблюдайте, как поступают данные GPS.

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

Посмотрите встроенное видео о том, как мы взволнованно управляем дроном, когда нам впервые удалось заставить дрон и GPS работать одновременно.

Шаг 15: подняться в воздух !! (Мега)

Из-за зависания с кодом калибровки ESC для Mega мы так и не смогли создать код контроллера полета для этой платы. Если вы дошли до этого момента, то я полагаю, что вы хотя бы повозились с кодом калибровки ESC, чтобы он работал на Mega. Следовательно, вам, вероятно, придется внести аналогичные изменения в код полетного контроллера, которые вы сделали на последнем шаге. Если наш калибровочный код ESC для Mega волшебным образом работает без каких-либо других модификаций, то вам нужно будет сделать только несколько вещей, чтобы он работал на этом этапе. Сначала вам нужно пройти и заменить все экземпляры PORTD на PORTA. Также не забудьте изменить DDRD на DDRA. Затем вам нужно будет изменить все байты, записываемые в регистр PORTA, чтобы они активировали правильные контакты. Для этого используйте байт B11000011, чтобы установить контакты на высокий уровень и B00111100, чтобы установить контакты на низкий уровень. Удачи! Сообщите нам, успешно ли вы летите на Mega!

Шаг 16: Как мы пришли к тому, на чем мы сейчас находимся, с помощью мегадизайна

Этот проект был огромным опытом обучения для нас, начинающих заниматься Arduino и электроникой. Поэтому мы решили включить сагу обо всем, с чем мы столкнулись при попытке включить код Joop Brokking с помощью GPS. Поскольку код Brokking настолько тщателен и намного сложнее, чем все, что мы писали, мы решили изменить его как можно меньше. Мы попытались заставить экран GPS отправлять данные на Arduino, а затем заставить Arduino отправлять нам эту информацию через трансивер HC12 без какого-либо изменения кода полета или проводки. Посмотрев на схему и проводку нашей Arduino Uno, чтобы выяснить, какие контакты были доступны, мы изменили код приемопередатчика GPS, который мы использовали, чтобы обойти существующий дизайн. Затем мы протестировали его, чтобы убедиться, что все работает. В этот момент все казалось многообещающим.

Следующим шагом была интеграция кода, который мы только что модифицировали и протестировали, с полетным контроллером Brokking. Это было несложно, но мы быстро столкнулись с ошибкой. Полетный контроллер Brokking использует библиотеки Arduino Wire и EEPROM, в то время как наш код GPS использовал как библиотеку Software Serial, так и библиотеку Arduino GPS. Поскольку библиотека Wire ссылается на библиотеку Software Serial, мы столкнулись с ошибкой, из-за которой код не компилировался из-за «нескольких определений для _vector 3_», что бы это ни значило. Посмотрев в Google и покопавшись в библиотеках, мы в конце концов поняли, что этот конфликт библиотек делает невозможным использование этих фрагментов кода вместе. Итак, мы пошли искать альтернативы.

Мы выяснили, что единственная комбинация библиотек, которая не вызвала у нас ошибок, - это переключение стандартной библиотеки GPS на neoGPS, а затем использование AltSoftSerial вместо Software Serial. Эта комбинация работала, однако AltSoftSerial может работать только с определенными контактами, которые не были доступны в нашем дизайне. Это то, что привело нас к использованию Mega. Arduino Megas имеет несколько аппаратных последовательных портов, а это означает, что мы можем обойти этот конфликт библиотек, не открывая программные последовательные порты вообще.

Однако, когда мы начали использовать Mega, мы быстро поняли, что конфигурация контактов была другой. Контакты на Uno, которые имеют прерывания, на Mega отличаются. Точно так же контакты SDA и SCL находились в разных местах. Изучив схемы контактов для каждого типа Arduino и обновив регистры, вызываемые в коде, мы смогли запустить код настройки полета с минимальным переподключением и без изменений программного обеспечения.

С кодом калибровки ESC мы начали сталкиваться с проблемами. Мы кратко коснулись этого раньше, но в основном код использует регистры контактов для регулирования контактов, используемых для управления регуляторами скорости. Это затрудняет чтение кода, чем использование стандартной функции pinMode (); однако это заставляет код работать быстрее и одновременно активировать контакты. Это важно, потому что код полета выполняется в тщательно рассчитанном цикле. Из-за различий в выводах между Arduinos мы решили использовать регистр порта A на Mega. Однако в нашем тестировании не все контакты давали нам одинаковое выходное напряжение, когда им было сказано установить высокий уровень. Некоторые выводы имели выходное напряжение около 4,90 В, а другие давали нам значение, близкое к 4,95 В. Судя по всему, регуляторы ESC, которые у нас есть, несколько привередливы, и поэтому они будут работать должным образом только тогда, когда мы будем использовать контакты с более высоким напряжением. Затем это заставило нас изменить байты, которые мы записали в регистр A, чтобы мы разговаривали с правильными выводами. Подробнее об этом читайте в разделе калибровки ESC.

Это примерно то, что мы сделали в этой части проекта. Когда мы пошли тестировать этот модифицированный калибровочный код ESC, что-то закоротило, и мы потеряли связь с нашим Arduino. Мы были очень озадачены этим, потому что мы не меняли никакой проводки. Это заставило нас отступить и понять, что у нас была всего пара дней, чтобы получить летающий дрон, после недель попыток собрать вместе наши несовместимые части. Вот почему мы отступили и создали более простой проект с помощью Uno. Тем не менее, мы все еще думаем, что наш подход близок к работе с Mega с небольшим дополнительным временем.

Наша цель состоит в том, чтобы это объяснение препятствий, с которыми мы столкнулись, было полезно для вас, если вы работаете над изменением кода Brokking. У нас также не было возможности попробовать кодировать какие-либо функции автономного управления на основе GPS. Это то, что вам нужно будет выяснить после создания рабочего дрона с помощью Mega. Однако некоторые предварительные исследования Google показывают, что использование фильтра Калмана может быть наиболее стабильным и точным способом определения положения в полете. Мы предлагаем вам немного изучить, как этот алгоритм оптимизирует оценки состояния. Кроме того, удачи и дайте нам знать, если вы продвинетесь дальше, чем мы!

Рекомендуемые: