Путь к CL-OSD

Давно я смотрел на замечательный проект CL-OSD (code.google.com/p/cl-osd) и мечтал перепрошить свой G-OSD, чтобы избавиться от его нескончаемых подвисаний, порчи и пропадания символов. И когда у меня нашлось время и AlcoNaft43 поделился программатором AVRISPMK2, я решился.

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

Действовал я по инструкции на сайте проекта. Все ниже рассказанное является дополнением к ней.

  1. Скачал и поставил Tortoise SVN, скачал репозиторий проекта.

  2. Скачал AVR Studio - сайт потребовал регистрации по e-mail, да и инсталлятор весил полгига и ставился долго и нудно и занял 900Mb!

  3. Так как AVRDUDE - изначально не Windows-программа, скачал WinAVR. Это тоже немалая прога (260Mb), в которой AVRDUDE занимает полпроцента.

  4. AVR Studio программатор увидел, а AVRDUDE - нет. Выяснилось, что AVR Studio ставит Jungo драйвер, который монопольно использует программатор, и AVRDUDE его уже не видит. Пришлось искать и скачивать libusb0.dll, которая позволяет совместный доступ.

  5. Разрезал с одного края вдоль платы термоусадку на G-OSD и содрал с большим трудом двухсторонний скотч, прилепленный поверх площадок ISP. Помогал ножом и конечно (как и некоторые другие на rcgroups) надрезал дорожку MISO. Понял я это 2 часа спустя, потому что программатор выдавал сообщение о невозможности считать идентификатор контроллера.

  6. Оказалось, что AVRISPMK2 не выдает 5V с одноименного провода, а наоборот, ЧИТАЕТ, чтобы проверить, находится ли оно в правильном интервале (у меня 5.1V). Пришлось подать питание на OSD (а у меня он был впаян в схему коптера, так что просто включил питание).

  7. Перерезанная MISO дорожка, которую я нашел с помощью лупы с подсветкой (подарок жены!), никак не хотела чиниться - в конце концов я припаялся к переходному отверстию. Но программатор работал не стабильно, даже фьюзы читал через раз. Я переаивал MISO много раз своим широченным 40 Вт паяльником, в конце концов содрал переходное отверстие вообще. Оно вело на другую сторону, где был собственно контроллер и нужная ножка была расположена очень удобно - с угла. Намотав толстого медного провода на жало, я таким импровизированным точным инструментом подпаялся к ней, и программатор наконец прочитал флаги.

  8. Поставил в AVR Studio цель сборки в G-OSD, скомпилировал. Написал батник такого содержания:

avrdude.exe -P usb:21:66 -v -p m88 -c avrispmkII -U flash:w:“cl-osd.hex” -U eeprom:w:“cl-osd.eep”

