Что надо знать для программирования квадрокоптеров

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

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В), аналого-цифровой преобразователь должен преобразовать эти показания в цифровые данные. Как и в случае с процессором, количество бит, которое может быть обработано АЦП, предопределяет максимальную точность. С этим связана тактовая частота, с которой микропроцессор может считывать данные (количество раз в секунду), чтобы убедиться, что информация не потеряна. Тем не менее, трудно не потерять часть данных во время такого преобразования, поэтому чем выше разрядность АЦП, тем более точными будут показания, но при этом важно, чтобы процессор смог справиться с той скоростью, с которой отправляются данные.

Что надо знать для программирования квадрокоптеров

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

квадрокоптеры как крутые игрушки не только для детей, но и для взрослых, а нам эти устройства интересны с позиций математики и программирования. Число моделей растет, а стоимость снижается и, очевидно, в будущем квадрокоптер не будет восприниматься этакой диковинкой, а в учебных программах для айтишников появится обязательный учебный предмет — «программирование квадрокоптеров». Число владельцев летальных аппаратов тоже растет — проводятся слеты и конференции. Все это порождает спрос на программное обеспечение для управления полетами и выполнения конкретных полетных задач. Риск потери такого аппарата велик (деревья, препятствия, птицы, вылет за пределы зоны управления и прочее), а значит, требуется программирование автоматической обработки таких нештатных ситуаций. Например, в случае переключения в режим автоматического возврата к владельцу в экстремальной ситуации. Ведь никому не хочется просто так потерять несколько сотен долларов.

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

Программистам «любителям» математики, сразу напомним про дифференциальные уравнения. Когда вы их решали в курсе высшей математики, то мучили своего преподавателя вопросом — зачем? А вот вам и ответ — описать поведение динамического объекта одним дифуравнением уже не получится. Как минимум летательный аппарат имеет шесть степеней свободы. Положение тела в пространстве описывают 6 координат: три — для определения положения центра масс и три — для определения угловой ориентации в пространстве (см.картинки ниже).

Что надо знать для программирования квадрокоптеровЧто надо знать для программирования квадрокоптеровЧто надо знать для программирования квадрокоптеров

Вспомним еще, что скорость — это производная. А если еще учитывать трение и ветер, то получится вполне приличная система дифференциальных уравнений. Кстати, чтобы ее только составить надо знать законы механики и динамику не на тривиальном уровне. И это еще не все. Дифуравнения потом надо решать, но вы подаете на вход системы начальные условия — управляете квадрокоптером. Значит решать надо быстро и точно. А пока вы решаете — аппарат летит, что означает: вычисленное управление приходит с опозданием. И тут вам понадобятся знания ТАУ- теории автоматического управления и, в частности, хорошее понимание того, как устроены ПИД-регуляторы. А из классической математики, кроме дифур, надо еще знать и численные методы (апроксимация, экстраполяция, численное интегрирование и дифференцирование). Но и это еще не все. Надо программировать управление стабилизацией положения — например, после столкновения. Да, чуть не упустили — надо понимать принципы аэродинамики (еще та математическая дисциплина).

Ну а чем-то порадовать сможете? — спросите вы. Порадовать можем — научиться этому смогут не всем (это вам не сайты делать), а значит, если вы выучите математику, то конкурентов у вас будет меньше, чем на рынке сайтов и платить вам будут больше.


 Похожие публикации

2020-09-08 • Просмотров [ 2553 ]


Бортовой компьютер и сенсоры

• гироскоп позволяет удерживать коптер под определенным углом и стоит во всех контроллерах; • акселерометр помогает определить положение коптера относительно земли и выравнивает его параллельно горизонту (комфортный полет); • барометр дает возможность удерживать аппарат на определенной высоте.

• компас и GPS вместе добавляют такие функции, как удержание курса, удержание позиции, возврат на точку старта и выполнение маршрутных заданий (автономный полет). К установке компаса стоит подойти внимательно, так как на его показания сильно влияют расположенные рядом металлические объекты или силовые провода, из-за чего «мозги» не смогут определить верное направление движения;

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

Сейчас существует три основных открытых проекта: MultiWii, ArduCopter и его портированная версия MegaPirateNG. MultiWii самый простой из них, для запуска требует Arduino с процессором 328p, 32u4 или 1280/2560 и хотя бы одним датчиком-гироскопом. ArduCopter — проект, напичканный всевозможным функционалом от простого висения до выполнения сложных маршрутных заданий, но требует особого железа, основанного на двух чипах ATmega.

