Дрон — очень дорогой гаджет. Как собрать квадрокоптер самому в домашних условиях? В этой инструкции я собираюсь рассказать, как сделать своими руками квадрокоптер по дешевке. Рама коптера и контроллер полета — самодельные. Конструкция сборки доступна даже для начинающих.
Рама состоит из алюминиевой антенны (штанги), лопасти вентилятора из алюминиевого плафона и дерева. Arduino UNO наряду с MPU6050 (гироскоп + Accle) используется в качестве контроллера полёта.
Введение
Теперь, когда вы выбрали или спроектировали раму БПЛА, выбрали моторы, несущие винты, ESC и батарею, можно приступить к выбору полётного контроллера. Полётный контроллер для мультироторного беспилотного летательного аппарата представляет собой интегральную схему, обычно состоящую из микропроцессора, датчиков и входных/выходных контактов. После распаковки контроллер полёта не знает какой конкретный тип или конфигурацию БПЛА вы используете, поэтому изначально необходимо будет установить определенные параметры в программном обеспечении, после чего заданная конфигурация загружается на борт. Вместо того, чтобы просто сравнивать доступные в настоящее время полётные контроллеры, подход, который мы здесь использовали, перечисляет, какие элементы ПК отвечают за какие функции, а также аспекты, на которые необходимо обратить внимание.
Необходимые узлы, детали и оборудование
Для проекта квадрокоптера с управлением от Arduino нам понадобятся:
- — провода;
- — литиевые аккумуляторы на 3.7 В;
- — транзистор: ULN2003A Darlington Transistor (можно взять транзистор, который поддерживает нагрузки и побольше);
- — моторы: 0820 Coreless Motors;
- — микроконтроллер: Arduino Uno;
- — акселлерометр/гироскоп: плата MPU-6050 (дешевый и сердитый вариант типа «все в одном»);
- — 3D принтер или доступ к нему для печати деталей конструкции квадрокоптера;
- — инструменты (в том числе паяльник и умение им пользоваться!).
Ссылки для заказа необходимого электронного оборудования, которое использовалось в проекте из Китая
- КУПИТЬ литиевые аккумуляторы 3.7 В (Будьте внимательны, среди предлагаемых товаров Вам надо найти именно подходящий Вам!);
- КУПИТЬ транзисторы ULN2003A;
- КУПИТЬ двигатели;
- КУПИТЬ Arduino Uno R3;
- КУПИТЬ MPU-6050;
Основной процессор
8051 vs AVR vs PIC vs ARM: Семейство микроконтроллеров составляющее основу большинства современных контроллеров полёта. Arduino основан на AVR (ATmel), и сообщество, похоже, сосредоточено на MultiWii, как на предпочтительном коде. Microchip является основным производителем чипов PIC. Трудно утверждать, что одно лучше другого, всё сводится к тому, что может делать программное обеспечение. ARM (например, STM32) использует 16/32-битную архитектуру, при этом десятки используют 8/16-битные AVR и PIC. Поскольку одноплатные компьютеры становятся все менее и менее дорогостоящими, ожидается появление полётных контроллеров нового поколения, которые могут работать с полноценными операционными системами, такими как Linux, или Android.
ЦП: Обычно их разрядность кратна 8 (8-бит, 16-бит, 32-бит, 64-бит), что в свою очередь указывает на размер первичных регистров в ЦП. Микропроцессоры могут обрабатывать только установленное (максимальное) количество бит в памяти за один раз (такт). Чем больше бит может обработать микропроцессор, тем более точной (и более быстрой) будет обработка. Например, обработка 16-битной переменной на 8-битном процессоре происходит куда медленней, чем на 32-битном. Обратите внимание, что код также должен работать с правильным количеством бит, а на момент написания этой статьи лишь немногие программы используют код, оптимизированный для 32 бит.
Рабочая частота: Частота, на которой работает основной процессор. Также по умолчанию её называют «тактовой частотой». Частота измеряется в герцах (циклов в секунду). Чем выше рабочая частота, тем быстрее процессор может обрабатывать данные.
Программная память/Флэш: Флэш-память — это место, где хранится основной код. Если программа сложная, она может занимать много места. Очевидно, что чем больше память, тем больше информации она может хранить. Память также актуальна при хранении данных в полёте, таких как координаты GPS, планы полёта, автоматическое движение камеры и т.д. Код, загруженный на флэш-память, остается на чипе даже после отключения питания.
SRAM: SRAM расшифровывается как «Статическая память с произвольным доступом» и представляет собой пространство на чипе, которое задействуется при выполнении расчетов. Данные, хранящиеся в оперативной памяти, теряются при отключении питания. Чем выше объём оперативной памяти, тем больше информации будет «легко доступно» для расчетов в любой момент времени.
EEPROM: электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ) обычно используется для хранения информации, которая не изменяется во время полёта, например настройки, в отличие от данных, хранящихся на SRAM, к которым могут относиться показания датчика и т.д.
Дополнительные порты Ввода/Вывода: большинство микроконтроллеров имеют большое количество цифровых и аналоговых портов ввода и вывода, на контроллере полёта некоторые используются под датчики, другие для связи, либо для общего ввода и вывода. К этим дополнительным портам могут быть подключены RC сервоприводы, системы подвеса, зуммеры и многое другое.
Аналого-цифровой преобразователь (A/D converter/АЦП): Если датчики используют бортовое аналоговое напряжение (обычно 0-3.3В или 0-5В), аналого-цифровой преобразователь должен преобразовать эти показания в цифровые данные. Как и в случае с процессором, количество бит, которое может быть обработано АЦП, предопределяет максимальную точность. С этим связана тактовая частота, с которой микропроцессор может считывать данные (количество раз в секунду), чтобы убедиться, что информация не потеряна. Тем не менее, трудно не потерять часть данных во время такого преобразования, поэтому чем выше разрядность АЦП, тем более точными будут показания, но при этом важно, чтобы процессор смог справиться с той скоростью, с которой отправляются данные.
Новый дрон от DJI, Intel и Ryze Tech
С 9 по 12 января в Лас-Вегасе проходила международная выставка потребительской электроники CES 2022. Всемирно известная компания DJI Innovations совместно с предприятием Ryze Technology, а также при участии Intel представила очень интересную и необычную новинку – квадрокоптер Tello. Tello представляет собой мини-дрон и позиционируется как дрон-игрушка или дрон для развлечений, оснащён камерой 720p, а цена его – чуть больше 100 евро.
Общие характеристики
Новый квадрокоптер Tello – это мини-дрон с крайне скромными габаритами, но разнообразным функционалом. Производители создавали эту модель специально для детей и подростков, но она будет интересна и взрослым. Продолжительность полёта Tello – до 13 минут на одном заряде, дальность полёта – около 100 метров. Трансляция в разрешении 720p производится на экран смартфона через специальное приложение Tello. В нём же доступны настройки фото- и видеосъёмки. В комплекте с квадрокоптером идёт аккумулятор, набор запасных лопастей, а также комплект защиты лопастей.
Ryze Technology: новый игрок на рынке
Tello – это совместное произведение DJI и Intel с молодым стартапом Ryze Technology из того же Китая. Основана компания была в 2022 году. Пока что предприятие нацелено на изготовление дронов, оснащённых камерой, а также с арсеналом всевозможных «умных» функций и возможности обучения. Компания ставит целью повысить интерес молодёжи к современной технике.
В разработке дрона Tello молодому стартапу помогли именитые «гиганты»: от DJI был взят контроллер полёта, а от Intel – установлен мощный процессор. Вся эта мощь умещается в небольшом корпусе, который можно брать с собой куда угодно. Tello умеет «учиться»: владелец получит возможность программировать дрон, причём по заверениям разработчиков это будет настолько легко, что с программированием справятся не только подростки, но даже дети!
Нельзя сказать, что Tello – это продукт от DJI, хотя дрон и похож визуально на Spark. Всё-таки DJI и Intel – скорее партнёры, участвовавшие в разработке квадрокоптера. Кроме того, DJI будут предлагать Tello для покупки в своём онлайн-магазине.
Фишки новой модели
Квадрокоптер Tello относится скорее к дронам для развлечения (фандронам), чем к категории дронов с камерой. Этот малыш умеет совершать забавные трюки и сальто в воздухе, что доставит массу удовольствия пилотам младшего возраста. Tello можно без опаски запускать с ладони и сажать на неё в автоматическом режиме. Причём запуск можно произвести лёгким подбросом квадрокоптера в воздух.
Tello имеет целый ряд предустановленных функций для фото- и видеосъёмки (например, Circle Mode, 360 Grad, Up-and-Away). Стабилизация изображения производится цифровым образом, не механически. За это отвечает встроенный 14-ядерный процессор от Intel. Квадрокоптер снимает 5 Мп фото. Кроме того, Tello совместим с VR-очками. И при этом его вес – всего 80 гр.!
Кроме всего прочего у новинки есть ряд полезных функций для безопасности полёта. Одним движением пальца в приложении дрон может автоматически взлететь или совершить посадку. С помощью визуальных и звуковых сигналов Tello предупреждает о близком разряде аккумулятора. При потере сигнала срабатывает функция Failsafe – дрон автоматически приземлится. Новинка также имеет встроенную систему визуального позиционирования.
Программируемая игрушка
Ryze Technology в своей новинке уделило особое внимание воспитательному и учебному аспекту. Дети и подростки с помощью Tello могут без труда и в игровой форме выучить основы программирования (на языке программирования для детей Scratch).
Scratch – это язык программирования, созданный в 2007 году специально для детей младшего и среднего школьного возраста. С его помощью дети могут без особого труда узнать об основах программирования, а также проявить свою креативность и развить навыки коммуникации. Scratch – это целое онлайн-сообщество заинтересованных детей, подростков и педагогов, поддерживающих друг друга.
Именно благодаря Scratch дети получат возможность расширить полётные функции Tello. К примеру, перевороты и сальто в воздухе можно будет запрограммировать на 8 различных направлений. Возможными станут и другие интеллектуальные функции, изучаемые и испытываемые в игровой форме.
Питание
Часто в спецификации полётного контроллера описываются два диапазона напряжений, первый из которых представляет собой диапазон входного напряжения самого контроллера полёта (большинство работает при номинальном напряжении 5В), а второй — диапазон входного напряжения основного микропроцессора (3.3В или 5В). Поскольку контроллер полёта является встраиваемым устройством, вам необходимо обратить внимание только на входящий диапазон напряжения контроллера. Большинство контроллеров полёта мультироторных БЛА работают при напряжении 5В, так как это напряжение вырабатывает BEC (для получения дополнительной информации см. раздел «Силовая установка»).
Повторим. В идеале не нужно запитывать контроллер полёта отдельно от основной батареи. Единственное исключение — если вам нужна резервная АКБ на случай, когда основная батарея отдаёт столько энергии, что BEC не может вырабатывать достаточно тока/ напряжения, вызывая тем самым отключение питания/сброс. Но, в таком случае вместо резервной батареи часто используют конденсаторы.
Дальнейшая модернизация квадрокоптера на Arduino
Основные проблемы с маленьким квадрокоптером — его стоимость и вес. Можете поискать моторы побольше и помощнее, но это особо не улучшит его характеристики. Что вам действительно поможет, (если вы готовы отдать больше денег) — это безщеточные (вентильные) моторы. По характеристикам они на порядок лучше, но в довеску к ним надо использовать контроллеры скорости, что сделает квадрокоптер дороже.
Для уменьшения веса конструкции лучше всего использовать именно Arduino Uno, так как к этой модели контроллера можно снять «прошитый» чип микропроцессора и установить его непосредственно на вашу ProtoBoard. В результате вы выиграете около 30 грамм веса, что немало при таких масштабах. Дополнительно вам надо будет использовать еще несколько конденсаторов и т.п. Или, как альтернативный вариант, можно использовать Arduino Pro Mini.
Программа для Arduino, которая написана и представлена в предыдущем разделе, может быть легко расширена и обогащена дополнительным функционалом. Самое главное, что на этом этапе квадрокоптер уже может автоматически стабилизировать полет. Если вы хотите настроить дистанционное управление, можете посмотреть в сторону трансмиттеров/ресиверов или bluetooth модулей. В общем, основа у вас теперь есть, а пространства для дальнейшей модернизации — еще больше.
Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!
Сенсоры
С точки зрения аппаратного обеспечения, контроллер полёта по сути является обычным программируемым микроконтроллером, только со специальными датчиками на борту. Как минимум, контроллер полёта будет включать в себя 3-осевой гироскоп, но без автовыравнивания. Не все контроллеры полёта оснащаются указанными ниже сенсорами, но они также могут включать их комбинацию:
- Акселерометр: Как следует из названия, акселерометры измеряют линейное ускорение по трем осям (назовём их: X, Y и Z). Обычно измеряется в «G (на рус. Же)». Стандартное (нормальное) значение, составляет g = 9.80665 м/с². Для определения положения, выход акселерометра может быть интегрирован дважды, правда из-за потерь на выходе объект может быть подвержен дрейфу. Самой значимой характеристикой трёхосевых акселерометров является то, что они регистрируют гравитацию, и как таковые, могут знать, в каком направлении «спуск». Это играет главную роль в обеспечении стабильности многороторного БЛА. Акселерометр должен быть установлен на контроллере полёта так, чтобы линейные оси совпадали с основными осями беспилотника.
- Гироскоп: Гироскоп измеряет скорость изменения углов по трём угловым осям (назовём их: альфа, бета и гамма). Обычно измеряется в градусах в секунду. Обратите внимание, что гироскоп не измеряет абсолютные углы напрямую, но вы можете выполнить итерацию, чтобы получить угол, который, как и у акселерометра, способствует дрейфу. Выход реального гироскопа имеет тенденцию быть аналоговым или I2C, но в большинстве случаев вам не нужно беспокоиться об этом, так как все поступающие данные обрабатываются кодом контроллера полёта. Гироскоп должен быть установлен так, чтобы его оси вращения совпадали с осями БПЛА.
- Инерционный измерительный блок (IMU): IMU — по сути, это небольшая плата, которая содержит как акселерометр, так и гироскоп (обычно многоосевые). Большинство из них включают трёхосевой акселерометр и трёхосевой гироскоп, другие могут включать дополнительные сенсоры, например трёхосевой магнитометр, обеспечивающий в общей сложности 9 осей измерения.
- Компас/Магнитометр: Электронный магнитный компас способный определять магнитное поле Земли и использовать эти данные для определения направления компаса беспилотника (относительно северного магнитного полюса). Этот сенсор почти всегда присутствует, если система имеет GPS вход и доступно от одной до трех осей.
- Давление/Барометр: Так как атмосферное давление изменяется по мере удаления от уровня моря, можно использовать сенсор давления, чтобы получить довольно точные показания высоты БПЛА. Для расчёта максимально точной высоты, большинство контроллеров полёта получают данные одновременно от сенсора давления и спутниковой системы навигации (GPS). При сборке обратите внимание, что предпочтительнее, чтобы отверстие в корпусе барометра было накрыто куском поролона, это уменьшить отрицательное влияние ветра на чип.
- GPS: Система глобального позиционирования (GPS) чтобы определить своё конкретное географическое местоположение, использует сигналы, посылаемые несколькими спутниками обращающимися по орбите вокруг Земли. Контроллер полёта может иметь как встроенный GPS модуль, так и подключаемый посредством кабеля. GPS антенну не следует путать с самим GPS модулем, которая может выглядеть и как маленький черный ящик, и как обычная «Duck» антенна. Чтобы получить точные данные местоположения, модуль GPS должен принимать данные от нескольких спутников, и чем их больше, тем лучше.
- Расстояние: Датчики расстояния все чаще используются на беспилотниках, поскольку GPS-координаты и датчики давления не могут рассказать вам, насколько далеко вы находитесь от земли (холма, горы или здания), либо столкнётесь ли вы с объектом или нет. Датчик расстояния, обращенный вниз, может быть основан на ультразвуковой, лазерной или лидарной технологии (ИК-сенсоры могут испытывать проблемы в работе при солнечном свете). Датчики расстояния редко входят в стандартный комплект полётного контроллера.
Немного теории
Вне зависимости от формы и технических возможностей квадрокоптера у него обязательно четыре винта, которые попарно вращаются в разные стороны. Это необходимо для обеспечения стабильности положения в воздухе, так как если все винты будут вращаться в одном направлении, то дрон будет крутиться вокруг своей вертикальной оси.
Перемещение дрона на Arduino и любом другом контролере осуществляется за счет изменения трех параметров:
- тангаж;
- крен;
- рыскание.
Первый параметр определяет угол наклона вверх или вниз передней части квадрокоптера, позволяя выполнить снижение или подъем дрона. Крен определяет угол наклона, когда правая часть оказывает ниже или выше левой. Рыскание определяет угол поворота квадрокоптера Arduino вокруг вертикальной оси, проходящей через его центр тяжести, обеспечивая дрону поворот в горизонтальной плоскости на нужный угол.
Arduino – небольшая по габаритам плата (сравнима со спичечным коробком), имеющая собственный микропроцессор и память. На нем есть большое количество контактов для подключения компонентов, а возможность загрузки программы позволяет управлять ими по заданному определенному алгоритму.
В итоге плата Arduino дает широкие возможности для создания различных гаджетов, среди которых дрон лишь один из примеров.
Одновременно плата Arduino очень проста в освоении, поэтому работать с ней под силу даже людям, имеющим очень смутные познания в схемотехнике и программировании. Наличие же большого числа учебников, публикаций, видеоуроков позволит освоить простейшие действия с платой всего за пару часов. Непосредственно программирование на Arduino идет с помощью языка С++, имеющим большое распространение. Одновременно большое количество типовых программ позволит быстро его освоить до уровня, которого достаточно для управления дроном. Одновременно широкий выбор библиотек сократит время запуска первого дрона, предупредив появление детских ошибок.
Не потребует Arduino и наличия при сборке паяльника, так как вполне можно обойтись макетной доской и набором перемычек, что одновременно упрощает работу, позволяет быстро исправить какие-то недочеты и ошибки при сборке.
Режимы полёта
Ниже приведён список самых популярных режимов полёта, тем не менее не все из них могут быть доступны в полётных контроллерах. «Режим полёта» — это способ, посредством которого полётный контроллер использует сенсоры и входящие радиокоманды для обеспечения стабилизации и полёта БПЛА. Если используемая аппаратура управления имеет пять и более каналов, пользователь может настроить программное обеспечение, что позволит ему изменять режимы через 5 канал (вспомогательным переключателем) непосредственно во время полёта.
- ACRO — обычно режим по умолчанию, из всех имеющихся сенсоров, контроллером полёта задействуется только гироскоп (беспилотник не может автоматически выравниваться). Актуален для спортивного (акробатического) полёта.
- ANGLE — стабильный режим; из всех имеющихся сенсоров, контроллером полёта задействуются гироскоп и акселерометр. Углы ограничены. Будет удерживать беспилотник в горизонтальном положении (но без удержания позиции).
- HORIZON — сочетает в себе стабильность режима «ANGLE», когда стики находятся вблизи центра и перемещаются медленно, и акробатику режима «ACRO», когда стики находятся в крайних положениях и перемещаются быстро. Контроллером полёта задействуется только гироскоп.
- 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. Из всех имеющихся сенсоров, контроллером полёта задействуется только гироскоп. Актуален при сбоях в программном обеспечении беспилотника, позволяет восстановить контроль над БЛА посредством ранее предустановленных команд.
Программа для Arduino
Программа, которая выложена здесь, стабилизирует квадрокоптер и позволяет ему зависнуть в стабильном состоянии. Программа является основой для дальнейшего управления и перемещения квадрокоптера. Помимо основной программы вам надо будет скачать библиотеку Arduino PID по этой ссылке.
Можете почитать по поводу ПИД-регулирования на Вики, если вы не знакомы с этими регуляторами. PID класс для Arduino использует три входа: заданное положение, измерение и выход. Выход зависит от текущего положения и измерений. ПИД-регулятор старается изменить выход таким образом, чтобы измерения соответствовали заданному положению. В алгоритме используется интересная математика. Алгоритм ПИД-регулирования старается отработать таким образом, чтобы значения оставались максимально стабильными.
В нашем алгоритме для стабилизации используется два ПИД-контроллера: один для тангажа и другой для крена. Разница в скорости вращения пропеллеров 1 и 2 будет такой же как и разница в скорости пропеллеров 3 и 4. Аналогично для пар 1,3 и 2,4. После этого ПИД-регулятор изменяет разницу в скорости, выводя тангаж и крен в нуль.
Не забудьте проверить какие цифровые пины с Arduino идут к моторам и соответственно изменить скетч.
Программное обеспечение
ПИД-регулятор (назначение и настройка)
Proportional Integral Derivate (PID) или Пропорционально-интегрально-дифференцирующий регулятор (ПИД) — часть программного обеспечения полётного контроллера, которое считывает данные с сенсоров и вычисляет, как быстро должны вращаться моторы, чтобы сохранить желаемую скорость перемещения БЛА.
Разработчики готовых к полёту БЛА как правило оптимально настраивают параметры ПИД-регулятора, поэтому большинство RTF беспилотников отлично пилотируются прямо из коробки. Чего не скажешь про кастомные сборки БЛА, где актуально использование универсального полётного контроллера подходящего для любой мультироторной сборки, с возможностью регулировки значений PID до тех пор, пока они не будут соответствовать требуемым характеристикам полёта конечного пользователя.
GUI
Graphical User Interface (GUI) или Графический интерфейс пользователя — это то, что используется для визуального редактирования кода (при помощи компьютера), который будет загружен в полётный контроллер. Программное обеспечение, поставляемое с контроллерами полёта, продолжает становиться все лучше и лучше; первые контроллеры полёта использовали в основном текстовые интерфейсы, которые требовали, чтобы пользователи понимали почти весь код и меняли определенные разделы в соответствии с проектом. В последнее время в GUI применяются интерактивные графические интерфейсы, с целью облегчить пользователю настройку необходимых параметров.
Дополнительные возможности
Программное обеспечение, используемое на некоторых контроллерах полёта, может иметь дополнительные функции, которые недоступны для других. Выбор конкретного контроллера полёта может в конечном итоге зависеть от того, какие дополнительные функции/функциональные возможности предлагаются разработчиком. В список таких функций могут входить:
- Автономная навигация по путевым точкам — позволяет пользователю устанавливать путевые GPS точки, по которым беспилотник будет следовать автономно.
- Oribiting — перемещение беспилотника вокруг заданной GPS-координаты, где передняя часть дрона всегда направлена в сторону заданной координаты (актуально для съёмки).
- Follow me — многие БЛА имеют функцию «Follow Me/Следуй за мной», которая может быть основана на спутниковом позиционировании (например, отслеживание GPS-координат смартфона, либо встроенного в аппаратуру управления модуля GPS).
- 3D-изображение — большая часть 3D-изображений выполняется после полёта при помощи изображений и GPS данных полученных во время полёта.
- Открытый код — программное обеспечение некоторых полётных контроллеров, не может быть изменено/настроено. Продукты с открытым исходным кодом, как правило, позволяют опытным пользователям изменять код в соответствии с их конкретными потребностями.
3-D печать деталей квадрокоптера
Один из первых шагов — создание рамы нашего квадрокоптера. Было решено пойти по пути наименьшего сопротивления и напечатать раму на 3D принтере. Помимо простоты изготовления, каркас, напечатанный на 3D принтере, получается достаточно легкий благодаря печати «сотами». Детали были спроектированы в Solidworks. Ниже представлены все твердотельные модели. Все можете их спокойно скачать и отправлять на печать. Детали сохранены в формате .stl. Если хотите, можете их смело дорабатывать и изменять с использованием того же Solidworks. Модели параметрические, так что если вы решите использовать другие моторы, достаточно просто изменить несколько параметров в модели и вы получите готовый каркас под ваши габаритные размеры квадрокоптера.
diy_bottom_plate.stl
diy_motormount.stl
diy_quad_boom.stl
В результате вы получите что-то вроде такого:
Дополнительные соображения
Функциональность: Производители полётных контроллеров, обычно, стараются предоставить как можно больше функций — либо включены по умолчанию, либо приобретаются отдельно в качестве опций/дополнений. Ниже приведены лишь некоторые из множества дополнительных функций, на которые вы, возможно, захотите взглянуть при сравнении контроллеров полёта.
Демпфирование: даже небольшие вибрации в раме, обычно вызываемые несбалансированными несущими винтами и/или моторами, могут быть выявлены встроенным акселерометром, который, в свою очередь, отправит соответствующие сигналы на главный процессор, который предпримет корректирующие действия. Эти незначительные исправления не нужны или не желательны для стабильного полёта, и лучше всего, чтобы контроллер полёта вибрировал как можно меньше. По этой причине между контроллером полёта и рамой часто используются виброгасители/демпферы.
Корпус: защитный корпус вокруг контроллера полёта может помочь в различных ситуациях. Помимо того, что корпус выглядит более эстетично, чем голая печатная плата, корпус часто обеспечивает некоторый уровень защиты элект. элементов, а также дополнительную защиту в случае краша.
Монтаж: Существуют различные способы установки контроллера полёта на раму, и не все контроллеры полёта имеют одинаковые варианты монтажа:
- Четыре отверстия на расстоянии 30.5мм или 45мм друг от друга в квадрате.
- Плоская нижняя часть для использования с наклейкой.
- Четыре отверстия в прямоугольнике (стандарт не установлен).
Сообщество: поскольку вы создаете кастомный дрон, участие в онлайн-сообществе может значительно помочь, особенно, если вы столкнулись с проблемами или хотите получить совет. Получение рекомендаций от сообщества или просмотр отзывов пользователей, касательно качества и простоты использования различных контроллеров полёта, может также быть полезным.
Аксессуары: Для полноценного использования продукта, помимо самого контроллера полёта, могут потребоваться сопутствующие элементы (аксессуары или опции). Такие аксессуары могут включать, но не ограничиваются ими: модуль GPS и/или GPS антенна; кабели; монтажные принадлежности; экран (LCD/OLED);
info
Для полетов с камерой обзаведись подвесом, который будет удерживать камеру параллельно горизонту при маневрах, а также поможет управлять наклоном камеры. Большинство контроллеров имеют выходы для стабилизации подвесов с сервоприводом, а также выход для переключателя управления кнопкой спуска камеры.
Комплект обычно состоит из самого пульта и приемника. На приемнике находятся ручки управления и дополнительные кнопки. Обычно выбирают аппаратуру Mode2, когда левый стик управляет газом и поворотом, а правый — наклонами коптера. Все ручки, кроме газа, подпружинены и возвращаются в начальное положение при отпускании.
Также стоит обращать внимание на количество каналов. Для беспилотника потребуется четыре канала управления и один канал для переключения режимов полета, кроме того, могут потребоваться дополнительные каналы для управления камерой, для настройки или для особых режимов полетного контроллера. При выборе пульта стоит также учитывать возможность смены радиомодуля, чтобы в будущем его можно было легко обновить.
Пример
Итак, учитывая все эти различные сравнительные характеристики, какую информацию вы можете получить о контроллере полёта и что может включать контроллер полета? В качестве примера мы выбрали
.
Главный процессор
Используемый на борту ATMel ATMega2560 является одним из наиболее мощных Arduino-совместимых чипов ATMel. Хотя он имеет в общей сложности 100 выводов, включая 16 аналогово-цифровых каналов и пять портов SPI, из-за его небольшого размера и предполагаемого использования в качестве контроллера полёта, на плате присутствуют только некоторые из них.
- AVR vs PIC: AVR
- Процессор: 8-бит
- Рабочая частота: 16МГц
- Программная память/Flash: 256Кбайт
- SRAM: 8Кбайт
- EEPROM: 4Кбайт
- Дополнительные контакты ввода/вывода: 3 × I2C; 1 × UART; 2 × 10-контактных GPIO; Серво с 5 × выходами; OLED порт
- Аналого-цифровой преобразователь: 10-бит
Сенсоры
Quadrino Nano включает микросхему MPU9150 IMU, которая включает в себя 3-осевой гироскоп, 3-осевой акселерометр и 3-осевой магнитометр. Это помогает сделать плату достаточно маленькой, не жертвуя качеством датчика. Барометр MS5611 предоставляет данные о давлении и покрыт кусочком пены. Интегрированный Venus 838FLPx GPS с внешней GPS антенной (в комплекте).
Программное обеспечение
Quadrino Nano был создан специально для использования новейшего программного обеспечения MultiWii (на базе Arduino). Вместо того, чтобы изменять код Arduino напрямую, было создано отдельное, более графическое программное обеспечение.
Связь
- Прямой ввод от стандартного RC приёмника.
- Порт выделенного спутникового ресивера Spektrum
- Последовательный (SBus и/или Bluetooth или 3DR радиосвязи)
Digitrode
Управлять квадрокоптером – это веселое и интересное занятие. Интереснее может быть только создание своей системы управления такой игрушкой на базе какой-нибудь популярной платформы, например, Arduino. Чем и занялся энтузиаст под ником Dzl. Первым делом он разобрал пульт дистанционного управления для того, чтобы посмотреть, какая радиосистема в нем используется.
Внутри, как и ожидалось, была пара дешевых печатных плат с небольшим количеством компонентов на них.
Радиосвязь обеспечивалась небольшим дискретным радиомодулем. После дополнительного анализа и поиска в интерненте выяснилось, что модуль основан на микросхеме передатчика BK2421, работающего в диапазоне 2.4 ГГц. Сегодня, в принципе, большинство дешевых игрушек с радиоуправлением основаны на этом модуле.
Благодаря осциллографу и документации на микросхему было довольно просто найти выводы, по которым осуществлялась связь по интерфейсу SPI между модулем и остальной частью пульта.
Благодаря «прослушке» с помощью Arduino UNO стал понятен порядок инициализации и режим связи. имеется порядок инициализации.
Не вдаваясь в подробности низкоуровневой коммуникации, при включении пульта и квадрокоптера происходит следующее:
1. Пульт передает свой уникальный сетевой адрес или ID
2. Квадрокоптер принимает эту передачу, подтверждает ее и начинает прослушивать канал с данными от этого ID
3. После подтверждения пульт начинает передавать пакеты данных каждые 20 мс
Можно управлять одновременно несколькими квадрокоптерами, назначив им разные адреса. Передача ID проходит по одному фиксированному каналу, и данные передаются по одному из 12 случайных каналов. Квадрокоптеры автоматически сканируют радиоканалы, пока не найдут данные.
Данные передаются в пакете, состоящем из 8 байт, в следующем формате:
Байт 0 = throttle (газ) 0-255 Байт 1 =Yaw (рыскание) 0-255 Байт 2 =Yaw_trim (подстройка Yaw) 0-128 Байт 3 = Pitch (тангаж) 0-255 Байт 4 = Roll (крен) 0-255 Байт 5 = Pitch_trim (подстройка Pitch) 0-128 Байт 6 = Roll_trim (подстройка Roll) 0-128 Байт 7 = Fly/run 0=fly, 16=run
Затем была создана базовая станция, которая должна связываться квадрокоптерами. В качестве модулей использовались RFM-70, содержащие ту же микросхему BK2421. Следует отметить, что выводы BK2421 толерантны к 5 В, поэтому дополнительные резисторы для 3.3 В можно не ставить.
Для подключения одного и более квадрокоптеров к Arduino была написана специальная библиотека. Эта библиотека должна работать с любыми платами Arduino на базе чипов ATMEGA88 — ATMEGA328P. И в конце видео работы:
Сфера применения
Использовать quadrocopter можно и для серьезных целей. Оснащенный видеокамерой и передатчиком, он может передавать изображения с воздуха отслеживаемых объектов. К примеру, местонахождение голов скота на пастбище или состояние крыш и высоких памятников.
В его силах разведывать ледовые или сплавные заторы рек, передавать информацию о пробках и ситуации на дорогах. квадрокоптер используется и при лесных пожарах, давая обзор направления движения огня. В общем, везде, где есть необходимость получения панорамной картинки с высоты – он первый помощник. Включая сферы спасения жизни и поиска людей.
Из остальных очевидных методов применения дрона – переноска им по воздуху каких-либо грузов. Летательному аппарату не страшны плохие дороги или их полное отсутствие, а удаленное управление позволяет использовать его в любую погоду без риска для жизни пилота.
Квадрокоптер с грузом
Есть и не очевидные способы применения квадрокоптеров. К примеру, в некоторых крупных торговых центрах летательные аппараты подобного типа производят замену ламп освещения под потолком. Захват выполняется в специальный держатель, после чего дрон вращается, выкручивая светильник, и транспортирует его на землю. В него устанавливают целую лампу, которая перемещается вместе с аппаратом по воздуху обратно и вкручивается. В результате – нет риска для персонала, а работа выполнена.
Что нам понадобится?
Перед началом работы нужно подготовить следующие комплектующие:
- комплект проводов (лучше разноцветных для упрощения монтажа);
- литиевые аккумуляторы (напряжение 3.7В);
- транзистор ULN2003A Darlington Transistor (подойдут более мощные аналоги);
- контролер Arduino Uno;
- плата MPU-6050 (совмещает в себе функции акселерометра и гироскопа).
Дополнительно понадобится 3D-принтер или хотя бы доступ к нему, а также необходимые инструмент, масса любознательности и терпения, так как не все может получиться с первого раза.
Иной подход
Иной подход это верификация ПО. Обычно при этих словах люди начинают думать об абстрактных монадах и академических манускриптах, сложно читаемых и плохо применимых на практике. Но оказалось, что не все так плохо.
Прежде всего, верификация НЕ является гарантией того, что программа не содержит ошибок, а является только проверкой, что программа гарантирует некоторые свойства. А уже дело программиста таким образом обеспечить контроль свойств, чтобы получить нужные результаты.
В случае с SPARK, верификация базово предоставляет нам гарантии:
- отсутствия переполнения массивов и переменных
- отсутствия выхода за границы в типах и диапазонах
- отсутствия разыменования NULL-указателей
- отсутствие выброса исключений.
- гарантию неприменения инструментов, проверку которых выполнить нельзя.
- гарантию выполнения всех инвариантов, которые мы опишем. А опишем мы много!Круто, да?
Для описания инвариантов в языке SPARK предусмотрены специальные расширяющие конструкции языка, описывающие контракты процедур, структур данных, и даже циклов. Контрактом можно указать, например, что данная функция не может обращаться к глобальным переменным, или модифицировать глобальное состояние.
SPARK также учитывает ограничения на типы, которые описаны в Ada. В случае обычного исполнения ошибка несоответствия типов упадет в Runtime; SPARK же позволяет статически доказать, что ограничения на типы не могут быть нарушены никаким потоком исполнения.
Например:
Или другой пример:
Компилятор и верификатор не дадут создать такой код, который приведет к присвоению значений, нарушающих ограничения и предикаты.
Отдельный плюс SPARK в том, что система позволяет “натягивать” гарантии на программу поэтапно, то есть программа может быть частично верифицированной. То есть часть модулей можно объявить верифицируемыми, а часть — (пока) нет.
Сам SPARK делит верификацию на уровни: от «каменного» (Stone level) через «Бронзовый» и «Серебряный» уровни до «Золотого» (Gold) и «Платинового». Каждый из уровней усиливает гарантии:
Stone | Мы в принципе знаем, что есть SPARK |
Bronze | Stone + верификация потоков исполнения и детерминизм/отсутствие неинициализированных переменных |
Silver | Bronze + доказательное отсутствие runtime-ошибок |
Gold | Silver + гарантии целостности — не-нарушения инвариантов локальных и глобальных состояний |
Platinum | Gold + гарантия функциональной целостности |
Мы остановились на уровне Gold, потому что наш квадрокоптер все-таки не Boing 777 MAX.
Как работает верификация в SPARK: прувер собирает описание контрактов и типов, на их основе генерирует правила и ограничения, и далее передает их в солвер (SMT — Z3), который проверяет выполнимость ограничений. Результат решения прувер привязывает к конкретным строкам, в которых возникает невыполнимость.
Более подробно можно почитать в [SUG]