В комментариях к моему предыдущему дневнику народ сетовал, что непонятна электронная часть. Идя навстречу пожеланиям, решил раскрыть эту тему поподробнее. Так как объем - достаточно большой, решил не перегружать тот дневник, а оформить отдельной статьёй с пошаговой инструкцией по прошивке на Мегапират. На данный момент - это наиболее нравящаяся мне прошивка. К слову сказать, мегапират поддерживает варианты и для самолета, и для автомобиля и для вертолета. Реализована поддержка нескольких полетных режимов, опция симпл для каждого из режимов и полет по маршруту, заданному по точкам GPS. Из всех этих вкусняшек, меня на данный момент интересует стабильный полет. Ну может ещё потом режимом симпл побалуюсь. Это когда при старте коптер запоминает показания компаса, и при полете уже всё равно, где у коптера перед, где зад - он сам трансформирует направление полета.Вот скажем, стик элероны вы отклонаете вперед. И коптер летит вперед, невзирая на то, что находится по отношению к вам боком или передом!
История прошивки такова - есть команда разработчиков проекта Ардукоптер. Они выпустили свой полетный котроллер. Раньше, на сайте их проекта говорили, что достаточно Криуса АллИнОнеПро (кажется она же, на Паркфлаере), но позже "сторонюю" плату поддерживать перестали. Задача проекта Мегапират - адаптировать эти прошивки под более дешевые датчики, платы, сделать прошивку более универсальной, сохранив все достоинства. Один из разработчиков, наш соотечественник, поискать его можно на другом модельном форуме под ником "Sir Alex".
Наша задача в этой статье минимальная - найти, настроить прошивку и запрограммировать ей полетный контроллер. То есть мы не будем полностью разбираться в полетных режимах, в коде прошивки - это всё выходит за рамки статьи. Скачиваем, настраиваем, компилируем, настраиваем датчики коптера - такова наша развлекательная программа.
Еще одна ремарка. Если вы - счастливый обладатель поддерживаемых Ардукоптером плат - пропускайте всю эту процедуру с Мегапиратом, идите сразу в Mission Planner, и уже в нём самом можете залить прошивку прямо из интернета. Для этого не нажимая Connect, но выбрав порт и скорость, Initial Setup - Install Firmware, смотрите на картинки, и выбираете ваш тип рамы, щелкнув по соответствующей картинке. Прошивка сама скачается из интернета и зама зальется на контроллер. После этого можно будет соединяться с платой. Далее - как описал ниже в инструкциях по МП (калибровка датчиков и стиков).

ВАЖНОЕ ДОПОЛНЕНИЕ:
В этой статье описан уже устаревший на данный момент - ручной способ загрузки прошивки в контроллер. Данная статья наверное представляет интерес теперь "как НАДЕЖНО всё сделать своими руками". Существует программа FlashTool (описание тут, качать отсюда), с помощью которой процесс настройки прошивки и "заливки" её на контроллер - более прост. Надо всего лишь в программе выбрать тип своего контроллера, тип раскладки каналов РУ, наличик и тип GPS... и нажать кнопочку Update. Программа сама скачает актуальную версию Мегапирата, сама её настроит и сама зальёт её в контроллер. Подсказка: сразу после прошивки проверьте правильность раскладки по каналам на вкладке "калибровка радио". И только после этого калибровать датчики. Процесс прошивки контроллера с помощью программы FlashTool хорошо описан в статье другого человека.
Ниже приведенная статья в общем тоже имеет силу, вы по-прежнему можете всё сами сделать рученьками. (21.05.2014)

   Подготовка. Начнем с поисков программ. Нам понадобится:
1) Arduino IDE (Ардуино ИДЕ, далее ИДЕ)
2) Сама прошивка, например вот эта. Прошивку подбирать надо внимательно, читая список проблем, найденных или решеных на ней. Это очень творческий процесс. Прошивки старых версий можно найти ТУТ. Релизные прошивки этого лета и новее можно найти ТУТ. На момент написания датчики в моей плате не поддерживались имеющимися релизными прошивками, мне пришлось брать бета-версию ВОТ ТУТ (справа ищем кнопочку "Download ZIP".
3) Программа Mission Planner (Мишн Планер, далее МП). Программа обновляется сама из интернета.
Еще понадобится интернет, докачать кое-чего в процессе (если у вас не установлено), об этом ниже. (про мозги под черепной коробкой - не говорю, наличие работающих - обязательно)))

    Настройка всего этого добра.