Продвинутый девяти- канальный пульт
Продвинутый девяти-
канальный пульт

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

Наконец, стоит упомянуть еще один компьютер — PX4, отличающийся от клонов Arduino тем, что у него есть UNIX-подобная операционная система реального времени, с шеллом, процессами и всеми делами. Но надо предупредить, что PX4 — платформа новая и довольно сырая. Сразу после сборки не полетит.

Настройка полетных параметров, как и программы настройки, очень индивидуальна для каждого проекта, а теория по ней могла бы занять еще одну статью, поэтому вкратце: почти все прошивки для мультикоптеров основаны на PID-регуляторе, и основной параметр, требующий вмешательства, — пропорциональная составляющая, обозначаемая как P или rateP.

Безопасность

Все новички, думая о безопасности, вспоминают AR.Drone и его защиту винтов. Это хороший вариант, и он работает, но только на мелких и легких аппаратах, а когда вес твоего коптера начинает приближаться к двум килограммам или давно перевалил за эту цифру, то спасти может только прочная железная конструкция, которая будет весить очень много и, как ты понимаешь, сильно уменьшит грузоподъемность и автономность полета. Поэтому лучше сперва тренироваться подальше от людей и имущества, которое можно повредить, а уже по мере улучшения навыков защита станет и не нужна. Но даже если ты пилот со стажем, то не забывай о технике безопасности и продумывай возможные негативные последствия твоего полета при нештатных ситуациях, особенно при полетах в людных местах. Не стоит забывать, что сбой контроллера или канала связи может привести к тому, что аппарат улетит от тебя далеко, и тогда для поиска может пригодиться GPS-трекер, установленный заранее на коптер, или же простая, но очень громкая пищалка, по звуку которой ты сможешь определить его местоположение. Настрой и заранее проверь функцию fail safe твоего полетного контроллера, которая поможет приземлиться или вернуть коптер на точку старта при потере сигнала с пульта.

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

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

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

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

Монтаж: Существуют различные способы установки контроллера полёта на раму, и не все контроллеры полёта имеют одинаковые варианты монтажа:

  1. Четыре отверстия на расстоянии 30.5мм или 45мм друг от друга в квадрате.
  2. Плоская нижняя часть для использования с наклейкой.
  3. Четыре отверстия в прямоугольнике (стандарт не установлен).
Смотрите про коптеры:  Эмулятор RFID на Arduino / Блог компании / Хабр

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

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

Моторы и пропеллеры

Из-за вращения моторов в разные стороны приходится использовать разнонаправленные пропеллеры: прямого вращения (против часовой) и обратного вращения (по часовой). Обычно используются двухлопастные пропеллеры, их легче балансировать и найти магазинах, в то время как трехлопастные дадут больше тяги при меньшем диаметре винта, но доставят много головной боли при балансировке.

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

Регулятор скорости,  он же ESC
Регулятор скорости,
он же ESC

У любого пропеллера есть два основных параметра: диаметр и шаг. Их обозначают по-разному: 10 × 4.5, 10 × 45 или просто 1045. Это означает, что диаметр пропеллера 10 дюймов, а его шаг 4,5 дюйма. Чем длиннее пропеллер и больше шаг, тем большую тягу он сможет создавать, но при этом повысится нагрузка на мотор и увеличится потребление тока, в результате он может сильно перегреться и электроника выйдет из строя.

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

Также чем больше винт, тем больше его инерция. Если нужна маневренность, лучше выбрать винты с большим шагом или трехлопастные. Они при том же размере создают тягу в 1,2–1,5 раза больше. Понятно, что винты и скорость их вращения нужно подбирать так, чтобы они смогли создать тягу большую, чем вес аппарата.

А вот и моторчик  на 850 kV
А вот и моторчик на 850 kV

И наконец, бесколлекторные моторы. У моторов есть ключевой параметр — kV. Это количество оборотов в минуту, которые сделает мотор, на поданный вольт напряжения. Это не мощность мотора, это его, скажем так, «передаточное число». Чем меньше kV, тем меньше оборотов, но выше крутящий момент. Чем больше kV при той же мощности, тем больше оборотов и ниже момент.

Info

