ArduCopter Mega: порт на обычную Arduino (тестим)

iBat

Именно оттуда и запитывался.

Syberian

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

iBat

Я правильно понимаю, что для входа в setup надо водрузить перемычку на выводы SW?

Так и не разобрался. Видимо спать пора 😃
Зашел в планере в Firmware, нажал свою конфигурацию, он че-то там загрузил и платка перестала коннектиться к планеру, а так же весело моргать светиками после включения. Попытался Arduino IDE залить B8 - ругается “redefinition of FastSerial Serial” хотя либы все на месте, как написано.

SavosRU
iBat:

Попытался Arduino IDE залить B8

Если я не ошибаюсь, то прошивка B8 - это именно для меги. А для заливки на Black Vortex нужна прошивка B8_BV и это разные прошивки, в том числе и могут быть различия в библиотеках. Ну, автор меня поправит если что 😉

Syberian:

Тезка,
поставь

П 0.8
И 0.1
Д 0.08
МАХ 200

и проверь

Спасибо, Олежка! Проверю, но уже завтра… тьфу ты черт, это в два часа ночи-то я говорю “завтра”? нет, тогда уже сегодня, но после того, как посплю…
Просто жизнь постоянно вносит свои коррективы и мои планы на сегодняшний вечер не исполнились.

Syberian:

Индикатор правильной работы удержания курса:
Запустить моторы в руке, остановить, развернуть на 90 град и опять включить. Должны крутиться только 2, ну, или остальные еле-еле. Тронуть руддер. Должны все начать крутиться с одинаковой скоростью.

А вот это весьма ценный совет и его явно надо бы в wiki внести. Кто там у нас этим занимается-то?

TheGreatDom

Здравствуйте!
Очень заинтересовал проект megapirate. Имея аэроквадовское железо(arduino mega 2560 + датчики аналогичные Shield v2.0) пытались залить в него пирата по этому мануалу rcwiki.ru/index.php/MegaPirates но чтото не оч вышло. Еще выяснилось что там описана довольно старая версия проекта, плюс что кроме мега есть еще и ардупират. Немного запутавшись решил спросить какой сайт описывает последнюю версию мега(арду)пирата и есть ли мануал по ее установке/настройке?
Заранее спасибо!

ViktorDoma

По Black Vortex по порядку:

  1. Производитель платы русскоговорящий, соответственно можно с ним общаться на русском языке. Зовут Александр (CSG_EU на rcgroups.com).
  2. Тщательно проштудировать первый пост из www.rcgroups.com/forums/showthread.php?t=1455433
  3. При заказе платы с GPS, указывать тип разъема SMA (возможны 4-ре варианта) - какие конкретно - уточняйте у производителя.
  4. Если использовать для самолета, то необходимо соединить средние контакты М1-М8. Спасибо Александру (alex-ber) за подсказку.
  5. Перемычка SW используется для режима CLI (Command Line Interfase), для прошивки, полетов и ArdupilotMegaPlanner - снять.
  6. Для заливки прошивки скачать Аrduino 022 arduino.cc/en/Guide/HomePage.
    5.1 Скачать файл boards.txt (9.8 KB, 116 views) с www.rcgroups.com/forums/showatt.php?attachmentid=4…
    и заменить его в соответствующей папке Arduino 022.
    5.2 В Arduino 022 зайти в меню - Tools-Board и выбрать Black Vortex (ATmega 2560)
    5.3 Tools - Serial Port - Выбрать ваш, который подцепился к Вортексу.
    5.4 Открыть проект, нажать кнопку Verify - после сообщения Done compiling Нажать UPLOAD - ждать пока не скажет DONE UPLOADING

Что накопал сам:

На плате перепутаны подписи BAT+ BAT- L+ L-? соответственно питание подавать на L+ (плюс) L- (земля).
Вольтаж 6-18 вольт должна держать (согласно спецификации кренки), НО - кренка на 5в сильно греется при питании больше 10 вольт.
Производитель рекомендует питание от 2S липы. (у меня на тестах так и работает от 2S)

ПЫСЫ - у меня и других возникают “дебильные” вопросы, которые пора систематизировать и сложить в РСвику. Олег сделайте раздел для Вортекса - будем туда складывать инструкцию.

DrinK
ViktorDoma:

По Black Vortex

Добавьте таблицу подключения приемника, по типу как в вики …

Rx1 - Ch?
Rx2 -Ch?
и тд

Схема расположения платы и подключение моторов для QuadX и Quad+ конфигурации.

Alex_from_Israel

Добрый день!