Итак, все программы скачаны, начинаем шаманить. Распаковываем выкачаный архив скажем в корень диска C, например "c:\arduino\". Далее, заходим в каталог "C:\Arduino\libraries", и удаляем там всё. Точно ВСЁ, все папки, до одной. то есть каталог libraries у нас остается пока абсолютно чистым.
Далее, распаковываем файл с прошивкой мегапирата. Пусть всё содержимое архива будет лежать в каталоге "C:\ardupilot-mpng\". Далее, идем в папку "C:\ardupilot-mpng\libraries", берем оттуда ВСЁ, и копируем в папку "C:\Arduino\libraries", все папки. Это мы скопировали библиотеки проекта в среду Ардуино, они необходимы для успешной компиляции проекта. Ещё надо взять файлик "pde.jar" из папки "C:\ardupilot-mpng\", и скопировать его в папку "C:\Arduino\lib\", переписав уже имеющийся там на новый. Для чего - объясню ниже.
Если подключить плату контроллера к компьютеру без установки драйвера, то увидим нечто подобное:

Значит, платы вы подключаете впервые к компьютеру. Если открыть ПУСК-НАСТРОЙКА-СВОЙСТВА СИСТЕМЫ-ДИСПЕТЧЕР УСТРОЙСТВ, то увидим что-нибудь навроде этого: "CP2102 USB..."
Тогда качаем вот этот драйвер, разархивируем куда-нибудь. Нас интересует файл CP210xVCPInstaller_x86 (как правило именно он, если у нас х86 процессор), устанавливаем драйвер. Если все прошло нормально, тогда идем в свойства системы - диспетчер устройств - и видим установленное устройство.

Открываем его свойства, и устанавливаем скорость порта 115200.



Нужно обратить внимание на номер COM порта. Как правило - это COM3, если вы ничего ранее не устанавливали, запоминаем номер вашего COM порта. Далее всё это закрываем. Устройство готово к перепрошивке.
Открываем среду Ардуино (помните? - ИДЕ, файл arduino.exe) и настраиваем её.
ВНИМАНИЕ. При каждом запуске Ардуино ИДЕ будет предлагать обновиться. Делать этого НЕ НАДО, так как часть библиотек работает именно с этой версией ИДЕ.



Выбираем ком порт (который недавно установили), выбираем ваш тип платы (если у вас мега то ищем 2650, но может у вас вообще ардуино уно, или мини), ....



..., тип программатора....



....и тип HAL - MegapirateNG (именно для этого мы переписывали файл "pde.jar", иначе этого пунктика в меню нет). Как пишут внизу, нужно перезапустить среду ИДЕ.
Дополнение. Тут у некоторых возникают проблемы с компиляцией проекта. Возможно вам надо настроить домашний каталог проекта. Для этого нажмем меню файл > настройки > расположение папки со скетчами > поставьте "C:\ardupilot-mpng\". После этого должно компилироваться без ошибок.



Теперь настройка прошивки.
Открываем среду ИДЕ, открываем файл "ArduCopter.pde", лежащий в папке "C:\ardupilot-mpng\ArduCopter\".



Теперь ищем справа треугольничек, вот такой (справа!!!)



