Ардукоптер: прошивки, настройки, софт

alexeykozin

если вопрос ко мне (тут много Алексеев) то втупую соединить тх двух устройств с rx gps модуля а tx модуля на два rx устройств - получателей нельзя,
каждое из управляющих устройств по цепи tx-> rx будет пытаться настроить жпс модуль на свой протокол, и скорость передачи данных.
Если одно из устройств умеет определять существующую скорость жпс модуля и подстраиваться под нее то вполне возможен вариант когда от управляющего устройства идет tx на rx gps
а tx gps модуля идет на RX обеих устройств параллельно.

насколько я понимаю в прошивках апм по умолчанию стоит автоопределение скорости модуля, передачи ему настройки на нужную скорость, и ожидания данных на этой скорости,
тоесть при таком коде APM не сможет работать по подключению только одного сигнала, но так как код открыт то тут ничего невозможного нет, важно только чтобы телеметрия и жпс модуль могли настраивать скорость порта, скорость обновления и перечень nmea строк необходимых для ардупилота.
Если же телеметрия сама умеет определять скорость жпс и довольствоваться теми строками которые идут с модуля (у такой обычно нет управляющего соединения tx телеметрии - rx gps, так было в китайской версии remzibi osd которую мне прислали ) то полное соединение делаем с АПМ а на rx телеметрии соединяем только tx gps и общий

Cеpж

Алексей, спасибо за подробное объяснение! Выходит - всё возможно! Ведь на телеметрию smalltim идёт только один сигнальный провод -TX.
А как разобраться куда что подключать? Ведь на штатном датчике шесть проводов, а на телеметрийном всего пять контактных площадок. И что в прошивке Арду надо поменять?


PS Хотя, я не уверен, что телеметрия умеет определять скорость. Возможно она настроена на единственную определённую… тогда, видимо, ничего не получится.

alexeykozin

наоборот если единственная определенная то все проще,
если не совпадет то подправить скорость в ардупилоте, важно чтобы это было чтото вменяемое порядка 38400 -57600 ибо при темпе выдачи данных 5 раз в секунду нужно хотябы 38400 а при 10Гц уже нужно 57600 для полного набора nmea строк.
для начала можно просто попробовать соединить, и если не пойдет попробовать подкрутить gps библиотечку

Cеpж

Выяснил - телеметрия работает на 38400. Пытаюсь разобраться в библиотеках GPS - пока тёмный лес… Прошивка 049. Нашёл там четыре библиотеки:
GPS_IMU,
GPS_MTK,
GPS_ NMEA,
GPS_UBLOX.
В какой и что поковырять?
Пока пробую подключить без изменения кода.

Cеpж

Попробовал подключиться. Телеметрия работает как прежде нормально, а Арду не видит датчика - ни в Пленере ни на плате (светодиод не мигает и не горит). Надо что-то в прошивке ковырять…

alexeykozin
Cеpж:

Выяснил - телеметрия работает на 38400. Пытаюсь разобраться в библиотеках GPS - пока тёмный лес… Прошивка 049. Нашёл там четыре библиотеки:
GPS_IMU,
GPS_MTK,
GPS_ NMEA,
GPS_UBLOX.
В какой и что поковырять?
Пока пробую подключить без изменения кода.

судя по прошивке 049
попробуйте:
добавить в файл defines.h сделующую строку
# define GPS_PROTOCOL GPS_PROTOCOL_NMEA
чтоб получилось так:

//////////////////////////////////////////////////////////////////////////////
// GPS_PROTOCOL
//

# define GPS_PROTOCOL GPS_PROTOCOL_NMEA

#ifndef GPS_PROTOCOL
# define GPS_PROTOCOL GPS_PROTOCOL_AUTO
#endif

а скорость 38400 установлена для Serial1
в system.pde процедуре инициализации ардупилота

// GPS serial port.
//
// Not used if the IMU/X-Plane GPS is in use.
//
// XXX currently the EM406 (SiRF receiver) is nominally configured
// at 57600, however it’s not been supported to date. We should
// probably standardise on 38400.
//
// XXX the 128 byte receive buffer may be too small for NMEA, depending
// on the message set configured.
//
#if GPS_PROTOCOL != GPS_PROTOCOL_IMU
Serial1.begin(38400, 128, 16);
#endif

Covax