Наиболее подходящая прошивка Мегапирата, ИМХО, Б8. Пока нет ЖПС и сонара, пробую с ней. Хотя остальные тоже летают, кроме 33. Там какие то баги с коннектом на Планер. С ПИДами пока не играюсь, хватает стоковых. На улицу еще не выносил, но в тесной комнате на высоте меньше метра на висение хватает моих, очень незначительных, пилотских навыков. И это производит впечатление. Спасибо команде пиратов и персонально Олегу. Вопрос к Олегу. Принцип программирования Вашего секвенсера. Цифра перед запятой, это время в миллисекундах? Я использую 9 ЛЕДов (3 RGB ленточки на лучах через самодельные контроллеры из распотрошеных регулей). Прописал порты для всех и добавил 9й лед с индексом 256. Это правильно? Работает с Вашими программами, хоть и не совсем так, как хотелось бы. Там только 4 ЛЕДа, в программах и, соответственно, адекватно работает только 4я. Хотелось бы уяснить принцип программирования, жалко времени разбираться методом научного тыка. Заранее спасибо. Сейчас пытаюсь разобраться с контролем батарей, это уже идея фикс у меня, переключить регули в режим Никель-Кадмиевых батарей, чтобы несколько увеличить время полета. А без надежного контроля за напряжением борта, боюсь угробить аккумы. Спасибо заранее.

SavosRU
Alex_from_Israel:

Сейчас пытаюсь разобраться с контролем батарей…
… А без надежного контроля за напряжением борта, боюсь угробить аккумы.

Во-во! Я тогда, когда описывал зависание коптера и невозможность его остановки (после чего благодаря совету Алекса я-таки поставил выключатель, отрубающий питание мозгов коптера!!!) - вот я тогда рассказал, что пару раз пришлось ждать ПОЛНОГО разряда аккумулятора, чтобы подойти к “бешенному коптеру”. Ну и после то ли второго то ли третьего такого случая я обнаружил, что один акум благополучно скончался. Коптер высосал из него все что смог и напряжение на банках упал где-то до чуть более 2 (двух!) вольт.
Может как-то реанимировать его и возможно, но учитывая его емкость всего в 1600mAh - я даже не пытался. Просто увидел, что он не заряжается, померял напряжение и отложил его в сторону. Но сам факт свидетельствует - надо иметь четкий контроль, иначе прощая аккумулятор!!!

Alex_from_Israel

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

SovGVD
Alex_from_Israel:

Хотя остальные тоже летают, кроме 33

я на 33 летаю, если речь про ту что с рцгрупс

Alex_from_Israel:

боюсь угробить аккумы

кстаии про акумы, чето мой побитый стал быстро заряд терять и чуток припухает при юзании на коптере + если нажать, звук как будто чето жидкое булькает/шипит (с другим акумом нету такого)… дальше использовать или разрядить до 0 и выкинуть?

Covax
SovGVD:

дальше использовать или разрядить до 0 и выкинуть?

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

SovGVD

хранится на столе рядом с легко воспламеняющимися предметами (бумага, дерево, пластик, еще один аккум), 2 банки пробиты (за фольгой чето зеленовато виднеется), одна помята - последний краш был очень жестким, они в общем то давно помяты, но просто щас напрягло что набухает немного =)
выкинуть не жалко (2.2Ah), но надо же разрядить хорошенько, вариант с ведром и соленой водой меня настораживает… в заряднике есть функция DISCHARGE - только хз до скольки оно отdischargeрит аккум =)

Covax
SovGVD:

вариант с ведром и соленой водой меня настораживает…

взорвется вместе с ведром и соленой водой 😃 под нагрузку какую нибудь поставь, типа светодиодной ленты, и пусть горят до смерти

Syberian
Alex_from_Israel:

Вопрос к Олегу. Принцип программирования Вашего секвенсера. Цифра перед запятой, это время в миллисекундах?

Лед 256 уберите от греха!
Щяс изображу по-русски. Для Вики.

MegaPirate B8 LED sequencer
(контроллер БАНО)
Инструкция по программированию.

Открываем LED.pde
После тарабарщины на англицком видим такое
#define LED_1 1
#define LED_2 2
#define LED_3 4
#define LED_4 8
#define LED_5 16
#define LED_6 32
#define LED_7 64
#define LED_8 128
#define LED_OFF 0

Это, собственно, символические имена каналов секвенсора (не путать с выводами ардуины!)
Их мы и будем указывать при задании программ.

Для начала нам нужно указать, к какому выходу ардуины какой канал секвенсора подключен:

#define SQ_LED1 55 // A1
#define SQ_LED2 56 // A2
#define SQ_LED3 57 // A3
#define SQ_LED4 58 // A4
//#define SQ_LED1 51
//#define SQ_LED1 51
//#define SQ_LED1 51
//#define SQ_LED1 51

Приведенный код означает, что разрешены к использованию с 1 по 4 каналы секвенсора, и подключены на выходы с d55 по d58 (что эквивалентно А1…А4). Также можно добавить каналов, вводя соответствующие строки, например:
#define SQ_LED5 60 // A6

  • это означает, мы разрешили использовать 5-й канал секвенсора и завели его на d60-ю ногу ардуины.
    Каналы можно прописывать и назначать в любой последовательности. Имейте ввиду, что нога А5 (d59) используется для включения режима CLI, поэтому заводить на нее секвенсор нельзя!