Более прочный материал — дюраль (Д16Т). Практически не гнется, достаточно пружинистый, и его применяют в авиации. Профили из него в ОБИ не продаются, но можно поймать на Митинском рынке на третьем этаже, на рынке ТВЦ «Строй» тоже были.

Питание и контроллеры питания

Капитан подсказывает: чем больше мощность мотора, тем больше батарейка ему нужна. Большая батарейка — это не только емкость (читай, время полета), но и максимальный ток, которая она отдает. Но чем больше батарейка, тем больше и ее вес, что вынуждает скорректировать наши прикидки относительно винтов и моторов.

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

При выборе батареи стоит обращать внимание на три ее параметра: емкость, измеряемую в миллиампер-часах, максимальный ток разряда в емкостях аккумулятора (С) и число ячеек (S). Первые два параметра связаны между собой, и при их перемножении ты узнаешь, сколько тока сможет отдавать этот аккумулятор продолжительное время.

Например, твои моторы потребляют 10 А каждый и их четыре штуки, а батарея имеет параметры 2200 мА · ч 30/40C, таким образом, коптеру требуется 4 • 10 A = 40 A, а батарея может выдавать 2,2 A • 30 = 66 A или 2,2 А • 40 = 88 А в течение 5–10 секунд, что явно будет достаточно для питания аппарата. Также эти коэффициенты напрямую влияют на вес аккумулятора. Внимание!

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

Элементы батареи объединяют последовательно или параллельно. При последовательном включении увеличивается напряжение, при параллельном — емкость. Схему подключения элементов в батарее можно понять по ее маркировке. Например, 3S1P (или просто 3S) — это три последовательно подключенных элемента.

Однако моторы подключаются к батарее не напрямую, а через так называемые регуляторы скорости. Регуляторы скорости (они же «регули» или ESC) управляют скоростью вращения моторов, заставляя твой коптер балансировать на месте или лететь в нужном направлении. Большинство регуляторов имеют встроенный стабилизатор тока на 5 В, от которого можно питать электронику (в частности, «мозг»), можно использовать отдельный стабилизатор тока (UBEC).

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

Китайцы и тут подсуетились, и часто можно встретить регуляторы скорости с уже обновленной прошивкой. Не забывай, что такие регули не следят за состоянием аккумулятора и могут разрядить его ниже 3,0 В на банку, что приведет к его порче. Но в то же время на обычных ESC стоит переключить тип используемого аккумулятора с LiPo на NiMH или отключить уменьшение оборотов при разрядке источника питания (согласно инструкции), чтобы под конец полета внезапно не отключился мотор и твой беспилотник не упал.

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

Два силовых провода, идущих от регулятора, надо подключить к батарейке. НЕ ПЕРЕПУТАЙ ПОЛЯРНОСТЬ! Вообще, для удобства регуляторы подключают не к самой батарейке, а к так называемому Power Distribution Module — модулю распределения энергии. Это, в общем-то, просто плата, на которой припаяны силовые провода регуляторов, распаяны разветвления для них и припаян силовой кабель, идущий к батарее.

Пример

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

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

Используемый на борту 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 радиосвязи)

Что надо знать для программирования квадрокоптеров

Дополнительные факторы

  1. Корпус: защитный полупрозрачный корпус входит в стандартную комплектацию
  2. Монтаж: Есть два основных способа крепления Quadrino Nano к дрону: винты и гайки или наклейка из вспененной резины.
  3. Компактная конструкция: сам контроллер (без учёта GPS антенны) имеет размеры 53 × 53мм.

Что надо знать для программирования квадрокоптеров

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

Ниже приведён список самых популярных режимов полёта, тем не менее не все из них могут быть доступны в полётных контроллерах. «Режим полёта» — это способ, посредством которого полётный контроллер использует сенсоры и входящие радиокоманды для обеспечения стабилизации и полёта БПЛА.

  • 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. Из всех имеющихся сенсоров, контроллером полёта задействуется только гироскоп. Актуален при сбоях в программном обеспечении беспилотника, позволяет восстановить контроль над БЛА посредством ранее предустановленных команд.

Связь

Радиоуправление (RC)

Управление посредством радиосвязи обычно включает в себя RC передатчик/RC transmitter (в беспилотном хобби — радиоаппаратура управления/пульт) и RC приёмник (RC receiver). Для взаимодействия с БПЛА пользователю потребуется как минимум четырёх (и более) канальный RC передатчик. По умолчанию первые четыре канала связаны с:

