HobbyKing E-OSD

Shuricus
dollop:

в планах допилить прошивку

Товарищи! Коллеги! Братья!

Ну ПОЖАЛУЙСТА, допилите прошивку чтобы оно понимало телеметрию ФРСкая. Делов-то! На один вечер!

Но ведь тогда нужен будет один ОСД на все ваших пять самолетов, или 10, сколько там у кого! И нормальный РССИ без извратов! Ну разве не заманчиво???

ПС. С меня ящик пива, возможна отправка в регионы!

falke5
Djon_bogd:

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

работает с любым кварцем от 24 до 25 мгц абсолютно одинаково, проверил. На 25 виснет через некоторое время, думаю банально переразгон сказывается.
У меня собранный клон заработал таки, дело было не в бобине. Выяснилась забавная вещь, не работает эта шняга с NTSC камерой.
У меня как раз фатшарковская с HK она NTSC.
www.hobbyking.com/hobbyking/…/uh_viewItem.asp?idPr…
По осциллографу отстроил селектор СИ (подобрал емкости и режим транзистора) то есть должно работать, ан нет, при перетыкании видео мелькает на доли секунды картинка с цифрами и все. Чуть мозг не погнул, пока допетрил. Залил прошивку с GPS и обнаружил на изображении кружок от стрелки направления, а цифр по прежнему нет (так же мелькают при включении и пропадают). Тут то я и понял что трабла именно с сигналом.
Вскрыл камеру от фатшарка, обнаружил там пару посадочных мест под чип резисторы, пошарил доки на контроллер, он оказался универсальным PAL\NTSC.
Запайка чип резистора 10 кОм перевела камеру в PAL и появилась таки картинка от OSD.
Сейчас ваяю единую плату с e-osd+GPS и выносную активную антенну, как допилю выложу схему и чертежи.
ЗЫ
Два месяца шло e-osd c HK, сегодня как раз пришло, оставлю на запчасти 😃

falke5

2 dollop,
почитал про твою проблему с инициализацией GPS, думаю мне это то же предстоит, возникает мысль, может сделать аппаратный инициализатор? который из eprom тупо заливать будет дату в rx приемнику GPS при включении или при нажатии на кнопку.

dollop

Максим, а что за модуль GPS у тебя?
В принципе, я проблему локализовал (вернее оно запустилось сразу - так совпало), и просто опытным путем определял режимы работы, принимаемые CL-OSD. Возможно, с учетом поста на рцгрупс можно еще подкрутить - я эти настройки модуля не трогал.
А на счет аппаратного инициализатора - накой оно, если можно попробовать всунуть в прошивку ОСД эту функцию - пущай само настраивает - думаю, код для выдачи в rx приемнику GPS нужную инфу влезет в мегу88. Там только загвоздка есть - желательно организовать автонастройку скорости.

falke5

понятно что проще всего сунуть код в прошу, но cl-osd постоянно “допиливается” и придется код как то прикручивать постоянно к новой версии, в этом плане аппаратный инициализатор практичнее, раз собрать на тини сунуть в схему и забыть. Другой вопрос конечно если нужный код добавят сразу в исходники на репозитории cl-osd.
GPS строю на eb-270 плюс активная выносная антенна (кабель где то сантиметров 15), сегодня-завтра буду монтировать на чистовую плату и тестить в комплексе там скину фотки как получилось.
Подобный модуль тестили тут
we.easyelectronics.ru/part/gps-modul-eb-500.html
предполагаю что для оптимизации частоты и точности придется как то давать инициализацию
**Комрад Fantomas интересовался как увеличить частоту обновления данных:
$PMTK300,200,0,0,0,0*2F
— Обновление с F=5Hz
$PMTK300,1000,0,0,0,0*1C
_— Обновление с F=1Hz
Где 200 (1000) — интервал обновления в миллисекундах. У EB-500 должен быть не меньше 200.
Но тут нужно учесть, что при увеличении скорости обновления данных может не хватить скорости самого порта для передачи всех данных. Для разгрузки порта можно сделать 2 вещи:

  1. Самое простое — увеличить скорость порта:
    $PMTK251,115200*1F_
    $PMTK251,57600*2C

    $PMTK251,38400*27

    $PMTK251,19200*22

    $PMTK251,14400*29

    $PMTK251,9600*17

    $PMTK251,4800*14

    Настроить скорость порта от 115200 до 4800.
    **

тут про мой GPS
rcopen.com/forum/f90/topic271136
наверное и обсуждаться там будет все это что бы тему не загаживать

dollop