Серж, сделайте как здесь написано www.rcgroups.com/forums/attachment.php?attachmenti…, все заработает. Правда там чуток поискать надо где эти строчки теперь лежат. В 49й все изменения происходят вот в этих файлах, библиотеки править не нужно:

ArduCopter49.zip

Cеpж

Код в прошивке изменил (спасибо Алексею и Сергею - пригодилась информация от обоих).Добавил строку:
# define GPS_PROTOCOL GPS_PROTOCOL_NMEA
Сигнал с датчика проходит на Арду, есть определение координат в пленере! Индикация фиксации координат на плате АРМ работает как обычно (моргает потом горит). Попробовал не использовать сигнал ТХ от АРМ к датчику (разрывал контакт, перевключал) - всё работает!
Но… Смалтим телеметрия не показывает координаты и прочие данные , хотя количество спутников показывает правильно. Разбираюсь с телеметрией.

alexeykozin

скорее всегоардупилот изменил набор строк, и нужной строки нет в списке,
надо у автора телеметрии уточнить список nmea строк необходимых ему и поменять в библиотеке AP_GPS
файл ap_gps_nmea.cpp в процедуре init строку инициализации пмтк (если жпс на мтк чипсете)

вот как строка выглядит по умолчанию
“$PMTK314,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n” // GGA & VTG once every fix
в ней включены “единичками” определенные строки,
нужно поменять нолики на единички в для тех нмеа строк которые нужны
описание команды $PMTK314 в доке по NMEA

Cеpж

Алексей, большое спасибо за подсказку, вроде всё получилось! В исходнике телеметрии разобраться не смог. Но, методом научного тыка, стал подставлять единички и информация на телеметрии появилась!
“$PMTK314,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n” // GGA & VTG once every fix

Так что - пока всё ок!Этот датчик намного чувствительней штатного и теперь я вижу, что поступает на АРМ от ЖПС!

alexeykozin

я делал несколько похожее совмещение remzibi osd и ардупилота (немега)
хотел разобраться в чем косяки, но поскольку на экране был ряд параметров рассчитываемых ардупилотом,
а ряд самой осд - так и не удалось выяснить откуда берется у ремзиби ошибка в расчете дистанции и высоты, соответственно двоякое трактование ситуации в полете
пришел к выводу что осд в дополнению к ардупилоту интересна только как тупой монитор - все вычисления в ардупилоте
а отображение полученных в виде текста и координат сообщений на осд.

для разруливания ситуации заказал хоббикинговскую недорогую осд, попробую прошить хексом сибериана и портировать управляющий код с пирата

serfot32

ArduCopter 2,4 - кто тестил, новую прошивку, отпишитесь?

serfot32

не удержался и обновился на 2,4
первые впечатление хорошие, пока только на квартире висел.
ЗЫ на arduino-0100-relax эта проша тест проходит 😃, не то что 2,3 - калл

Cеpж

Смело! Ждём полевых испытаний.

Cеpж

Коллеги, нужна помощь.
Пытаюсь настроить режим FAILSAFE на ардукоптере. Он должен срабатывать при уровне газа менее 975μs. На такой уровень и нужно настроить фейлсейф на приёмнике. Но моя Турнига не хочет выдавать уровень меньше 989. Что делать?
Может можно где-то в прошивке коптера (049) увеличить это значение?

Cеpж

Извиняюсь за глупый вопрос выше, он исчерпан. Всё легко настраивается в пленере. Надеюсь завтра провести полевые испытания по фейлсейфу!

Cеpж

Проведённые сегодня испытания по автовозврату при потере сигнала потерпели полное фиаско.
При выключении приёмника, коптер глушит моторы и всё…
Настраивал так:
1 установил в пленере параметр THR_FAILSAFE 1
2 настроил FAILSAFE на приёмнике (минимально возможный газ)
3 настроил на передатчике уровень “нормально минимального газа” (больше чем при FAILSAFE)
4 откалибровал радио аппаратуру в пленере.
При проверке:
1 включил коптер
2 зафиксировал “базу” по ЖПС
3 отлетел более 10 метров (как указано в инструкции)
4 выключил передатчик.
5 фиаско.

Вопрос. Кому нибудь удалось настроить FAILSAFE?

Cеpж

Турнига, приёмник Спектрум. Аппаратура отрабатывает вроде нормально

Wishnu

А на турнигу можно поставить передатчик спектрум?
Приемник поддерживает фейл сейф?
Спрашиваю, потому что деволтный передатчик\приемник у турниги вообще фейл сейф не поддерживают