RSS лента

CZC

Как подружить APM 2.8 и MinimOSD (сложный случай)

Оценить эту запись
CZC
01.02.2019 в 19:52 (385 Показов)
Итак история. У пользователя Друг не подключалась minimOSD к APM2.8.
В форуме, как обычно, слали на RTFM и советовали выкинуть старье в мусорку. Но так как было сделано всё по инструкциям, было решено провести мозговой штурм. Вооружившись паяльником и терпением с одной стороны и тимвьюером, интернетом, и желанием разгадать загадку с другой мы приступили.

Железо:
APM 2.8 (ArduCopter 3.2.1)
MinimOSD v1.1

Начнем с диагноза:
Не работает OSD. То есть на экране из отображается окно с сообщением No INPUT DATA
Нажмите на изображение для увеличения
Название: No_input_data.jpg
Просмотров: 24
Размер:	71.0 Кб
ID:	1470069

Диагностика:

Проверка minimOSD:

Для начала прошиваем последней желаемой прошивкой. Из вариантов был MW OSD и MinimOSD-extra. Будем использовать последний. Инструкции по прошивке легко ищутся в интернете, но я пользовался официальной документацией.
Как раз в официальной документации прописано, что можно подать лог полёта на OSD тем самым эмулируя наличия полетного контроллера. Что и было сделано. Показания на экране OSD меняются. Значит OSD работает.


Проверка APM 2.8:

Подготовка:
1. Отключаем USB кабель.
2. Подключаем APM 2.8 (прошитый последней официальной прошивкой 3.2.1), а именно порт Telem к компьютеру через USB-TTL конвертер.
3. Запускаем MissionPlanner соединяемся с APM указывая COM-порт конвертера и скорость 57600.
4. Поверяем значения параметров, и меняем их на те, которые рекомендованы в официальной документации. Перегружаем APM. Проверяем, что значения сохраняются.
5. Теперь заходим в Configuration-Planner и запоминаем/записываем путь Log Path. Там мы будут создаваться логи и там мы буем их искать.
6. Закрываем MissionPlanner.

Создание лога:

1. Отключаем провод TX от USB-TTL конвертера. Нам же надо записать реальный поток который будет идти на плату OSD. Должно остаться только два провода GND и RX.
2. Заново запускаем MissionPlanner соединяемся с APM.
MissionPlaner находит поток от APM и начинает запрашивать параметры. Но запросы до APM не доходят, так как проводка то TX у нас нет. Поэтому когда появляется окно с Getting Parameters нажимаем Cancel.
3. Ждем минуту.
4. Армим коптер.
5. Ждем минуту покачивая коптер, чтобы в лог попали изменения положения.
6. Дизармим коптер.
7. Отключаемся от APM кнопкой Disconnect.
8. Закрываем MissionPlanner.
Таким образом мы сняли лог протокола MavLink который коптер шлет на OSD.

Теперь находим последний файл лога (нас интересует, который с расширением tlog), который находится в папке, путь до которой записали ранее + QUADROTOR (для квадрокоптеров, для самолета будет наверное другой)\<номер месяца>\
Я скопировал его на рабочий стол, чтобы не путаться.

Далее опять подключаем к USB-TTL нашу minimOSD. И опять открываем лог файл, но уже наш (который на рабочем столе) и отправляем его на OSD. Изображение на мониторе начало меняться. Значит поток данных правильный.

Получается интересная ситуация - поток mavlink c APM идет хорошо. Тот же поток на mininOSD отображается отлично. Но если соединить APM+minimOSD по боевой схеме - опять получим No INPUT DATA.

Решение проблемы:

Значит проблема где-то в области физики (скорее всего что-то с мультиплексором). Будем искать обходные пути.

И тут глаз падает на порт I2C, во всяком случае так написано на корпусе.
Нажмите на изображение для увеличения
Название: apm28_mux.jpg
Просмотров: 6
Размер:	49.2 Кб
ID:	1470073

Если корпус снять, то на палате он обозначен как MUX /OSD/I2C/UART2.
Нажмите на изображение для увеличения
Название: apm28_naked_mux.jpg
Просмотров: 5
Размер:	111.1 Кб
ID:	1470071

Чтобы активировать порт UART2 на порту MUX (согласно официальной инструкции на APM 2.8) надо запаять перемычки на MUX_RX2 и MUX_TX2.
Нажмите на изображение для увеличения
Название: MUX-UART2.jpg
Просмотров: 6
Размер:	118.1 Кб
ID:	1470070

Что мы и делаем.

