Полетные режимы вашего квадрика и направление на экране аппы

4refr0nt

Телеметрия с APM на экране аппы через FrSky без 3DR Radio или XBee.

APM порт телеметрии-> Arduino Pro Mini -> FrSky приемник с телеметрией -> FrSky модуль аппы с телеметрией -> Turnigy с модом FrSky -> Модифицированная прошивка er9x FrSky 812

Стандартное отображение FrSky телеметрии тоже работает. На фото изображен 5-й экран телеметрии. С 1 по 4 - обычные. Все “родные” параметры FrSky сохранены, кроме Temp1, Temp2

Поддержка всех режимов, включая FLIP и AUTOTUNE.
Тестировалось на ардукоптере, но и на ардуплане должно работать.(режимы в современных прошивках у них совпадают)
Теоретически будет работать на всем, что отдает телеметрию в Mavlink формате.

Справа внизу: HEADING, т.е. “направление головы”. До арминга - север вверху, после арминга как в SIMPLE, т.е. относительно положения до старта.
Обратите внимание - это не курс, это то, куда направлен нос модели.

Совместимость с eePe - 99% (не сохраняются некоторые настройки телеметрии на старых режимах)

Исходники и бинарники: code.google.com/p/er9x-frsky-mavlink/

Пока размер кода не оптимизирован, поэтому для atmega64 некоторые функции недоступны. Протестировано на atmega128.

Комменты, вопросы, пожелания - вэлкам!

Antarius

На мегапирате будет работать?
Если да, то куда ардуино подключать - в serial0 (тот что к компу), или в Serial3 - OSD (какой тип тогда задать?)

4refr0nt
Antarius:

На мегапирате будет работать?
Если да, то куда ардуино подключать - в serial0 (тот что к компу), или в Serial3 - OSD (какой тип тогда задать?)

На мегапирате не тестил - у меня его нет, но есть некоторые соображения.

  1. Все зависит от Вашей прошивки. Если у Вас MegaPirateNG, то должно работать, т.к. телеметрия там вроде тоже MavLink, хотя могу и ошибаться.
  2. Куда подключать зависит от настроек прошивки. Подключать нужно туда, куда отдается телеметрия. У мегапирата Почитайте это docs.megapirateng.com/…/connecting_components

Основная идея в том, что не важно какой контроллер - важно какая прошивка. Проверено на APM:COPTER (arducopter). Будет точно работать на APM:PLANE (arduplane) и APM:ROVER github.com/diydrones/ardupilot

Прошивка ардуины настроена на скорость приема 57600 - если у Вас другая, то поправьте в исходниках. (Скорость на отдачу FrSky - 9600 ее не меняйте.
В исходниках еще увидите скорость 38400 - это отдается отладочная инфа на пины 11,12 - это тоже вам не надо менять)

Antarius

Попробую - отпишусь.
Правда вместо ардиуно мини про есть только ардуино нано.

4refr0nt

На нано берите те пины RX TX, которые подключены параллельно чипу FTDI - D0,D1 +питание. Pro mini точно такая же как нано, только без FTDI. Посмотрите схему - там все понятно и трудно ошибиться

Antarius

А hex для прошивки турниги точно предназначен для atmega 64?
чет не прошивается, ругается на не совпадение сигнатур
и на no end file find in intel hex file…
Шью правда турнигу старую на атмега 64

4refr0nt

hex только для atmega 128 и выше, к сожалению. Прошивка er9x c моими добавлениями не влезает в объем памяти atmega64. Попробую в выходные порезать вертолетные настройки и шаблоны - может тогда войдет. Если получится, то отпишусь здесь и выложу отдельно для 64. Я уж думал ни у кого и нет таких уже 😃

Antarius

Ай яй… как это нет?! Половина модельного мира на старых турнигах летает!
Перепаять чтоль чип пока с 64 на 128?
😃

4refr0nt

Ну, значит, придется вдвойне подумать, что тут можно сделать, чтобы все работало

4refr0nt

Вот попробуйте версию для atmega64.
Этот релиз полноценно потестить возможности у меня не было, так что аз-из.
Размер кода оптимизирован, вертолетный раздел удалось сохранить, с шаблонами пришлось проститься (TEMPLATES=NO).

Antarius:

чет не прошивается, ругается на не совпадение сигнатур

Если будет ошибка про несовпадение сигнатур - причина не в прошивке. Смотрите ключ “-p” avrdude, для atmega64 должно быть “-p m64”. Если шьете через eePe поставьте правильное значение MCU в меню “Запись” - “Настройка”

Antarius

Жаль… я уже перепаял атмегу в турниге с 64 на 128… Ну поторопился…
Можно вас попросить выложить hexы сюда, при прошивке аврдуд ругается на то, что не нашел конец файла.
Видимо я не могу нормально скачать чтоли…

Antarius

Так и не получилось завести 128.
Хех, поменял обратно на 64 - фен конечно вещь.

