Глава 6. Подключение и настройка внешних модулей
Подключение адаптера USB-COM
Как вы уже знаете, на плате полетного контроллера CRIUS АIOР уже есть встроенный адаптер USB-COM. Но вам все равно придется приобрести дополнительно автономный адаптер. Он неоднократно потребуется для настройки модулей OSD и телеметрии, GPS и Bluetooth. Также при помощи этого адаптера вы сможете менять прошивку большинства модулей OSD.
В продаже доступно большое количество разнообразных адаптеров USB-COM, но все они построены на базе одного из трех чипов: FTDI (FT232), Prolific (PL2303) или на ставшем популярным относительно недавно CH340G производства компании WCH Nanjing QinHeng Electronics. He рекомендуется приобретать адаптеры на основе PL2303, т. к. они не оснащены выходом DTR, который используется для сброса контроллеров Atmel при записи в них прошивки. Вам будет сложно использовать такой адаптер для перепрошивки, например, модулей OSD — придется вручную нажимать кнопку сброса в момент начала записи прошивки. Лучше всего использовать адаптер на основе оригинального чипа FT232, к нему подойдет драйвер, который вы уже установили при первом подключении полетного контроллера к компьютеру. Компания FTDI сейчас ведет борьбу с производителями дешевых китайских клонов микросхемы FT232, поэтому при обнаружении поддельной микросхемы работа драйвера может быть блокирована. Для адаптера на основе CH340G можно скачать драйвер и руководство по установке на сайте .
После того как драйвер адаптера будет успешно установлен, проверим работу адаптера USB-COM в режиме эха. Для этого соедините между собой выводы Тх и Rx адаптера. Теперь адаптер будет передавать данные сам себе и по кольцу возвращать их обратно в программу терминала.
Запустите программу Termite и выберите нужный порт, который появился в системе при подключении адаптера: Settings | Port Configuration | Port. Остальные настройки менять пока не надо, нажмите кнопку ОК. Теперь в нижней строке окна терминала введите любой текст латиницей и нажмите клавишу . Текст должен появиться в окне терминала дважды, как отправленный и принятый. Теперь адаптер и терминал готовы к использованию. Если эхо не работает, проверьте правильность настройки номера порта, появляется ли новый порт в списке устройств компьютера при подключении адаптера, мигают ли на плате адаптера светодиоды приема-передачи при их наличии. При подключении адаптера к другому порту USB ему может быть назначен новый номер порта.
Подключение источника питания
Несмотря на кажущуюся простоту, правильному подключению источника питания к контроллеру CRIUS AIOP v2 следует уделить особое внимание. Иначе вы рискуете столкнуться с непредсказуемым поведением контроллера, зависаниями и сбоями или испортить его.
Примечание
На плате контроллера АIOР версии 2 нет встроенного стабилизатора +5V! Подав на контроллер напряжение 12 В от силовой батареи, вы сожжете как минимум встроенный стабилизатор +3.3V.
Обратимся к схеме разводки цепей питания на рис. 6.1.
Рис. 6.1. Схема цепей питания полетного контроллера
Подать питание на контроллер можно тремя способами: через разъем USB (J1), с внешнего источника через отдельный разъем питания (J2) и с регулятора оборотов через разъем-гребенку для подключения моторов и сервомашинок (J3).
Стабилитрон D3 и самовосстанавливающиеся предохранители F1, F2 защищают контроллер от переполюсовки. Когда к одному из разъемов приложено напряжение обратной полярности, D3 оказывается включенным в прямом направлении и закорачивает цепь питания, что вызывает срабатывание соответствующего предохранителя. Для полного восстановления, проводимости предохранителя после срабатывания требуется минимум два часа. К сожалению, самовосстанавливающиеся предохранители срабатывают очень медленно, за доли секунды. Стабилитрон D3 открывается тоже не мгновенно. Поэтому вероятность поломки контроллера при переполюсовке весьма велика.
Диоды D1 и D2 развязывают питание от USB и с внешних разъемов между собой.
Питающее напряжение с разъемов J2 и J3 не может попасть на разъем USB через встречно включенный диод D1 и испортить порт компьютера. Но полностью доверять этой защите нельзя. Существует вероятность, что диод D1 будет пробит, в этом случае встречное напряжение будет приложено к порту USB вашего компьютера и может вывести хост-контроллер порта из строя. Поэтому одновременного подключения внешнего питания и порта USB лучше избегать.
Примечание
К сожалению, на диодах D1 и D2 падает питающее напряжение. Самовосстанавливающийся предохранитель также обладает сопротивлением 1,5–2 Ом. По измерениям автора, выполненным на разных платах, суммарное падение напряжения на диоде и предохранителе под рабочей нагрузкой составляет 0,33-0,35 В. И если подать на контроллер напряжение 5,00 В, то фактически контроллер будет питаться напряжением 4,65 В. При таком напряжении плата контроллера работает неустойчиво и склонна к непредсказуемым сбоям прямо в процессе полета. Поэтому напряжение источника питания должно лежать в пределах 5,2–5,6 В.
Для питания контроллера можно использовать преобразователь напряжения "step-down" с подстройкой или подобрать номинал постоянных резисторов на плате преобразователя. В специализированных источниках питания для коптеров обычно уже выставлено напряжение с нужным запасом. Если вы хотите использовать простейший линейный стабилизатор на микросхеме 78L05 или аналогичной, то включите в разрыв ее "земляного" вывода один-два маломощных кремниевых диода в прямом направлении, как показано на схеме рис. 6.2.
Рис. 6.2. Увеличение выходного напряжения линейного стабилизатора
Если ваш контроллер при питании от порта USB нестабильно работает, выдает странные показания датчиков в программу конфигурации или зависает, то можно попробовать закоротить перемычкой из тонкого провода диод D1, как показано на рис. 6.3. Это следует делать, только если вы четко понимаете, что и зачем делаете, и имеете достаточный опыт пайки миниатюрных SMD-компонентов! После такой переделки порт вашего компьютера останется без защиты от случайной подачи встречного напряжения с регуляторов или через разъем внешнего питания J2. Нужно будет особенно тщательно следить за тем, чтобы случайно не подключить одновременно питание от батареи и порт USB.
Рис. 6.3.
Закорачивание развязывающего диода D1 в цепи питания от порта USB
Подключение звукоизлучателя
Звукоизлучатели (beeper, buzzler) могут быть пассивными либо активными. Активные звукоизлучатели содержат собственно пассивный звукоизлучающий элемент и встроенный генератор звуковой частоты, который начинает работать при подаче питающего напряжения либо разрешающего логического уровня на управляющий вход. В авиамоделизме чаще всего применяются малогабаритные магнитодинамические излучатели, состоящие из мощного редкоземельного магнита, катушки и металлической мембранки. Иногда встречаются пьезоэлектрические звукоизлучатели, но обычно они менее эффективны: имеют меньшую громкость и требуют для работы большего напряжения, поэтому используются реже.
Примечание
Пассивные звукоизлучатели категорически запрещается подключать напрямую к выходу микроконтроллера, т. к. это может привести к перегрузке выхода по току и выходу контроллера из строя.
Оптимальным решением является использование готового активного звукоизлучателя, например, такого, как на рис. 3.15. Они стоят очень недорого, содержат встроенный генератор и транзисторный ключ, вход для управления логическим уровнем контроллера.
Имейте в виду, что звукоизлучатели разных типов могут иметь одинаковый корпус, поэтому однозначно отличить активный излучатель от пассивного можно не всегда. Кроме того, вам могут встретиться активные излучатели, рассчитанные на 12 В.
Прежде, чем подключать излучатель к контроллеру, подайте на его выводы питающее напряжение +5 В. Если он будет издавать звук достаточной громкости с частотой 1000 Гц, то все в порядке. Иначе придется искать другой бипер или делать простейшую схему звукового генератора. Контроллер генерирует только управляющий сигнал "вкл/выкл".
Простейший ключ для управления бипером можно сделать на основе биполярного или полевого транзистора, как показано на схеме рис. 6.4.
Рис. 6.4. Ключ на биполярном ( а ) и полевом ( б ) транзисторе
Подойдет любой маломощный биполярный n-p-n-транзистор или полевой N-канальный, затвор которого управляется логическими уровнями. Такие транзисторы еще называют "цифровыми".
Для активации функции бипера надо раскомментировать строку
#define BUZZER
После этого в интерфейсе конфигуратора появится опция BEEPER и можно будет назначить включение звукового сигнала на один из переключателей AUX. Если хотите, чтобы коптер коротким звуковым сигналом реагировал на изменение режимов, раскомментируйте строку
#define RCOPTIONSBEEP
По умолчанию вход бипера подключается к цифровому выходу D32 на плате контроллера. К сожалению, во второй версии платы Crius AIOP это не штыревой разъем, а контактная площадка на плате (рис. 6.5).
Рис. 6.5.
Дополнительные цифровые выходы (D32-D37) контроллера
Рядом расположены площадки нескольких других дополнительных выводов. Крайне неудобное и опасное решение: эти площадки отслаиваются после перегрева при пайке, их можно легко оторвать, неосторожно дернув за провод. Эстетизма конструкции и удобства при эксплуатации торчащие из платы провода тоже не добавляют.
Поэтому желательно перенести выход бипера на один из свободных цифровых выходов, снабженных штыревым разъемом. Например, если вы не планируете использовать выход D46 для управления затвором фотокамеры, то для переноса выхода бипера на вывод D46 найдите в прошивке строки
//#define OVERRIDE_BUZZERPIN_PINMODE pinMode (A2, OUTPUT);
//#define OVERRIDE_BUZZERPIN_ON PORTC |= 1<<2;
//#define OVERRIDE_BUZZERPIN_OFF PORTC &= ~(1<<2);
Раскомментируйте их и замените аргументы определений следующими значениями:
#define OVERRIDE_BUZZERPIN_PINMODE pinMode ( 46 , OUTPUT);
#define OVERRIDE_BUZZERPIN_ON PORTL |= 1<< 3 ;
#define OVERRIDE_BUZZERPIN_OFF PORTL &= ~(1<< 3 );
Подключать бипер к выводу D46 удобно, т. к. в штатном режиме на гребенке разъема присутствует питающее напряжение +5 В и бипер можно подключить стандартным трехжильным проводом от сервомашинки.
Подключение ультразвукового сонара
Ультразвуковой сонар хорошо подходит для автоматического включения посадочных огней (фонарей подсветки посадочной площадки) в темное время суток, поскольку огни нужно включать на высоте менее 3 м. Это именно та дистанция, на которой обычный модуль сонара начинает достаточно точно и стабильно работать. Такой способ управлять включением огней не является расточительным, т. к. модули сонаров HC-SR04 (рис. 6.6) стоят в Китае менее двухсот рублей. Эти сонары используются во множестве любительских проектов и продаются, как аксессуар для Arduino.
Рис. 6.6. Ультразвуковой сонар HC-SR04
К сожалению, поддержка сонаров SR04 не реализована в прошивке MultiWii 2.3, поэтому для использования сонара можно воспользоваться прошивкой MahoWii RC3. Для включения сонара раскомментируйте в прошивке строку
//#define SONAR_GENERIC_ECHOPULSE
Далее обратите внимание на строки
#define SONAR_PING 12 // D12 PIN that trigger measure
#define SONAR_READ 11 // D11 PIN to read response pulse
//#define SONAR_PING 9 // D9 PIN that trigger measure
//#define SONAR_READ 10 // D10 PIN to read response pulse
Здесь определяется, к каким выводам платы будет подключаться сонар. В нашем случае вывод сонара TRIG подключается к выводу D12 полетного контроллера, а вывод сонара ECHO — к выводу D11 полетного контроллера. Эти выводы расположены в гребенке для подключения регуляторов оборотов. На эту гребенку также выведено напряжение питания, поэтому сонар можно запитать прямо от этого разъема. Рекомендуется использовать именно эти выводы, т. к. выводы D9 и D10 понадобятся нам для управления подсветкой.
Имейте в виду, что при питании от USB из-за развязывающих диодов D1 и D2 (см. рис. 6.1) напряжение питания не будет поступать на гребенку J3. Чтобы сонар начал работать, питание должно поступать на плату через разъем J2 или от встроенного стабилизатора регулятора оборотов.
В процессе измерения полетный контроллер генерирует пусковой импульс на выводе SONAR_PING и ждет ответный импульс на входе SONAR_READ. Работающий сонар издает едва различимые щелчки с частотой несколько герц.
Наличие сонара может помочь стабилизировать высоту полета на малой высоте 1–3 м, когда барометр работает плохо. Для настройки в прошивке MahoWii предназначены две строки:
#define SONAR_MAX_DISTANCE 300
#define SONAR ERROR MAX 10
Первая строка определяет максимальную высоту в сантиметрах, когда показания сонара еще принимаются во внимание при удержании высоты. Как показывает практика, китайские сонары редко работают на расстоянии более 3 м. Вторая строка определяет максимальное количество ошибок измерения, после превышения которого показания сонара считаются недостоверными и происходит переключение на барометр.
Периодически в продаже встречаются бракованные сонары, страдающие большой погрешностью, либо вовсе неисправные. Поэтому при заказе в Китае желательно приобрести два-три экземпляра и тщательно проверить их работоспособность. Для проверки необходимо, чтобы на сонар поступало питающее напряжение при подключении пр USB. Плюсовой провод питания сонара временно подключите к штырьку "+" платы контроллера, слева от вывода "РРМ". После записи прошивки, в которой включен сонар, он должен начать издавать быстрые щелчки.
Запустите конфигуратор MultiWii WinGUI. В перечне подключенных сенсоров должен появиться сонар. Попробуйте направлять сонар на стены и потолок. В строке ALT интерфейса должна отображаться текущая дистанция до отражающей поверхности с погрешностью не более 2–3 см. Если значение дистанции периодически непредсказуемо меняется или имеет слишком большую погрешность, сонар лучше заменить.
Подключение светодиодной подсветки
Светодиоды используются для подсветки рамы коптера либо посадочной площадки при полетах в ночное время. Возможность управления светодиодами предусмотрена в прошивке. Для коммутации светодиодов понадобится изготовить простейший ключ на одном транзисторе, аналогичный ключу для коммутации звукоизлучателя. Но перед тем как начать изготовление коммутатора и подсветки, нам потребуется сделать некоторые расчеты.
Примечание
Светодиод — довольно капризный элемент схемы. Он рассчитан на строго определенный рабочий ток, протекающий через кристалл. Превышение этого тока приводит к перегреву кристалла и его быстрой деградации, что выражается в снижении яркости.
Главным параметром режима светодиода является именно рабочий ток, протекающий через кристалл, а не напряжение питания, подаваемое на схему. Дело в том, что в рабочем режиме падение напряжения на p-n-переходе светодиода почти не меняется при изменении питающего напряжения. Меняется только ток, протекающий через светодиод, и он легко может быть превышен при колебаниях напряжения. Поэтому в светодиодных светильниках используются специальные схемы-драйверы, стабилизирующие ток, а не напряжение. Но для наших целей вполне достаточно использовать ограничивающие ток резисторы, поскольку напряжение питания меняется в небольших пределах.
Падение напряжения на светодиоде зависит от цвета свечения и конкретной марки светодиода. Ориентировочные значения для расчета схем приведены в табл. 6.1.
Как следует из табл. 6.1, разброс падений напряжения может быть довольно существенным даже внутри одной цветовой группы, особенно для популярных синих светодиодов. Разброс напряжений между цветовыми группами еще больше. Поэтому если нет возможности получить точные данные из спецификации конкретной марки светодиодов, то лучше измерить падение напряжения самостоятельно, чтобы рассчитать схему наиболее точно и использовать светодиоды более эффективно.
Рабочий ток светодиодов зависит от паспортной мощности, и здесь желательно все же использовать паспортные данные, хотя бы для аналогичных светодиодов. Можно измерить рабочий ток и напряжение ваших светодиодов при помощи простейшей схемы, состоящей из переменного резистора номиналом 680 Ом, миллиамперметра и вольтметра (рис. 6.7).
Рис. 6.7.
Измерение параметров светодиода
Вместо двух измерительных приборов можно использовать один мультиметр, поочередно включая его в разрыв цепи для контроля тока и параллельно светодиоду для измерения напряжения. Установите движок переменного резистора в положение максимального сопротивления (по нашей схеме — вправо) и подайте питание.
Постепенно уменьшая сопротивление, следите за напряжением на светодиоде. Сначала оно будет нарастать пропорционально углу поворота резистора, а светодиод будет светиться все ярче. Но в какой-то момент напряжение почти перестанет нарастать при уменьшении сопротивления. Это будет означать, что светодиод вошел в рабочий режим. Верните движок переменного резистора на 1–2 градуса обратно.
Напряжение на светодиоде будет соответствовать предельному рабочему напряжению светодиода, а ток в цепи — предельному рабочему току. Для постоянной эксплуатации эти значения желательно уменьшить на 10 %, чтобы продлить срок службы светодиодов.
Для обычных массовых светодиодов с линзой диаметром 5 мм и белым или синим цветом свечения рабочим напряжением принято считать 3 В, а рабочий ток — порядка 12–15 мА. Для красных светодиодов аналогичной мощности рабочим напряжением считается 2 В при том же токе. Таким образом, номинал токоограничительного резистора в цепи будет зависеть от цвета применяемых светодиодов.
Итак, рассчитаем номинал гасящего резистора для линейки из последовательно включенных светодиодов (рис. 6.8).
Рис. 6.8. Линейка последовательно включенных светодиодов
На готовых светодиодных лентах может применяться отдельный резистор для каждого светодиода или пары светодиодов, но в самодельной подсветке мы используем один резистор для линейки из 3–4 светодиодов, так проще. Напряжение максимально заряженной литий-ионной батареи может достигать 4,2∙3 = 12,6 В. Но это напряжение под нагрузкой быстро снижается до рабочего 3,72∙3 = 11,16 В, поэтому при расчетах мы будем использовать усредненное значение 12 В.
Если взять светодиоды с падением напряжения ровно 3 В, то можно соединить последовательно 4 светодиода и вообще не использовать гасящий резистор. Но это не самое удачное решение, т. к. при случайном превышении напряжения питания ничем не ограниченный ток через светодиоды может нарастать нелинейно, что выведет из строя либо сами светодиоды, либо ключевой транзистор.
Допустим, у нас есть синие светодиоды с рабочим падением напряжения 3,25 В и рабочим током 18 мА. На трех последовательно соединенных диодах падает напряжение 3,25∙3=9,75 В. Следовательно, на резисторе должно падать напряжение 12 — 9,75 = 2,25 В. По закону Ома
R = U/I,
следовательно, R = 12/18∙10-3 ~= 670 Ом. Для светодиодов другого цвета или с другим рабочим током расчет сопротивления надо повторить.
Окончательная схема коммутатора, управляющего несколькими линейками светодиодов, показана на рис. 6.9.
Рис. 6.9.
Схема коммутатора для управления светодиодами
Количество линеек зависит от конструкции вашей подсветки. Разумеется, при использовании готовых светодиодных полос они просто подключаются вместо линеек, без гасящих резисторов. Ключевой транзистор может быть любым подходящим по суммарному рабочему току. При использовании мощных светодиодов рекомендуется применять полевые MOSFET-транзисторы, управляемые логическим уровнем TTL на затворе, с низким внутренним сопротивлением, чтобы избежать их нагрева и потерь энергии. Например, можно использовать применяемые в материнских платах компьютеров ключевые TV-канальные транзисторы SSM9915H (АР9915Н) или IRL3803. Для управления маломощными светодиодами можно применить обычный биполярный n-р-n-транзистор, например С945.
Теперь внесем необходимые изменения в исходный код прошивки. Найдите и раскомментируйте следующие строки:
#define LED_FLASHER
#define LED_FLASHER_DDR DDRB
#define LED_FLASHER_PORT PORTB
#define LED_FLASHER_BIT PORTB4
Первая строка активирует функцию управления подсветкой. Следующие три строки назначают порт микроконтроллера и конкретный вывод порта, к которому мы будем подключать коммутатор. В данном случае изменения не потребуются, т. к. вывод назначен на линию 4 порта В, а это вывод D10 на плате полетного контроллера CRIOUS АIOР, расположенный на гребенке для подключения регуляторов. Поэтому коммутатор подсветки можно подключить обычным трехжильным проводом для сервомашинок. Напомним, что к выводам D11 и D12 у нас подключен сонар, а к выводу D46 — бипер.
Строка //#define LED_FLASHER_INVERT инвертирует выходной сигнал.
Следующие строки определяют свечение светодиодов в различных режимах:
#define LED_FLASHER_SEQUENCE 0b00000000
#define LED_FLASHER_SEQUENCE_ARMED 0b00000101
#define LED_FLASHER_SEQUENCE_MAX 0b11111111
#define LED_FLASHER_SEQUENCE_LOW 0b000000000
В каждой строке присутствует восьмибитное двоичное число. Это последовательность вспышек светодиода. Последовательность циклически повторяется. Ноль соответствует погашенному светодиоду, единица— включенному. Длительность одной вспышки 0,125 с, полный цикл 8∙0,125 = 1 секунда. Например, последовательность 0b00000101 означает, что светодиод дает две короткие вспышки длительностью 0,125 с циклически раз в секунду. Последовательность 0b11111111 соответствует постоянно горящему светодиоду, а 0b000000000 — полностью погашенному. Вы можете задавать произвольную последовательность для любого режима.
Первая строка соответствует режиму DISARMED (питание подано, моторы не активны). По умолчанию подсветка погашена. Изменив последовательность на 0b00000001, можно заставить подсветку вспыхивать раз в секунду, напоминая, что питание подключено. В режиме ARMED светодиод по умолчанию вспыхивает дважды.
После активации функции подсветки в панели конфигуратора становятся доступны для настройки еще два параметра, LEDMAX и LEDLOW, которыми можно управлять при помощи переключателей AUX. Разумеется, эти режимы взаимно противоположные и не должны включаться одновременно. Но их можно включать параллельно с другими режимами и задать произвольные последовательности мигания, изменив последовательность двоичных битов.
Подключение посадочных огней
Посадочные огни предназначены для подсветки посадочной площадки при полетах в темное время суток. Обычно они представляют собой несколько мощных белых светодиодов, направленных вертикально вниз. Схема коммутатора для их включения и порядок расчета режима светодиодов идентичны описанным выше.
По умолчанию в прошивке для управления посадочными огнями назначен вывод 37 в виде контактной площадки на печатной плате. Для удобства подключения коммутатора мы переназначим выход на вывод D9 на штыревой гребенке. Найдите в тексте прошивки строки
//#define LANDING_LIGHTS_DDR DDRC
//#define LANDING_LIGHTS_PORT PORTC
//#define LANDING LIGHTS_BIT PORTC0
Раскомментируйте их и внесите следующие изменения:
#define LANDING_LIGHTS_DDR DDRH
#define LANDING_LIGHTS_PORT FORTH
#define LANDING_LIGHTS_BIT PORTH6
После активации этих строк в интерфейсе конфигуратора MultiWii WinGUI появляется опция LLIGHTS, позволяющая включать посадочные огни любым тумблером AUX. Поскольку каналов AUX мало, можно сделать включение посадочных огней инверсным по отношению к режиму удержания высоты BARO (ALTHOLD). Когда коптер взлетает или садится, режим удержания высоты отключен и горят посадочные огни.
Подключение приемника по шине S-BUS
Для подключения выхода приемника S-BUS ко входу RX1 порта SERIAL1 необходимо изготовить простейший инвертор сигнала на одном n-p-n-транзисторе. Это может быть любой маломощный n-p-n-транзистор, например самый распространенный С945 или ВС337. Компоненты схемы (рис. 6.10) можно не монтировать на плате, а спаять детали вывод к выводу и поместить их в термоусадочную трубку. Питание на инвертор подается с разъема приемника или контроллера.
Рис. 6.10.
Схема инвертора сигнала для подключения приемника по S-BUS
В файле конфигурации прошивки найдите секцию SBUS RECEIVER и раскомментируйте строки
#define SBUS
#define SBUS_SERIAL_PORT 1
#define SBUS_MID_OFFSET 988
Последняя строка потребуется, если значение среднего положения в сигнале с выхода приемника отличается от стандартного.
К сожалению, поскольку формат сигнала S.BUS Futaba является предметом авторского права, производителям других приемников приходится использовать "футабоподобные" форматы сигнала, которые не полностью соответствуют спецификации Futaba. В прошивку MultiWii 2.3 внесены существенные изменения и дополнения, но по-прежнему нет гарантии, что полетный контроллер сможет декодировать сигнал вашего приемника, если это не приемник Futaba. В крайнем случае, придется прибегнуть к обычному способу подключении.
Подключение и настройка адаптера Bluetooth
Новый модуль Bluetooth нужно проверить и настроить до подключения к полетному контроллеру. Несмотря на кажущуюся простоту, настройка часто вызывает затруднения даже у опытных пользователей, поэтому разберем ее подробнее.
Подключите модуль Bluetooth к адаптеру USB-COM. Обратите внимание, что линии данных надо подключать перекрестно: Тх — > Rx, Rx — > Тх. Питание на модуль также подайте с разъема адаптера.
Большинство модулей Bluetooth для конфигурирования необходимо перевести в служебный режим (режим модема, AT-mode). В этом режиме модуль перестает работать по радиоканалу и готов принимать команды через последовательный порт. Некоторые модификации модулей не требуют перевода в служебный режим и всегда готовы к приему команд. Скорость обмена данными с терминалом должна совпадать с ранее установленной в настройках модуля. По умолчанию, с фабрики, модули обычно настроены на скорость 9600 бод. Но иногда встречаются модули, настроенные на другую скорость. Заказав модуль в интернет-магазине, вы не можете быть абсолютно уверены, какую версию модуля получите. Поэтому обычно приходится действовать методом проб и ошибок.
Наиболее распространенными и часто покупаемыми являются модули НС-06 и НС-05. Они состоят из двух микросхем (рис. 6.11), одна из них — собственно сам трансивер Bluetooth, а вторая — это микросхема памяти. Визуально они неразличимы, т. к. аппаратная часть у них одинаковая, отличается только прошивка.
Рис. 6.11.
Два варианта расположения управляющего входа KEY
НС-06 может работать только в режиме slave (ведомый), т. е. только отвечать на приказ установить связь, поступающий от старшего ведущего устройства — компьютера или смартфона, и имеет очень ограниченную систему команд. Модуль НС-05 может работать как в режиме master (ведущий), так и в режиме slave. Система команд этого модуля намного обширнее и отличается по синтаксису от НС-06. Также отличается и процедура перевода модуля в режим настройки. Если модули нужны вам только для связи с коптером, постарайтесь приобрести именно НС-06.
Примечание
Для связи с коптером нам нужен только режим ведомого, slave. He покупайте модули с индексом "М" в названии (НС-06-М, НС-07-М). Это модули, которые на заводе жестко запрограммировали в прошивке в режим master. Для смены режима потребуется достаточно хлопотная процедура замены прошивки, программатор, работающий через аппаратный LPT-порт, и специальные программы.
В последнее время встречаются более новые модули НС-07, состоящие из одной микросхемы, объединяющей в себе процессор и память. Функционально модули НС-07 полностью совместимы с НС-06, поэтому все, что касается системы команд и настройки НС-06, применимо и к НС-07. Существуют и более экзотические, с точки зрения массовых продаж, модули: НС-08 и НС-09. Они встречаются редко, стоят дороже и никакого практического смысла для наших задач в них нет.
Для удобства использования модули обычно припаивают на плату расширения, содержащую стабилизатор питания 3,3 В, один или два светодиода индикации режима и разъем. Если вы приобрели только модуль, плату расширения можно докупить отдельно или сделать самому. Не забудьте поставить на плату стабилизатор 3,3 В!
Настройка модулей НС-06 и НС-07
Итак, изначально мы предполагаем, что в наших руках модуль НС-06 (07). Если у него новая версия прошивки Linvorl.8, то для перевода в режим приема АТ-команд не потребуется соединять вывод KEY(26) (см. рис. 6.11) с напряжением питания +3,3 В.
Для настройки мы будем использовать программу терминала Termite 3.0. Откройте окно настроек терминала кнопкой Settings (рис. 6.12).
Рис. 6.12.
Окно настройки терминала
В группе параметров Port configuration выберите нужный порт и укажите скорость 9600. Больше ничего здесь не меняйте. В группе параметров Transmitted text установите переключатель Append nothing и флажок Local echo. Остальные настройки менять не надо, нажмите кнопку ОК.
В строку ввода введите заглавными латинскими буквами AT и нажмите клавишу . Если скорость совпадает и модуль готов к приему АТ-команд, он ответит ОК. Если ответа нет, попробуйте задать скорость обмена 115200. Если ответа по-прежнему нет, попробуйте по порядку перебрать все доступные варианты скорости.
Если же и это не помогло, следует отключить питание, перевести модуль в режим модема, соединив вывод (26) с выводом (12), и включить питание. Теперь снова попробуйте получить ответ на команду AT на скорости 9600 или 115200.
Когда модуль ответит, приведен в табл. 6.2.
Рекомендуем задать интуитивно понятное имя, которое будет отображаться на смартфоне или компьютере при установлении связи и выборе устройства. Например, можно назвать модуль COPTER или QUADRO. Командой at+pin задайте пин-код (пароль) к вашему модулю. Злые хакеры вряд ли попытаются перехватить управление вашим коптером в полете, поэтому пин-код должен легко запоминаться. И, наконец, задайте скорость обмена данными в радиоканале. По умолчанию в прошивке MultiWii принята скорость 115 200, это максимально допустимое значение. Если вы хотите задать другую скорость обмена, укажите ее не только в настройках Bluetooth, но и в прошивке, в строке
#define SERIAL0_COM_SPEED 115200
а также в настройках конфигураторов MultiWiiConf и MultiWii WinGUI. Как только вы измените скорость модуля, он перестанет отвечать на старой скорости, и нужно будет изменить скорость в настройках терминала. Убедившись, что модуль отвечает на новой скорости, можно отключить питание модуля, убрать перемычку между выводами (26) и (12), и снова включить питание. Теперь модуль готов к привязке с мобильным устройством или компьютером.
Настройка модулей НС-05
Для перевода модуля НС-05 в режим настройки необходимо соединить вывод (34) с выводом (12) и подать питание (см. рис. 6.11). В режиме настройки модуль всегда будет доступен на скорости 38 400 бод независимо от того, какая скорость была задана ранее для рабочего режима.
В настройках терминала надо выбрать порт USB-COM адаптера, скорость 38400 и опцию Append CR-LF. Остальные настройки не меняем. Если вам продали действительно модуль НС-05 и он правильно подключен, то он обязательно должен ответить ОК на команду AT.
Задайте имя модуля командой АТ+NАМЕ=, где в треугольных скобках введите нужное вам имя. Проверить, как оно записалось, можно командой AT+NAME?.
Задайте пин-код для доступа командой AT+PSWD=<1234>, где в треугольных скобках введите нужный пин-код. Проверить пин-код можно командой AT+PSWD?.
Проверьте рабочую скорость командой AT+UART?. Если задана неправильная скорость, смените ее командой AT+UART=,,, где в первых скобках скорость из стандартного ряда: 4800, 9600, 19200, 38400, 57600,115200. Более высокие скорости доступны в модуле, но нам не потребуются. Остальные два параметра в нашем случае обязательно нулевые. Например, команда AT+UART=115200,0,0 задаст рабочую скорость 115 200 бод.
Модуль НС-05 может работать в режиме ведущего (master), т. е. инициировать соединение со своей стороны. Но нам нужен модуль, который работает в режиме ведомого (slave), т. е. устанавливает связь по внешнему запросу ведущего. Поэтому командой AT+ROLE=0 его надо перевести в режим ведомого.
Установка связи модуля с компьютером
Теперь подключим модуль Bluetooth к контроллеру и свяжем его с компьютером. Модуль подключается к разъему, обозначенному на плате, как "SERIAL0". Имейте в виду, что подключение по USB и Bluetooth не могут работать одновременно, т. к. используют один и тот же аппаратный порт контроллера. Для соединения по USB нужно отключить разъем Bluetooth и наоборот.
Ноутбуки оснащены встроенным Bluetooth, а для настольного компьютера нужно приобрести внешний USB-адаптер и установить для него драйвер в соответствии с прилагаемой инструкцией. На компьютере под управлением Windows 7 нажмите кнопку Пуск и последовательно выберите команды Устройства и принтеры | Добавление устройства. Начнется поиск доступных беспроводных устройств. Могут быть найдены самые разные Устройства в радиусе доступности, включая телефоны и компьютеры ваших соседей. Примерно через 10–15 с вы увидите в списке устройство Bluetooth, которое называется, как ваш модуль квадрокоптера. Щелкните на нем дважды, выберите Ввести код образования пары и введите пин-код модуля. Устройство с именем вашего коптера появится в списке устройств Windows и начнется установка драйверов последовательного порта Bluetooth. После этого в окне диспетчера устройств появится новый порт либо два порта (рис. 6.13).
Рис. 6.13. Виртуальные порты Bluetooth
Обычно первый это служебный порт адаптера Bluetooth в компьютере, а второй соответствует виртуальному порту квадрокоптера. Теперь вы можете подключать программы конфигуратора по беспроводному каналу точно так же, как по проводу.
Связывание с мобильным телефоном или планшетом под управлением Android производится в соответствии с меню конкретного мобильного устройства.
Подключение радиомодема
Адаптеры Bluetooth имеют небольшую дальность действия, в лучшем случае несколько десятков метров на открытой местности. Если у вас нет аппаратуры радиоуправления со встроенным каналом телеметрии, но хочется, чтобы на смартфоне или ноутбуке велись логи (журналы) и отображалась телеметрия на протяжении всей дистанции полета, то придется использовать радиомодем (удлинитель канала, радиолинк). Решение задачи облегчается тем, что существует простое и относительно недорогое оборудование для организации так называемого "прозрачного" последовательного канала. В этом случае с точки зрения пользователя обмен данными выглядит так, будто полетный контроллер и устройство отображения связаны проводами напрямую, а не разделены километровой дистанцией.
Для организации радиоканала телеметрии мы будем использовать популярные радиомодемы 3DR Radio производства компании 3D Robotics. На сегодняшний день это, пожалуй, лучшее решение по сочетанию цены, качества связи и простоты эксплуатации. Рекомендуем на начальном этапе не экспериментировать с самодельными модемами на основе модулей HM-TRP, а приобрести готовый набор, изображенный на рис. 6.14.
Рис. 6.14.
Набор радиомодемов 3D Radio
Покупка отдельных модулей-полуфабрикатов и антенн не даст вам экономии средств по сравнению с ценой готового набора, а потери времени на программирование модулей и изготовление модемов будут большими и бессмысленными. Модемы в этом наборе уже настроены и готовы к работе "из коробки". В наборе также имеются антенны и соединительные провода. Наборы изготавливаются на разные рабочие частоты: 433, 868, 915 МГц. В нашей стране разрешенным является диапазон 433 МГц.
Один из модемов предназначен для монтажа на борту коптера, имеет разъем для подключения к контроллеру и обозначен словом "Air". Второй модем наземный, оснащен разъемом USB, при помощи которого подключается не только к ноутбуку, но и смартфону или планшету с операционной системой Android. Ваш смартфон или планшет должен иметь функцию разъема OTG. Это тот же самый USB-разъем, через который вы заряжаете гаджет или подключаете его к компьютеру, но он может работать еще и как активный порт для подключения внешних устройств.
В комплекте со смартфоном или планшетом должен поставляться провод-адаптер OTG (рис. 6.15), его можно также купить в магазине мобильных аксессуаров. Разумеется, предварительно надо удостовериться, что ваше мобильное устройство поддерживает OTG.
Рис. 6.15.
Провод-адаптер для подключения внешних устройств по OTG
В продаже встречаются также варианты модемов без разъема USB, но это менее удобно, т. к. для подключения к компьютеру или мобильному устройству придется использовать внешний адаптер USB-COM.
Поскольку в продаже часто встречаются китайские клоны популярных продуктов, сразу после покупки рекомендуем проверить антенну для бортового модема и убедиться, что она предназначена именно для диапазона 433 МГц и вам не продали антенну от бытового Wi-Fi-роутера на 2,4 ГГц (внешне они выглядят одинаково).
Осторожно снимите чехол антенны с основания. Содержимое антенны должно выглядеть так, как показано на рис. 2.15. В крайнем случае, можно самостоятельно изготовить активную часть антенны. Она представляет собой спираль из 19 витков медного провода 00,8 мм, навитого на оправку диаметром 3,5 мм.
Подключение модемов к компьютеру, проверка и настройка
Подключите антенны к модемам. Включите наземный модем в разъем USB стационарного компьютера. Внутри модема может быть установлена микросхема одного из двух адаптеров USB-COM: FT232 или СР2102. В первом случае драйвер адаптера уже установлен на вашем компьютере, поскольку вы подключали полетный контроллер для настройки. Во втором случае драйвер для адаптера СР2102 необходимо установить отдельно. Скачайте архив драйвера с сайта компании Silicon Labs. После установки драйвера и подключения модема в системе появится новый виртуальный порт СОМ. Запомните его номер.
Модемы оснащены двумя светодиодами, зеленым и красным. Мигающий зеленый означает, что модем находится в состоянии поиска связи со вторым, парным модемом. Постоянно горящий зеленый светодиод означает, что парный модем найден и канал связи открыт. Красный светодиод вспыхивает при передаче данных и горит постоянно при записи новой прошивки в память модема.
Подайте напряжение питания +5 В на бортовой модем. Через несколько секунд модемы должны найти друг друга и зеленые светодиоды зажгутся постоянно. Если это не произошло, не волнуйтесь. В этом случае понадобится небольшая дополнительная настройка.
Итак, если зеленые светодиоды горят постоянно, соедините между собой выводы Тх и Rx бортового модема. Таким образом, он будет по кольцу возвращать обратно все, что ему передали, т. е. работать в режиме эха. Запустите программу терминала Termite 3.0 для работы с последовательным портом, которую использовали при настройке адаптера Bluetooth. В настройках терминала выберите порт, к которому подключен модем, скорость 57 600, а также опции Append CR-LF и Local Echo. Теперь введите любой текст в строке передачи и отправьте его. Он должен отобразиться в окне терминала и тут же повториться в следующей строке. В принципе, после этой проверки модемы можно начинать эксплуатировать. Но по умолчанию выходная мощность модемов установлена вполовину от максимальной. Этого достаточно для близких полетов, но в сложных помеховых условиях или на дальних дистанциях желательно установить полную мощность, 100 мВт. Также может потребоваться сменить идентификатор пары модемов, если в районе ваших полетов могут присутствовать аналогичные модемы.
Для настройки модемов применяется специальный конфигуратор 3DRRadio Config. Он позволяет настроить не только модем, подключенный к порту, но и удаленный модем, используя радиоканал. Разумеется, для удаленного конфигурирования второго модема канал должен быть установлен. Поэтому, если не совпадают частоты или скорости обмена модемов, придется конфигурировать их по отдельности, подключая бортовой модем к компьютеру при помощи внешнего адаптера USB-COM. Архив конфигуратора можно скачать на сайте автора программы по адресу .
Конфигуратор не требует установки. Модем должен быть подключен к порту USB до запуска программы, чтобы соответствующий порт появился в списке выбора. На второй модем просто подайте питание +5 В. Если при этом зеленые светодиоды горят непрерывно, второй модем доступен конфигуратору через радиоканал. Выбрав нужный порт и скорость по умолчанию 57600, нажмите кнопку Load Settings. Начнется считывание конфигурации модемов. Вообще, имейте в виду, что общение конфигуратора с модемами всегда происходит неторопливо и нужно проявлять терпение, дожидаясь окончания всех процедур. В наборе настроек нас интересуют, в первую очередь, следующие параметры (рис. 6.16).
Рис. 6.16. Утилита конфигурирования модемов 3DRadio Config
• Baud — скорость обмена с внешними устройствами, округленно. Так, опция 57 в списке соответствует скорости 57 600 бод.
• Air Speed — скорость передачи данных по радиоканалу. Эта скорость обычно устанавливается выше, чем скорость внешнего обмена, т. к. по радиоканалу передаются еще и служебные данные.
• Net ID — идентификатор вашей радиосети, диапазон значений 0-500. Настоятельно рекомендуется сменить его на любой другой из списка, чтобы избежать случайного конфликта с аналогичными модемами. По этому номеру модемы опознают свою пару.
• Тх Power — мощность передатчика в dBm. Для тестирования канала на близких дистанциях рекомендуется использовать малую мощность, затем установить максимальную.
• ЕСС — Error Correcting Code, режим корректировки ошибок. Каждый пакет данных передается дважды, что вдвое сокращает пропускную способность радиоканала, но существенно снижает количество ошибок. Если канал используется только для передачи телеметрии, то галочку можно снять.
• Mavlink — специальный режим расширенной поддержки протокола Mavlink, применяемого в проекте Ardupilot. В нашем случае, когда применяется прошивка MultiWii, этот режим бесполезен, поэтому рекомендуется выбрать опцию Raw Data.
Остальные опции, особенно рабочие частоты Min Freq и Max Freq, менять не надо. Пункт меню Terminal предназначен для ручного ввода служебных команд модема и в нашем случае не используется.
Настройки, сделанные для первого модема, копируются для второго нажатием кнопки Copy Required Items to Remote. Затем нажмите кнопку Save Settings и дождитесь окончания записи. Если второй модем недоступен для записи через радиоканал, то сперва сконфигурируйте первый модем и запомните его настройки. Затем подключите через внешний адаптер USB-COM второй модем и повторите процесс настройки. Не забывайте, что выводы Тх и Rx адаптера и модема следует соединять перекрестно: Тх — > Rx, Rx — > Тх.
Пункт RSSI предназначен для проверки качества радиоканала. Здесь мы видим график уровней принимаемого сигнала и отношения "сигнал/шум" для обоих модемов. Измерение RSSI работает с накоплением, поэтому график начинает отображаться спустя 3–4 с после нажатия кнопки Connect. В течение этого времени не следует вращать колесико мыши и масштабировать окно графика, это может вызвать сбой программы.
Внимание!
Во время построения графика между модемами идет обмен информацией в служебном режиме, поэтому строго рекомендуется прекращать сеанс нажатием кнопки Disconnect и обязательно дождаться окончания сеанса связи, когда красный светодиод перестанет мигать. В противном случае возможно "зависание" модема вплоть до необходимости перепрошивки.
Подключение наземного модема к мобильным устройствам
Модемы 3DR Radio без труда подключаются к мобильным устройствам на ОС Android. Достаточно лишь установить приложение EZ-GUI Ground Station. Вместе с этим приложением устанавливаются необходимые драйверы Linux для поддержки последовательного порта через USB. Подключите модем к устройству через разъем USB/OTG. Появится приглашение запустить программу и ассоциировать ее с этим устройством для автозапуска. Если вы не планируете использовать другие программы, можно установить флажок автозапуска.
Далее необходимо внести некоторые изменения в настройки программы. Перейдите в меню Конфигурации | Настройки. Выберите опцию USB/Последовательный порт. Ниже оставьте по умолчанию универсальный драйвер, если не уверены, на какой микросхеме выполнен адаптер порта в вашем модеме.
Скорость передачи данных выберите соответствующую настройкам вашего модема. В нашем случае это 57600. Далее при помощи стрелки в правом верхнем углу пролистайте настройки до страницы Дополнения и поставьте флажок Поддержка 3DR Radio. Выйдите из программы для сохранения настроек и перезапуска. Теперь мобильное приложение настроено для работы через радиомодем. Когда связь с бортовым модемом установлена, в меню Настройки начинает работать раздел 3DR RADIO КОНФ. В этом разделе можно скачать текущие настройки модемов и поменять их, что весьма удобно, если нужно изменить мощность модема или идентификатор сети в полевых условиях.
Следует отметить, что в продаже встречается вариант конструкции наземного модема, вместо адаптера USB-COM, оснащенного стандартным модулем Bluetooth, смонтированным с обратной стороны платы модема. В этом случае модем может связываться с мобильным устройством или компьютером по Bluetooth. Также есть возможность соединения через последовательный порт. Для этого на плате модема есть перемычка, по которой подается либо отключается питание на модуль Bluetooth.
Подключение бортового модема к полетному контроллеру
Наборы модемов могут поступать в продажу с различными вариантами соединительных проводов и вовсе не обязательно разводка проводников на 6-контактном разъеме типа MiniMOLEX совпадет с разводкой порта SERIAL0 на плате CRIUS АIOР. Пользуясь тонкой швейной иглой, осторожно приподнимите фиксирующий лепесток разъема и вытащите контакт из посадочного места. Затем аккуратно вставьте контакт на новое место. Будьте осторожны, не сломайте фиксирующий Лепесток в ячейке разъема.
В прошивке нужно установить правильную скорость обмена данными. Найдите строку
#define SERIAL0_COM_SPEED 115200
и замените значение скорости тем значением, которое задано в настройках модема.
Такую же скорость надо задать в интерфейсе программы MultiWii WinGUI, если вы используете ноутбук.
Примечание
Не забывайте, что теперь даже по проводу USB контроллер будет соединяться с компьютером на новой скорости.
Подключение модема к порту SERIAL3 полетного контроллера
Если вы используете прошивку MahoWii, то можете подключить модем к порту SERIAL3, тем самым освободив порт SERIAL0/FTDI для других нужд. Найдите в прошивке, в начале файла config.h, следующие строки и раскомментируйте их:
#define TELEMETRY_FRSKY
#define TELEMETRY_FRSKY_SERIAL 3
#ifdef TELEMETRY_FRSKY
#define SERIAL3_COM_SPEED 57600
#endif
Строго говоря, этот фрагмент кода подразумевает подключение модуля телеметрии FrSKY, но также работает с модемами 3DR Radio. Через порт SERIAL3 в данном случае при помощи радиомодема можно работать с программами MultiWii WinGUI и EZ-GUI Ground Station точно так же, как и через порт SERIAL0.
В нашем примере в настройках прошивки указана скорость 57 600 бод, она может быть другой, но в любом случае должна совпадать со скоростью обмена в настройках радиомодема.
Подключение и настройка приемника GPS
Подключение стандартного фабричного модуля GPS мы рассмотрим на примере двух популярных приемников: CRIUS NEO-6M v3.0 с обычной керамической антенной (рис. 6.17) и CRIUS NEO-6M v2.0 с активной керамической антенной (рис. 6.18). Оба эти приемника изготовлены на основе модуля u-blox NEO-6M, содержат внешнюю энергонезависимую память EEPROM 32k для хранения текущих настроек и перезаряжаемую литиевую батарейку в качестве резервного источника питания для хранения альманаха. Светодиод FIX, расположенный, к сожалению, с обратной стороны платы, своим миганием сообщает, что приемник вошел в режим захвата спутников 2D/3D Fix.
Рис. 6.17. Приемник CRIUS NEO-6M v3.0 с обычной антенной
Рис. 6.18. Приемник CRIUS NEO-6M v2.0 с активной антенной
Приемник с активной антенной имеет меньшие габариты и вес, но обеспечивает лучшую чувствительность. По наблюдениям автора, уровень принимаемого сигнала выше на 30–40 %.
Вопрос резервного хранения данных очень важен для этих приемников. Первая версия приемника не содержала EEPROM для хранения настроек, поэтому при разряде резервного источника все настройки терялись. Это было очень неудобно, зачастую уже на поле выяснялось, что все настройки утрачены и использовать приемник невозможно. Сейчас эта проблема снята, резервный источник используется только для хранения данных альманаха. Емкость этой батарейки всего 5 мА∙ч, полного заряда хватает для хранения альманаха в течение 3–4 дней. Если батарейка разряжена, то для полного заряда требуется подавать питание на приемник минимум в течение 3-х часов. Если не поддерживать заряд батарейки дома, то во время полетов она успевает зарядиться максимум на 20–30 %, этого хватает, чтобы хранить альманах и обеспечивать быстрый "горячий" старт в промежутке между отдельными полетами в течение нескольких часов. Впрочем, продолжительность "холодного" старта на открытой местности обычно не превышает 40–60 с, поэтому теперь потеря данных альманаха — не проблема.
Прежде всего, скачайте с сайта производителя и установите самую свежую версию программы u-Center для настройки и проверки приемника. Скачивание доступно по адресу . Во время подготовки книги была доступна версия 8.16.
Подключение приемника к компьютеру
Подключите приемник к вашему адаптеру USB-COM, соблюдая правильную полярность питания и соединяя линии Тх и Rx приемника и адаптера перекрестно: Тх —> Rx, Rx —> Тх. Затем подключите приемник к компьютеру. В зависимости от версии прошивки приемника, с большой долей вероятности может случиться досадное недоразумение: Windows распознает ваш приемник, как трекбол Microsoft BallPoint, и установит соответствующий драйвер. В этом случае поток данных с приемника будет восприниматься операционной системой, как управляющие сигналы трекбола. При подключенном приемнике указатель мыши будет хаотично прыгать по экрану, периодически имитируя нажатия кнопок. Чтобы устранить это недоразумение, внесите небольшое изменение в реестр Windows.
Запустите системную утилиту Regedit, откройте ветку реестра
HKEY_LOCAL__MACHINE\SYSTEM\CurrentControlSet\services\sermouse
и измените значение параметра start с з на 4. Затем перезагрузите компьютер. После перезагрузки в системе после подключения адаптера и приемника должен быть виден только виртуальный СОМ-порт.
По умолчанию в приемниках NEO-6M установлена скорость обмена данными 9600 бод и протокол выходного потока данных NMEA. Но в приемниках, купленных с рук или настроенных продавцом под конкретное устройство, эти параметры могут быть другими.
Подключите приемник к компьютеру и запустите программу u-Center (рис. 6.19).
Рис. 6.19. Главное окно программы u-Center
В меню Receiver | Port выберите нужный последовательный порт. Далее в меню Receiver поставьте галочку напротив строки Autobauding. Если скорость обмена заранее неизвестна или изменилась в процессе настройки, программа сама подберет правильную скорость. Далее выберите версию вашего приемника: Receiver | Generation | u-blox 6.
Как правило, после этого соединение с приемником устанавливается автоматически, о чем говорит мигающий зеленым цветом значок в строке состояния внизу окна, а в окнах программы появляется отображение текущих данных.
Первый старт приемника может происходить очень долго, даже при хорошей видимости спутников. В некоторых случаях захват спутников 3D Fix может не произойти вообще. Не волнуйтесь, это нормально. Далее мы разберемся, как загрузить в приемник данные для холодного старта с внешнего сервера.
Примечание
Первое, что нужно сделать после установления связи с новым приемником, — сохранить в файл его текущую конфигурацию на случай, если вы что-то случайно испортите в процессе настройки или экспериментов.
Выберите меню Tools | GNSS Configuration и нажмите кнопку GNSS > File. Текущие настройки будут прочитаны из приемника и сохранены в виде текстового файла. В дальнейшем этот файл можно редактировать, нажав кнопку Edit, если вы хорошо изучили спецификацию приемников u-blox и хорошо понимаете, что делаете. Готовые файлы настроек для специальных случаев можно часто встретить на форумах. Эти настройки нужны при работе с пользовательскими версиями прошивок или дополнительными устройствами наподобие адаптера для подключения приемника по шине I2С.
Сохраненную конфигурацию можно выгрузить в приемник из файла нажатием кнопки File > GNSS. Если при этом установлена галочка сохранения в энергонезависимую память (non-volatile memory), то настройки будут записаны в EEPROM и сохранятся после отключения питания. В противном случае настройки будут действовать только до первого отключения питания.
Следующий шаг после подключения приемника— регистрация на фирменном онлайн-сервисе u-blox AssistNow для получения логина и пароля.
Получение доступа к сервису AssistNow Online
При первом включении после долгого перерыва, когда резервный источник разряжен или данные альманаха или эфемериса, сохраненные в памяти, утратили свою валидность, старт приемника может затянуться на минуты или часы, а при неудачном стечении внешних факторов не состояться вообще.
AssistNow — это фирменный онлайн-сервис компании u-blox. Сообщив этому сервису свои текущие или предполагаемые координаты, вы тут же получаете в ответ набор данных (альманах, эфемериды, точное время) для данной точки земной поверхности в момент запроса. Этот альманах через последовательный порт загружается в приемник, после чего приемник в течение нескольких секунд переходит в режим 3D Fix.
Сервис полностью бесплатный и доступен всем при наличии интернет-соединения.
Логин и пароль предоставляются в автоматическом режиме. Отправьте письмо с темой "login/password request" на адрес . Через несколько минут вы получите автоматическое ответное письмо, в котором будет ваш логин и пароль. Обычно в качестве логина используется адрес электронной почты, с которого отправлено письмо. В письме сказано, что доступ к сервису предоставляется в течение нескольких часов после отправки письма, но на самом деле обычно доступен сразу, как только вы получили ответ.
Выберите в меню u-Center пункт Tools | AssistNow Online | AssistNow Oline (u-blox 5–7). В поля Latitude (широта) и Longitude (долгота) введите ваши предполагаемые координаты. Их можно определить при помощи смартфона или посмотреть на карте maps.google.com. Высоту Altitude и погрешность Accuracy можно задать нулевыми. Далее введите свои логин и пароль, адрес сервера и номер серверного порта не меняйте. Запрос пакета данных Request — full (полный набор всех доступных данных).
Далее необходимо выбрать команду сброса, которая будет передана приемнику после загрузки данных (рис. 6.20).
Рис. 6.20. Настройки сервиса AssistNow Online
Рекомендуем всегда выбирать полный "холодный" рестарт (cold), т. к. при быстром "горячем" рестарте приемник иногда почему-то остается в состоянии 2D Fix. Холодный рестарт длится на 20–30 с дольше, но гарантированно перезапускает приемник в полностью рабочее состояние.
Теперь нажмите кнопку ОК, и начнется загрузка данных с сервера в ваш приемник. Это займет 3–4 с. После того как приемник перезагрузится, определит текущие координаты и войдет в режим 3D Fix, вы можете вновь открыть окно AssistNow Online, нажать кнопку Use Current для использования текущих координат и повторно загрузить уточненные данные. Все введенные значения полей сохраняются в памяти компьютера и могут быть использованы при следующем запросе. Но, как правило, при нормальной эксплуатации приемника с небольшими, не более недели, перерывами, необходимость повторных обращений к сервису не возникает.
Изменение текущих настроек
Для подключения приемника к полетному контроллеру необходимо изменить лишь три основные настройки: скорость последовательного порта, частоту обновления навигационных данных и протокол потока данных. В программе u-Center при подключенном приемнике нажмите клавишу . Откроется окно настроек и сообщений. Убедитесь, что в левом нижнем углу нажата кнопка Disable/Enabe Autopolling (названия кнопок появляются при наведении указателя мыши). Это функция автоматического опроса настроек приемника. Настройки считываются примерно раз в три секунды.
В левом столбце выберите раздел UBX и подраздел CFG (Config). Ниже в списке выберите пункт PRT (Ports). Теперь в списке справа выберите опции именно так, как показано на рис. 6.21, и нажмите кнопку Send в левом нижнем углу. Настройки будут отправлены в приемник и начнут действовать до первого отключения питания. Для сохранения настроек в EEPROM необходимо выполнить отдельную процедуру.
Рис. 6.21. Настройка скорости порта и протокола данных
Внимание!
Обратите особое внимание на то, что в раскрывающемся списке Protocol in должна быть выбрана именно строка 0+1+2 — UBX+NMEA+RTCM, поскольку именно по протоколу RTCM в приемник загружаются настройки. Если вы случайно отключите этот протокол, то рискуете потерять возможность менять настройки через u-Center.
Выходным протоколом в нашем случае укажем только NMEA, поскольку нет никакой необходимости выводить смешанный поток данных NMEA+UBLOX или использовать проприетарный протокол UBLOX.
Скорость обмена 57 600 бод соответствует частоте обновления навигационных данных 5 Гц. Кроме того, это рекомендованная скорость для прошивки MultiWH2.3.
Теперь в левой колонке выберите пункт RATE (Rates) и задайте новую скорость обновления навигационных данных. По умолчанию задана частота 1 Гц, т. е. свежие навигационные данные поступают в контроллер один раз в секунду. Но для управления коптером, как мы уже говорили выше, необходимо обновлять данные как минимум с частотой 5 Гц. Увеличение частоты обновления данных требует увеличения скорости обмена порта. Для частоты 5 Гц порт должен работать со скоростью не менее 57 600 бод, именно ее мы установили только что. Задайте надстройки, как показано на рис. 6.22, и нажмите кнопку Send. Сразу после этого в главном окне программы должно быть визуально заметно, что данные стали обновлять намного чаще, а значок соединения в строке статуса должен мигать с частотой
Рис. 6.22.
Настройка частоты обновления навигационных данных
Чем выше частота обновления данных, тем точнее работает функция позиционирования и удержания в полетном контроллере. В зависимости от модификации приемника и прошивки, некоторые модули u-blox могут работать с частотой 10 Гц. Но есть нюансы. Путем некоторых ухищрений, введя команду $PMTK220, 100*2F в ручном режиме, можно заставить любой приемник NEO-6 выдавать пакеты данных с частотой 10 Гц. Но если при этом сам чипсет приемника не способен производить измерения с частотой более 5 Гц, то очевидно, что при частоте вывода пакетов 10 Гц каждый пакет данных будет дублироваться, и реального прироста скорости обновления мы все равно не получим.
Чтобы проверить возможности вашего варианта приемника, введите в настройки следующие параметры: Measurement Period = 100 ms; Navigation Rate = 1. Если при этом поле Navigation Rate не становится розовым, а после нажатия кнопки Send под ней не появляется сообщение об ошибке, значит, ваш приемник может обновлять данные с частотой 10 Гц. В этом случае не забудьте увеличить скорость порта до 115 200 бод, иначе для передачи потока данных не хватит скорости порта.
Убедившись, что с новыми настройками приемник функционирует нормально, можете сохранить их в энергонезависимую память. В левом столбце выберите строку CFG (Config), в правой части установите переключатель Save current configuration (рис. 6.23) и нажмите кнопку Send. На этом настройка завершена. Перейдите в меню Tools | GNSS Configuration и сохраните текущую конфигурацию в отдельный файл. Это поможет при необходимости быстро восстановить настройки.
Рис. 6.23.
Сохранение текущих настроек в энергонезависимую память
Подключение приемника к полетному контроллеру
Приемник подключается к порту SERIAL2, причем достаточно подключить лишь выход Тх ко входу Rx2 полетного контроллера, т. к. мы подключаем заранее настроенный приемник и настройка "на лету" средствами прошивки нам не понадобится.
В случае использования прошивки MultiWii 2.3 вносить изменения в настройки практически не потребуется. Необходимо найти следующие строки и убедиться, что они раскомментированы:
#define GPS_SERIAL 2
#define GPS_BAUD 57600
#define NMEA
#define MAG_DECLINATION x.xx f
Этих строк достаточно для того, чтобы начать использовать функцию GPS. Убедитесь, что параметр GPS_BAUD соответствует скорости последовательного порта приемника, а в параметре MAG_DECLINATION правильно указано магнитное склонение для вашей местности. Про настройку этого параметра было сказано ранее, в разделе о настройке прошивки MultiWii.
Строку //#define INIT_MTK_GPS в нашем случае следует оставить закомментированной. Она активирует процедуру автоматической настройки параметров приемников на основе чипсета МТК и в нашем случае не подходит для приемников u-blox.
Строка #define GPS_LED_INDICATOR включает мигание светодиода В при поступлении данных с приемника. Пока нет захвата спутников 3D Fix, светодиод мигает в такт поступающим пакетам данных с приемника. В режиме 3D Fix одна короткая вспышка соответствует пяти спутникам, две вспышки — шести спутникам и т. д.
Данным GPS присуща случайная погрешность, поэтому координаты пользователя не застывают в некой точке, а с каждым новым измерением "прыгают" внутри окружности, представляющей собой границы зоны погрешности. Соответственно, если квадрокоптер будет идеально отслеживать координаты каждого измерения, то в режиме удержания позиции он начнет хаотично метаться внутри окружности с радиусом 2–4 м. Поэтому данные GPS подвергают усреднению и фильтрации.
Строка #define GPS_LEEAD_FILTER активизирует режим предиктивной фильтрации, чтобы скомпенсировать задержку данных GPS, когда коптер быстро сменил позицию, а новые координаты еще не поступили. Алгоритм фильтра пытается ввести предсказание, координат на основании известного ранее вектора движения и данных об ускорениях с акселерометра.
Строку //#define GPS_FILTERTING лучше оставить закомментированной. Это фильтр с сильным усреднением для компенсации шумов данных, когда данные распределены внутри зоны погрешности чересчур хаотично. Фильтр вносит большую задержку в работу функции позиционирования. Может быть полезен при использовании старых модификаций приемников.
Строка #define GPS_WP_RADIUS 200 определяет расстояние до заданной точки в сантиметрах, при котором можно считать, что точка уже достигнута. Указывать расстояние менее 200 см нет смысла, т. к. это минимальная погрешность применяемых нами гражданских приемников. В противном случае контроллер коптера может считать, что нужные координаты не достигнуты и бесконечно долго флуктуировать около точки назначения.
Параметр #define NEW_SLAVE_RATE 30 определяет сглаживание случайных выбросов данных. Если коптер ведет себя стабильно в режимах GPS HOLD и GPS HOME, можно попробовать уменьшить этот параметр до 15.
Стартовая позиция GPS HOME обнуляется каждый раз при арминге моторов. То есть, квадрокоптер считает "домашней" ту точку, в которой активированы моторы. Но это не всегда приемлемо для опытных пилотов. Например, при полетах по FPV оператор может посадить коптер на крышу здания, отключить моторы, затем взлететь снова. В этом случае первоначальные домашние координаты будут утрачены и в случае срабатывания функции Filesafe при утрате связи коптер автоматически вернется на крышу здания, а не к оператору. Чтобы этого не случалось, можно раскомментировать строку //#define DONT_RESET_HOME_AT_ARM. При этом в качестве домашних запоминаются координаты, в которых выполнена команда калибровки гироскопов (левый стик до упора влево и вниз, правый стик до упора вверх).
Подключение приемника GPS с прошивкой MahoWii
Настройка прошивки MahoWii для подключения приемника NEO-6M лишь незначительно отличается от настроек прошивки MultiWii v2.3. Необходимо задать высоту полета, которую будет поддерживать коптер при автоматическом возвращении домой по функции RTH в строке #define ALT_TO_RTH 3000. Высота задается в сантиметрах.
В строке #define ALT_TO_RTH_FINISH 200 указывается высота зависания при достижении точки возврата. Не следует указывать высоту меньше 200 см, т. к. за время полета может накопиться погрешность барометра. Кроме того, как вы помните, барометр дает большую погрешность при висении на малой высоте.
Строка #define INS_PH_NAV_ON включает инерциальную систему удержания позиции, которая учитывает данные акселерометра для повышения точности удержания.
Подключение дисплея
Теперь, когда можно приобрести по доступной цене графические OLED- или TFT-модули, приобретение двустрочного текстового дисплея для подключения к полетному контроллеру вряд ли целесообразно. Поддержка OLED-дисплеев встроена в прошивку MultiWii. Для подключения цветного TFT-дисплея автор разработал собственную конструкцию на базе микроконтроллера ATmega328.
Монохромный OLED дисплей CRIUS СО-16
Дисплей подключается по протоколу I2С к соответствующему четырехконтактному разъему полетного контроллера. На этот же разъем выведено напряжение питания +5 В. Обратите внимание, что в отличие от "перекрестного" подключения по последовательному протоколу UART, соединение для I2С должно быть прямым: SDA —> SDA, SCL —> SCL.
Для активации поддержки OLED-дисплея в прошивке найдите секцию LCD/OLED — display settings и раскомментируйте строку
#define OLED_I2C_128x64
Если вы не хотите, чтобы при включении питания на дисплей выводилась стартовая заставка в виде логотипа MultiWii, то закроите комментарием строку
#define SUPPRESS_OLED_I2C_128x64LOGO
Теперь включим вывод телеметрии на дисплей строкой
#define LCD_TELEMETRY
Информация разбита на девять страниц, с 1 по 9. Нулевой странице соответствует пустой экран. Можно задать автопереключение страниц строкой
#define LCD_TELEMETRY_AUTO "123452679"
или установить произвольный порядок автопереключения, например
#define LCD_TELEMETRY_AUTO "212232425262729"
где странице номер два уделено особое внимание. Должна быть раскомментирована только одна из двух упомянутых строк.
Страницы можно переключать вручную, движением правого стика до упора вправо вверх. Для этого строки автопереключения должны быть закомментированы, а раскомментировать надо строку
#define LCD_TELEMETRY_STEP "0123456789"
Порядок следования страниц может быть произвольным, любые страницы, включая нулевую, можно удалить из последовательности или повторить.
Настройка параметров через меню дисплея
При помощи стиков пульта и меню, отображаемого на дисплее, можно настроить различные параметры: PID, экспоненты, минимальный и максимальный газ, привязку переключателей AUX. Прямо скажем, делать это, глядя на крошечный монохромный экран — удовольствие на большого любителя. Но в ситуации, когда подходящий смартфон или ноутбук недоступен, может пригодиться и дисплей. Для включения функции конфигурирования раскомментируйте строку
#define LCD_CONF
Чтобы разрешить изменение привязки переключателей AUX, раскомментируйте еще одну строку:
#define LCD_CONF_AUX
Для входа в меню конфигурации надо левый стик переместить вправо вниз, а правый стик — вверх. Эти движения следует делать одновременно, иначе вместо входа в меню вы можете левым стиком активировать моторы. Полный перечень движений стиков для настройки через дисплей приведен в приложении 3.
Проблемы с подключением дисплеев CRIUS OLED и их решение
Дисплеям CRIUS CO-16 версии 1.0 присущи конструктивные недостатки, которые устранены в более новых версиях. Но дисплеев первой версии и их клонов было изготовлено очень много, поэтому вероятность купить неустойчиво работающий модуль довольно велика. Прежде всего, упомянутым дисплеям присуща проблема неустойчивого сброса, так называемое "звездное небо". При включении питания встроенный контроллер дисплея не сбрасывается, очищая видеопамять, и экран хаотично покрывается одиночными светящимися пикселами. Далее дисплей уже не реагирует на команды и данные с полетного контроллера. Некоторые экземпляры дисплеев зависают изредка, некоторые при каждом включении.
Простым и широко известным способом решения этой проблемы является включение резистора с номиналом 150–200 Ом в разрыв плюсового провода питания. Резистор маломощный, затягивается вместе с проводом и местом пайки в термоусадочную трубку. Может потребоваться подобрать номинал резистора для более устойчивой работы. У автора дисплей работает с сопротивлением 180 Ом. Этот способ хорош тем, что требует минимальные навыки пайки.
Если включение резистора не помогает, попробуйте подключить RC-цепь к выводу сброса контроллера дисплея, как показано на рис. 6.24 и 6.25. Этот способ требует наличия соответствующих инструментов и навыка пайки миниатюрных компонентов.
Рис. 6.24.
Схема подключения RC-цепи сброса
Рис. 6.25. Монтаж компонентов цепи сброса
В сочетании определенных экземпляров полетного контроллера и дисплея может возникнуть ситуация, когда при подключении дисплея резко возрастает количество ошибок на шине I2С, полетный контроллер неустойчиво читает данные с датчиков либо вообще зависает. Предположительно, это вызвано чрезмерной "подтяжкой" линий SCL и SDA к напряжению питания встроенным контроллером дисплея, что приводит к неустойчивой работе отдельных экземпляров сенсоров на плате полетного контроллера. Проблема может быть устранена последовательным включением резисторов с сопротивлением 560–750 Ом в разрыв проводов SCL и SDA, соединяющих дисплей и полетный контроллер. Точное значение номинала резисторов надо подобрать опытным путем.
Самодельный цветной дисплей
Вниманию читателей, имеющих некоторый опыт самостоятельного изготовления печатных плат, предлагается авторская конструкция цветного дисплея для MultiWii. Дисплей построен на основе готового дисплейного модуля с разрешением 128x160 точек, диагональю 1,8 дюйма и цветовой палитрой 262 000 оттенков. Обмен данными с дисплеем происходит по последовательному протоколу SPI. Поскольку в прошивке MultiWii поддержка этого протокола не реализована, в дисплее используется дополнительный микроконтроллер ATmega328. Он обменивается данными с полетным контроллером по внутреннему протоколу MSP (MultiWii Serial Protocol) и пересылает обработанные данные собственно в графическую память дисплея по SPI. Дисплей кроме графической матрицы содержит в себе специальную микросхему, так называемый драйвер дисплея. Драйвер содержит цепи управления ЖК-матрицей и буферную память изображения. Он подчиняется внешним командам и позволяет извне обращаться к отдельным пикселам изображения.
Иными словами, микроконтроллер ATmega328 служит посредником между полетным контроллером и драйвером дисплея, обрабатывая данные и пересылая их драйверу.
Конструктивно дисплей выполнен в виде "бутерброда", состоящего из собственно дисплейного модуля и самодельной платы расширения, которая припаяна прямо на выводы платы дисплея (рис. 6.26 и 6.27).
Рис. 6.26.
Общий вид дисплейного модуля
Рис. 6.27.
Монтаж платы расширения дисплейного модуля
Плата расширения представляет собой несложную самодельную печатную плату, на которую припаян готовый китайский клон модуля Arduino Pro Mini с рабочим напряжением 5 В и тактовой частотой 16 МГц. Использование готового модуля намного рациональнее в отношении затрат времени и денег, чем самостоятельное изготовление печатной платы, содержащей микроконтроллер и навесные элементы.
Встречаются различные варианты клонов Arduino Pro Mini. На рис. 6.28 показан внешний вид платы, использованной в дисплее. Разводка расширяющей платы дисплея выполнена под этот вариант клона. Можно приобрести другую версию модуля Arduino, но тогда придется изменить разводку расширяющей платы.
Рис. 6.28.
Готовый модуль Arduino Pro Mini для дисплея
Дисплейный модуль можно приобрести в России, в магазинах, торгующих аксессуарами и модулями расширения для Arduino, либо заказать в Китае или на eBay. Также потребуется приобрести клон модуля Arduino Pro Mini. Автор приобретал компоненты на Aliexpress. Ключевые слова для поиска: "TFT SPI display" и "Arduino Pro Mini".
Печатная плата изготавливается любым удобным способом. Все они многократно и подробно описаны в Интернете и радиолюбительской литературе, поэтому здесь мы не будем останавливаться на технологических подробностях. Отметим лишь, что ширина проводников и зазоры между контактными площадками позволяют использовать "лазерно-утюжную технологию" (ЛУТ). Ч Контактные площадки под монтаж модуля Arduino выполнены без отверстий. Для качественной пайки достаточно смазать флюсом площадки и отверстия модуля. Припой легко затекает в отверстие модуля Arduino й надежно припаивает его к расширяющей плате.
Принципиальная электрическая схема изображена на рис. 6.29. Исходный файл схемы, а также рисунок печатной платы в формате DipTrace можно скачать на сайте издательства (см. приложение 4). Схема несложная и содержит минимум деталей, поэтому все соединения можно выполнить даже без печатной платы, отрезками тонкого провода.
Рис. 6.29.
Схема дисплея
Резисторы R1-R4 предназначены для взаимного согласования логических уровней между модулями. Дело в том, что хоть общее напряжение питания конструкции 5 В, но внутреннее рабочее напряжение питания дисплейного модуля — 3,3 В, вырабатывается встроенным стабилизатором. А рабочее напряжение модуля Arduino — 5 В. Соответственно различаются напряжения логических уровней двух модулей. Если выходы Arduino Pro Mini соединить напрямую со входами контроллера дисплея, то он может выйти из строя. Резисторы R1-R4 ограничивают ток в цепи и в сочетании с внутренним сопротивлением входов работают, как делители напряжения.
Дисплейный модуль содержит слот для подключения карты SD, разведенный на отдельные выводы. Причем согласующие резисторы уже установлены на плате модуля. В схеме устройства предусмотрено подключение карты SD к микроконтроллеру, это позволяет в будущем использовать дисплей и для записи логов (журналов) полета. Но в настоящее время функция ведения лога в прошивке не реализована.
Для подключения дисплея к полетному контроллеру, а также для записи прошивки используется разъем J1. По разводке выводов он совпадает с популярной платой MinimOSD и совместим с фирменным адаптером FTDI USB-COM и его клонами. Поэтому один и тот же адаптер пригодится для записи прошивок в разные модули. Поскольку дисплей подключается к порту SERIAL0, то для подключения по USB дисплей следует отключать.
Запись прошивки в контроллер дисплея
В прошивке дисплея используется свободно распространяемая графическая библиотека для работы с драйвером дисплейного модуля. Для тех, кто раньше не сталкивался с программированием, коротко поясним, что библиотека — это заранее написанный набор стандартных процедур для работы с чем-либо. В нашем случае с дисплеем. Любое стандартное действие, будь то очистка экрана, вывод текста или рисование прямоугольника, выполняется через обращение к готовой процедуре библиотеки.
Но в стандартном наборе библиотек Arduino IDE нужной нам библиотеки нет, ее следует установить отдельно. В скачанном с сайта издательства архиве найдите папку с названием Adafruit_ST7735 и скопируйте ее полностью, не меняя название, в папку для библиотек Arduino — C:\Program Files\Arduino\libraries. Затем скопируйте туда же библиотеку графического ядра AdafruitGFX. Содержимое папки библиотек должно выглядеть приблизительно так, как на рис. 6.30.
Рис. 6.30. Папка библиотек Arduino с графическими библиотеками дисплея
Теперь запустите Arduino IDE и откройте меню Файл | Образцы. В списке должна появиться строка Adafruit_ST7735. Это означает, что графическая библиотека установлена правильно. Номер в ее названии соответствует номеру микросхемы драйвера дисплея.
Примечание
В некоторых случаях в модуле дисплея может быть установлен драйвер Samsung S6D02A1. К сожалению, по внешнему виду модуля это невозможно распознать, а продавцы заранее не предупреждают. Поэтому, если правильно собранный дисплей не подает признаков жизни, необходимо установить библиотеку Adafruit_QDTech и внести исправления в прошивку.
Настройка прошивки
По умолчанию прошивка готова к использованию без каких-либо изменений. Тем не менее, при желании пользователь может настроить под себя содержимое выводимых данных и их размещение на экране, даже не имея навыков программирования.
Вывод данных разбит на страницы. За формирование каждой страницы отвечает отдельный файл page1.ino, page2.ino и т. д. Всего страниц семь. Строка главного файла программы
#define START_PAGE 1
задает стартовую страницу при включении дисплея. Вы можете указать здесь любой другой номер из числа доступных.
#define TOTAL_PAGE 7
задает общее количество страниц. После достижения этого числа происходит возврат к первой странице, т. е. страницы переключаются по кругу. Следующий фрагмент программы задает порядок следования страниц:
case 1: show_1(); break; //STATUS
case 2: show_2(); break; //RADIO
case 3: show_3(); break; //ACTIVE MODE
case 4: show_4(); break; //ACTIVE GPS
case 5: show_5(); break; //MOTORS
case 6: show_6(); break; //SERVOS
case 7: show_7(); break; //SENSORS
Здесь case 1, case 2: и т. д. — это порядковый номер отображаемой страницы.
Например, если вы напишете
case 1: show_4(); break; //GPS
…
case 4: show_1(); break; //STATUS
…
то отображаемые страницы 1 (STATUS) и 4 (GPS) поменяются местами при отображении, и при включении питания первым будет отображаться статус GPS.
В файле screenmap.h указаны опорные координаты каждой надписи на каждой странице. Меняя эти координаты по своему усмотрению, вы можете переставлять на страницах данные и подписи к ним. На экране дисплея нулевая точка координат находится слева вверху. То есть, значения по оси х отсчитываются как обычно, слева направо. Но значения по оси у отсчитываются сверху вниз.
Страницы перелистываются перемещением правой рукоятки пульта вправо вверх до упора. При активации моторов на всех страницах внизу появляется предупреждающая красная строка.
Поскольку обмен данными происходит через порт SERIALO, то при подключении провода USB дисплей следует отключать от разъема. В прошивке дисплея задана скорость порта по умолчанию 115 200. Если вы изменили скорость порта SERIAL0 в настройках контроллера, то в прошивке дисплея также следует установить новую скорость. Найдите в коде прошивки дисплея строку
Serial.begin(115200);
и в скобках укажите новое значение скорости обмена.
Дисплей можно подключить к порту SERIAL3, если к этому порту не подключен модем телеметрии. В этом случае также надо обратить внимание на совпадение скоростей портов.
Монтаж и подключение оборудования FPV
В общем случае, полеты с обзором по видеокамере — довольно дорогостоящее занятие, если использовать оборудование высокого качества с большим радиусом действия. Зачастую комплект такого оборудования стоит дороже самого коптера. Но для того чтобы начать отрабатывать навыки полетов и успешно провести первый сезон, нам не потребуются существенные затраты и сложное оборудование.
Теперь разберемся, какие компоненты необходимы начинающему пилоту, а без каких вполне можно обойтись.
Одним из оптимальных и недорогих начальных вариантов может быть покупка набора, состоящего из малогабаритной CCD-видеокамеры, видеопередатчика, видеоприемника, пары всенаправленных антенн и видеоочков. Стоимость такого набора заметно меньше, чем суммарная стоимость компонентов при покупке по отдельности. Набор обычно снабжается подробными инструкциями по подключению и необходимыми соединительными проводами. Но, к сожалению, такие наборы не всегда бывают в наличии по доступной цене, поэтому нужно быть готовым к самостоятельному подбору компонентов.
Видеокамера
Вместо использования двух видеокамер — курсовой и видовой — для начинающего пилота вполне достаточно одной камеры среднего качества, закрепленной на управляемом стабилизированном подвесе. Следовательно, отпадает потребность в видеокоммутаторе и освобождается один из радиоканалов, которых и так мало в недорогой аппаратуре радиоуправления.
Наиболее простым и очевидным решением будет покупка одной из специализированных популярных экшн-камер: GoPro, Xiaomi Yui или Mobius. Для этих камер в продаже имеется широчайший выбор готовых стабилизированных подвесов различной степени сложности, разные аксессуары — чехлы, кабели, адаптеры — вплоть до специальных передатчиков, подключаемых прямо к разъему камеры.
Примечание
Обратите внимание на наличие в камере композитного видеовыхода и выхода канала звука. Такая опция обычно обозначается как "А/V Output". Некоторые современные экшн-камеры оснащены только выходом стандарта HDMI, что делает невозможным подключение такой камеры к обычному видеопередатчику. Даже если наличие композитного видеосигнала обозначено в перечне опций, вы можете столкнуться с отсутствием специального кабеля для подключения к видеовыходу. При покупке экшн-камеры не забудьте одновременно с ней приобрести соответствующий видеокабель. Через этот кабель иногда на камеру можно подавать внешнее питающее напряжение.
Стоимость даже начального комплекта "экшн-камера + подвес" составляет около 6–8 тыс. руб., что может оказаться неприемлемо для начинающего пилота, особенно с учетом возможных аварий в процессе обучения. Учебный комплект начального уровня (рис. 6.31), состоящий из миниатюрной CCD-камеры и простого подвеса на двух сервомашинках, обойдется нам не дороже 1500 руб., весьма живуч и ремонтопригоден при авариях. Миниатюрная камера, как правило, вообще не страдает даже при самых сложных падениях.
Рис. 6.31. Камера и подвес начального уровня на сервомашинках
Приобретая подвес для мини-камеры, обратите внимание, входят ли сервомашинки в комплект. Если нет, то отдельно купите сервомашинки Turnigy TG-9 или Hextronik HXT900, причем в двойном количестве, поскольку при авариях у них ломаются шестеренки редуктора.
При выборе видеокамеры предпочтителен вариант со встроенным стабилизатором питания, чтобы можно было питать камеру от источника с напряжением 7-12 В без отдельного внешнего стабилизатора. Следует избегать питания камеры и видеопередатчика от силовой батареи, т. к. в силовой цепи присутствуют импульсные помехи, засоряющие изображение. Наличие встроенного микрофона является преимуществом камеры, т. к. во время полета полезно слышать звук моторов, это элемент обратной связи между квадрокоптером и пилотом.
Система изображения у большинства камер сейчас PAL, реже встречается NTSC, но видеоочки, мониторы и модули OSD способны автоматически определять систему. В крайнем случае можно задать систему принудительно в настройках очков и перемычкой на модуле OSD.
Угол обзора объектива должен быть порядка 90–96°, чтобы обеспечить достаточный обзор. Встречаются камеры с углами обзора 110–120°. Но при таких углах возникают сильные оптические искажения перспективы, к которым нужно привыкнуть, и которые не для всех комфортны.
Одним из вариантов является использование малогабаритного автомобильного видеорегистратора. Если изготовить сменное крепление, можно переставлять регистратор с автомобиля на время полетов. Автор делал так на одном из своих коптеров. Но для этого нужно, чтобы регистратор имел композитный видеовыход.
Видеопередатчик и приемник
При выборе передатчика и приемника или очков со встроенным приемником нужно уделить особое внимание частотной совместимости. Наиболее часто используемым является диапазон 5,8 ГГц. Он разбит на 32 канала, таблица частот приведена в приложении 2. Некоторые универсальные передатчики и приемники могут использовать весь диапазон. Но чаще доступны только восемь каналов, и у разных производителей они различаются. Поэтому, если вы не покупаете готовый набор, обратите внимание на точное совпадение частот каналов, а не просто частотного диапазона. Проблема совместимости снимается, если применяется передатчик на 32 канала. Такой передатчик легко определить визуально, у него на плате есть двухпозиционный переключатель из 5 сегментов: 25 = 32. Если есть шестой сегмент, то он не используется.
Наиболее популярными являются передатчики и приемники на основе модулей BOSCAM и их многочисленных клонов. Для начинающего пилота оптимальным решением будет покупка 32-канального передатчика TS5823 с выходной мощностью 200 мВт (рис. 6.32). Реальная дальность действия видеоканала при этом около 800–900 м, что сопоставимо с дальностью действия обычного пульта радиоуправления Turnigy или аналогичного. Покупка более мощного передатчика имеет смысл, если аппаратура радиоуправления позволяет улетать на большие расстояния. Самодельные передатчики на основе модулей BOSCAM имеет смысл делать только в условиях жесткой экономии веса для миниатюрных коптёров и при наличии радиолюбительского опыта.
Рис. 6.32.
Малогабаритный видеопередатчик TS5823
Отдельно следует обсудить монтаж передатчика на раме коптера. Плата передатчика, даже маломощного, сильно нагревается. Поэтому нельзя помещать передатчик внутрь защитного чехла или корпуса, он должен хорошо обдуваться. Диаграмма направленности популярной антенны типа "клевер" (см. рис. 2.16) несимметрична по вертикали и напоминает купол в направлении, противоположном питающему кабелю. Это означает, что для достижения максимальной дальности действия антенна передатчика должна быть направлена вниз и располагаться на максимальном удалении от металлических частей рамы. Но с точки зрения безопасности при авариях и жестких посадках это очень опасный способ монтажа, и антенна зачастую обрывается при аварии. Поэтому начинающим пилотам следует монтировать антенну с направлением вниз только при наличии высоких посадочных стоек. В любом случае, следует стараться смонтировать передатчик на максимальном удалении от приемников GPS и радиоуправления. Несмотря на то, что их рабочие диапазоны не совпадают, нельзя исключать возможность высокочастотных наводок на вторичные цепи или помех, образованных паразитными гармониками излучения.
Внимание!
Передатчики мощностью от 250 мВт и более содержат выходной усилитель. Он выходит из строя при включении передатчика без антенны даже на короткое время, а также при замыкании в цепи нагрузки. Поэтому авария с обрывом антенны или замыканием кабеля возле разъема обычно приводит к поломке передатчика. Также, строго не рекомендуется подавать питание на передатчик при отключенной антенне. Неисправность выражается в резком снижении дальности передачи без каких-либо иных внешних признаков. Чтобы убедиться в неисправности выходного каскада, необходимо использовать высокочастотный ваттметр или хотя бы заведомо исправные антенны и приемник.
При наличии некоторого радиолюбительского опыта можно приобрести приемный модуль BOSCAM RX5808 (рис. 6.33). Его необходимо смонтировать на простейшую самодельную плату, снабженную антенным разъемом типа SMA-F (можно извлечь из неисправного сетевого оборудования D-Link), стабилизатором питания +5 В, микропереключателем из трех сегментов для выбора канала и разделительным конденсатором в цепи видео (рис. 6.34).
Рис. 6.33.
Модуль BOSCAM RX5808
Рис. 6.34.
Схема подключения модуля RX5808
Внимание!
Подключение модуля без разделительного конденсатора в цепи видео может привести к выходу модуля из строя!
Микропереключатели S1-1…S1-3 нужны для выбора каналов. Всего таким способом можно выбрать 23 = 8 каналов, перечисленных в табл. 6.3.
При питании от готового источника +5 В стабилизатор не нужен, а вместо микропереключателя можно использовать перемычки. Путем небольшой переделки и добавления микроконтроллера ATmega328 модуль RX5808 можно превратить в 32-канальный приемник, совместимый с любым передатчиком диапазона 5,8 ГГц. Автором этого открытого проекта является Саймон Чемберс (Simon Chambers).
Детальное описание модификации, а также исходный код для прошивки микроконтроллера можно получить на странице разработчика по адресу . Мы ограничимся пояснениями к идее проекта, поскольку нет необходимости дублировать в книге подробный материал разработчика.
В модуле приемника применяется микросхема RTC6715. Частоту приема можно задать двумя способами: выбором из восьми фиксированных значений, если вывод микросхемы SPIEN (7) с общим проводом, и подачей команд по интерфейсу SPI, если на выводе SPIEN высокий уровень. Во втором случае выводы СН1-СНЗ превращаются в выводы SPI. Управляя рабочей частотой приемника при помощи микроконтроллера, можно заставить его работать на любом из 32 каналов. Для переделки приемника достаточно отпаять защитный экран, удалить с платы одну перемычку и припаять экран обратно. Аналогичным образом можно модифицировать приемник, встроенный в видеоочки. Такая модификация приемника очень популярна и применяется во многих любительских конструкциях.
Покупка 32-канального приемника RC832 (рис. 6.35) также снимает все проблемы совместимости частот с аппаратурой разных марок.
Рис. 6.35. Приемник RC832 и назначение выводов штыревого разъема
У приемника два комбинированных аудио/видеовыхода, к одному подключается монитор или видеоочки, ко второму можно подключить любое устройство для записи видео. Для подключения потребуется миниатюрный штыревой разъем диаметром 2,5 мм. Такие разъемы встречаются в гарнитурах некоторых мобильных телефонов, обычно Nokia. Подойдет как трех-, так и четырехконтактный разъем. Поэтому для подключения видеоочков к приемнику можно купить в салоне сотовой связи переходник для наушников "штекер 2,5 — гнездо 3,5" или недорогую гарнитуру и отрезать от нее разъем.
Видеоочки и монитор
Если вы используете внешний независимый видеоприемник, то к нему можно подключить любые видеоочки, предназначенные для видеоигр или просмотра видео.
Следует обратить внимание на совпадение форматов изображения (4:3 или 16:9) камеры и очков. Самым простым и доступным по стоимости вариантом для новичков являются видеоочки Quanum, которые можно приобрести в виде набора для самостоятельной сборки. Они состоят из пенопластового корпуса, монитора и линзы Френеля, которая позволяет смотреть на монитор с расстояния в несколько сантиметров. Линз в наборе несколько, под разную остроту зрения. Важным достоинством монитора является то, что он не отключается в "синий экран" при пропадании сигнала.
Отдельно следует упомянуть полный набор начального уровня "Quanum + SkyZone", который состоит из очков-монитора, передатчика TS5823, приемника RC832, пары антенн с круговой поляризацией, миниатюрной камеры Sony и комплекта соединительных проводов. Причем стоимость этого набора заметно ниже, чем компонентов по отдельности. Вам потребуется докупить лишь подвес на сервомашинках, как на рис. 6.31. Набор можно смонтировать на коптере практически без применения пайки. Очки имеют довольно неуклюжий дизайн и примитивную конструкцию, зато являются безусловным лидером по соотношению "цена/качество". Впоследствии, приобретя себе более дорогие видеоочки, вы можете использовать "Quanum" для демонстрации полетов с видом "из кабины пилота" своим друзьям и близким.
В том случае, если вы предпочитаете использовать монитор, обратите внимание на модель Fieldview 777. Мониторы этой марки бывают как одиночные, так и со встроенными 32-канальным приемником на 5,8 ГГц и видеорекордером. Данные мониторы также не отключаются при потере сигнала.
Подключение подвеса к контроллеру
Прежде, чем приступать к настройке параметров управления подвесом, его нужно правильно собрать и смонтировать на раму квадрокоптера. При сборке валы сервомашинок необходимо поставить в среднее положение и собрать подвес так, чтобы камера была направлена прямо вперед по курсу и под углом примерно 45° вниз от горизонтали. Небольшие отклонения будут исправлены при настройке. Подвес необходимо прикрепить к виброизолированной площадке, подвешенной на 4–6 амортизаторах (рис. 6.36).
Рис. 6.36.
Пример крепления подвеса к виброизолирующему основанию
Простой подвес на сервомашинках подключается к контроллеру с минимальными правками в прошивке. Достаточно в секции cam stabilisation найти и раскомментировать строку:
#define SERVO_TILT
Предыдущая строка //#define SERVO_MIX_TILT предназначена для подвесов другого типа, с другой конструкцией механики.
После записи прошивки в контроллер в конфигураторах MultiWii WinGUI и MultiWiiConf появится новая опция CAMSTAB. Ее, как и любую другую опцию, можно активировать по одному из каналов AUX1-AUX4 или включить постоянно, поставив галочки для всех трех значений любого канала AUX одновременно. Сохраните настройки в конфигураторе. Подключите сервомашинку, отвечающую за курсовое положение, к разъему ROLL (45), а за отклонение вверх-вниз — к разъему PITCH (44). Теперь, если начать наклонять раму коптера в стороны, подвес будет стараться сохранить исходное положение камеры в пространстве. Не забывайте, что на трехрядную гребенку разъема должно поступать питание +5 В, поэтому при питании через провод USB сервомашинки работать не будут.
По умолчанию в прошивке уже заданы параметры, при которых подвес достаточно точно работает с недорогими сервомашинками TG9 и НХТ900. Но наверняка исходное положение камеры будет выставлено неточно, а при кренах рамы компенсация недостаточно велика либо чрезмерна. Для устранения недочетов нужно произвести точную настройку параметров. Это как раз тот случай, когда произвести настройку при помощи мобильного приложения EZ-GUI Ground Station намного проще, чем при помощи стационарного компьютера. Тем не менее, рассмотрим оба варианта.
Настройка при помощи EZ-GUI Ground Station
Запустите приложение EZ-GUI Ground Station и установите соединение с мобильным устройством одним из описанных выше способов: через адаптер Bluetooth или радиомодем. Если опция CAMSTAB еще не активирована, войдите в экран Настройки | AUX, отметьте нужные флажки и сохраните в память контроллера.
Затем на экране Настройки нажмите кнопку СЕРВЫ (рис. 6.37).
Рис. 6.37. Меню настройки подвеса в EZ-GUI Ground Station
Из контроллера автоматически прочитаются текущие настройки, а именно: минимальное и максимальное значение управляющего сигнала, значение для среднего положения и коэффициент реакции. Чем он больше, тем сильнее реакция подвеса на отклонение рамы. Отрицательное значение коэффициента инвертирует направление отклонения. При настройке следует добиваться того, чтобы при отклонениях рамы угол наклона камеры практически не менялся.
Крайние значения Min и Мах необходимо уменьшать в том случае, если при максимальных отклонениях подвеса камера во что-то упирается. Значение среднего положения Mid используется не только для регулировки нейтрального положения подвеса. В окне настройки этого параметра можно выбрать, через какой канал радиоуправления мы можем вручную управлять положением камеры. По умолчанию стоит прочерк, т. е. подвес работает в полностью автоматическом режиме и стабилизируется относительно нейтрального положения.
Но вы можете захотеть управлять камерой вручную, через каналы AUX. Ведь на пульте этим каналам можно назначить не только тумблеры, но и переменные резисторы. В этом случае при наличии свободных каналов вы можете манипулировать камерой вправо-влево и вверх-вниз, либо по одной из осей. Подвес будет стабилизироваться относительно текущего положения камеры. Новые значения отправляют в контроллер кнопкой "вверх" и сразу после этого они начинают действовать.
Настройка подвеса при помощи конфигуратора MultiWiiConf
После запуска конфигуратора и установления связи с контроллером нажмите кнопку Read. После считывания текущих настроек прошивки в меню появится вкладка SERVO (рис. 6.38).
Рис. 6.38. Вкладка SERVO конфигуратора MultiWiiConf
Иногда нужно нажать кнопку дважды, чтобы эта вкладка появилась. Перейдите на вкладку и нажмите кнопку GIMBALL. Настройки автоматически пропитаются из контроллера и отобразятся на экране. Теперь нажмите кнопку GO LIVE, чтобы записывать новые значения в контроллер в режиме реального времени. Перемещая при помощи мыши движки значений MID, можно настроить нейтральное положение камеры. При помощи движков TILT_PROP и ROLL_PROP задается коэффициент пропорциональности реакции подвеса на отклонение. При помощи движков МID также можно определить каналы для ручного управления камерой. Эта часть интерфейса программы своей изощренной логикой способна шокировать даже подготовленного пользователя. Для перехода в режим определения канала следует уменьшить значение МID до 0, а затем начать плавно увеличивать. Теперь в подписи к движку будут отображаться названия каналов. Выбрав нужный канал, нажмите кнопку SAVE.
Настройка подвеса в прошивке MahoWii
В прошивке MahoWii настройка через конфигуратор на момент подготовки книги не была предусмотрена. Все настройки выполняются в файле config.h. К сожалению, при этом для проверки настроек нужно каждый раз записывать прошивку в контроллер. Найдите секцию cam stabilisation и раскомментируйте строку
#define SERVO_TILT
В строках ниже указаны параметры настроек положения сервомашинки TILTt (отклонение по вертикали):
#define TILT_PITCH_MIN 1020
#define TILT_PITCH_MAX 2000
#define TILT_PITCH_MIDDLE 1500
#define TILT_PITCH_PROP 10
//#define TILT_PITCH_AUX_CH AUX4 — раскомментируйте эту строку, чтобы определить канал ручного управления. Можно указать один из AUX1-AUX4.
Далее следуют строки настройки положения сервомашинки ROLL (отклонение по горизонтали):
#define TILT_ROLL_MIN 1020
#define TILT_ROLL_MAX 2000
#define TILT_ROLL_MIDDLE 1500
#define TILT_ROLL_PROP -10
//#define TILT_ROLL_AUX_CH AUX4
Параметры TILT_PITCH_PROP и TILT_ROLL_PROP задают коэффициент пропорциональности для реакции на отклонения рамы. Отрицательное значение инвертирует направление отклонения.
Настройка модуля Minim OSD
Мы будем использовать модуль MinimOSD второй версии (рис. 6.39).
Рис. 6.39.
Модуль MinimOSD и его компоненты
От первой версии он отличается наличием импульсного источника питания, который из 7-12 В входного напряжения делает +5 В для питания аналоговой части. В предыдущей версии вместо импульсного источника стоял линейный стабилизатор, который при питании напряжением 12 В очень сильно нагревался. А поскольку микросхема видеомиксера МАХ7456 сама нагревается весьма ощутимо, то суммарный нагрев мог привести к выходу модуля из строя, и требовалось монтировать модуль с учетом хорошего обдува. Но даже при обдуве модули иногда выходили из строя в жаркую погоду. Поэтому при покупке обратите внимание на наличие импульсного стабилизатора.
Наличие независимого стабилизатора напряжения позволяет питать аналоговую часть модуля от той же самой батареи 2S-3S, которая питает видеокамеру и передатчик. При этом цифровая часть питается стабилизированным напряжением +5 В через разъем полетного контроллера.
Прежде чем приступить к настройке модуля, необходимо выполнить небольшую доработку модуля (рис. 6.40).
Рис. 6.40.
Обратная сторона платы модуля MinimOSD
Металлическая подложка микросхемы должна быть припаяна к плате. Это необходимо для надежного отведения тепла от микросхемы.
Посмотрите на отверстия под микросхемой с обратной стороны платы. Если видно, что подложка микросхемы не припаяна к плате, вы можете сделать это самостоятельно, при помощи паяльника мощностью около 60 Вт. Смочите отверстия под микросхемой спиртоканифольным флюсом и заполните их припоем так, чтобы он достиг подложки. Ни в коем случае не используйте активные кислотосодержащие флюсы!
Далее следует соединить между собой шины цифровой и аналоговой "земли", поместив каплю припоя на площадки для перемычки. Разработчики разделили шины из лучших побуждений, так принято делать в классической практике помехозащиты, чтобы помехи из цифровой части схемы как можно меньше попадали в аналоговый видеотракт. Но на практике это приводит к частым выходам микросхемы видеомиксера из строя. Причиной этого являются переходные процессы, которые возникают в цепях питания при включении. Во время переходных процессов иногда на малые доли секунды потенциал на входах микросхемы оказывается ниже, чем потенциал "земли", т. е. ко входу прикладывается отрицательный потенциал. Оказалось, что микросхема МАХ7456 крайне чувствительна к этому и выходит из строя.
На время программирования и настройки обе части модуля, цифровую и аналоговую, можно питать напряжением +5 В от USB-порта компьютера. Для этого соедините капелькой припоя перемычку питания, показанную на рис. 6.39.
Проверку и настройку модуля MinimOSD можно выполнить без камеры. Достаточно иметь источник питания +5 В и монитор с аналоговым композитным видеовходом. В качестве монитора может также выступать любой телевизор.
Модули MinimOSD и их многочисленные клоны обычно поступают в продажу запрограммированными прошивкой для работы с проектом ArduPilot. Эта прошивка обменивается данными с полетным контроллером через протокол MAVLink (Micro Air Vehicle Link), но проект MultiWii использует собственный протокол MSP (MultiWii Serial Protocol), поэтому прошивку придется заменить. Для этого нам потребуется уже привычный набор: среда программирования Arduino IDЕ и адаптер USB-COM на основе чипа FTDI FT232. Плата модуля OSD разработана для подключения к фирменному адаптеру USB-COM, поэтому выводы на обратной стороне платы помечены в соответствии с цветами проводов адаптера. Вы можете подключить любой адаптер FTDI в соответствии с рис. 6.39. Напомним, что выводы Тх и Rx следует подключать перекрестно: Тх —> Rx, Rx —> Тх.
Последний стабильный релиз прошивки KV_Team_OSD можно скачать по адресу . Архив содержит исходный код прошивки для Arduino IDE, оболочку KV_Team_GUI и шрифт для загрузки в знакогенератор микросхемы МАХ7456. Видеомиксер не генерирует произвольные графические символы, а накладывает на изображение готовые из встроенного знакогенератора. Память знакогенератора независимая и заполняется информацией через микроконтроллер модуля OSD; напрямую из файла компьютера через USB-адаптер этого сделать нельзя.
К сожалению, новая среда разработки Arduino IDE 1.6.1 выдает ошибку компиляции исходного кода, поэтому будем использовать Arduino IDE 1.0.5. В меню Сервис | Плата выберите Arduino Pro or Pro Mini (5V, 16MHz) with ATmega328, затем через меню Сервис | Порт укажите порт, к которому через адаптер подключен модуль. Теперь, как и в случае с полетным контроллером, перед записью новой прошивки обязательно следует очистить энергонезависимую память EEPROM. В меню Файл | Примеры | EEPROM выберите пример "eepromclear". В строке
for (int i = 0; i < 512; i++)
исправьте параметр 512 на 1024, это объем памяти EEPROM микроконтроллера ATmega328. Скомпилируйте программу и запишите ее в микроконтроллер модуля OSD нажатием на круглую кнопку со стрелкой вправо. Дождитесь зажигания светодиода, расположенного над микроконтроллером. Теперь память EEPROM очищена и можно записывать основную прошивку.
Откройте, в Arduino IDE файл KV_Team_OSD.ino и скомпилируйте проект с записью прошивки в модуль. Если компиляция и запись прошли успешно, сразу после перезагрузки вы, скорее всего, увидите на экране беспорядочный набор символов, потому что таблица знакогенератора не соответствует версии прошивки. Для записи новой таблицы символов и дальнейшей настройки воспользуемся утилитой-конфигуратором.
В папке KV_Team_GUI выберите, подпапку, соответствующую операционной системе вашего компьютера, и запустите конфигуратор (рис. 6.41).
Рис. 6.41. Конфигуратор прошивки KV_Team_OSD
В левой колонке выберите нужный порт, соединение на скорости 115 200 бод будет установлено автоматически. Теперь в секции FONT TOOLS нажмите кнопку Browse для выбора шрифта. Файлы шрифтов хранятся в папке Data и имеют расширение mem. На выбор предлагаются два варианта: крупный и мелкий шрифт.
Какой из них выбрать — зависит от конкретного монитора, поэтому проверьте оба размера. Выбрав шрифт, дождитесь всплывающего окна с уведомлением, что шрифт загружен в буфер конфигуратора, и нажмите кнопку Upload. Через несколько секунд шрифт будет загружен в знакогенератор микросхемы МАХ7456. Если после окончания загрузки не произошел сброс и перезапуск модуля, нажмите кнопку сброса на плате. Теперь на экране появится заставка MultiWii и рабочий экран.
Можно приступать к конфигурированию отображаемых данных. Отметим, что запись прошивки, шрифта и все настройки можно выполнять при подключенном мониторе и визуально наблюдать все изменения в реальном времени.
Вы можете самостоятельно редактировать символы знакогенератора по своему усмотрению. Для этого в конфигуратор встроен простой пиксельный редактор символов, который вызывается кнопкой Edit Font.
Рассмотрим детально секции конфигуратора, но перед этим следует пояснить, что для измерения напряжения батареи, потребляемого тока и уровня сигнала радиоуправления можно использовать как аналоговые входы полетного контроллера, с передачей обработанных значений в потоке данных, так и входы контроллера модуля OSD. В этой главе далее будет рассказано, как подключить аналоговые сигналы к модулю.
CALL SIGN — здесь вы можете ввести условное имя своего коптера, если их несколько. В вашем распоряжении 10 латинских символов. Имя будет появляться на заставке при включении.
OSD BOARD TYPE — конфигуратор может работать с платами двух проектов: Rushduino и MinimOSD. Различие этих плат только в выводах контроллера, управляющих видеомиксером МАХ7456.
RSSI SETTINGS — секция контроля за уровнем сигнала на антенном входе приемника. Если приемник не имеет выхода RSSI, эту секцию можно пропустить. Флажок ADC/MWii Input позволяет выбрать внутренний АЦП модуля или аналоговый вход полетного контроллера с прошивкой MultiWii. Переключатель Off/On PWM предназначен для выбора типа сигнала RSSI. В зависимости от приемника это может быть либо аналоговый уровень, либо широтна-модулированный сигнал, где длительность импульса пропорциональна уровню сигнала. Параметр PWM Divider требует настройки под конкретный приемник. Разработчик проекта не рекомендует применять простой метод, когда передатчик расположен рядом с приемником, и при включенном передатчике уровень сигнала принимается за 100 %, а при выволоченном 0 %. Рекомендуется минимальным уровнем считать сигнал с запасом 15–20 % от реального сигнала. RSSI WARNING задает уровень сигнала, при котором срабатывает предупреждение.
VOLUME FLIGHT WARNINGS — предельные параметры полета, при которых будет срабатывать предупреждение. Предельное удаление Dist Max может быть задано в метрах от 0 до 25 000. По умолчанию задано 5∙100 = 500 м. Максимальная высота Alt Max задается в метрах, умноженных на 10. По умолчанию задано 25∙10 = 250 м. Минимальная высота полета задается в диапазоне 0-50 м. Если в этом поле установлено значение, большее ноля, то аварийная индикация сможет сработать только спустя 60 с полета. Этот интервал времени необходим для предотвращения ложных срабатываний при наборе высоты. Сигнализация максимальной высоты готова к срабатыванию сразу после взлета.
GPS SETTINGS — отображение информации GPS. Можно полностью выключить отображение переключателем Оff/Оn GPS или убрать с экрана только координаты переключателем Оff/Оn Coords. Переключатель 180°/360° Heading меняет вид компаса.
МАIN VOLTAGE — индикация напряжения силовой батареи. По аналогии со входом RSSI, переключатель ADC/MWii Input выбирает источник информации о напряжении. Минимальное напряжение Minim Volt WARNING отображается без десятичной точки, т. е. значение 105 соответствует напряжению 10,5 В. Параметр Divider Ratio используется для точной подстройки показаний под реальное напряжение батареи и действует только при использовании встроенного АЦП модуля (ADC).
VIDEO VOLTAGE — индикация напряжения батареи бортового видеопередатчика. Обычно видеокамеру и видеопередатчик питают от отдельной батареи. Модуль OSD может питаться:
• полностью от разъема порта полетного контроллера;
• полностью от видеобатареи, через разъем для подключения видео и встроенный импульсный источник;
• цифровая часть — от разъема порта, аналоговая — от видеобатареи через разъем видео.
UNIT & VIDEO — единицы измерения и система видео. По умолчанию установлены метрическая система и PAL, поэтому менять ничего не надо.
OTHER FUNCTIONS — здесь находятся настройки, для которых нет отдельной секции. Если вы хотите, чтобы при коротком перерыве между полетами, когда вы не отключаете питание, сохранялась статистика полета (время полета, потребленный ток, максимальная достигнутая дистанция и т. д.), то выберите опцию Maintain. В противном случае статистика будет обнуляться при каждом отключении моторов.
Далее следуют частота мигания символов Blink Frequency, предупреждение о максимальной горизонтальной скорости V Speed WARNING и предупреждение о максимальном угле наклона по оси вперед-назад Pitch Angle WARNING.
HARDWARE ADC'S — включение/отключение встроенных АЦП модуля. Это зависит от того, куда вы подключаете датчики напряжения и тока.
AMPERAGE — настройка датчика тока. На основании показаний датчика тока, напряжения и секундомера вычисляется потребленное количество энергии в миллиампер-часах. Здесь также может быть использован встроенный АЦП, на который подается сигнал с датчика тока. Параметр Sensitivity — это коэффициент пересчета для точной подстройки показаний под реальный потребляемый ток, больший нуля.
Для настройки потребуется достаточно точный дополнительный амперметр, например авиамодельный амперметр-ваттметр. Настройка параметров OfiSet High и OffSet Low представляет собой довольно хлопотное занятие и зависит от типа применяемого сенсора тока. Эти параметры задают смещение точки ноля АЦП, поскольку обычно при нулевом потребляемом токе с датчика приходит ненулевое значение напряжения.
MULTIWII FLIGHT CONTROL DATA SIMULATOR — в этой секции конфигуратор симулирует данные (рис. 6.42), поступающие из полетного контроллера под управлением MultiWii. Очень удобная опция, позволяющая полностью настроить и проверить работу модуля OSD на столе, не используя пульт радиоуправления и полетный контроллер. При помощи симулятора можно не только привыкнуть к отображаемой информации перед взлетом. В прошивке KV_Team_OSD v.2.3 имеется возможность точной настройки расположения элементов экрана при помощи стиков пульта, и симулятор для этой цели вполне подходит.
В любом случае, перед реальными полетами следует поработать с симулятором, чтобы довести до автоматизма чтение данных, отображаемых на экране. Во время полета у вас может не оказаться времени на поиск важной информации взглядом.
Рис. 6.42.
Секция симулятора данных MultiWii
Секция MWI SENSORS & ADC'S управляет симуляцией данных с датчиков полетного контроллера.
• ALT — высота полета по показаниям барометра. Может изменяться от 0 до 1000 метров.
• VARIO — вариометр (скорость изменения высоты, скороподъемность). Измеряется в метрах в секунду. Отрицательная величина означает скорость снижения, положительная скорость — набора высоты. Доступен диапазон от -4 до +4 м/с. В симуляторе отображается в виде значения, умноженного на 10, т. е. значение -25.0 означает снижение со скоростью 2,5 м/с. На экране OSD отображаются только целочисленные значения.
• VBAT — напряжение силовой батареи, доступны значения от 7 до 25 В.
• RSSI — уровень сигнала на входе приемника.
Секция MULTIWII GPS DATA симулирует данные GPS, прошедшие обработку в полетном контроллере.
• GPS FIX — имитация режима удержания спутников 3D Fix.
• SATS — количество доступных спутников.
• SPEED — горизонтальная скорость по данным GPS. Отображается на экране, только если моторы активированы. В программе в этом месте небольшая ошибка и данные в симуляторе не соответствуют отображаемой на экране OSD скорости.
• DIST НОМЕ — расстояние до точки взлета.
Круговые движки НОМЕ и HEADING симулируют изменение направления "домой" и реакцию компаса на поворот рамы. Соответственно, при повороте рамы на экране меняется положение стрелки, указывающей направление "домой".
ATTITUDE — движок для имитации кренов коптера. Можно при помощи мыши имитировать крены и смотреть, как это влияет на положение авиагоризонта на экране.
RC RADIO CONTROL — два движка, имитирующих рукоятки пульта управления. Эти рукоятки никак не влияют на положение авиагоризонта, зато позволяют входить в служебное меню OSD. Между рукоятками расположен флажок, после установки которого рукоятка газа перестает возвращаться в среднее положение после смещения при помощи мыши.
FLIGHT MODES — флажки, имитирующие включение различных опций прошивки. Позволяют натренировать восприятие индикаторов на экране. Отдельно следует отметить опцию OSD SW. Она имитирует отключение вывода информации на экран, кроме авиагоризонта, переключателем AUX на пульте, если такая опция предусмотрена в прошивке полетного контроллера. Не следует бояться, что вы пропустите тревожное предупреждение, когда вывод отключен. Соответствующая тревожная информация появится на экране в любом случае. Можете в симуляторе снизить напряжение батареи или увеличить высоту полета и посмотреть, как это работает.
Структура экрана KV_Team_OSD v.2.3
Элементы экрана и система координат видеомиксера представлены на рис. 6.43 и 6.44 соответственно.
Рис. 6.43.
Элементы экрана OSD:
1 — компас 180°/360°; 2 — режим стабилизации; 3 — уровень радиосигнала RSSI; 4 — количество спутников; 5 — состояние GPS и активные сенсоры: барометр, магнитометр, акселерометр; 6 — направление "домой"; 7 — высота в метрах, по барометру; 8 — скорость изменения высоты, м/с; 9 — авиагоризонт; 10 — положение рукоятки газа в %; 11 — расстояние от точки взлета в метрах, по данным GPS; 12 — координаты по GPS; 13 — потребленная от батареи энергия, мА∙ч; 14 — горизонтальная скорость, м/с; 15 — напряжение видеобатареи, потребляемый ток, напряжение силовой батареи; 16 — время полета
Рис. 6.44.
Система координат видеомиксера МАХ7456
Служебное меню прошивки KV_Team_OSD
Служебное меню прошивки предназначено для настройки параметров полетного контроллера и модуля OSD в полевых условиях только при помощи пульта радиоуправления. Для входа в служебное меню поместите левую рукоятку пульта в положение среднего газа и до упора вправо, затем отклоните правую рукоятку до упора вверх. При использовании симулятора перемещайте левый движок в нужное положение при нажатой клавише , или щелкните на флажке между движками, чтобы зафиксировать положение движка при отпускании кнопки мыши. Продолжая удерживать клавишу , передвиньте правый движок до упора вперед.
Меню состоит из девяти страниц, которые можно перелистывать, отклоняя вправо или влево левую рукоятку пульта. Газ при этом должен оставаться в среднем положении. Для перемещения курсора по экрану используйте правую рукоятку пульта. При помощи экранного меню можно изменить все основные настроечные коэффициенты полетного контроллера, включая PID, и запустить процедуры калибровки акселерометра, гироскопа и магнетометра. Особый интерес представляет возможность точной настройки расположения элементов экрана OSD и включение/выключение их индикации.
Рассмотрим процесс настройки экранного элемента на примере включения индикации напряжения батареи видеоканала (рис. 6.45). По умолчанию индикация этого элемента отключена, и ее невозможно включить через конфигуратор. Перейдя в служебное меню, пролистайте его до восьмой страницы. Это проще сделать движением рукоятки газа влево.
Рис. 6.45. Настройка позиции элемента на экране
Под заголовком ITEM находится название настраиваемого элемента. DSP может иметь значения ON/OFF и управляет отображением элемента на экране. Значения LINE и COL означают номер строки и столбца в системе координат экрана. Эти значения можно менять.
Переведите правой рукояткой курсор так, чтобы он указывал на название элемента. Теперь движением рукоятки газа вправо пролистывайте элементы. В прошивке есть ошибка: при достижении последнего элемента, а также при попытке пролистнуть элементы влево, чтобы сразу попасть на последний элемент, модуль иногда самопроизвольно перезагружается.
Когда доберетесь до элемента VIDEO ВАТТ, переместите курсор на параметр DSP, по умолчанию равный OFF, и движением рукоятки газа вправо смените его на ON. Переместите курсор на пункт SAVE-EXIT и движением рукоятки газа сохраните настройку элемента. Программа перейдет в обычный режим и в правом нижнем углу экрана должен появиться символ видеобатареи и ее напряжение. Они будут мигать и показывать нулевое напряжение, т. к. пока мы не подключили датчик напряжения к модулю. Аналогичным образом можно включать и выключать отображение других элементов, а также располагать их на экране по своему вкусу. Если ваш приемник не оснащен выходом сигнала RSSI, отключите этот элемент, чтобы своим миганием он не отвлекал ваше внимание.
Подключение датчиков тока и напряжения к модулю OSD
Примечание
Микроконтроллер ATMEQA328, на основе которого собран модуль, имеет встроенные аналого-цифровые преобразователи, способные измерять напряжение не выше, чем напряжение питания. В нашем случае это 5 В. Но батареи, особенно силовая, имеют существенно большее рабочее напряжение. Поэтому для измерения напряжения батарей следует обязательно использовать резистивные делители.
В продаже имеются модификации модуля OSD, уже оснащенные необходимыми делителями, как на рис. 6.46. К входам такого модуля достаточно присоединить провода в соответствии с надписями на плате и настроить коэффициенты в конфигураторе. Поэтому, если есть возможность, лучше приобрести модифицированный модуль.
Рис. 6.46.
Модифицированный модуль OSD со встроенными делителями
Стандартный модуль можно доработать самостоятельно, если вы обладаете необходимыми навыками пайки. Потребуется припаять тонкие провода непосредственно к выводам микроконтроллера. Лучше всего подойдет тонкий провод МГТФ во фторопластовой оболочке, но можно использовать провода в виниловой изоляции, а также жилки из кабеля от наушников. Если нет миниатюрного паяльника, можно намотать несколько витков медного провода диаметром 2 мм на жало большого паяльника, оставив свободную часть длиной около 1 см, заточенную под клин и облуженную. Внешние резисторы делителей можно смонтировать на небольшом кусочке стеклотекстолита или припаять к проводам и затянуть в термоусадочные трубки.
Схема подключения показана на рис. 6.47. Номиналы резисторов могут быть другими, важно лишь, чтобы их соотношение было приблизительно 1:15, этого достаточно для батарей с напряжением до 4S. На входах RSSI и датчика тока применяются не делители, а защитные токоограничительные резисторы, включенные последовательно, потому что на выходе измерителя тока, а также на выходе RSSI приемника присутствует напряжение, заведомо не превышающее напряжение питания +5 В.
Рис. 6.47.
Подключение датчиков тока и напряжения к MinimOSD :
ВАТ1 — батарея видеотракта; ВАТ2 — силовая батарея; V_CUR — напряжение с выхода датчика тока; RSSI — напряжение или импульсы ШИМ с выхода RSSI приемника
Резисторы делителя напряжения для батареи видеотракта удобно припаивать непосредственно к выводам питания аналоговой части модуля, как показано на рис. 6.48.
Рис. 6.48.
Монтаж делителя напряжения батареи видеотракта
Керамический конденсатор номиналом 0,1 мкФ снижает помехи в измерительной цепи, но использовать его не обязательно. После подключения делителей необходимо настроить калибровочные коэффициенты, чтобы отображаемое на экране напряжение соответствовало реальному напряжению батареи. Подключите плату к компьютеру через адаптер и на линии ВАТ1 и ВАТ2 подайте заведомо известное напряжение в диапазоне 11–12 В, измеренное при помощи вольтметра. Меняя константы Divider Ratio, добейтесь, чтобы напряжение на экране максимально соответствовало реальному. Допускается периодическое мерцание значения после запятой. Это связано с тем, что в прошивке не фильтруются погрешности измерения и пересчета с плавающей точкой.
Отображение показаний датчика тока настраивается иначе. Если используется двунаправленный сенсор тока (обычно низкоомный шунт), то установите High в 0 и начните менять параметр Low с 0 и далее 1, 2…. таким образом, чтобы при отсутствии нагрузки отображалось нулевое значение тока. Обычно значений 1 или 2 достаточно.
Если используется однонаправленный сенсор тока (обычно на магниторезистивном датчике), установите High = 2 и Low = 0. Проверьте индикацию нулевого тока, отображаемое значение должно быть близким к нулю. Если это не так, установите High = 1 и Low = 255. Затем постепенно уменьшая Low = 254, 253, 252…., добейтесь максимальной близости показаний к нулю при отсутствии нагрузки.
Далее, используя дополнительный амперметр или амперметр/ваттметр, замеряют ток под нагрузкой и, меняя константу Sensitivity, добиваются правильных показаний.
После настройки и калибровки OSD можно смонтировать модуль на коптере. По опыту автора, несмотря на довольно сильный нагрев микросхемы МАХ7456, модуль OSD можно затягивать в термоусадочную трубку, и это не приведет к перегреву. Важно лишь, чтобы модуль был смонтирован на открытом месте с хорошим обдувом. Желательно сохранить возможность подключения адаптера USB-COM на случай настройки или перепрошивки "на борту".
При правильном подключении соединительных проводников между камерой, модулем OSD, контроллером и передатчиком видеосистема начнет работать сразу.
Если с контроллера не поступают данные на OSD, убедитесь, что модуль соединен с портом SERIAL3 по схеме Rx — > Тх, Тх — > Rx и в настройках прошивки полетного контроллера указана скорость этого порта 115 200 бод. При использовании некоторых камер модуль неправильно определяет стандарт видеосигнала и переходит в режим NTSC, хотя на самом деле поступает сигнал стандарта PAL. В этом случае следует запаять перемычку PAL с обратной стороны платы (см. рис. 6.40).
Подключение датчиков тока и напряжения к контроллеру
Подключение датчиков тока и напряжения непосредственно к полетному контроллеру менее предпочтительно с точки зрения выхода контроллера из строя и сложности настройки. Но иногда необходимо это сделать, например, если для отображения телеметрии используется не экран OSD, а другие средства.
В случае использования готового измерительного модуля, аналогичного представленному на рис. 3.8, сигналы с его выходов можно подавать непосредственно на аналоговые входы полетного контроллера. Если имеется только датчик тока, то схема входных цепей аналогична показанной на рис. 6.47. Измеряемое напряжение силовой батареи необходимо подавать только через резистивный делитель! В противном случае аналоговый вход контроллера выйдет из строя. В стандартной схеме подключения измеряемое напряжение с выхода делителя или модуля подается на вход А1 полетного контроллера, а напряжение с выхода датчика тока — на вход А2. В комментарии внутри кода прошивки предлагается использовать иные номиналы резисторов (33 и 51 кОм), с меньшим коэффициентом деления. Но при указанных номиналах на вход датчика нельзя подавать напряжение 12 В с батареи, т. к. на выходе делителя будет около 8 В.
В прошивке контроллера необходимо сделать некоторые изменения. Включим измерение напряжения. В файле config.h найдите секцию battery voltage monitoring. Раскомментируйте строку //#define VBAT. Далее необходимо подобрать опытным путем коэффициент деления в строке #define VBATSCALE таким образом, чтобы отображаемое напряжение соответствовало реальному напряжению батареи, измеренному контрольным вольтметром. В отличие от удобного конфигуратора OSD, где настройки можно менять в режиме реального времени, в данном случае нам придется после каждого изменения параметра заново компилировать и загружать прошивку. Чтобы работала звуковая сигнализация разряда батареи, необходимо раскомментировать опцию #define BUZZER, расположенную немного выше по тексту кода.
Параметр VBATNOMINAL нужен только для телеметрии на LCD-экране и соответствует напряжению заряженной силовой батареи без десятичной точки. Следующие параметры позволяют настроить трехуровневое предупреждение о разряде батареи:
#define VBATLEVEL_WARN1 107 // (*) (**) 10,7V
#define VBATLEVEL_WARN2 99 // (*) (**) 9.9V
#define VBATLEVEL_CRIT 93 // (*) (**) 9.3V
Параметр #define NO_VBAT необходим для отключения сигнализации разряда, если силовая батарея вообще не подключена. Такая ситуация возникает, например, при подключении полетного контроллера к разъему USB — контроллер работает и пытается измерить напряжение, но силовой батареи нет.
Далее приступим к настройке измерителя тока. Во время регулярных полетов нас интересует не мгновенное значение потребляемого тока, а количество потребленной энергии в миллиампер-часах. Мы можем приблизительно предположить, сколько еще энергии осталось для полета, а также оценить степень износа самой батареи, насколько ее реальная емкость соответствует заявленной. В прошивке MultiWii v.2.3 предусмотрены два способа оценки потребленной энергии: более точный аппаратный и приблизительный программный на случай, если аппаратный датчик тока отсутствует.
Настройка аппаратного измерителя тока и потребленной энергии
Раскомментируйте строку //#define POWERMETER_HARD.
На выходе датчика тока присутствует постоянное напряжение, значение которого прямо пропорционально току, протекающему через измеритель. Полетный контроллер измеряет это напряжение и пересчитывает в ток. В режиме нулевого тока напряжение обычно не равно нулю. Подберите константу в строке #define PSENSORNULLl таким образом, чтобы при выключенных моторах в GUI или показаниях телеметрии отображалось нулевое значение тока. Теперь приступим к настройке коэффициента пересчета напряжения, поступающего с датчика тока, в отображаемое значение тока. Вам понадобится ваттметр с функцией измерения тока или мощный амперметр, включенный в разрыв провода силовой батареи.
Примечание
Дальнейшие действия потребуют от вас особой осторожности, поскольку измерения будем проводить в рабочем режиме, с установленными винтами. Надежно закрепите квадрокоптер на земле при помощи груза или растяжек. Позаботьтесь о том, чтобы провод USB и посторонние предметы не попали в плоскость вращения винтов.
Активируйте моторы и дайте газ примерно 60–70 %. Сравните показания контрольного прибора со значением тока в GUI или данных телеметрии. При необходимости измените значение параметра #define PiNT2mA. Увеличение этого параметра приводит к увеличению отображаемых значений тока и потребленной энергии. По достижении приемлемой для вас точности измерения тока настройку можно считать законченной.
Настройка программного измерителя потребленной энергии
При отсутствии датчика тока потребленная энергия рассчитывается приблизительно, через время полета и некую усредненную эмпирическую константу, значение которой имитирует потребляемый ток. Разумеется, в этом случае в данных телеметрии мы видим только потребленную энергию. Точность расчета зависит от аппаратной конфигурации коптера, условий и стиля полета. После настройки точность составляет около 10 %. Если совершить около десятка реальных полетов с использованием ваттметра и после каждого полета корректировать поправочный коэффициент, то можно достичь точности около 5 %. Но любое изменение аппаратной конфигурации, включая использование батарей разного веса и мощности, будет приводить к существенному ухудшению точности.
Убедитесь, что напряжение батареи измеряется максимально точно. Раскомментируйте строку //#define POWERMETER_SOFT. "Залейте" прошивку в контроллер. Далее потребуется несколько раз совершить последовательность действий:
1. Совершите обычный полет, в своем обычном стиле и с обычной продолжительностью.
2. После окончания полета не спешите обесточивать коптер. Сперва запишите значение потребленной энергии с экрана LCD или из данных телеметрии.
3. Подключите силовую батарею к зарядному устройству и зарядите в обычном режиме. Посмотрите, какое количество энергии в миллиамперчасах "залито" в батарею на самом деле.
4. Подкорректируйте значение параметра #define PINT2mА. Увеличение значения повышает результат измерения и наоборот.
5. Повторите полет и вновь сравните вычисленное значение и фактически загруженное в батарею при зарядке.
Для ускорения процедуры первые 1–2 оценочных полета можно проводить не до полного разряда батарей, а лишь дождавшись, пока отображаемое значение потребленной энергии достигнет 100–200 мА∙ч. Этого будет достаточно, чтобы оценить, в какую сторону изменять коэффициент PINT2mA и насколько существенно.