Однако и после запайки перемычек подключиться к APM через USB-TTL конвертер не получается.
И опять лезем в документацию. На этот раз в прошивку.
И находим интересный комментарий:
Код:
#if CONFIG_HAL_BOARD != HAL_BOARD_APM2
    // we have a 2nd serial port for telemetry on all boards except
    // APM2. We actually do have one on APM2 but it isn't necessary as
    // a MUX is used
    gcs[1].setup_uart(hal.uartC, map_baudrate(g.serial1_baud), 128, 128);
#endif
Приблизительный перевод такой "У нас есть второй порт для телеметрии на всех платах за исключением APM2, по правде говоря он и на ней тоже есть, но он не нужен, так как там MUX используется"

Начинаем разбираться.
На APM2.5 и APM2.6 действительно MUX по умолчанию используется как I2C.
Нажмите на изображение для увеличения
Название: apm2.5.jpg
Просмотров: 5
Размер:	90.6 Кб
ID:	1470072

Но у нас APM 2.8 и штатный I2C живет рядом с портом GPS.

Таким образом можно смело задействовать UART2 на разъеме MUX. Для это надо привести закоментировать условие. В итоге должно получится так:
Код:
//#if CONFIG_HAL_BOARD != HAL_BOARD_APM2
    // we have a 2nd serial port for telemetry on all boards except
    // APM2. We actually do have one on APM2 but it isn't necessary as
    // a MUX is used
    gcs[1].setup_uart(hal.uartC, map_baudrate(g.serial1_baud), 128, 128);
//#endif
И пересобрать прошивку по официальной инструкции.
Должен получится такой файлик ArduCopter.hex. Выложу его здесь:
ArduCopter_3.2.1_uart2.zip
Прошиваем его в APM через Mission Planner таким образом: Initial Setup -> Install Firmware -> Load custom firmware.

Далее сбрасываем APM в дефолт. Зачищаем EPROM. Опять вводим параметры согласно инструкции к minimOSD-extra.

И радуемся результату.

PS: Понимаю что получилась ода официальной документации, но именно там найдены все решения.

Обновлено 02.02.2019 в 17:52 [ARG:5 UNDEFINED]

Категории
Без категории

Комментарии

  1. Аватар для Можаефф
    У меня было два АПМ2.8 - ОСД всегда работало штатно, без пересборки прошивки и таких долгих ухищрений.
    Варианта там было два - нажать кнопку Enable OSD в Гуе, либо подключить параллельно с ОСД блютус.

    Как людям удается придумать себе проблемы на ровном месте, всегда удивляет.
    Обновлено 02.02.2019 в 14:45 [ARG:5 UNDEFINED]
  2. Аватар для CZC
    Если у вас все работало - прекрасно. Рад за вас. Но раз на раз не приходится.

    Я рассказал свою историю.
    Пробовали и то, и другое. Безрезультатно.

    Проблемы никто себе не придумывал. Проблемы как раз решали.
    Надеюсь что мое решение кому-то будет полезно.
  3. Аватар для Можаефф
    У меня же работало, и я думаю у всех остальных тоже. Уже много лет как 2.8 в эксплуатации, и никто вашим путем не ходил. Это не заставляет спросить себя, как тогда работает у остальных?
  4. Аватар для CZC
    Я поздравляю вас! Очень за вас рад!
    И за всех остальных тоже!
    Как здорОво, что у вас все сработало по нажатию кнопки!

    Да, я действительно криворукий любитель искать себе проблемы.
    Вы это хотели услышать? Ещё вопросы?
  5. Аватар для Alex135
    не обращайте внимания Константин. Спасибо. В копилку знаний по миним осд закинул. В основной массе кто сталкивался с этой осд знают что все не просто так с ней. Подводных камней много тем более когда впервые сталкиваешься с этим(заливка прошивки, шрифты и т.д.) Тем более это Ваш дневник.
  6. Аватар для Dok555
    Большущее спасибо за информацию!
  7. Аватар для Dynamitry
    Этот осд очень люблю
    Вообще была на старых контроллерах проблема активации ОСД, лечилась так:
    Для этого идем в вкладку CONFIG/TUNING > Full Parameter List, листаем до буквы S, и проверяем (или исправляем) значения параметров:

    SR0_EXT_STAT = 2
    SR0_EXTRA1 = 5
    SR0_EXTRA2 = 2
    SR0_EXTRA3 = 3
    SR0_POSITION = 2
    SR0_RAW_SENS = 2
    SR0_RC_CHAN = 5
  8. Аватар для CZC
    Эти параметры тоже пробовали (они прописаны в официальной документации к MinimOSD-extra).
    Но там проблема была именно в железе.
    Задним числом понимаю, что можно было бы просто прогнать через ардуинку, копируя данные порта из полетника в порт OSD, но во первых её не было, а во вторых это лишнее промежуточной звено. А нам чем проще - тем надежнее.