Была какая-то путанница с типом контроллера - он имел у меня сигнатуру 0x1e930a, что относится к m88A, и программатор выдавал замечение, но оказалось что они совместимы, и можно шить его как m88.

  1. Начал заливать скомпилированную прошивку. При верификации программирования выдывалась ошибка с первого байта. Понял, что DCDC конвертор, который питал G-OSD, передатчик и камеру стабильным 12V, дает помехи программатору. Отпаял его плюсовой провод от BAT1 контакта G-OSD и воткнул туда плюсовой провод 3s LiPo батареи, подключенной к коптеру. Стало получше, но верификация все равно ломалась.

  2. Понял, что видеопередачик был включен и своими 500mW 900MHz видимо тоже влиял на нежный программатор. Хорошо, что у меня питание DCDC (от которого питается камера, OSD и видеопередатчик) было выведено на тумблер, чтобы включать все видео-подсистему позже, когда GPS найдет спутниик (с включенным видеопередатчиком он их не находит). Я выключил питание DCDC (OSD был запитан он LiPo напрямую). Помехи пропали и OSD начала прошиваться. GPS все это время работал и был подключен к OSD, но от этого проблем программированию не было.

  3. Прошитый OSD показывал сбитое и дрожащее изображение (камера Pixim Seawolf). Почитав rcgroups, я понял, что это встречается у многих и автор в курсе. Программе не хватало времени чтобы растерилизовать шрифт и графику в буфер вывода. Лечиться это должно уменьшением количества растерилизуемых символов в строке (изначально было 33 для PAL) или количеством строк (изначально было 6). Автор рекомендует поставить количество символов (#define TEXT_LINE_MAX_CHARS в config.h) в 15 и повышать до глюков, или поставить TEXT_LINES в 2 и тоже повышать. Я обнаружил, что могу “разогнать” TEXT_LINE_MAX_CHARS до 20 с 6 строками и 23 c 5. Но позже выяснилось, что и с 5 строками глючит.

  4. Пришлось перекраивать расположение информации на экране, уплотняя ее, убирая ненужный иконки и размерности, и убирая пробелы. GPS координаты я переместил на верхнюю строку, какую только видно на экране камеры (в очках видно чуть больше) и написал, чтобы они были видимы всегда. Нижнюю строку с иконками убрал. Верхнюю строку тоже убрал и переместил часы на строку с напряжениями. Оставил на ней только напряжение к BAT2 (BAT1 у меня выход DCDC 12V), процент напряжения BAT2 от максимума (его удобнее читать, чем напряжние). Естественно, настроил в config.h границы напряжений, Alarm’ов и т.д. На третей строке, которую подвинул наверх ко второй (через #define TEXT_TRIG_LINES_LIST), поставил статистику, которая появляется когда коптер неподвижен какое-то время. На четвертой строке, которую подвинул максималльно вниз, разместил скорость, расстояние до базы, иконку антенны (мигает при ошибках контрольной суммы данных GPS), количество спутников, и высоту. Таким образом, осталось 4 строки.

#define TEXT_LINES 4
#define TEXT_LINE_MAX_CHARS 23
#define TEXT_TRIG_LINES_LIST 40, 56, 85, 280 // Must be rising line numbers!

Чтобы дать побольше времени процедуре растерилизации, подвинул ее стартовую строку в начала “окна” между 3 и 4 строкой:

#define UPDATE_LINE 155

И сдвинул по-удобнее радар на базу:

#define GRAPHICS_LINE 150
#define GRAPHICS_OFFSET 46

  1. После проверки на окне, залил термоклеем провод ISP разъема на OSD, разрезанную термоусадку и болтающий на кварц, восстановил питание OSD c DCDC, настроил крутилками напряжения по мультиметру, и приступил к полетам. Все очень понравилось, только GPS очень долго ищет спутники и высота при 4-5 спутниках непредсказуемо меняется. Похоже, GPS надо менять.

Видео:

Измененные файлы и прошивка тут (code.google.com/p/…/list): CL-OSD.AndreyPrikupets.zip

  • 5412
Comments
alexeykozin

платка очень похожа на хобикинговское е-осд
а эта прошивка не подойдет?
rcopen.com/blogs/39391/12024
там побогаче функционал, а формат передачи данных можно с мегапирата взять

Covax

А где нибудь существует в природе связка e-osd с ХК и ардуины, на которую нацеплен баро и ГПС?
Всем хорош G-OSD, но у меня ее нет, зато валяются без дела e-osd, ардуина мини, баро и ГПС чуткий 😃

Shuricus

Андрей спасибо! Так гораздо лучше!

alexeykozin

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

дело в том что по цене минимосд конкурентен но имеет преимущество в том что его ардуино-код открыт

leprud
Covax;bt72744

А где нибудь существует в природе связка e-osd с ХК и ардуины, на которую нацеплен баро и ГПС?

Есть конечно. У меня еще и расходы показывает и боковое скольжение (разница показаний акселя и гироскопа) и полетные режимы

alexeykozin;bt72746

дело в том что по цене минимосд конкурентен но имеет преимущество в том что его ардуино-код открыт

Готовая железяка все равно неадекватно стоит, 40$+ - перебор по цене раза в 2-3.

alexeykozin

платка 200
max от 5$ на ебее с доставкой = 150
атмега 120
рассыпуха 70
дорогой регуль 5219 можно не ставить
----------------
540рэ
если паять самому

леонид, а у вас есть сектч для маленького ардупилота чтоб е-осд прицепить?

leprud
alexeykozin;bt72748

540рэ
если паять самому

леонид, а у вас есть сектч для маленького ардупилота чтоб е-осд прицепить?

Во, а у китайцев и просто в производстве должно быть дешевле…
С ардупилотом я не работал, только “издалека” посмотрел

alexeykozin

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

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

Prikupets

У меня дома есть 12W паяльник с тонким жалом, но я паял в гостиннице в полумраке тем что взял с собой, переодически проветривая комнату, чтобы не заорал антикурительный сигнал, и подсвечивая себе лупой 😃

Adekamer

а вообше на коптере телеметрия нужна ?
не батарейки мониторить - а именно высота - база… то что доступно по гпс…

Prikupets

Высота и скорость часто сбоят - высота особенно. Что мне нужно, так это координаты. Если рухну в лес или поле, буду по ним искать.
Тоже бывает интересно: удаление от старта. Я например спокойно летаю на 400м, дальше можно но поскольку я летаю низко, легко войти в радиотень.
Сегодня скорость мерял - 40 км/ч крейсерская, макс. 48 - на тяжелом квадре с хилыми винтами - висит на 80% газа.

Adekamer

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

alexeykozin

если полеты за пределы видимости то кудаж без телеметрии соваться…
еще и автопилот функцией возврата как минимум

Prikupets

800 метров если земля ровная. А тут бугры… Но вообщем стараюсь очень далеко пока не залетать.
Автопилот - штука дорогая, ее у меня пока нет.

P.S. А пределы видимости, кстати, для меня - 100м.

Adekamer

Я на коптере далеко не летаю
а вот на мелких легких самолетиках уже даже очень 😃

alexeykozin

год назад ардупилотмега в полном комплекте стоил под 400 баксов
сейчас ардупилотмега2 200, правда бэкордер

Prikupets

На самолете я и сам далеко летаю(л). Там на 500 метров подняться - не проблема, а коптер пол-батарейки выкушает.

dROb

Андрей, прошло уже пару месяцев с момента освоения Вами CL-OSD. Скажите, каково Ваше сегодняшнее мнение об этой системе? Я вожусь с ней недельку - пока есть ощущение что игра не стоит свеч. Глючновато как-то всё…
Не расширяли Вы ее с помощью сигналов с доп. датчиков или ардуин?

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

www.youtube.com/watch?v=4hTSYypOMTE

Prikupets

Я никак не расширял - мне всего хватает. У меня почти не глючат. Иногда нижняя строка дергается. То что у Вас на видео дергается и смазывается - я и подразумевал. Это происходит из-за того что алгоритм растерилизации дерется с прерыванием вывода на экран.

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

AlcoNaft43

Седня за вечер перепрошили девайс, спасибо Андрею. 5В ГПС запитал от внутренней кренки ОСД, кинув проводок на вход БАТ2, те он стал выходом. Вроде работает.

Prikupets

… И переставив вывода вольтаж батареи 1 и процентов на Bat1 вместо 2 в прошивке;

Tigerious

тоже залил cl-osd, ничего не правил ( я в программировании 0), ОСД запустилась, но на экране вместо цифр белые квадраты((((

dROb
Tigerious;bt80418

тоже залил cl-osd, ничего не правил ( я в программировании 0), ОСД запустилась, но на экране вместо цифр белые квадраты((((

Дмитрий, залейте EEPROM (.eep), и проверьте чтобы залился в правильном формате (увы не помню в каком, но там вариантов 2-3, попробуйте все. Типа ELF, BIN, INTEL HEX … )

Tigerious

спасибо, попробую. заливал кстати с помощью extreme burner avr, так вот если в нее сначала загрузить и прошивку и еепром, а потом нажать write all, то осд после прошивки не запускается вообще. а если отдельно прошивку заливать через меню write - flash, то все работает…

targetorsk

а какие фьюзы должны быть при прошивке CL-OSD ? если можно в шестнадцатеричном виде

Android98

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

Prikupets

Залил на GCode - code.google.com/p/…/list: CL-OSD.AndreyPrikupets.zip

Den978

Андрей, спасибо за прошивку. Все гуд! Только чтобы заработала - пришлось подавать на акк№1, а чтобы показывала напряжение, на акк№2
Можно раздельно это поправить и добавить показания с второго акка?

Prikupets

Ну можно - раскомментируйте в config.h:
//#define SENSOR_VOLTAGE_2_ENABLED

Дима=

Андрей здраствуйте подскажите пожалуйста вот такое ОСД можно перепрошить так что бы показывала возрат домой??

Prikupets

В обсуждении по Вашей ссылке люди это делали неизмененной прошивкой CL-OSD. Значит и моя версия будет работать.