раскрываем список открытых файлов проекта, выбираем файл "APM_Config.h". Ищем в нем строчку "//#define FRAME_CONFIG HEXA_FRAME" (примерно 21-я строка сверху) и правим её, чтобы выглядела вот так "#define FRAME_CONFIG QUAD_FRAME". Тут требуется небольшое пояснение. Все строчки, начинающиеся с символов "//" - закомментированы, и не работают. То есть мы раскомментировали тип рамы и исправили с гексакоптера на квадрокоптер (с шести на четыре мотора). Варианты рам приведены тут же, снизу. Для вашего конкретно контроллера возможно делать какие-нибудь дополнительный правки, я все варианты предсказывать не могу да и не знаю я код прошивки. Могу только дать ссылочку на форум или на сайт, где можно попросить помощи в случае затруднений.
(ну или например - для красной хоббикинговской платы AllInOnePro Mega надо в "APM_config.h" определить тип платы "#define MPNG_BOARD_TYPE HK_RED_MULTIWII_PRO")
Думаю - правок достаточно, можно прошивать. Жмем кнопку "стрелка вправо" (смотрим на предыдущем рисунке, кнопка слева) и ждём. Проект сначала скомпилируется, потом зальется на плату. Если будут ошибки - они будут написаны в нижней части ИДЕ и выделены оранжевым цветом. Если у вас подключена плата, установлены драйверы, настроено само ИДЕ и вы ничего лишнего не наредактировали - прошивка залетит на плату. УФФ.

   Теперь настройка прошитого полетного контроллера.
Все закрываем и устанавливаем Мишн Планер (МП). При запуске он может попросить обновиться.  
Разрешаем. После этого он возможно попросит установить Microsoft Net Framework 4.0 (оставим это на совести ленивых программистов-создателей МП). Скачать исталлер Фреймворка можно отсюда. После выкачивания, запустить установку, перезагрузить систему. Возможно, МП (чтоб ему икалось!) попросит скачать и установить ещё и фреймворк 4,5. Ответьте ДА на его вопрос, откроется страница майкрософта, нажмите "update my PC". После выкачивания и установки очередных мегабайтов (агррр), МП должен запуститься. Слава богу. Я не проводил эксперименты, возможно МП сможет запуститься, если у вас будет установлен только .Net Framework 4.5 - я не знаю. Но при первом старте он мне четко говорил - "хочу фрэймворк версии 4.0".

Теперь ответственный момент (сколько их ещё будет))). В правой верхней части программы выбираем номер COM-порта (далее скриншоты с другого компьютера, у меня как бы сменился номер COM порта), и скорость 115200. Нажимаем рядом кнопочку "Connect". Появится надпись "Connecting Mavlink" и внутри окошечка "Timeout 29", потом "Timeout 28" - обратный отсчет. Если досчитает до 0 - вы что-то сделали неправильно, и программа не видит вашего контроллера. Проверьте номер COM-порта, скорость - причем как в программе, так и в диспетчере устройств. Может быть у вас прошивка в Ардуине не залетела в плату - проверьте всё ещё раз. Программа должна начать чтение разных параметров, как на скриншоте ниже:


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

   Калибровка датчиков в МП.
Перед калибровкой датчиков рекомендуется очистить EEPROM. Это память, куда сохраняются настройки (значения переменных). Для этого идем в Терминал (скриншот ближе к концу статьи), такм пишем Setup, потом Erase. После стирания ЕЕПРОМа можно идти калибровать датчики.