Еще осталось выяснить до какой скорости обмена по UART CL-OSD стабильно работает. В принципе, с обновлением в 3Гц и выключением всей не нужной передваемой модулем инфы хватает 4800 бод. То есть при 9600 и 6 Гц влезет. Но как к этому CL-OSD отнесется? Буду пробовать

falke5

при 24 мгц на камне, думаю ему что 9к что 20к бит.с без разницы, просто обязан тянуть

leprud

Может не успеть обработать данные. Принять то успеет, но еще же математику просчитать надо, а камень и так загружен выводом видео серьезно

falke5

собрал на кучу клон e-osd и GPS на базе eb-270, возникла куча вопросов
Как вообще проверить что e-osd “понимает” что GPS работает?
Поясню вопрос, подключил пока на столе без антенны, модуль гонит по уарту дату на OSD на скорости 9600, на экране при этом нули и пустые значения от координат. Антенна GPS не подключена. Как понять что все работает? Данные начнут меняться только когда GPS зацепит координаты или osd вообще не понимает этот приемник?

dollop

Самый простой способ проверить

что e-osd “понимает” что GPS работает

Посмотреть на значек GPS (спутничек внизу экрана). Он не должен мигать. Вот например я как ставлю обновление данных модулем на 4 или 5Гц, то значек горит постоянно, но иногда подмаргивает. В результате раз в минуту довольно подозрительные значения GPS проскакивают (например количество спутников в небе = 153). При частоте обновления 1-2Гц таких глюков нет.
При получении Fix ОСД отображает координаты. И запоминает Home позицию. После этого координаты на экране не отображаются.
Прошивка CL-OSD под 9600 бод перекомпилирована?

falke5

на рцгрупс человечек выложил скрины с настройками для оптимизации нагрузки на уарт и соответственно атмегу www.rcgroups.com/forums/showthread.php?t=1490446&p…
По сабжу, у меня все мигает абсолютно так же как и вообще без GPS, честно говоря я туманно представляю что делать, поскольку не понятно под какой формат даты на данном этапе заточена прошивка cl-osd.
На офф сайте проекта информации ноль, лопатить сто страниц английской темы на рцгрупс трудновато.
Было бы интересно взглянуть на лог терминала для нормально работающего приемника, тогда станет понятно чего добиваться и в чем отличия, или хотя бы знать как (по какой схеме) osd парсит дату от приемника, тогда можно поковырять исходники…
Еще один вопрос, реализован ли какой нить функционал от кнопки в прошивке cl-osd?

dollop

А что лог даст? Он стандартен для NMEA. Чел просто откинул ненужные данные для CL-OSD, чтоб они не лезли в УАРТ. Тем самым можно в меньшую скорость впихнуть нужные данные чаще. Если все же интересно - покажу вечером свой лог. Нужно ли это частое обновление - вопрос. Ибо экран обновляется не более чем 2Гц. Поэтому ИМХО и с gps нет смысла гнать данные с большими скоростями и частым обновлением. По моим опытам - ОСД просто не успевает читать или обрабатывать данные gps.
Самое простое - играйтесь со скоростью. В MiniGPS установите частоту обновления в 1Гц, а дальше пробуйте 4800, 9600 и т.д. Так же советую эти опыты проводить при прошитой CL-OSD с дефолтной скоростью - 4800. На данный момент у меня зашито 4800, а в настройках модуля стоит 9600 😃 - фиг поймешь

Еще один вопрос, реализован ли какой нить функционал от кнопки в прошивке cl-osd?

Я действия кнопки не заметил пока.

Жду майских праздников - сейчас совсем некогда

falke5
dollop:

Если все же интересно - покажу вечером свой лог.

Если не трудно, буду признателен

dollop

Вот такие логи.
Выяснилось, что если сделать как в том посте на рцгрупс, то только 2D-fix доступен - не хватает данных предложения GSA. Так что скрины и логи для трех режимов - no-fix, 2D-fix, 3D-fix. При любом из этих режимов CL-OSD понимает сигнал от GPS модуля, не мигая при этом значком спутника.

MiniGPS-logs.zip

falke5

загадка, логи аналогичны, но мега никак GPS не видит, дата на ногу меги сыплется, правда с уровнем 3.3в, должно хватать по идее, а там в исходниках случаем ничего раскомментить не надо?

а по дефолту в прошивке 4800?

dollop

правда с уровнем 3.3в

У меня тоже 3,3В

а там в исходниках случаем ничего раскомментить не надо?

Нет. Нужно прошивку брать, которая находится тут cl-osd.googlecode.com/svn/trunk/E-OSD-GPS/
Подключить Tx модуля к 30 ноге меги, Rx модуля к 31 ноге

а по дефолту в прошивке 4800?

