Глава 3 дополнительные компоненты квадрокоптера . твой первый квадрокоптер: теория и практика
Оборудование видеоканала FPV
Многие владельцы квадрокоптеров не согласятся с тем, что видеооборудование квадрокоптера отнесено ко вторичным аксессуарам, поскольку приобретают или строят коптеры именно ради полетов по видеокамере и/или высотной фотовидеосъемки. Простые полеты в пределах визуального контроля быстро наскучивают, зато полеты с видом “своими глазами” по FPV (Flight Per Video или First Person View) с высоты птичьего полета дают неповторимые ощущения. Оборудование для таких полетов можно дорабатывать почти бесконечно, что само по себе очень интересно.
Видеооборудование коптера в общем случае состоит из следующих компонентов:
• видеокамеры, курсовая и основная;
• видеокоммутатор;
• стабилизированный подвес камеры;
• модуль наложения информации на изображение (OSD);
• видеопередатчик;
• всенаправленная антенна.
• источник питания видеооборудования.
Наземная часть видеоканала также состоит из нескольких компонентов:
• видеоприемник;
• антенны, всенаправленная и направленная;
• система управления положением антенны (трекер);
• видеоочки и/или монитор;
• видеорекордер;
источник питания.
Видеокамеры
Для полетов по FPV в сочетании с видовой или репортажной съемкой удобнее использовать две камеры, курсовую и основную. Курсовая камера легкая, несложная и дает изображение среднего качества. Она монтируется на раме коптера в фиксированном положении, удобном для оператора и направляется слегка под углом к земле. Такая камера имитирует вид из кабины пилота и дает ясное представление о том, куда и под каким углом летит коптер, и есть ли препятствия на пути. На изображение с этой камеры, как правило, накладывается телеметрийная информация.
Основная камера имеет высокое разрешение, обычно FullHD, хорошую оптику и слот карты памяти для записи изображения. На крупных мультикоптерах часто устанавливают фотокамеры профессионального уровня — Canon, Kodak, Sony — способные вести качественную видеосъемку. Для таких камер выпускаются специальные переходники, которые подключаются к разъему управления камеры и приемнику, позволяя управлять режимом камеры дистанционно, с пульта.
Основная камера крепится на стабилизированном подвесе, который сохраняет неизменное положение камеры при кренах коптера, а также позволяет вращать камеру по двум осям, обеспечивая почти полусферический обзор.
Удобство использования двух камер объясняется тем, что эффектную видовую съемку часто приходится вести не под тем ракурсом, который соответствует курсовому положению рамы коптера. В этом случае оператор может легко утратить контроль над пространственным положением коптера и столкнуться с препятствием или неверно оценить направление облета. При профессиональной съемке иногда работают два человека, пилот и видеооператор, а коптер оснащают двумя независимыми видеоканалами и двумя каналами радиоуправления, один из которых предназначен только для управления подвесом и режимами главной видеокамеры.
Видеокоммутатор
Если пилот-оператор один и нуждается в том, чтобы поочередно использовать курсовую и обзорную камеры, то для переключения между камерами применяется видеокоммутатор (рис. 3.1).
Рис. 3.1.Трехканальный видеокоммутатор
К двум или трем видеовходам коммутатора подключаются различные источники видеосигнала, а вход управления соединяется с одним из каналов приемника. В зависимости от длительности импульсов радиоуправления выбирается соответствующий видеовход, а с выхода сигнал поступает непосредственно на передатчик или модуль OSD.
В простых любительских системах FPV часто используется только одна камера, смонтированная на управляемом по двум осям стабилизированном подвесе.
Стабилизированный подвес
Стабилизированный (динамический) подвес (рис. 3.2) удерживает неизменное угловое положение камеры в пространстве при небольших колебаниях рамы коптера (крены и повороты). Конструктивно подвес камеры представляет собой карданный узел с двумя осями вращения и в простейшем случае может не иметь системы стабилизации, а управляться напрямую с выходов приемника сигналов радиоуправления. Но при этом малейший крен или поворот рамы коптера будет приводить к смещению изображения в кадре, что крайне нежелательно при видеосъемке и часто бывает неудобно при обычном пилотировании по FPV.
Рис. 3.2. Простой двухосевой подвес на сервомашинках
Для стабилизации подвеса по горизонту обычно применяются не гироскопы, которым свойственно накопление ошибки, а трехосевые акселерометры. Для отслеживания поворота по азимуту приходится использовать либо гироскоп, либо комплексный сигнал гироскопа и компаса, поскольку на поворот по курсу акселерометр не реагирует. В простых системах флуктуации по курсу вообще не компенсируются.
При построении системы стабилизации используют один из двух возможных источников данных о положении в пространстве:
• полетный контроллер отслеживает изменения углового положения коптера и вычисляет компенсирующий сигнал для подвеса таким образом, чтобы угловое положение камеры относительно горизонта не изменялось при колебаниях рамы;
• подвес оснащен независимым контроллером с акселерометрами и гироскопами, который отслеживает угловое положение камеры и компенсирует малейшие отклонения.
Первый вариант наиболее очевиден и экономичен, поскольку полетный контроллер уже оснащен необходимыми датчиками ускорений. При таком способе стабилизации отсутствует положительная обратная связь, возникающая вследствие избыточного отклика системы (раскачка). Но, с другой стороны, отсутствие обратной связи порождает высокие погрешности, особенно при быстрых и значительных отклонениях рамы. Быстродействие системы также невысоко, потому что полетный контроллер кроме расчета стабилизации решает множество других задач. Этот вариант системы стабилизации по умолчанию заложен в прошивки популярных полетных контроллеров.
Во втором случае контроллер подвеса по сложности и цене сопоставим с полетным контроллером и требует отдельной настройки параметров отклика под конкретную камеру. Но динамическая стабилизация камеры во втором случае заметно выше.
В качестве исполнительного механизма, вращающего привод, в простейшем случае используются сервомашинки, у которых также много недостатков: высокая погрешность, низкое время отклика, низкий крутящий момент, хрупкий редуктор, ограниченный угол поворота. Сервомашинки обычно применяются в первом варианте системы и подключаются, непосредственно к выводам полетного контроллера.
В последнее время для вращения подвеса применяют бесколлекторные двигатели специальной конструкции (по сути, шаговые двигатели) — рис. 3.3.
Рис. 3.3.Двухосевой подвес с собственным контроллером и бесколлекторным приводом
Они стоят заметно дороже обычных сервомашинок, хотя по цене совместимы с хорошими сервомашинками с металлическим редуктором. Некоторые владельцы коптеров изготавливают их самостоятельно, переделывая обычные бесколлекторные двигатели.
Бесколлекторные приводы нельзя подключать к выходам обычного полетного контроллера. Их используют в комплекте с независимым контроллером стабилизации подвеса или подключают к полетному контроллеру через специальный адаптер на основе микроконтроллера. Дополнительная сложность использования бесколлекторных приводов заключается в необходимости отслеживать действительный угол поворота камеры и иметь защиту от избыточного отклонения.
Видеопередатчик и видеоприемник
Передача видеосигнала в любительской практике обычно происходит в разрешенных диапазонах 2,4 и 5,8 ГГц. В последнее время оборудование видеоканала на 5,8 ГГц получает все большее распространение по причине малых габаритов и веса передающих модулей и антенн, а также снижения стоимости. Но сигнал на этой частоте сильнее подвержен затуханиям и отражениям. Как следствие, дальность надежной работы видеоканала на частоте 5,8 ГГц меньше и применяется он преимущественно на небольших коптерах и ближних дистанциях полетов (рис. 3.4). В более сложных случаях используется оборудование диапазона 2,4 ГГц и даже 900 МГц.
Рис. 3.4.Миниатюрный бортовой передатчик диапазона 5,8 ГГц
Видеопередатчик, как правило, поддерживает лишь несколько каналов (обычно восемь) в одном из частотных поддиапазонов (группе каналов). Рабочий канал устанавливается перемычкой или переключателем. Приемник в простейшем случае представляет собой готовый модуль, также работающий на одном из восьми каналов. Но рекомендуется сразу приобрести более сложный приемник, работающий на всех частотных поддиапазонах. Это обеспечит совместимость с передатчиками различных производителей. Таблица частот каналов приведена в приложении 2.
Антенна бортового передатчика всенаправленная, обычно типа “клевер” или штыревая. В миниатюрных коптерах используются четвертьволновые штыревые антенны в виде отрезка провода. Наземный приемник может быть оснащен направленной или диверсифицированной антенной и системой слежения за источником сигнала (см. разд. “Антенны” главы 2).
Если бортовая камера не оснащена функцией видеозаписи, то для записи изображения может использоваться наземный видеорекордер, подключаемый к выходу видеоприемника.
Видеомонитор и видеоочки
К мониторам, используемым для полетов по FPV, предъявляются особые требования. Очевидно, что такой монитор должен быть достаточно ярким, контрастным и с широкими углами обзора, чтобы обеспечить качественное изображение в солнечный день. Но, кроме того, монитор не должен переключаться в дежурный режим “синий экран” при кратковременной потере сигнала или срыве синхронизации. Он должен продолжать отображать помехи, полосы, “снег” — но ни в коем случае не отключаться. Дело в том, что видеосигнал подвержен кратковременным пропаданиям при воздействии случайной помехи или неудачной взаимной ориентации антенн. Если при этом монитор уходит в режим ожидания, то для обратного включения ему требуется дополнительно 1–3 с, в течение которых оператор не видит изображение. Это очень некомфортно, а в сложной ситуации такая задержка может стать критической. Поэтому монитор для FPV не должен отключаться при пропадании или сильном ухудшении видеосигнала. В описании таких мониторов обычно особо подчеркивается: “no blue screen“. Обратите на это внимание при покупке.
Видеоочки при помощи двух маленьких ЖК-дисплеев и оптической системы имитируют просмотр большого монитора с расстояния полутора-двух метров. При этом оператор визуально изолирован от окружающей среды, ему не мешает солнечное освещение и окружающая обстановка, а “эффект полета” наиболее ощутим.
В простых системах используется внешний видеоприемник и недорогие бытовые видеоочки, предназначенные для просмотра фильмов и видеоигр. Этим их функциональность и ограничивается. Специализированные очки для FPV обычно содержат встроенный видеоприемник, батарею питания, антенну, слот для карты памяти и работают автономно. Дорогие модели видеоочков содержат трекер положения головы пилота (head tracking system). Сигнал с трекера подается на пульт радиоуправления, в каналы управления положением камеры. При наклоне или повороте головы соответствующим образом меняется положение камеры.
К встроенному в очки приемнику обычно подключается простая штыревая антенна.
Для увеличения дальности приема приходится использовать выносной приемник с более сложной антенной системой и подавать видеосигнал на очки по кабелю.
На сегодняшний день наиболее недорогим решением являются видеоочки Quanum, представляющие собой пенопластовый корпус^ в который вмонтирован один жидкокристаллический дисплей формата 16:9, а перед ним размешается линза Френеля, позволяющая смотреть на дисплей с расстояния в несколько сантиметров. Перемещая линзу, можно настроить очки под свою остроту зрения. В таких очках используются внешний приемник и батарея питания.
Приемники GPS
Приемник спутниковой навигации в оборудовании квадрокоптера нужен для того, чтобы:
• выполнять автоматический полет по заранее заданному маршруту;
• при полетах по FPV определять текущее расстояние до точки взлета, скорость и высоту полета;
• при потере сигнала управления обеспечить автоматический возврат к точке взлета.
Приемник GPS следует приобрести даже ради одной лишь функции автовозврата, которая спасает коптер при потере сигнала управления.
Аббревиатура GPS (Global Positioning System) стала нарицательной и в быту обозначает как любые пользовательские приемники сигналов, так и американскую навигационную систему, которая официально называется NAVSTAR. Соответственно, российская навигационная система называется ГЛОНАСС (глобальная навигационная спутниковая система), объединенная европейская система — GALILEO, китайская — KOMPASS и т. д. Иными словами, сокращение GPS относится к любой из существующих систем спутниковой навигации, хотя среди специалистов популярна также обобщающая аббревиатура GNSS (Global Navigation Satellite System — глобальная система спутниковой навигации). Поэтому наименование “двухсистемный приемник GPS/ГЛОНАСС”, строго говоря, неправильное. На самом деле это “двухсистемный приемник NAVSTAR/ГЛОНАСС”. Впрочем, американцы собственную навигационную систему уже давно называют просто GPS, так же, как Библию называют просто “Книга”. И всем понятно, о чем речь. Мы далее тоже будем именовать американскую систему просто GPS.
Развертывание американской системы было завершено в 1996 году. Российская система по причине известных внутренних проблем тех лет существенно отстала в развитии, вследствие чего GPS NAVSTAR стала почти монополистом и мировым лидером. Но сейчас развитию российской системы уделяется большое внимание, ее орбитальная группировка и наземная инфраструктура близки к завершению. Поэтому в продаже все чаще появляются двухсистемные приемники. Остальные системы существенно отстают в глобальном охвате и находят применение в отдельных государствах и специфических областях типа судовождения, управления полетами гражданской авиации, геодезии и т. д.
Описанию принципов работы GPS посвящено большое количество подробных и познавательных статей и книг, поэтому мы рассмотрим лишь общие понятия, а также базовые различия между GPS и ГЛОНАСС. Система спутниковой навигации состоит из орбитальной группировки (спутники), наземного (центры управления и слежения) и абонентского (приемники потребителей) сегментов.
Изначально планировалось, что спутниковая группировка GPS будет состоять из 24 спутников, распределенных по 4 на шести орбитах. Однако этого оказалось недостаточно для надежного покрытия критически важных регионов Земли. Кроме того, надо иметь спутники в резерве. Поэтому общее количество спутников увеличено до 32, и на некоторых орбитах вращается до 6 спутников. Спутники движутся на высоте около 20 000 км со скоростью 3000 м/с и совершают два оборота вокруг Земли за сутки.
Спутники ГЛОНАСС располагаются на трех орбитальных плоскостях, по 8 спутников в каждой, и теоретически орбитальная структура ГЛОНАСС обеспечивает более полное и надежное покрытие. К сожалению, на момент написания книги формирование орбитальной группировки ГЛОНАСС не было завершено и на орбите находилось 25 спутников, не все из которых введены в эксплуатацию. К тому же, четыре новых спутника были утрачены при неудачном запуске ракеты-носителя. Но работы по завершению группировки ведутся очень интенсивно, и есть надежда, что в ближайшие два-три года система будет полностью развернута.
GPS NAVSTAR использует кодовое разделение каналов с вещанием кодированных сигналов на нескольких частотах, а ГЛОНАСС — частотное. Но суммарная ширина спектра сигналов ГЛОНАСС даже меньше, чем у GPS, поэтому один и тот же радиочастотный тракт приемника может принимать сигналы обеих систем. Дальнейшее разделение сигналов спутников и выделение полезной информации производится методами цифровой обработки сигнала внутри абонентского приемника. Использование мультисистемных приемников существенно повышает качество навигации, особенно в сложной обстановке (городская застройка, лес, горы).
Принцип определения координат
Определение координат объекта производится путем измерения дальностей до спутников. Рассмотрим пример с тремя навигационными передатчиками А, В и С на плоскости (рис. 3.5).
Рис. 3.5.Определение координат на плоскости дальномерным методом
Измерение расстояний RA и RB до передатчиков А и В дает нам две окружности положения с соответствующими радиусами. Объект может находиться как в точке О, так и в точке О’. Добавление третьего передатчика ликвидирует эту неоднозначность на плоскости.
Аналогично происходит определение местоположения в трехмерном пространстве, только вместо окружностей мы имеем пересекающиеся сферы местоположения, которые сложно изобразить на книжной иллюстрации. Постарайтесь представить картину мысленно. Пересечением двух сфер является окружность, на любой точке которой может находиться наш объект. Пересечение трех сфер дает нам пересечение трех окружностей положения в трехмерном пространстве, что порождает неоднозначность в виде двух точек положения. В ряде случаев одну из точек навигационный приемник может сразу исключить, если воспользоваться дополнительной информацией о положении: привязка к наземной станции навигации или сотовой связи, к точке доступа Wi-Fi, ранее сохраненные данные и т. д. Также очевидно, что объект заведомо не может находиться, например, на глубине 300 м под землей. Однако это частности, а в общем случае для определения координат объекта в трехмерном пространстве (ширина-долгота-высота) необходимы как минимум четыре спутника.
Пространственные координаты спутника известны с большой точностью. Чтобы вы оценили точность позиционирования спутников на орбите, отметим, что учитывается давление солнечного света на оболочку спутника, истечение газов наружу из материала оболочки, влияние гравитационного поля Луны и неоднородность гравитационного поля Земли.
Расстояние от спутника до объекта вычисляется умножением скорости света на время прохождения сигнала от спутника до приемника. Но скорость света в вакууме и атмосфере различается. Кроме того, при прохождении через тропосферу и ионосферу радиосигнал испытывает переменные задержки, величина которых зависит от текущего физического состояния верхних слоев атмосферы. Для компенсации переменных задержек применяется передача копии спутникового сигнала на второй частоте. Зависимость задержки от частоты хорошо изучена и точно известна. Но двухчастотные приемники очень дороги, сигнал на второй частоте зашифрован и доступ к его использованию лицензируется. Поэтому в гражданской практике двухчастотные приемники (не путайте с двухсистемными) практически не используются. Кроме атмосферных задержек на определение дальности влияют инструментальные задержки сигнала в цепях передатчика и приемника, ошибки часов спутника и приемника, а также релятивистский эффект, возникающий при движении спутника по орбите. Поэтому фактически приемник работает не с дальностями, а с псевдодальностями до спутников.
Для определения времени прохождения сигнала от спутника часы приемника должны быть очень точно синхронизированы с часами спутника, т. к. расхождение порядка 0,3·10-6 с дает погрешность 100 м. В общем случае вычислитель приемника решает систему уравнений, в которой четыре неизвестных: три пространственных координаты X, Y, Z и время t. Как известно, для нахождения однозначного решения системы уравнений, их должно быть на одно больше, чем неизвестных. Поэтому для точной синхронизации шкал времени нужны уже пять спутников, а не четыре. Разумеется, задача устранения погрешностей, связанных с переменными задержками, может решаться путем накопления измерений и статистической обработки на основе сигнала от четырех спутников. Но такой подход менее точен и требует существенно большего времени для накопления измерений.
Еще одной серьезной проблемой является прием отраженных сигналов в условиях городской застройки или сильно пересеченного рельефа местности. В некоторых случаях приемник может получать только отраженный сигнал. Наличие отражений приводит к ошибочному определению координат. Для выявления и отбраковки отраженных сигналов желательно, чтобы приемник принимал одновременно сигналы от шести спутников.
Итак, современные модули GPS, применяемые в квадрокоптерах, одновременно обрабатывают сигналы не более чем от шести спутников. Дальнейшее увеличение числа одновременно обрабатываемых спутников существенно усложняет и удорожает приемник, но не дает заметного увеличения точности. Даже если в зоне видимости находятся десять и более спутников, приемник в определенный момент времени будет работать только с шестью. Но наличие “запасных” спутников позволяет приемнику отвергать сигналы, которые он счел отраженными и недостоверными, а также динамически переключаться на сигнал спутников, имеющих более выгодное для навигации геометрическое расположение на орбите в текущий момент. Следовательно, наличие большого количества видимых спутников может улучшить качество услуги позиционирования, хотя и косвенным образом.
Геометрический фактор
Скорость и точность определения местоположения зависят от расположения спутников в пространстве относительно приемника. Наихудшим вариантом является расположение нескольких видимых спутников приблизительно на одной воображаемой линии с приемником. В этом случае погрешность и время определения возрастают до максимума. Поэтому наличие четырех-шести видимых спутников не всегда означает качественное позиционирование даже на открытой местности. Наилучшим вариантом является равномерное распределение нескольких спутников по полушарию над приемником. Применительно к геометрическому фактору, орбитальная структура ГЛОНАСС является более удачной, чем GPS NAVSTAR.
Альманах и эфемериды
Навигационные сообщения спутников несут два типа данных: альманах и эфемериды. Альманах содержит параметры орбит всех спутников, при помощи которых приемник может предсказать расположение спутников с достаточно большой погрешностью и не тратить время на попытки приема сигнала со спутников; которые заведомо не видны. Данные альманаха, передаваемые спутниками, обновляются каждые 30 суток. При хранении в памяти выключенного приемника они действительны не более 2–3 месяцев, далее погрешность в расчетах орбит становится недопустимой.
Эфемериды содержат корректирующие поправки, которые вычисляются наземными станциями слежения и регулярно загружаются в бортовой вычислитель спутника. В отличие от альманаха, каждый спутник передает только собственные эфемериды, обновляемые каждые 30 минут. При хранении в приемнике срок действия эфемерид не более 4–6 часов.
Информация передается со спутника с низкой скоростью, всего 50 бод. Пакет данных содержит контрольную сумму для проверки правильности приема. Также в пакет данных входит флажок “здоровья” спутника (health status). Если спутник неисправен или находится на обслуживании, он продолжает излучать навигационный сигнал для нужд станций слежения, но его сигнал помечается как недостоверный и отвергается приемником.
Время старта приемника, необходимое для перехода в режим определения позиции (GPS Fix или режим захвата спутников), зависит от имеющейся в памяти приемника информации о спутниках.
“Холодный” старт
При “холодном” старте ожидаемая позиция, время, альманах и эфемериды неизвестны. Приемник сканирует все каналы и весь диапазон возможных значений временных задержек навигационных сигналов. После того, как навигационный сигнал хотя бы от одного спутника получен и разобран, приемник обладает информацией о текущем альманахе всей спутниковой группировки и переходит к “теплому” старту.
Время “холодного” старта на открытой местности для современных модулей составляет порядка 30–35 с. При плохих метеоусловиях или мешающих кронах деревьев продолжительность старта может увеличиться до 60–70 с. Таким образом, при использовании приемных модулей на открытой местности можно обходиться без хранения альманаха в памяти и заново стартовать при каждом включении бортового питания. Но в городских условиях время “холодного” старта существенно возрастает, иногда до 10–15 минут.
“Теплый” старт
При “теплом” старте приемник, включенный после 6 и более часов бездействия, начнет сканировать сигналы спутников, используя данные хранящегося в памяти альманаха и время собственных часов. При этом будет осуществляться поиск только тех спутников, которые теоретически, по данным альманаха, должны находиться в видимом полушарии на момент старта. Это существенно сокращает время старта (порядка 10 с), поскольку приемнику достаточно лишь получить текущие эфемериды от заранее известных спутников.
“Горячий” старт
При “горячем” старте в памяти приемника хранится вся актуальная информация, включая действующие эфемериды, поэтому приемник переходит к определению позиции спустя 1–3 с после включения. Если же к моменту включения приемника видимыми являются менее трех спутников со “свежими” эфемеридами, то приемнику потребуется дополнительное время, чтобы собрать эфемериды с остальных спутников по алгоритму “теплого” старта.
При перемещении выключенного приемника на расстояние более 300 км хранящийся в его памяти альманах теряет актуальность, поэтому при включении на новом месте будет отработан “холодный” старт.
Технология A-GPS
Для ускорения “холодного” старта применяется загрузка в приемник альманаха, ориентировочных координат и времени, полученных по альтернативным каналам. Эта технология называется A-GPS (Assisted GPS). Обычно сначала по ближайшим сотовым станциям и точкам доступа Wi-Fi определяются приблизительные координаты с точностью 200–500 м, затем из Интернета скачивается актуальный альманах для этой местности и загружается в память приемника. Этот метод требует наличия беспроводного доступа в Интернет и используется в современных телефонах, но малоприменим для оборудования квадрокоптеров.
Переход приемника в режим захвата спутников (GPS Fix) означает лишь, что приемник загрузил альманах и эфемериды и “видит” достаточное для работы созвездие спутников. Для достижения приемлемой точности позиционирования потребуется дополнительное время, пока приемник накапливает данные для снижения погрешностей статистическими методами.
Некоторые модули GPS с устаревшими прошивками при неудачном расположении спутников зависали и вообще не могли стартовать по процедуре “холодного” старта, пока в них с компьютера не выгружали альманах. В современных модулях такая проблема не встречается.
Для хранения информации в модуле приемника GPS используется энергозависимая память с резервным источником питания. Обычно это миниатюрный литиевый аккумулятор или ионистор. Иногда спрашивают, почему в приемниках не используется обычная память EEPROM, которая не теряет информацию при отключении питания? Дело в том, что при работе приемника информация о текущих координатах и эфемеридах непрерывно перезаписывается, а энергонезависимая память имеет довольно ограниченный ресурс циклов перезаписи.
Антенны GPS
Антенны портативных GPS-модулей имеют специфическую конструкцию. Обычно это керамический блок с нанесенными на него электрохимическим методом металлическими элементами (рис. 3.6).
Рис. 3.6. Обычная керамическая антенна GPS и миниатюрная чип-антенна
После изготовления антенну обычно подстраивают на заводе, подрезая уголки вибратора наждаком или лазером. Иногда применяются активные антенны, когда непосредственно на антенном модуле смонтирован малошумящий усилитель. Такие антенны более эффективны в сложных условиях, но на открытом пространстве, когда сигналы от спутников и без того хороши, они не дают заметного выигрыша. Недостатками керамической антенны являются большой вес и хрупкость, из-за чего антенны часто трескаются при аварии. Иногда трещина антенны не видна невооруженным глазом, но существенно снижает чувствительность приемника.
В последнее время, с появлением миниатюрных приемников GPS и массовым распространением смартфонов, получили широкое распространение миниатюрные керамические чип-антенны размером в несколько миллиметров и весом в доли грамма. Такие антенны производятся по технологии, схожей с изготовлением микросхем и подстраиваются лазером в момент изготовления.
Несмотря на миниатюрные размеры, чип-антенна в сочетании с современными микросхемами приемника практически не уступает по параметрам обычным антеннам, но стоит несколько дороже и, как правило, применяется в составе готовых миниатюрных модулей GPS.
Поток данных GPS, протокол NMEA
Навигационный модуль передает поток данных в полетный контроллер по последовательному интерфейсу UART (СОМ) или I2С. В любом случае структура и содержание этих данных соответствуют протоколу NMEA0183 (National Marine Electronics Assotiation). Это стандарт текстового обмена данными и командами посредством ASCII-символов, созданный для морского навигационного оборудования. В настоящее время внедряется стандарт NMEA 2000.
Модуль GPS передает строковые сообщения, содержащие различный набор данных: широта, долгота, скорость, курс, системное время, количество спутников и т. д. Сообщения делятся на несколько видов, формат которых содержит в своих полях строго определенную информацию.
Владельцу коптера, как правило, не приходится работать с “сырыми” данными GPS, но для общей эрудиции полезно знать их структуру. В общем случае строковое сообщение приемника имеет такой вид:
$GPRMC,hhmmss. sss, A,GGMM.MM, P, gggram.mm, J, v.v,b.b,ddmmyy,x.x,n,m*hh<CR><LF>
$ — с этого символа начинается каждое сообщение
GPRMC — первые две буквы — это идентификатор системы, остальные три — это идентификатор формата сообщения, от которого зависит содержимое остальной строки. В нашем случае GP — GPS (GL — ГЛОНАСС, GA — GALILEO и т. д.)
RMC — рекомендованный минимум навигационных данных. Содержит данные о широте, долготе, дате, времени и скорости. Эти данные приемный модуль передает по умолчанию после старта. По запросу контроллера также передаются данные типа GGA и GSA об активных и наблюдаемых спутниках, а при движении по заданному маршруту некоторые контроллеры могут запрашивать строки типа GPL, BOD и RMB, содержащие параметры заданных точек и рекомендуемый минимум навигационных данных для достижения заданной точки. Полный список форматов достаточно велик, и с ним можно ознакомиться в спецификации NMEA. Некоторые изготовители добавляют в перечень форматов собственные строки, несущие информацию о состоянии приемника, версии прошивки, напряжении питания и т. д. Далее следует набор навигационной информации, подробное описание которой также можно прочесть в спецификации.
Внимание!
Дробные значения широты и долготы в “сыром” потоке данных NMEA представлены десятичной дробью минут, а не секундами! Если эти значения ввести в строку поиска Google Maps, то местоположение на карте будет на несколько километров отличаться от истинного. Необходимо поделить дробные части широты и долготы на 60, чтобы получить значения секунд. Программы для работы с GPS не нуждаются в такой подготовке данных и отображают координаты правильно.
Протокол U-BLOX (UBX)
Протокол U-BLOX (binary UBX) — это проприетарный бинарный протокол, разработанный и применяемый швейцарской компанией u-blox AG, известным производителем модулей и программного обеспечения для навигационного и коммуникационного оборудования.
Поскольку навигационные приемники на основе модулей U-BLOX NEO 6 и U-BLOX NEO 7 получили широкое, почти монопольное распространение в авиамоделизме, прошивки полетных контроллеров поддерживают как протокол UBX, так и NMEA.
В целом, спецификация приемников U-BLOX предоставляет разработчику очень широкий диапазон возможностей для обмена данными между приемником и потребителем. Например, реализован протокол DDC (Display Data Channel), совместимый со стандартом I2С. Это позволяет подключать приемник к контроллеру по шине I2С в случае нехватки свободных СОМ-портов. Также протокол DDC допускает выборочное чтение регистров приемника и запись в них.
Но если говорить о любительском применении в квадрокойтерах, то дополнительные возможности протокола UBX не используются, поскольку полетный контроллер использует лишь минимальный набор стандартных данных GPS. Подключение по шине I2С может создать проблемы даже достаточно опытному пользователю.
Поэтому, по мнению автора, в данном случае разнообразие протоколов скорее зло, чем благо. Кроме того, модули U-BLOX даже версии 7 не поддерживают одновременную работу с системами GPS и ГЛОНАСС, режимы необходимо переключать программно.
В части II книги мы подробно рассмотрим пример настройки и подключения приемника U-BLOX NEO 6.
Адаптер Bluetooth
Адаптер Bluetooth— это простой и недорогой способ подключить к полетному контроллеру смартфон, планшет или нетбук, чтобы воспользоваться утилитами для настройки и телеметрии. Разумеется, ноутбук или обычный компьютер также можно подключать по беспроводному соединению. Этот вариант даже более предпочтителен, чем соединение проводом по USB. Если забыть отключить от контроллера провод после окончания работы, то можно получить вырванный с дорожками платы контроллера разъем mini-USB и серьезные трудности с последующим подключением.
В любительской практике обычно применяются очень дешевые и широко распространенные адаптеры версий НС-05, НС-06 (рис. 3.7), НС-07. Они представляют собой плату, на которой смонтированы одна или две микросхемы и печатная антенна. В свою очередь, эта плата припаяна на плату расширения, содержащую источник 3,3 В, светодиоды и разъем. Иногда в продаже попадаются “голые” платы модулей, но в этом случае вам придется самостоятельно подключать питание, светодиоды и разъем.
Рис. 3.7. Стандартный адаптер Bluetooth НС-06
К сожалению, обычные адаптеры Bluetooth не поддерживают процесс программирования контроллера, потому что не могут генерировать сигнал сброса контроллера, необходимый для запуска процесса. В продаже можно встретить специальный вариант адаптера, позволяющий прошивать контроллер через беспроводное соединение, но в несколько раз дороже обычного адаптера. Поэтому для записи прошивки все же лучше использовать проводное подключение USB.
При покупке следует обратить внимание на версию адаптера. Наиболее популярными, проверенными и простыми в эксплуатации являются адаптеры НС-06, но можно приобрести и другую версию. Адаптер должен работать в режиме ведомого (Slave), но иногда встречаются адаптеры, на фабрике жестко прошитые в режим ведущего (Master). Эти адаптеры содержат в названии букву “М”, например НС-06М. Вы не сможете использовать такой адаптер без перепрошивки, что достаточно сложно для неподготовленного любителя. Существуют адаптеры, у которых режим Master/Slave можно переключить внешней командой конфигурации. Это, например, адаптеры НС-05.
Телеметрия и OSD
Система телеметрии предназначена для передачи с борта важной технической информации в режиме реального времени, а также, при необходимости, записи этой информации в лог для последующего изучения. Состав этой информации зависит от назначения системы и потребностей оператора. В простейшем случае, когда полет происходит на небольшом удалении и коптер контролируется визуально, достаточно следить только за напряжением силовых батарей. При полете с управлением по видеокамере уже, как правило, необходимо контролировать дальность полета и уровень радиосигнала, чтобы не потерять связь, а также следить за напряжением батареи видеоканала.
На практике набор телеметрийной информации намного шире, и в него стараются включить максимум параметров. Разумеется, набор этих параметров определяется оборудованием квадрокоптера:
• напряжение батарей;
• потребляемый ток;
• температура батарей;
• режим работы полетного контроллера;
• время полета;
• высота;
• линейная скорость;
• вертикальное ускорение;
• показания акселерометров (крен);
• показания компаса;
• обороты двигателей;
• текущие координаты GPS;
• количество доступных спутников;
• дальность до “дома” и направление “домой”.
Данные имеют разную практическую ценность. Например, обороты двигателей в режиме реального времени нужны только для отладки и настройки. Если один или два мотора работают с большей нагрузкой в тот момент, когда коптер висит горизонтально и неподвижно, это может означать дисбаланс коптера — смещение его физического центра масс в сторону.
Формировать поток данных для телеметрии может не только полетный контроллер. Большинство современных телеметрийных систем способно автономно обрабатывать показания датчиков тока, напряжения и температуры, и даже поток данных GPS. Нет принципиальной разницы в том, куда подключать датчики, но иногда бывает конструктивно удобнее и безопаснее подключить их непосредственно к модулю телеметрии. С другой стороны, нет нужды приобретать очень дорогой модуль логирования и телеметрии, оснащенный собственным барометром, компасом, акселерометрами, поскольку эти датчики все равно есть на плате полетного контроллера.
В общем виде система телеметрии коптера состоит из следующих компонентов: набор датчиков и прочих источников информации; бортовой модуль телеметрии, который обрабатывает исходные данные и “упаковывает” их в непрерывный поток данных; радиоканал для передачи данных на землю; устройство для приема и отображения данных; устройство записи данных в лог.
В практической реализации телеметрии возможны различные варианты. В классической и самой простой схеме сбор и обработку данных осуществляет полетный контроллер. Далее, через последовательный порт он передает поток данных на специальный модуль OSD (On-Screen Data — будет рассмотрен далее), который накладывает цифробуквенные и графические элементы на изображение бортовой видеокамеры, которое на земле отображается в видеоочках оператора или на дисплее.
Иногда датчики тока и напряжения и приемник GPS подключают непосредственно к модулю OSD. Запись лога данных может вестись во встроенную память полетного контроллера, в память модуля телеметрии, в специальный логгер, в наземный компьютер либо путем записи полетного видео. Лог бывает полезен при анализе максимального потребляемого тока, поиске просадок питающего напряжения, выявлении сбоев канала управления и т. д.
Телеметрийная информация может передаваться непосредственно с полетного контроллера при помощи специального радиомодема — оборудования, обеспечивающего двустороннюю связь по протоколу UART через радиоканал.
И, наконец, телеметрия может передаваться на землю при помощи аппаратуры радиоуправления двустороннего действия, с отображением данных на дисплее пульта управления. Это вариант удобный, но не самый дешевый, особенно если учесть, что для полетов по видеокамере все равно понадобится еще и телеметрия на экране. Окончательный выбор варианта и практическая реализация зависят только от потребностей и возможностей владельца коптера, поэтому нельзя однозначно сказать, что лучше.
Теперь разберемся подробнее, что является источником данных для телеметрии.
Датчик напряжения представляет собой простейший делитель напряжения из двух постоянных резисторов. Напряжение с выхода делителя поступает на аналоговый вход микроконтроллера, который при помощи встроенного АЦП измеряет напряжение. Делитель необходим, т. к. на вход микроконтроллера категорически нельзя подавать напряжение батареи напрямую. Это приведет к выходу микроконтроллера из строя. Как минимум, будет испорчен этот аналоговый вход.
Датчик тока устроен несколько сложнее. Это либо низкоомный шунт — мощный резистор с очень низким сопротивлением, включенный последовательно в разрыв силовой цепи, либо датчик Холла, реагирующий на напряженность магнитного поля, возникающего вокруг силового провода. В том и другом случае требуется дополнительная схема, операционный усилитель, усиливающий слабый сигнал датчика.
Существуют готовые измерительные модули. Пример такого модуля изображен на рис. 3.8. Этот модуль кроме резистивного делителя напряжения и токового шунта содержит импульсный источник с выходным напряжением 5,25 В и током 3 А для питания бортовой электроники.
Рис. 3.8.Модуль для измерения напряжения и тока силовой батареи.
Датчики тока и напряжения имеют погрешности, вызванные разбросом параметров элементов, поэтому их показания корректируют программно, при помощи калибровочных констант, которые необходимо один раз подобрать при настройке коптера.
На основании текущей продолжительности полета, напряжения и тока система телеметрии может рассчитать количество потребленной от батареи энергии в миллиампер-часах. Иногда этот параметр более информативен, чем просто текущее напряжение батареи, потому что позволяет знать, сколько батарея “отдает” на самом деле, в отличие от надписи на этикетке, и приблизительно оценить оставшееся время полета.
Датчик температуры применяется нечасто, в основном в мощных квадрокоптерах с большим энергопотреблением, когда силовая батарея может работать в критических режимах. В качестве датчика может использоваться терморезистор или термодиод, меняющие сопротивление в зависимости от температуры, а также интегральный термометр, подключаемый к модулю телеметрии по шине I2С или I-Wire.
Барометр, акселерометр и компас, как правило, используются штатные, установленные на плату полетного контроллера. Полетный контроллер транслирует полученные и обработанные данные в модуль телеметрии.
Модуль GPS обычно тоже подключается к полетному контроллеру, который обрабатывает поток протокола NMEA, выделяет из него координаты и на их основании вычисляет количество спутников, линейную скорость и дистанцию до точки взлета для включения в поток данных телеметрии. Современные прошивки позволяют подключить модуль GPS непосредственно к модулю телеметрии, но в случае с квадрокоптером это не имеет практического смысла — данные GPS нужны в первую очередь полетному контроллеру.
Радиоприемник генерирует сигнал RSSI (Received Signal Strength Indication — индикация уровня принимаемого сигнала) для оценки уровня радиосигнала, поступающего на антенный вход приемника. Сигнал RSSI может присутствовать на выходе приемника в виде постоянного напряжения, пропорционального уровню принимаемого сигнала, или передаваться в стандартной форме через один из выходных каналов управления РРМ или SBUS. В первом случае модулю телеметрии достаточно измерить напряжение, во втором нужно распознавать сигнал радиоуправления, что требует несколько больших ресурсов. К сожалению, дешевые популярные приемники редко оснащены выходом RSSI, хотя их чипсет имеет такую возможность. Некоторые приемники можно прошить альтернативной прошивкой, которая выводит сигнал RSSI в качестве отдельного канала. Также приемник является источником данных о положении рукояток управления, но эти данные обрабатывает и выводит в поток телеметрии полетный контроллер.
Полетный контроллер также является источником собственных данных: режим полета, обороты двигателей, наличие ошибок в шине данных I2С, время полета.
Изображенный на рис. 3.9 вариант реализации телеметрии с использованием OSD наиболее популярен, особенно среди начинающих пилотов. Более того, он просто необходим при полетах по камере, иначе полет с большой вероятностью закончится разряженной батареей или потерей ориентации и утратой коптера. Поэтому мы рассматриваем модуль OSD как часть системы телеметрии.
Рис 3.9.Стандартная система телеметрии с применением OSD
Внешние данные в модуль OSD (рис. 3.10) могут поступать с полетного контроллера через последовательный интерфейс, непосредственно от внешних датчиков, либо одновременно из разных источников.
Рис. 3.10. Структурная схема модуля OSD
Собственный микроконтроллер модуля (MCU) обрабатывает данные и загружает их в специальную микросхему — видеомиксер (V-MIX), который накладывает цифробуквенную и графическую информацию на изображение. Существует несколько пользовательских прошивок для модулей OSD, позволяющих подбирать и настраивать отображение данных под свои нужды. Для настройки обычно применяется интерфейсная программа на компьютере с подключением через USB-адаптер последовательного порта.
Достоинством телеметрии с применением OSD является наглядность и удобство отображения информации, а также то, что для телеметрии используется уже имеющийся канал. Однако иногда требуется принимать, отображать и/или записывать в лог более специфическую информацию типа оборотов двигателей, показаний акселерометров и т. д. В этом случае можно приобрести, в зависимости от ситуации и финансовых возможностей, либо комплект сменных модулей приемника/передатчика, типа FrSky, создающих двунаправленный радиоканал для передачи управления на борт и приема телеметрии с борта, либо фирменное оборудование со встроенным каналом телеметрии.
Можно также ничего не менять в имеющейся аппаратуре управления, а приобрести недорогой комплект из двух модулей для передачи потока информации с последовательного порта — так называемый радиомодем. Автор предпочитает именно это недорогое и универсальное решение.
Универсальный радиоканал (радиомодем)
В большинстве случаев полный поток данных телеметрии выводится на один из последовательных портов полетного контроллера. Причем на этот порт выводится не только стандартная телеметрия, но и внутренняя служебная информация контроллера (время исполнения цикла программы, наличие ошибок на шине I2С, положение рукояток пульта и т. д.) Также через этот порт можно “на лету” настраивать контроллер, меняя различные параметры. Более того, у многих полетных контроллеров через этот же порт можно управлять коптером со смартфона или компьютера, минуя аппаратуру радиоуправления.
На земле к последовательному порту контроллера через проводной адаптер USB-СОМ можно подключить стационарный компьютер или ноутбук, а через адаптер OTG легко подключаются планшет или смартфон с операционной системой Android. Разумеется, стационарный компьютер, ноутбук или смартфон можно подключить через Bluetooth. Но увы, дальность действия стандартного оборудования Bluetooth не превышает 100 м на открытой местности, а для надежной работы желательно не превышать дистанцию 30 м.
Для увеличения дальности беспроводного соединения через последовательный порт контроллера применяют специальное оборудование — радиомодем. Последовательный порт одного из приемопередатчиков радиомодема соединяется с портом полетного контроллера, а к порту второго приемопередатчика подключается наземное оборудование. Радиоканал абсолютно прозрачный; т. е. с точки зрения наземного оборудования это выглядит так, будто оно подключено напрямую к последовательному порту контроллера, хотя на самом деле квадрокоптер может находиться на расстоянии нескольких километров от оператора. Единственное ограничение состоит в снижении максимальной скорости порта, и чем больше предполагаемая дистанция полета, тем меньшая скорость обмена должна быть задана в настройках.
Как показывает опыт, скорости 19 200 бод достаточно для комфортного обмена данными. Даже скорость 9600 бод допустима для приема потока расширенной телеметрии и дистанционного изменения настроек. При этом современные недорогие радиомодемы обеспечивают стандартную скорость 57 600 бод на расстоянии около 1 км. В настоящее время скорость и дальность действия радиомодемов не является проблемой для любительских коптеров.
Типичный современный модуль радиоканала состоит из специализированной микросхемы, оснащенной интерфейсом последовательного порта UART/RS232 и радиочастотным выходом. Модули повышенной мощности имеют также антенный усилитель мощности излучаемого радиосигнала. Существуют модули со встроенным адаптером USB-COM для подключения непосредственно к USB-порту компьютера.
Большинство модулей промышленного класса работает в диапазоне 433 МГц с разделением на несколько фиксированных частотных каналов. Этот диапазон специально предназначен для систем телекоммуникации и беспроводного сбора информации. В последнее время появляется все больше модулей, особенно любительского и бытового назначения, работающих в диапазоне 2,4 ГГц. У этих двух частотных вариантов есть свои достоинства и недостатки. Диапазон 433 МГц специально предназначен для систем сигнализации и дистанционного сбора информации. На открытой местности он обеспечивает большую дальность при малой мощности, меньше подвержен интерференции, отражениям и затуханию на складках местности, в листве деревьев и т. д. Однако в этом диапазоне работают радиоканалы большинства автомобильных сигнализаций, что в городских условиях может служить источником сильных помех.
Оборудование на частоте 2,4 ГГц имеет меньшие габариты и массу. Благодаря более высокой несущей частоте теоретический лимит скорости выше. При сопоставимой дальности действия комплект оборудования 2,4 ГГц стоит дороже, но обеспечивает более помехоустойчивый и быстрый канал. С другой стороны, радиоканал на основе недорогого маломощного гигагерцевого оборудования обеспечивает меньшую дальность и более критичен к размещению и конструкции антенны, а также к климатическим условиям (туман, дождь) и рельефу местности. Кроме того, использование еще одного оборудования, работающего на частоте 2,4 ГГц, создает лишний риск взаимной интерференции с сигналами радиоуправления и видеоканала.
Если нет конструктивной возможности или желания соединять наземный модуль с ноутбуком или смартфоном проводом USB, то наземный модуль подключается к обычному адаптеру Bluetooth, а уже с ним соединяется смартфон, планшет или ноутбук. С точки зрения программного обеспечения это равносильно подключению к полетному контроллеру по Bluetooth, но при этом смартфон может находиться в кармане пилота, а коптер на расстоянии в километр от него.
Как и в случае с радиоуправлением, производители предпочитают использовать проприетарные протоколы передачи данных по радиоканалу, а также частотные сетки, несовместимые с модулями других производителей. Более того, даже у одного производителя бывают разные, взаимно не совместимые серии оборудования. Поэтому настоятельно рекомендуется для построения радиоканала телеметрии приобретать модули одного производителя и одной серии.
Бустеры и репитеры
Бустеры и репитеры применяются для увеличения дальности действия и помехоустойчивости каналов радиоуправления и телеметрии на расстояние до десяти километров и более. В основном такая дальность требуется при полетах по видеокамере.
Бустер (booster) — это усилитель мощности радиосигнала. Вход бустера подключается к антенному выходу передатчика, а к выходу бустера подключается антенна.
Наиболее популярны бустеры на диапазон 2,4 ГТц с выходной мощностью 1–2 Вт (рис. 3.11), но для сверхдальних полетов иногда применяются бустеры диапазонов 27,40 или 72 МГц с выходной мощностью более 10 Вт.
Рис. 3.11.Усилитель радиосигнала на диапазон 2,4 ГГц
Обычный недорогой бустер усиливает сигнал в одном направлении — от устройства к антенне. Это не создает проблем в случае односторонней передачи, например для пульта радиоуправления или видеопередатчика. Но в случае двустороннего канала телеметрии бустер блокирует принимаемый сигнал, т. к. прохождение сигнала в обратном направлении, от антенны к устройству, не предусмотрено схемой усилителя. Поэтому с простыми бустерами не работают радиомодемы, а также модули телеметрии типа FrSky для пультов радиоуправления.
Существуют более дорогие и сложные двунаправленные бустеры (2-Way Booster). Они содержат автоматически работающий коммутатор сигнала, который при наличии излучения на выходе радиомодема выводит сигнал через усилитель мощности в антенну, а все остальное время в режиме приема направляет принимаемый сигнал с антенны в обход цепей усилителя мощности на антенный вход модема. Обычно входной сигнал также подвергается усилению при помощи малошумящего усилителя, что существенно повышает дальность действия канала. Двунаправленные бустеры на 2,4 ГГц обычно продаются в качестве оборудования Wi-Fi, но подходят и для нужд телеметрии.
Репитер (repeater) — это повторитель сигнала. Он принимает сигнал передатчика и переизлучает его. Излучаемая мощность репитера может не превышать мощность передатчика радиоуправления или даже быть меньше, но за счет того, что репитер физически располагается на линии между передатчиком и приемником, дальность действия почти удваивается.
Некоторые бытовые Wi-Fi-роутеры удается заставить работать в качестве репитеров сигнала радиоуправления путем перепрошивки.
Иногда для сверхдальних полетов применяют ретрансляторы. Например, ретранслятор может принимать сигнал обычного пульта на частоте 2,4 ГГц, перекодировать его и излучать на частоте 72 МГц с мощностью 15–20 Вт. Такое устройство обычно стараются установить на возвышенности и питают от автомобильного аккумулятора. С точки зрения удобства эксплуатации, для дальних полетов ретранслятор с усилителем мощности более предпочтителен, т. к. его можно установить недалеко от оператора (например, на крыше автомобиля), и действовать он может одинаково для всех направлений полета.
Жидкокристаллические и OLED-дисплеи
Когда есть возможность использовать в качестве дисплея смартфон или планшет с операционной системой Android, подключенные к полетному контроллеру по Bluetooth, наличие дополнительного дисплея в составе конструкции может казаться лишним. Но зачастую использование аппаратного дисплея, смонтированного на коптере, оказывается удобнее и безопаснее. Если нужно быстро проверить количество доступных спутников GPS, напряжение батареи или суммарное время полета, удобнее посмотреть это на бортовом дисплее, а не подключать мобильный гаджет.
Управление отображаемыми данными, переключение режимов полетного контроллера и изменение параметров в ручном режиме производится при помощи перемещения рукояток пульта в определенные крайние положения. В дежурном режиме на дисплее отображаются данные телеметрии (напряжение, ток, обороты двигателей, время работы и т. д.).
В самодельных коптерах применяют один из двух типов дисплеев: жидкокристаллический (LCD, Liquid Crystall Display) или на органических светоэлементах (OLED, Organic Light Emitting Device). Обе разновидности по умолчанию поддерживаются большинством популярных версий прошивок. Для настройки и тестирования предусмотрено использование — так называемых виртуальных дисплеев. В этом случае в роли дисплея выступает запущенная на компьютере программа PuTTY, Hercules, Termite или любой другой программный терминал последовательного порта, а выход последовательного порта контроллера подключается к компьютеру через адаптер USB-COM.
Жидкокристаллический дисплей. Обычно это двух- или четырехстрочный дисплей с фиксированными знакоместами, подключаемый по протоколу I2С или UART(pnc. 3.12). Знакогенератор прошит в памяти дисплея, поэтому набор отображаемых символов ограничен стандартным набором ASCII.
Рис. 3.12.Дисплей 4 строки 16 знакомест LCD03
OLED-дисплей. Это относительно новое для любительской практики устройство. Дисплей графический, изображение формируется из миниатюрных пикселов-светодиодов, поэтому могут отображаться не только цифробуквенные символы, но и графические изображения. Прошивка MultiWii по умолчанию поддерживает монохромный дисплей CRIUS OLED С-16 с разрешением 128×64 точек, подключаемый по протоколу I2С (рис. 3.13).
Рис. 3.13.Графический дисплей CRIUS OLED
Преимущества графического OLED-дисплея:
• небольшие габариты и вес;
• большой объем отображаемой текстовой информации;
• возможность отображать графику.
Недостатки:
• большой объем программного кода в прошивке контроллера для формирования знакогенератора и графических символов;
• более высокая цена;
• на ярком солнце изображение почти не видно;
• дисплей CRIUS СО-16 “из коробки” работает нестабильно и требует доработки, что, впрочем, не гарантирует безупречную дальнейшую работу.
В свою очередь ЖК-дисплей стоит существенно дешевле, его обслуживание занимает меньший объем памяти, работает без сбоев, изображение лучше видно на ярком солнце. Но при этом он больше весит и отображает небольшой объем информации.
Цветной графический LCD-дисплей (рис. 3.14).
Рис. 3.14.Цветной графический дисплей
Графическая матрица устроена аналогично компьютерному монитору и позволяет отображать минимум 262 000 цветов. Недорогие дисплеи подходящего размера обычно подключаются к источнику данных по протоколу SPI. В прошивке MultiWii не реализована поддержка цветных дисплеев с протоколом SPI, поэтому автором разработана собственная конструкция автономного модуля дисплея на основе микроконтроллера Atmega328.
Средства поиска: биперы, маячки, GPS-трекеры
Даже если полет происходит в пределах прямой видимости, после аварии поиск коптера в лесу, густом кустарнике или овражистой местности может быть очень затруднителен. Для облегчения поиска применяют специальные технические средства.
Самое простое устройство для поиска — это звуковой сигнализатор (бипер). Обычно в нем используется излучатель, аналогичный индикатору разряда батареи. Излучатель активируется сигналом на одном из выводов полетного контроллера, по команде с пульта. Такому решению присущи очевидные недостатки: для срабатывания бипера необходимо, чтобы питание и электроника коптера остались исправными после краша и продолжали принимать сигналы управления, а это случается далеко не всегда. Слышимость бипера также зависит от того, насколько удачно упал коптер. Можно применить более сложный бипер с автономной батареей питания и датчиком удара, но радиус действия все равно существенно ограничивается слышимостью звукового сигнала на местности.
На рис. 3.15 изображен простейший универсальный бипер, который состоит из транзисторного ключа и активного звукоизлучателя, питается напряжением 5 В и управляется стандартным логическим уровнем с вывода контроллера. В зависимости от настройки прошивки контроллера, бипер может короткими звуковыми сигналами индицировать переключение режимов, а по команде с пульта включаться в постоянном режиме.
Рис. 3.15.Простейший звуковой излучатель
Попытки авиамодельного сообщества использовать для поиска моделей радиомаячки, с последующей пеленгацией их специальным приемником, пока реализуются с переменным успехом. Радиус действия и точность ориентации на источник у радиомаячка заметно выше, но к упомянутой ранее зависимости от исправности бортовой аппаратуры добавляется необходимость использовать пеленгующий приемник с антенной узконаправленного действия. Кроме того, передатчик маячка должен иметь собственную передающую антенну, и эффективность ее работы очень сильно зависит от расположения после падения. Маячки могут иметь автономный источник питания и датчик удара. В качестве приемника обычно используют недорогие китайские портативные радиостанции.
Наиболее сложным, дорогостоящим и эффективным устройством является GPS-трекер. Это устройство состоит из приемника GPS, модуля сотовой связи GSM и автономного источника питания. Во время всего полета приемник GPS непрерывно отслеживает координаты летательного аппарата и с интервалом в несколько секунд передает их при помощи модуля сотовой связи. Координаты могут передаваться как по каналу GPRS на сервер одного из сервисов по отслеживанию объектов, так и в виде обычных SMS на телефон владельца. В первом случае можно воспользоваться одним из бесплатных или условно-бесплатных сервисов, которые не только ведут лог координат, но и накладывают их на карту местности. Во втором случае частота передачи SMS зависит от их стоимости и ограничений сотового оператора. Поэтому обычно SMS во время полета следуют с интервалом не менее 10 с, а после аварии оператор отправляет SMS с командой на трекер и в ответ получает координаты упавшего коптера с точностью 6-12 м.
В настоящее время широко применяются готовые миниатюрные GPS-трекеры (рис. 316) китайского производства, которые крепятся на ошейники собак, а также трекеры для контроля за перемещением пожилых людей или детей. Все эти трекеры имеют автономную батарею, которой хватает на несколько часов, и неплохо подходят для использования на квадрокоптерах. Трекеры для детей и пожилых людей обычно оснащены тревожной кнопкой и каналом голосовой связи, но для использования в коптерах это излишние опции, к тому же повышающие вес и стоимость.
Рис. 3.16.Автомобильный (а) и бытовой (б) GPS-трекеры
Главным недостатком GPS-трекеров является необходимость находиться в зоне действия сотовой связи. Это не слишком критично для европейских стран, но может оказаться проблемой на бескрайних российских просторах. Но даже при наличии сотовой связи она может прерваться после падения коптера в овраг или водоем. То же самое относится и к приему сигнала GPS. Благодаря постоянному слежению за координатами и скоростью полета можно по логам с достаточной точностью предсказать направление полета и точку падения, существенно сузив зону поиска. Для окончательного поиска может оказаться полезен и упомянутый выше бипер.
Сервомашинки
Для квадрокоптера сервомашинки не являются обязательным компонентом. В базовой конструкции они не нужны, и даже в подвесах камеры все чаще используются специальные бесколлекторные двигатели. Но в любом случае устройство сервомашинок полезно знать для общей эрудиции.
Сервомашинка представляет собой классическое электромеханическое устройство с обратной связью (рис. 317). Она состоит из электромотора, редуктора, потенциометра обратной связи и платы управления. Сервомашинки разделяются на аналоговые и цифровые в зависимости от устройства узла управления. В цифровых сервомашинках применяется встроенный микроконтроллер.
Рис. 3.17.Устройство обычной сервомашинки
Потенциометр обратной связи механически напрямую связан с выходным валом сервомашинки, и положение бегунка потенциометра отражает для схемы управления положение вала. На схему управления сервомашинкой с одного из каналов приемника или с выхода полетного контроллера поступают стандартные импульсы радиоуправления, структуру и параметры которых мы уже рассмотрели ранее.
Каждый входящий импульс радиоуправления запускает встроенный генератор однократного опорного импульса внутри сервомашинки. Длительность внутреннего опорного импульса зависит от положения бегунка потенциометра. Электронная схема управления сравнивает длительности входящего и опорного импульсов. Если они совпадают, то ничего не происходит. Если же длительности различаются, то вырабатывается разностный сигнал с положительным или отрицательным знаком. Этот сигнал поступает на схему управления мотором, который начинает вращаться в сторону уменьшения разности импульсов, поворачивая через редуктор выходной вал и движок потенциометра. Как только длительности управляющего и опорного импульсов совпадают, мотор останавливается.
Таким образом, угловое положение вала сервомашинки всегда соответствует положению ручек управления на пульте либо управляющему сигналу полетного контроллера. Если же к валу сервомашинки прикладывается внешнее усилие, то малейшее смещение вала относительно заданного положения приводит к появлению сигнала рассогласования, и сервомашинка возвращает вал в заданное положение. Но так идеально машинка работает только в теории. На практике механическая часть обладает инерцией, и даже после отключения питания мотора он поворачивается немного больше, чем нужно — вал проскакивает заданное положение. Электроника отрабатывает возврат, и механика вновь проскакивает немного больше, чем нужно, но уже в обратную сторону, и все повторяется. В итоге возникает циклическое автоколебательное дрожание вала, так называемый джиттер. Чтобы подавить джиттер, вводят так называемую “мертвую зону”, внутри которой электроника не обращает внимания на разностный сигнал, полагая, что он равен нулю и вал точно стоит в заданном положении. Но слишком большая “мертвая зона” снижает точность управления. Подавления джиггера при узкой мертвой зоне добиваются, используя прецизионные шестеренки редуктора и высокоточные потенциометры обратной связи, а также оптимизируя сервомашинки под определенное напряжение питания.
Если на вход сервомашинки приходит сигнал нестандартной длительности, например, в результате воздействия помехи, то вал сервомашинки резко проворачивается в крайнее положение и там упирается в ограничитель. К поломке сервомашинки это не приводит, но резко возрастает ее потребляемый ток, а внезапный уход в крайнее положение может привести к порче внешних механических компонентов модели или к аварии. Этого недостатка лишены цифровые сервомашинки. Микроконтроллер игнорирует заведомо ошибочный входной сигнал, не меняя положение вала.
Кроме того, в цифровых сервомашинках естественным образом реализуется последовательный протокол S.Bus/S.Bus2 или аналогичный. Благодаря этому можно каждой сервомашинке присвоить свой уникальный адрес и соединить их все одной последовательной сигнальной шиной. Также к достоинствам цифровых сервомашинок можно отнести высокое быстродействие и точность, т. к. аналоговая схема считывает положение вала потенциометра и управляет двигателем только по приходу управляющего импульса, а цифровая схема делает это намного чаще. Недостатками цифровых сервомашинок являются более высокая цена и необходимость программировать их при помощи специального программатора.
Важно иметь в виду, что цифровые сервомашинки питаются от более высокого напряжения, чем аналоговые: 6 или 7,4 В вместо 5 В. Попытка включить обычную машинку вместо цифровой приведет к выходу аналоговой машинки из строя. Потенциометр сервомашинки подвержен механическому износу, истиранию резистивного слоя в районе центрального положения, поэтому по мере эксплуатации возрастает погрешность сервомашинки и джиттер. Но это становится заметно по прошествии минимум десяти часов непрерывной эксплуатации. Как правило, раньше происходит разрушение пластикового редуктора машинки вследствие аварии. Сервомашинки, рассчитанные на повышенные механические нагрузки, делают с металлическими редукторами.
Код прошивки
Для работы ниже приведённого скетча скачайте и установите библиотеки:
- flight-recorder.ino
// библиотеки для работы с датчиком 18B20#include <OneWire.h>#include <DallasTemperature.h>// библиотека для работы с SPI#include <SPI.h>// библиотека для работы с SD-картами#include <SD.h>// библиотека для работы I²C#include <Wire.h>// библиотека для работы с модулями IMU#include <TroykaIMU.h>// библиотека для работы с GPS устройством#include <TroykaGPS.h>// библиотека для работы с GPRS устройством#include <AmperkaGPRS.h> // serial-порт к которому подключён GPS-модуль#define GPS_SERIAL Serial1// serial-порт к которому подключён GPRS-модуль#define GPRS_SERIAL Serial3// пин подключения CS microSD-карты#define SD_CS_PIN 10// пин подключения датчика 18B20#define TEMP_18B20_PIN A1// задаём размер массива для времени#define MAX_SIZE_MASS 16// интервал времени записи данных на SD-карту#define INTERVAL_SD 1000// интервал времени передачи данных через СМС#define INTERVAL_SMS 600000// номер на который будем отправлять сообщение#define PHONE_NUMBER " 74959379992" // создадаём объект для работы с библиотекой OneWire OneWire oneWire(TEMP_18B20_PIN);// создадаём объект для работы с библиотекой DallasTemperature DallasTemperature sensor18B20(&oneWire); // создаём объект для работы с барометром Barometer barometer; // создаём объект класса GPS и передаём в него объект Serial1 GPS gps(GPS_SERIAL);// создаём объект класса GPRS и передаём в него объект Serial1 GPRS gprs(GPRS_SERIAL);// можно указать дополнительные параметры — пины PK и ST// по умолчанию: PK = 2, ST = 3// GPRS gprs(GPRS_SERIAL, 2, 3); // массив для хранения текущего времениchar strTime[MAX_SIZE_MASS];// массив для хранения текущей датыchar strDate[MAX_SIZE_MASS];// массив для хранения широты в градусах, минутах и секундахchar latitudeBase60[MAX_SIZE_MASS];// массив для хранения долготы в градусах, минутах и секундахchar longitudeBase60[MAX_SIZE_MASS]; // запоминаем текущее времяlong startMillisSD = millis();// запоминаем текущее времяlong startMillisSMS = millis(); // данные модулей для записи на карту SD String dataStringSD ="";// данные модулей для отправки СМС String dataStringSMS =""; // переменные для хранения данных с датчиков и модулейfloat temperature18B20;float temperatureBarometer;float pressureBarometer;float altitudeBarometer; String timeGPS; String dateGPS; String altitudeGPS; String latitudeBase60GPS; String longitudeBase60GPS; void setup(){// открываем последовательный порт для мониторинга действий в программе Serial.begin(115200);// выводим сообщение в Serial-порт о поиске карты памяти Serial.println("Initializing SD card...");// если microSD-карта не была обнаруженаif(!SD.begin(SD_CS_PIN)){// выводим сообщение об ошибке Serial.println("Card failed, or not present");}else{ Serial.println("Card initialized");} // начало работы с датчиком DS18B20 sensor18B20.begin();// установим разрешение датчика sensor18B20.setResolution(12);// выводим сообщение об удачной инициализации Serial.println("18B20 is OK"); // инициализация барометра barometer.begin();// выводим сообщение об удачной инициализации Serial.println("LPS331 is OK"); // открываем Serial-соединение с GPS-модулем GPS_SERIAL.begin(115200);// выводим сообщение об удачной инициализации Serial.println("GPS is OK");// открываем Serial-соединение с GPRS Shield GPRS_SERIAL.begin(115200);// включаем GPRS-шилд gprs.powerOn(); delay(1000);if(!gprs.begin()){// если связи нет, ждём 1 секунду// и выводим сообщение об ошибке; Serial.print("GPRS Begin errorrn");}// вывод об удачной инициализации GPRS Shield Serial.println("GPRS is OK");} void loop(){// считываем данные с модулей и датчиков getTemperature18B20(); getDataBarometer(); getDataGPS(); // собираем пакет данных для записи на SD-карту dataStringSD = dateGPS; dataStringSD ="t"; dataStringSD = timeGPS; dataStringSD ="t"; dataStringSD = latitudeBase60GPS; dataStringSD ="t"; dataStringSD = longitudeBase60GPS; dataStringSD ="t"; dataStringSD = temperature18B20; dataStringSD ="t"; dataStringSD = temperatureBarometer; dataStringSD ="t"; dataStringSD = pressureBarometer; dataStringSD ="t"; dataStringSD = altitudeBarometer; dataStringSD ="t"; dataStringSD = altitudeGPS; dataStringSD ="t"; // собираем пакет данных для СМС dataStringSMS = dateGPS; dataStringSMS =" "; dataStringSMS = timeGPS; dataStringSMS =" "; dataStringSMS = latitudeBase60GPS; dataStringSMS =" "; dataStringSMS = longitudeBase60GPS; dataStringSMS =" "; dataStringSMS = temperature18B20; dataStringSMS =" "; dataStringSMS = temperatureBarometer; dataStringSMS =" "; dataStringSMS = pressureBarometer; dataStringSMS =" "; dataStringSMS = altitudeBarometer; dataStringSMS =" "; dataStringSMS = altitudeGPS; dataStringSMS =" "; if(millis()- startMillisSD > INTERVAL_SD){// сохраняем данные с модулей на карту памяти saveSD();// запоминаем текущее время startMillisSD = millis();} if(millis()- startMillisSMS > INTERVAL_SMS){// отправляем данные СМС сообщениям sendSMS();// запоминаем текущее время startMillisSMS = millis();}} // функция считывания данных с GPS-модуля в глобальные переменныеvoid getDataGPS(){// если пришли данные с GPS-модуляif(gps.available()){// считываем данные и парсим gps.readParsing();// проверяем состояние GPS-модуляswitch(gps.getState()){// всё OKcase GPS_OK: gps.getTime(strTime, MAX_SIZE_MASS); gps.getDate(strDate, MAX_SIZE_MASS); gps.getLatitudeBase60(latitudeBase60, MAX_SIZE_MASS); gps.getLongitudeBase60(longitudeBase60, MAX_SIZE_MASS); timeGPS =(String)strDate; dateGPS =(String)strDate; latitudeBase60GPS =(String)latitudeBase60; longitudeBase60GPS =(String)longitudeBase60; altitudeGPS = gps.getAltitude();break;// ошибка данныхcase GPS_ERROR_DATA: dateGPS ="Error"; timeGPS ="Error"; latitudeBase60GPS ="Error"; longitudeBase60GPS ="Error"; altitudeGPS ="Error";break;// нет соединение со спутникамиcase GPS_ERROR_SAT: dateGPS ="No Sat"; timeGPS ="No Sat"; latitudeBase60GPS ="No Sat"; longitudeBase60GPS ="No Sat"; altitudeGPS ="No Sat";break;}}} // функция считывания данных с барометра в глобальные переменныеvoid getDataBarometer(){ temperatureBarometer = barometer.readTemperatureC(); pressureBarometer = barometer.readPressureMillibars(); altitudeBarometer = barometer.pressureToAltitudeMeters(pressureBarometer);} // функция считывания данных с датчика 18B20 в глобальную переменнуюvoid getTemperature18B20(){// считываем данные с цифрового термометра 18B20 sensor18B20.requestTemperatures(); temperature18B20 = sensor18B20.getTempCByIndex();} // функция записи данных с модулей на SD-картуvoid saveSD(){// создаём файл для записи File dataFile = SD.open("datalog.txt", FILE_WRITE);// если файл доступен для записиif(dataFile){// сохраняем данные dataFile.println(dataStringSD); Serial.println(dataStringSD);// закрываем файл dataFile.close();// выводим сообщение об удачной записи Serial.println("Save OK");}else{// если файл не доступен// выводим сообщение об ошибке Serial.println("Error opening file");}} // функция отправки данные с модулей СМС сообщениемvoid sendSMS(){char dataSMS[128]=""; dataStringSMS.toCharArray(dataSMS, 128); gprs.sendSMS(PHONE_NUMBER, dataSMS); Serial.println("SMS sent OK");}