Идем на вкладку "INITIAL SETUP", далее "Mandatory Hardware" (во вкладке "Install Firmware" - ничего не нажимаем, а то прийдется снова прошивку загружать в ИДЕ), сразу в Compass (Frame Type у нас уже выбран и залит в контроллер через ИДЕ) - будем калибровать компас (магнетометр). Для этого ставим обе галочки Compass - Enabled (активирован) и Auto Dec (если вдруг не будет получаться откалибровать автоматом, можно попробовать ввести вручную эти волшебные циферки деклинэйшн, знать бы их, да и что это - магнитуда? и какая она для вашей местности....). Жмем кнопочку Live Calibration. Далее программа нас предупредит, что в течение 60 секунд надо будет вращать наш квадрик (или то, что вы собрали) по всем осям. Каждый сам расшифровывает, что это значит "по всем осям", я вращаю так:
1) два полных оборота в горизонтальной плоскости, как стоит квадрик по часовой стрелке
2) два полных оборота в горизонтальной плоскости, как стоит квадрик против часовой стрелки
3) поворачиваю квадрик левым боком вниз, и кручу два полных оборота в горизонтальной плоскости, по часовой стрелке
4) кручу два полных оборота в горизонтальной плоскости, против часовой стрелки
5) выравниваю квадрик назад, поворачиваю его правым боком вниз, и кручу два полных оборота в горизонтальной плоскости, по часовой стрелке
6) кручу два полных оборота в горизонтальной плоскости, против часовой стрелки
7) выравниваю квадрик назад, поворачиваю его носом вниз, и кручу два полных оборота в горизонтальной плоскости, по часовой стрелке
8) кручу два полных оборота в горизонтальной плоскости, против часовой стрелки
9) выравниваю квадрик назад, поворачиваю его носом вверх, и кручу два полных оборота в горизонтальной плоскости, по часовой стрелке
10) кручу два полных оборота в горизонтальной плоскости, против часовой стрелки
11) переворачиваю квадрик пузом вверх, и кручу два полных оборота в горизонтальной плоскости, по часовой стрелке
12) кручу два полных оборота в горизонтальной плоскости, против часовой стрелки
Если вы заметили - я всегда сначала кручу "туда", а потом стролько же "обратно". Я так делаю, потому что у меня нет радиомодема, и плата подключена к компьютеру через шнур. Чтобы он не перекручивался, я его сначала закручиваю, а потом раскручиваю.
После этого ставлю борт опять "на ноги" и дожидаюсь оставшееся время. Как правило секунд 5-10. Любуюсь на надпись Calibration Succesfully, что означает - калибровка удалась. После этого, на первой вкладке FLIGHT DATA - стороны света должны показываться правильно.

UPD: Терерь процедура калибровки несколько отличается от описанной мною ранее. Там появляется сфера, на которой отображается каждой точкой снятый отсчет с датчиков. Чтобы до потери пульса не пытаться закрасить всю сферу, поступим так: Мысленно определяем шесть граней у нашего контроллера: верх, низ, перед, зад, право, лево. И вращаем коптер вокруг этих граней. Я беру в руки ноутбук, коптер держу на вытянутой руке, и кручусь вокруг себя. Потом меняю  положение коптера другой осью вверх и опять кручусь. Надо, чтобы все 6 осей были "отсняты" контроллером. Процедура не ограничена по времени, количество отсчетов тоже неограниченно. У меня снималось около 700-800 отсчетов, рисовалось на экране 6 кругов. После нажатия на кнопочку (даже если программа ругается что мало сэмплов), программа посчитает ваши снятые сэмплы и вынесет свой вердикт вашему "танцу с коптером". Если отсчетов недостаточно (или они были скучкованы только в одной области) - скажет "calibration failed" - начинайте карибровку заново. Если результатом будет "calibration succesfull" - значит всё хорошо (даже если ругалась, тем не менее калибровка успешна).
Полезно перед началом калибровки снять галочку "Auto declination" и всё-таки ввести вручную  градусы-минуты магнитного склонения для вашей местности. Подсмотреть эти волшебные циферки можно на сайте, кликнув по ссылке "Declination WebSite" прямо из Мишн Планнера.

Далее будем калибровать акселерометр. Нажимаем Accel Calibration, снимаем галочку "AC 3.0+", если у нас старый тип датчиков. Если ошибетесь с выбором, ничего страшного, жмем кнопку DISCONNECT в правом углу, затем CONNECT, и возвращаемся снова сюда же. После разборок с галочкой жмем Calibrate Accel, нам по очереди будут даваться команды, а мы их должны выполнять. Команды будут такие:
1) Поставьте коптер ровно. Первый шаг калибровки очень важен - он отвечает за горизонтальность полета вашего коптера. Можно заранее выставить коптер с использованием уровня (обычного пузырькового, строительного или лазерного) - плоскость моторов/пропеллеров должна быть горизонтальна. 
2) Поставьте на левый бок. Ставим квадр на левый бок (левыми лучами вниз) - подпираем чем-нибудь или просто неподвижно держим руками, ждем следующей команды.
3) Поставьте на правый бок. Ставим квадр на правый бок (правыми лучами вниз) - подпираем чем-нибудь или просто неподвижно держим руками, ждем следующей команды.
4) Поставьте носом вверх. Ставим квадр на "попу" (задними лучами вниз) - подпираем чем-нибудь или просто неподвижно держим руками, ждем следующей команды.
5) Поставьте носом вниз. Ставим квадр "мордой вниз" (передними лучами вниз) - подпираем чем-нибудь или просто неподвижно держим руками, ждем следующей команды.
6) Поставьте его задом)))) Ставим квадр "на голову" (шасси вверх) - подпираем чем-нибудь или просто неподвижно держим руками, ждем следующей окончания мучения. 
Результатом может быть надпись Calibration failed - неуспех. Значит ослушались мы командира (или я, когда писал по памяти, перепутал 3 и 4 пункты местами). Выход один - читаем внимательно бусурманские команды и выполняем их, пока не получим сообщение "Calibration succesful". После этого, на первой вкладке FLIGHT DATA - горизонт и крен/тангаж должно отражаться корректно при наклонах квадрика. (некоторые путаются, когда квадр лежит передом к монитору, кренят квадр на правый бок, в мониторе заваливается на левый - ааа, что делать?)))))  - ВСЁ ПРАВИЛЬНО, ТАК И ДОЛЖНО БЫТЬ.