Что надо знать для программирования квадрокоптеров

Все остальные имеющиеся каналы могут быть задействованы для таких действий как:

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

Что надо знать для программирования квадрокоптеров

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

  • Не все 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 передатчиком.

Что надо знать для программирования квадрокоптеров

Радиочастота (RF или РЧ)

Радиочастотное (РЧ) управление в этом контексте относится к беспроводной передаче данных с компьютера или микроконтроллера на летательный аппарат с использованием РЧ передатчика/Приёмника (или двухполосного приёмопередатчика). Использование обычного радиочастотного блока, подключенного к компьютеру, позволяет осуществлять двухполосную связь на большие расстояния с высокой «плотностью» данных (обычно в последовательном формате).

Что надо знать для программирования квадрокоптеров

Смартфон

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

Что надо знать для программирования квадрокоптеров

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

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

Что надо знать для программирования квадрокоптеров

Сенсоры

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

  • Акселерометр: Как следует из названия, акселерометры измеряют линейное ускорение по трем осям (назовём их: X, Y и Z). Обычно измеряется в «G (на рус. Же)». Стандартное (нормальное) значение, составляет g = 9.80665 м/с². Для определения положения, выход акселерометра может быть интегрирован дважды, правда из-за потерь на выходе объект может быть подвержен дрейфу. Самой значимой характеристикой трёхосевых акселерометров является то, что они регистрируют гравитацию, и как таковые, могут знать, в каком направлении «спуск». Это играет главную роль в обеспечении стабильности многороторного БЛА. Акселерометр должен быть установлен на контроллере полёта так, чтобы линейные оси совпадали с основными осями беспилотника.

Что надо знать для программирования квадрокоптеров

  • Гироскоп: Гироскоп измеряет скорость изменения углов по трём угловым осям (назовём их: альфа, бета и гамма). Обычно измеряется в градусах в секунду. Обратите внимание, что гироскоп не измеряет абсолютные углы напрямую, но вы можете выполнить итерацию, чтобы получить угол, который, как и у акселерометра, способствует дрейфу. Выход реального гироскопа имеет тенденцию быть аналоговым или I2C, но в большинстве случаев вам не нужно беспокоиться об этом, так как все поступающие данные обрабатываются кодом контроллера полёта. Гироскоп должен быть установлен так, чтобы его оси вращения совпадали с осями БПЛА.

Что надо знать для программирования квадрокоптеров

  • Инерционный измерительный блок (IMU): IMU — по сути, это небольшая плата, которая содержит как акселерометр, так и гироскоп (обычно многоосевые). Большинство из них включают трёхосевой акселерометр и трёхосевой гироскоп, другие могут включать дополнительные сенсоры, например трёхосевой магнитометр, обеспечивающий в общей сложности 9 осей измерения.

Что надо знать для программирования квадрокоптеров

  • Компас/Магнитометр: Электронный магнитный компас способный определять магнитное поле Земли и использовать эти данные для определения направления компаса беспилотника (относительно северного магнитного полюса). Этот сенсор почти всегда присутствует, если система имеет GPS вход и доступно от одной до трех осей.

Что надо знать для программирования квадрокоптеров

  • Давление/Барометр: Так как атмосферное давление изменяется по мере удаления от уровня моря, можно использовать сенсор давления, чтобы получить довольно точные показания высоты БПЛА. Для расчёта максимально точной высоты, большинство контроллеров полёта получают данные одновременно от сенсора давления и спутниковой системы навигации (GPS). При сборке обратите внимание, что предпочтительнее, чтобы отверстие в корпусе барометра было накрыто куском поролона, это уменьшить отрицательное влияние ветра на чип.

Что надо знать для программирования квадрокоптеров

  • Расстояние: Датчики расстояния все чаще используются на беспилотниках, поскольку GPS-координаты и датчики давления не могут рассказать вам, насколько далеко вы находитесь от земли (холма, горы или здания), либо столкнётесь ли вы с объектом или нет. Датчик расстояния, обращенный вниз, может быть основан на ультразвуковой, лазерной или лидарной технологии (ИК-сенсоры могут испытывать проблемы в работе при солнечном свете). Датчики расстояния редко входят в стандартный комплект полётного контроллера.