Да. Мой модуль на MT3329 работает с дефолтной прошивкой с теми настройками, что на скринах.

falke5

вести с полей…
оказалось что модуль не может работать на 4800 тупо игнорит команду в терминале, остальные скорости переключает, поправил исходники на 9600, скомпилил, залил. толку ноль 😦
а зачем rx модуля заводить на мегу? на всех ссылках только tx на 30

Djon_bogd
falke5:

вести с полей…

Максим, кварц на какую частоту запаян?
Просто если в исходниках частота такта написана 24мгц, а вы прицепили кварц отличающийся от 24мгц то все так и будет как вы описали)

gps модуль должен отдавать сообщения $GPRMC и $GPGGA

если все правильно сделано работает с пол тычка.

falke5

24 мгц
отдает как положено, лог стандартен

Djon_bogd:

Просто если в исходниках частота такта написана 24мгц, а вы прицепили кварц отличающийся от 24мгц то все так и будет как вы описали)

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

falke5

однако не работает, прошил фирменную E-osd тот же результат, в упор не видит gps

falke5

заработало, нашел комбинацию параметров при которых можно перевести приемник на 4800, при понижении скорости он тут же определился, на 9600 работает крайне неустойчиво буду дотачивать

15 days later
falke5
dollop:

Вот такие логи.
Выяснилось, что если сделать как в том посте на рцгрупс, то только 2D-fix доступен - не хватает данных предложения GSA.

покопался в исходниках, кроме RMC и GGA прошивка больше ничего не парсит, так что просто обязано этого хватить на весь функционал.
Так что если кому пригодится кратенько помечу миниFAQ по сопряжению GPS модуля и e-osd:

  1. в GPS приемнике включить RMC и GGA, остальное выключить.
    настройки файла config.h
  2. для повышения частоты обновления экрана (и данных от датчиков) до 2 гц нужно в исходниках поправить параметр #define SCREEN_AND_SENSOR_UPDATES_PER_SEC 2
  3. Можно прописать позывной выводимый в правом верхнем углу экрана, буквы понимает только заглавные
    #define TEXT_CALL_SIGN “здесь пишем что хотим”
  4. Как оказалось режим NTSC нужно принудительно включать, раскомментируем строчку //#define COLORSYSTEM_NTSC (убрать //)
  5. Скорость порта по умолчанию 4800, что бы перевести на 9600 нужно изменить параметр #define GPS_BAUD 4800
    у меня на этой скорости начинают сыпаться данные, либо сказывается уход кварца по частоте, либо просто не хватает времени атмеге на обработку.
  6. Некторые (а может быть все) GPS приемники не дают поставить низкую скорость если объем данных превышает возможности порта, поэтому что бы перейти с 9600 на 4800 мне пришлось сначала снизить частоту обновления и уменьшить количество выдаваемых параметров что бы загрузка по данным GPS util стала меньше 50%, до этого приемник ругался на не поддерживаемый режим. Что бы не думать, можно просто отключить все снизить скорость и потом включить.

Остался не понятный вопрос:
при инициализации приемника на osd передается данные, нормально горит индикатор приемника, при этом постоянно мигает надпись no home pos. То есть начальную точку он не цепляет. Это баг или фича? Судя по исходникам зацепить хоум он должен в случае если
#define HOME_AUTO_SET //Home position is set when a certain speed is exceeded.
превышена минимальная скорость
#define HOME_SET_WITH_BUTTON //Home position is set when the little button on OSD is long pressed.
произошло длинное нажатие на кнопку
#define HOME_SET_FIX_COUNT 10 //Config for _SET_AT_FIX: After 10 successfully fixes, home is set.
вот это я не понял, расшифруйте плз
#define HOME_FIX_MIN_SPEED 10 //Config for _AUTO_SET: More than 10 km/h sets home.
здесь задаем числовое значение минимальной скорости фикса точки старта для п. define HOME_AUTO_SET
#define HOME_SET_MIN_SATS 4 //Config for _SET_AT_FIX: Set home only when more than 4 satellites.
это доп условие ставить фикс при наличии не менее 4х спутников

Djon_bogd
falke5:

#define HOME_SET_FIX_COUNT 10 //Config for _SET_AT_FIX: After 10 successfully fixes, home is set.
вот это я не понял, расшифруйте плз

это кол-во принятых актуальных данных с координатами

falke5

то есть он должен поймать фикс через 10 пакетов с координатами, почему не ловит?
Координаты идут не совсем одинаковые, меняются последние цифры.

falke5

нашел, для того что бы фиксил home на месте нужно раскомментировать
//#define HOME_SET_AT_FIX // Home position is set when GPS gets satellited fix.

Всем спасибо за помощь и советы!