Скачал. Прошил. Вроде работает.
Завтра буду прошивать ардиуну.

Спасибо за ваш труд, будет очень здорово, если заработает.

4refr0nt

Судя по времени наших постов создается впечатление, что мы живем на темной стороне )

Antarius

Такс.
Пультик прошил отлично, все экраны телеметрии есть, включая новый.
А вот с ардуиной засада - прошил ее hexом, с помощью второй такой же ардуины как AVRISP. Все прошилось, проверка прошла.
Включил ее в Crius с мегапиратом в порт, куда был включен блютус. Блютус точно настроен на 57600 бод.
С порта выходит Rx Tx +5V GND. Однако, никакой активности не замечено.
В арудино нано втыкал в D0, D1 - Rx и Tx (и менял местами для проверки), на приемник сигнал уходил с D5.
Ничего. На ардуино также не моргают диоды Rx Tx - должны?

Возможно, что проблема с правильностью скачивания hex, у меня почему-то они какие-то разные по размеру выкачиваются.

4refr0nt

Лучше с исходников тогда заливать (во вложениях и исходники и hex)

  1. Качаем Arduino IDE
  2. Разворачиваем архив с исходниками из этого поста
  3. Заходим в IDE выбираем “Скетч” - “Импортировать библиотеку” - “Add library”
  4. Выбираем папку mavlink-driver\libraries\AP_Common\ из развернутого архива и далее повторяем с каждой папкой из mavlink-driver\libraries
  5. Далее “Файл” - “Открыть” - “APM_Mavlink_to_FrSky.ino”
  6. “Сервис” - “Плата” Выбираем ардуину и “Сервис” - “Порт” - выбираем порт
  7. Компилим и заливаем.

Либо берем XLoader и шьем hex без второй ардуины, как обычно через USB

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

mavlink-driver.rarAPM_Mavlink_to_FrSky.rar

Antarius

Все получилось через Arduino IDE на старой турниге с атмега 64 и мегапирате на Crius v1.
Индикатор режимов полета работает, указатель носа крутится, спутники считает.
В полете буду пробовать на неделе, если погода и время позволит.

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

Можно немного хотелок?

  • Скетч арудины не лезет в атмегу 168. Только в 328. Чуть уменьшить возможно? 168 дешевле.
  • Возможно ли сделать скетч для так сказать ардуино-в-одной-атмеге. Т.е. тупо взять атмегу8, сконфигурировать ее на внутренний RC, припаять к ножкам пять проводов и все - ардуина без обвеса готова. Для народа это было бы самым простым и доступным вариантом.
  • Возможно ли на пятом экране телеметрии вывести высоту и удаление от старта? Для полетов “по приборам” на коптере было бы полезно, если далеко отлетаешь, так что не видно куда нос, то возвращаясь по индикатору направления носа, неплохо бы знать - как высоко и далеко еще лететь.
  • А что с таранисом?

Еще раз спасибо!

4refr0nt
  • Скетч арудины не лезет в атмегу 168. Только в 328. Чуть уменьшить возможно? 168 дешевле.

Arduino Pro Mini 328P 5v за 124 рубля с бесплатной доставкой. Куда уж дешевле

Возможно ли сделать скетч для так сказать ардуино-в-одной-атмеге. Т.е. тупо взять атмегу8, сконфигурировать ее на внутренний RC, припаять к ножкам пять проводов и все - ардуина без обвеса готова. Для народа это было бы самым простым и доступным вариантом.

Да, конечно. Но смысл? Потерянное время ради сомнительной экономии. Готовый девайс с обвесом стоит 124 рубля 😃 А лучше пачкой по 10шт брать - еще дешевле выйдет и море применений.

Возможно ли на пятом экране телеметрии вывести высоту

да, это можно, только не нашел куда впихать - экран маленький. Там есть еще место где arm/disarm, но туда в планах вывести PreArm check и сообщения Critical

и удаление от старта

А вот это сложнее. Пока не разобрался в прошивке ардукоптера - есть ли вообще такое рассчитанное значение. Похоже это на стороне ground station высчитывается по координатам GPS, а такими сложными вычислениями Turnigy лучше не нагружать, а то процессорного времени на что-то другое не хватит. Да и для кода места уже нет для меги64. Мне вот пришлось функции синуса и косинуса делать свои табличные, чтобы не подключать стандартную библиотеку, чтобы на atmega64 код влез, но поразбираться можно. Нужно тщательнее разобрать код ардупилота.

А что с таранисом?

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

7 days later
РД00

Виктор,
прежде всего - спасибо за отличную разработку. Давно такую искал.

Вопрос : а не думали вместо переходника на Ардуине поправить код Ардупилота и выводить на свободный Serial данные сразу в нужном виде ? Там, правда, беда в том, что приемник требует инвертированного Serial (в паузе - 0, старт-бит - 1). Но это лечится выкидыванием из приемника инвертирующего каскада на одном транзисторе.