Теперь определимся с каналом приемника, с которого будем брать управление:
#define SQ_LED_CH 7 // numbers from 6 to 8
По умолчанию стоит 7-й канал. Имейте ввиду, что канал должен быть дискретным. Здесь и далее будем звать его тумблер

Написание программы.
В секвенсоре предусмотрено 4 программы до 64 *уя позиций в каждой (см. сноску). Для запуска текущей программы включаем тумблер, для гашения всех огней - выключаем. Программы циклические: дойдя до конца, начинает сначала. Для переключения на следующую программу (после №4 будет №1 и т.д.) - из положения тумблера ON выключаем и включаем снова за время менее 1 секунды. При выключении тумблера номер программы сохранится. После отключения питания будет выбрана программа №1.

Рассмотрим простую программу на примере стандартной №1:
const byte led_seq1[]= // 2 short 1, 2 short 2, led 4 constantly on
{ 2, LED_1|LED_4,
2, LED_4,
2, LED_1|LED_4,
20, LED_4,
2, LED_2|LED_4,
2, LED_4,
2, LED_2|LED_4,
20, LED_4,
0, LED_OFF,
};

Программа представляет собой неопределенный массив из записей, разделенных запятой и имеет имя led_seq(номер_программы)
Каждая запись представляет собой строку вида:
%время%, %состояние%,
где “время” - число в 1/20 долях секунды (цифра 20 означает 1 сек). Максимальное значение 255, т.е. 12.5 секунд. Если этого мало (сомневаюсь), скопируйте шаг еще раз.
“состояние” - собственно, состояние выходов секвенсора. Здесь нужно указывать символическое имя канала (см. в начале статьи) секвенсора, который будет включен в течение этого шага программы. Если включенных выходов несколько, нужно разделять их знаком |
Например,
40,LED_1|LED_4, // - в течение 2 секунд будут включены 1-й и 4-й каналы, остальные выключены

Если нужно просто “побыть в темноте”, необходимо указать время (ненулевое):
20, LED_OFF, // выключить все каналы на 1 секунду

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

0, LED_OFF,

Секвенсор при обнаружении этой команды, сразу же перескакивает на начало программы

Все.

====
Поправка:
Теперь общий размер программ ограничен только свободной оперативной памятью Ардуины
(в последней сборке было около 1 кБ, т.е. 500 шагов)

SavosRU
Syberian:

Тезка,
поставь

П 0.8
И 0.1
Д 0.08
МАХ 200

и проверь

Поставил. И чисто субъективно коптер стал более управляемым по “яв”. Может это психологический такой эффект - выполнить рекомендации “от гуру” и получить результат??? 😁
Ну, как бы там ни было - в комнате стал гораздо послушнее и я даже решился опять выйти на улицу, не смотря на довольно сильный и порывистый ветер.
Результат я описывал в соседней ветке - вот тут 😦

Что же… На то оно и учеба…

Syberian

так он перестал крутиться тупо или нет?

Alex_from_Israel

Спасибо, Олег!

С программированием все ясно. Очень удобный принцип.
Теперь вопрос. Что означают эти степени двойки в именах каналов, и почему для 9 канала нельзя использовать 256? Как, в таком случае задействовать программно 9 канал? У меня 3 ленты светодиодов с возможностью программно задавать цвет каждой ленты типа 111 - белый, 000 - выключен, 100 - красный, 001 -зеленый и т.д. Очень удобно для БАНО можно включать стандартные аэронавигационные опознаватели, правый красный, левый зеленый, задний белый мигающий.

P.S.
С включением режимов в планнере разобрался. Детская ошибка, не нажимал рефреш. Теперь датчик тока/напряжения задействован, но работает некорректно. На оригинальной плате он включен через резистор 10 ком, у меня напрямую. В прошивке код не соответствует рекомендованному производителем датчика. В коде производителя показания датчика просто делятся на коэффициент 12.99 для напряжения, 7.4 для тока, в скетче совсем по другому. В результате я получаю напряжение батареи 0.33 вольта, вместо 11, а где должен высвечиваться ток, вообще непонятно.

Syberian

Двойки в степени означают бит. Переменная состояния портов восьмиразрядная, поэтому больше 8 каналов быть не могет. Добавлять еще один канал - много заморочек и упадет быстродействие управления коптером, т.к. повылезают переменные INT.
А что мешает для получения белого мигающего объединить 3 входа одной ленты и подать на них с одного выхода? Или соединить 2 входа, чтоб, к примеру, цвет был “синий-оранжевый-белый” у одной ленты?
Или вот прямо 3 независимых ленты должны переливаться?
На отдельный контроллер - хоть 100500 каналов сделать можно, но тут еще ведь квадр стабилизировать надо…

Alex_from_Israel

Теперь понятно. Ничего не мешает объединить, но тогда весь смысл использования ленты теряется. Нельзя использовать INT_32? Или собъется цикл LOOP в основной программе?

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