Что надо знать для программирования квадрокоптеров

Строим квадрокоптер. часть 3. прошивка и настройка.

Меня зовут Дмитрий Дударев. Я занимаюсь разработкой электроники и очень люблю создавать различные портативные девайсы. Еще я люблю музыку.

Давным-давно – в апреле или около того, когда весь мир сотрясался от ударов страшного карантина, я решил научиться играть на гитаре. Я взял у друга акустическую гитару и стал осваивать инструмент по урокам из ютуба и табулатурам. Было тяжело. То ли я неправильно что-то делал, то ли плохо старался, то ли в обществе моих предков мелкая моторика вредила размножению. Короче, ничего кроме звуков дребезжащих струн у меня не выходило. Мое негодование усиливала постоянная расстройка струн. Да и окружающим тысячный раз слушать мою кривую Nothing else matters удовольствия не доставляло.

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

Электронная гитара? Хм, интересная идея, подумал я. Но еще лучше, если на этой гитаре я сам смогу научиться играть. В тот же день акустическая гитара отправилась на свалку обратно к другу, а я стал придумывать идею.

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

Что я хочу от гитары?

1)  Я хочу что-то максимально похожее на гитару, т.е. шесть струн и 12 ладов на грифе.

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

3)  Устройство должно без плясок с бубном подключаться к чему угодно, от iOS до Windows. Окей-окей, ладно, будем реалистичными – ко всем популярным осям.

4)  Работа от аккумулятора.

5)  Подключение должно производиться без проводов (но раз уж там будет USB разъем для зарядки, то и по проводу пусть тоже подключается)

6)  Ключевой момент – на гитаре должно быть просто учиться играть, без необходимости в долгих тренировках по адаптации кистевых связок. Как это реализовать? Сразу пришла идея оснастить струны и лады светодиодами. Типа, загрузил табулатуры в гитару, а она уже сама показывает, куда ставить пальцы. Т.е. нет такого, что смотришь на экран, потом на гитару, снова на экран, снова на гитару. Вот этого вот всего не надо. Смотришь только на гитару. И там же играешь. Все. Это прям мое.

7)  Хотелось бы поддержки разных техник игры на гитаре: hummer on, pull off, slide, vibrato.

8) Без тормозов. По-научному – чтобы задержка midi-команд не превышала 10мс.

9)  Все должно собираться из говна и палок легко доступных материалов без сложных техпроцессов и дорогой электроники.

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

Разумеется, для мобильных платформ потребуется написать приложение, в котором можно будет выбрать табулатуру для обучения светодиодами, выбрать инструмент (акустика, классика, электрогитара с различными пресетами фильтров, укулеле и т.д.), и воспроизводить звуки.

Существующие аналоги

А надо ли изобретать велосипед? Ведь на всякую гениальную идею почти наверняка найдется азиат, который уже давно все реализовал в «железе», причем сделал это лучше, чем ты изначально собирался. Иду гуглить.

Оказывается, первая цифровая гитара была создана еще в 1981 году, но в народ сильно не пошла из-за хилой функциональности.

Варианты посовременнее, конечно, тоже нашлись.

Вот, например, с айпадом вместо струн или еще одна в форме моллюска:

Однако такого, чтобы выполнялись все мои хотелки – в первую очередь компактность и режим обучения «жми на лампочки» – такого нет. Кроме того, такие midi-гитары нацелены все же на более профессиональную аудиторию. И еще они дорогие.

Значит, приступаем!

Первый прототип

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

Контроллер берем STM32F042. В нем есть все, что нужно, при стоимости меньше бакса. Кроме беспроводного подключения, но с этим позже разберемся.

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

Так выглядит 3D-модель:

А так живьем:

Тактильное ощущение приятное. Должно сработать.

Для ладов на грифе я заказал на Али вот такие тензорезистивные датчики.

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

Плюс нужен АЦП, чтобы считывать инфу с датчиков и передавать на контроллер.

Пока ждал датчики из Китая, развел плату:

Прежде чем заказывать печать платы, решил дождаться тензорезисторов. И, как оказалось, не зря. Из 80-ти датчиков рабочими оказались только несколько, и то с разными параметрами.

Выглядит, мягко говоря, не так, как заявлено. И чего я ожидал, покупая электронику на Али?..

И тут меня осенило.