Теперь калибровка радио. В мегапирате есть такая прикольная и удобная штучка. Выводим все тримы (можно и субтримы) в нули, и щелкаем на кнопку "Calibrate" (она будет вместо кнопочки "Completed" - на скрине я уже провел калибровку). Нас программа предупредит, что все стики надо перемещать в максимальные позиции. Жмем ОК, и крутим всеми стиками по максимальным позициям как вверх так и вниз, жмем кнопочку ОК. Далее программа нам скажет, что надо поставить все стики в середину, а газ в минимум. Делаем так и жмем ОК. Всё. Конечные точки настроены. На пульте не крутим конечные точки, иначе опять надо так же перекалибровывать.

К верхнему скриншоту нужен ещё один комментарий. Видите на канале 5 тоже чего-то откалибровано? Это я повесил переключение полетных режимов. Теперь у меня трехпозиционный переключатель - это первые три полетных режима (смотри скриншот ниже), тумблер "Gear" (который над тренерским) - это "сдвиг" трехпозиционного переключателя на три других полетных режима. Как это сделать для Турниги 9.х, можно почитатть на этом бусурманском сайте.
На следующей вкладке Flight Modes - можно определить полетные режимы в удобном нам порядке. Не забыть нажать Save Modes.

 Вот в общем-то и всё - самое важное сделано. На первой вкладке, в разделе "действия" мы можем задать квадрику точку GPS "дом" (куда он может вернуться при пропадании связи, если есть и настроен фэйлсейф), можем задать "нулевую высоту", на вкладке FLIGHT PLAN - можно задать план полета, просто натыкав точек GPS на карте. (не пошлите квадрик случайно в Антарктиду)))) Если вдруг у вас квадр в полете ломанулся на непонятную GPS точку - не паникуйте, переключите полетный режим на один из ручных!

Не забудьте перед полетом, после любых операций с настройками пульта или после калибровки радио в МП, нужно откалибровать регуляторы оборотов на новые значениения газа. Калибровка регуляторов поотдельности в канале газа приемника - не подойдет. Нам нужен диапазон значений на выходе полетного контроллера. Делается это так:
1. Выключаем питание борта, включаем пульт (если был выключен)
2. Ставим газ на максимум, включаем борт.
3. Ждем, пока загрузится контроллер, выключаем борт (так надо).
4. Включаем борт, ждем загрузки контроллера - контроллер должен встать в режим калибровки диапазона газа. Выглядит это как поочередное зажигание всех трёх светодиодов.
5. Стик газа на аппаратуре перевидим в минимум. Вы услышите пик.
6. Выключаем борт, всё - регуляторы откалиброваны.

В принципе, были сделаны основные настройки для взлёта. Есть ещё несколько волшебных настроечек, которые стоит сделать. 
Первое - это более тонкая калибровка компаса, так сказать в работе. Дело в том, что при вращении, движки создают помехи в Э/М поле, наводки в питающих проводах, небрежность монтажа силовых кабелей, которые не фонили, а под нагрузкой стали источником помех для компаса..... Заходим в меню TERMINAL, жмем кнопку Connect. Теперь мы можем в текстовом режиме давать команды процессору платы напрямую. Приглашение на ввод команд заканчивается версией прошивки и скобочкой "]" После неё вводим команды на клавиатуре. Можем написать help и выведется список команд. Вводим "setup" - входим в режим настроек. Можно тоже ввести help и увидеть список команд по установке. Нам необходима "compassmot". Начинают бежать строчки с замерами результатов. Даем газ, придерживаем одной рукой квадрик чтобы не улетел от нас, другой даем газу - раскручиваем движки на максимум (АХТУНГ, ТБ - БОИМСЯ ВИНТОВ), ждем 5 секунд, и выключаем мясорубку от греха подальше (газ в минимум и дизарм), жмем Enter на клавиатуре. Всё, поправка в компас на обороты винтов введена. Дотошный читатель скажет - сними винты дурачок! И будет не прав. В моём квадрике, без винтов при максимальных оборотах поправка была 5 условных попугаев, с установленными винтами - 22 !!! (в вашем коптере будут другие цифры)  Вам перфекционизм, или полетать?
Чтобы не держать мясорубку руками, имеет смысл:
1. можно переставить местами пропеллеры, чтобы при раскручивании коптер стремился к земле, а не взлетать. Этот совет подойдет большинству, но не всем. Но этот совет не подходит, если у вас пропеллеры слишком близко к лучу ("низкий" мотор и длинные пропеллеры) - на максимальных оборотах пропеллер может рубануть по лучу (у меня было такое).
2. Привязать коптер к поверхности (например к тяжелой табуретке, к столу), привязать тяжелую гирю/гантелю. Думаю ваш коптер больше двух килограмм не поднимет (у тех, у кого поднимает - не возникает таких вопросов))).
3. Если позволяет рама, и пропеллеры достаточно удалены от центра - можно сверху коптера поставить табурет, нагрузив его книгами или 5-литровой бутылью.
3. Опасный совет - можно другу держать над головой на вытянутых руках, держа за ноги. Я держу, прижимая за центральную часть к земле. Это реально опасное действие, пропеллеры режут плоть очень легко, особенно карбоновые. Я вас предупредил!

Второе - есть такая процедура, автовыравнивание горизонта. Крайне рекомендую настроить! Делается так: когда движки дизарм, отводим стик руддера вправо до упора (типа простой арминг), но ждем ДОЛГО, пока не загорится особый светодиод. У меня это был светик зеленого цвета, у других это может быть желтого цвета. Взлетаем на метр, и стиками пытаемся его удержать на месте, чтобы он никуда не уплывал. В течение 20 секунд рулим и садимся, делаем дизарм. Во время этой процедуры контролер запоминает показания акселерометра и ваше реакцию стиками на эти показания. Выключаете борт и включаете снова. После этого, если вы бросите стики во время полета - контроллер будет выравнивать коптер по горизонту САМ! Меня эта фишка уже один раз спасла от крэша (зарулился и потерял ориентацию квадра по отношению ко мне) - бросил правый стик, и работал только газом, квадр выровнялся - крэш не состоялся. То есть меня спас полетный режим STABILIZE. Если бы стоял акро - встреча с планетой была бы самой радушной (и крепкой по объятиям). Возможно, режим Alt Hold был бы ещё более "спасительным" для меня - этот режим существует для удержания высоты. Не знаю, когда ПАНИКА - можно и не сообразить переключить полетный режим. Пока я всё время летаю на стабилизации, иногда удается коптер красиво подвесить против ветра - висит на месте, и я не трогаю стики!

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


P.S. Если я неясно тут всё описал, посмотрите дневник другого человека - он не стал словами описывать, а просто снял все калибровки на видео. Мне очень помогло - рекомендую посмотреть.

И напоследок. При наличии вопросов можете попробовать стукнуться в почту 5timur5(злое животное)мэйлТочкаРу. Если не буду сильно занят - отвечу обязательно. Комменты здесь будут увидены мною и будут даны ответы на вопросы только при наличии вашей удачи.