Можно ведь применить другой метод детектирования — измерение емкости, как в датчиках прикосновения. Это гораздо дешевле и доступнее. А если правильно спроектировать механику, то можно и усилие определять.

Что ж. Удаляю все, что было сделано

Второй прототип

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

Смотрите про коптеры:  Скачать квадрокоптер

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

Решив вопрос подключения множества микросхем измерителя емкости к контроллеру, приступаю к разводке платы.

На этот раз плату удалось заказать и даже дождаться ее изготовления.

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

Два проводочка в нижней части – это я подключил накладку с цилиндриками к уже изготовленной плате. Это временное решение.

Железяка готова. Следующая задача – заставить ее играть.

Софт

Программная часть реализована так:

1. Скачиваем виртуальный синтезатор, который может работать с MIDI устройством и издавать гитарные звуки.

2. Пишем прошивку для контроллера, которая будет опрашивать сенсоры и передавать данные по USB на комп.

3. На стороне компа пишем программу, которая будет получать эти данные, генерировать из них MIDI-пакеты и отправлять их на виртуальный синтезатор из пункта 1.

Теперь каждый пункт подробнее.

Виртуальных синтезаторов под винду с поддержкой MIDI оказалось довольно много. Я попробовал Ableton live, RealGuitar, FL studio, Kontakt. Остановился на RealGuitar из-за простоты и заточенности именно под гитару. Он даже умеет имитировать несовершенства человеческой игры – скольжение пальцев по струнам, рандомизированные параметры извлечения нот.

Чтобы подключить свое приложение к виртуальному синтезатору я сэмулировал виртуальный порт midi, который подключен ко входу синтезатора RealGuitar через эмулятор midi-кабеля. Такая вот многоуровневая эмуляция.

*Мем с ДиКаприо с прищуренными глазами*

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

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

Оказалось, что из 72 элементов на 12-ти ладах всего 37 уникальных нот. Они расположены по определенной структуре, так что удалось вместо построения большой таблицы вывести простое уравнение, которое по номеру сенсора выдает номер соответствующей ноты.

Проверяем работу

Похоже, все готово для первого теста. Пилить прутки и паять все 12 ладов мне было лень, поэтому ограничился 8-ю. Момент истины:

IT’S ALIVE! Жизнеспособность концепта подтверждена. Счастью не было предела! Но нельзя расслабляться.

Следующий этап – добавление светодиодов, акселерометра, вибромотора, аккумулятора, беспроводной связи, корпуса и возможности работы без драйверов или программ эмуляции midi на всех популярных платформах.

Светодиоды

По плану гитара должна подсказывать пользователю, куда ставить пальцы, зажигая в этом месте светодиод. Всего нужно 84 светодиода. Тут все просто. Я взял 14 восьмибитных сдвиговых регистров и соединил в daisy chain. STM-ка передает данные в первый регистр, первый – во второй, второй – в третий и т.д. И все это через DMA, без участия ядра контроллера.

Акселерометр

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

Беспроводное соединение

Для беспроводной передачи данных решил поставить ESP32. Оно поддерживает различные протоколы Bluetooth и WI-FI, будет с чем поэкспериментировать (на тот момент я еще не знал, что в моем случае существует только один правильный способ подключения).

Корпус

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

Доработка прототипа

Что ж, осталось облачить девайс в приличную одежку.

Я много экспериментировал с различными конструкциями тактильных элементов грифа и рассеивателями для светодиодов. Хотелось, чтобы равномерно светилась вся поверхность элемента, но при этом сохранялась возможность детектирования прикосновения и нажатия на кнопки.

Вот некоторая часть этих экспериментов:

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

Развожу финальный вариант плат и собираем гитару:

Выглядит почти круто. Но девайс все еще подключается к компу через цепочку эмуляторов, эмулирующих другие эмуляторы.

Превращаем гитару в MIDI-устройство

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

Оказалось, сделать это не так сложно. Все спецификации есть на официальном сайте usb.org. Но все алгоритмы, которые выполнялись на стороне python-приложения, пришлось переписывать на C в контроллер.

Я был удивлен, что оно сразу заработало на всех устройствах. Windows 10, MacOS, Debian 9, Android (через USB переходник). Достаточно просто воткнуть провод и в системе появляется MIDI-устройство с названием «Sensy» и распознается всеми синтезаторами. С айфоном пока протестировать не удалось т.к. нет переходника. Но должно работать так же.

Беспроводной интерфейс

Осталось избавиться от проводов. Правильное решение пришло не сразу, потому что я поленился как следует погуглить. Но в итоге я использовал протокол BLE MIDI, который поддерживается всеми новыми операционками и работает без всяких драйверов прямо как по USB MIDI. Правда, есть вероятность, что на более старых операционках решение не заработает в силу отсутствия поддержки BLE MIDI. Но все тесты с доступными мне девайсами прошли успешно.

Переписанный функционал приложения – т.е. трансляция данных сенсоров в MIDI-данные – занял точнехонько всю память контроллера. Свободными осталось всего 168 байт. Очевидно, кремниевые боги мне благоволили, значит иду в правильном направлении.

Уверен, можно оптимизировать, но это отложу для следующей версии. Хотя, возможно, проще не тратить время и просто взять контроллер потолще. Разница по деньгам – 5 центов. Посмотрим. Все равно нужно будет место для новых фич – обрабатывать техники игры, например. В первую очередь, хочу реализовать slide. Это когда начинаешь играть ноту с определенным зажатым ладом и проскальзываешь рукой по грифу, перескакивая с лада на лад.

Теперь можно проверить работу по беспроводу:

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

Недостатки прототипа

На текущий момент у конструкции есть следующие минусы:

1) На сенсорах нигде не измеряется усилие нажатия. Это влечет за собой три проблемы:

• Постоянно происходят случайные задевания соседних струн как на деке, так и на грифе. Это делает игру очень сложной.

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

• Невозможность использовать техники hammer on, pull off и vibrato

2) Светодиоды одноцветные. Это ограничивает наглядность при игре по табулатурам. Хочется иметь возможность разными цветами указывать на различные приемы игры.

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

4) Отсутствие упора для ноги. Сейчас при игре сидя нижняя струна почти касается ноги, а это неудобно.

5)  Сустав сгибания гитары требует осмысления и доработки. Возможно, он недостаточно надежен и стабилен.

Время переходить к разработке следующей версии.

Переезжаю на контроллер серии STM32F07. На нем уже 128КБ флэша – этого хватит на любой функционал. И даже на пасхалки останется.

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

Конечно, будут реализованы и три главных нововведения:

— светодиоды теперь RGB,

— на каждом сенсоре грифа будет измерение усилия (тактовые кнопки больше не нужны),

— струны на деке станут подвижными.

На данный момент плата деки выглядит так (футпринт ESP на всякий случай оставил):

Уже есть полная уверенность в том, что весь задуманный функционал будет реализован, поэтому было принято решение о дальнейшем развитии. Будем пилить стартап и выкладываться на Kickstarter 🙂

Проект называется Sensy и сейчас находится в активной разработке. Мы находимся в Питере, сейчас команда состоит из двух человек: я занимаюсь технической частью, мой партнер – маркетингом, финансами, юридическими вопросами.

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

Кому интересно следить за новостями проекта – оставляйте почту в форме на сайте и подписывайтесь на соцсети.

Очень надеюсь на обратную связь с комментариями и предложениями!

Спасибо за внимание!

Забавный эпизод из процесса разработки

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

И тут случайно нестандартным способом перезагружаю плату – в терминал приходит буква «N» в ascii. Это соответствует числу 0x4E, которое я не отправлял. Перезагружаю еще раз – приходит буква «O». Странно. Может быть проблема с кварцевым резонатором и сбился baud rate? Меняю частоту в терминале, перезагружаю плату – опять приходит «N». С каждой новой перезагрузкой приходит по новой букве, которые в итоге составляют повторяющуюся по кругу фразу «NON GENUINE DEVICE FOUND».

Что эта NRF-ка себе позволяет? Прошивку я обнулял. Как она после перезагрузки вообще помнит, что отправлялось в предыдущий раз? Это было похоже на какой-то спиритический сеанс. Может, я и есть тот самый NON GENUINE DEVICE?

Залез в гугл, выяснил, что производители ftdi микросхем, которые стоят в USB-UART донглах, придумали способ бороться с китайскими подделками. Виндовый драйвер проверяет оригинальность микросхемы и на лету подменяет приходящие данные на эту фразу в случае, если она поддельная. Очевидно, мой донгл оказался подделкой и переход на другой решил эту проблему.

Снова спасибо китайцам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector