HobbyKing E-OSD
Максим, а что за модуль GPS у тебя?
В принципе, я проблему локализовал (вернее оно запустилось сразу - так совпало), и просто опытным путем определял режимы работы, принимаемые CL-OSD. Возможно, с учетом поста на рцгрупс можно еще подкрутить - я эти настройки модуля не трогал.
А на счет аппаратного инициализатора - накой оно, если можно попробовать всунуть в прошивку ОСД эту функцию - пущай само настраивает - думаю, код для выдачи в rx приемнику GPS нужную инфу влезет в мегу88. Там только загвоздка есть - желательно организовать автонастройку скорости.
понятно что проще всего сунуть код в прошу, но 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 вещи:
- Самое простое — увеличить скорость порта:
$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
наверное и обсуждаться там будет все это что бы тему не загаживать
Еще осталось выяснить до какой скорости обмена по UART CL-OSD стабильно работает. В принципе, с обновлением в 3Гц и выключением всей не нужной передваемой модулем инфы хватает 4800 бод. То есть при 9600 и 6 Гц влезет. Но как к этому CL-OSD отнесется? Буду пробовать
при 24 мгц на камне, думаю ему что 9к что 20к бит.с без разницы, просто обязан тянуть
Может не успеть обработать данные. Принять то успеет, но еще же математику просчитать надо, а камень и так загружен выводом видео серьезно
собрал на кучу клон e-osd и GPS на базе eb-270, возникла куча вопросов
Как вообще проверить что e-osd “понимает” что GPS работает?
Поясню вопрос, подключил пока на столе без антенны, модуль гонит по уарту дату на OSD на скорости 9600, на экране при этом нули и пустые значения от координат. Антенна GPS не подключена. Как понять что все работает? Данные начнут меняться только когда GPS зацепит координаты или osd вообще не понимает этот приемник?
Самый простой способ проверить
что e-osd “понимает” что GPS работает
Посмотреть на значек GPS (спутничек внизу экрана). Он не должен мигать. Вот например я как ставлю обновление данных модулем на 4 или 5Гц, то значек горит постоянно, но иногда подмаргивает. В результате раз в минуту довольно подозрительные значения GPS проскакивают (например количество спутников в небе = 153). При частоте обновления 1-2Гц таких глюков нет.
При получении Fix ОСД отображает координаты. И запоминает Home позицию. После этого координаты на экране не отображаются.
Прошивка CL-OSD под 9600 бод перекомпилирована?
на рцгрупс человечек выложил скрины с настройками для оптимизации нагрузки на уарт и соответственно атмегу www.rcgroups.com/forums/showthread.php?t=1490446&p…
По сабжу, у меня все мигает абсолютно так же как и вообще без GPS, честно говоря я туманно представляю что делать, поскольку не понятно под какой формат даты на данном этапе заточена прошивка cl-osd.
На офф сайте проекта информации ноль, лопатить сто страниц английской темы на рцгрупс трудновато.
Было бы интересно взглянуть на лог терминала для нормально работающего приемника, тогда станет понятно чего добиваться и в чем отличия, или хотя бы знать как (по какой схеме) osd парсит дату от приемника, тогда можно поковырять исходники…
Еще один вопрос, реализован ли какой нить функционал от кнопки в прошивке cl-osd?
А что лог даст? Он стандартен для NMEA. Чел просто откинул ненужные данные для CL-OSD, чтоб они не лезли в УАРТ. Тем самым можно в меньшую скорость впихнуть нужные данные чаще. Если все же интересно - покажу вечером свой лог. Нужно ли это частое обновление - вопрос. Ибо экран обновляется не более чем 2Гц. Поэтому ИМХО и с gps нет смысла гнать данные с большими скоростями и частым обновлением. По моим опытам - ОСД просто не успевает читать или обрабатывать данные gps.
Самое простое - играйтесь со скоростью. В MiniGPS установите частоту обновления в 1Гц, а дальше пробуйте 4800, 9600 и т.д. Так же советую эти опыты проводить при прошитой CL-OSD с дефолтной скоростью - 4800. На данный момент у меня зашито 4800, а в настройках модуля стоит 9600 😃 - фиг поймешь
Еще один вопрос, реализован ли какой нить функционал от кнопки в прошивке cl-osd?
Я действия кнопки не заметил пока.
Жду майских праздников - сейчас совсем некогда
Если все же интересно - покажу вечером свой лог.
Если не трудно, буду признателен
Вот такие логи.
Выяснилось, что если сделать как в том посте на рцгрупс, то только 2D-fix доступен - не хватает данных предложения GSA. Так что скрины и логи для трех режимов - no-fix, 2D-fix, 3D-fix. При любом из этих режимов CL-OSD понимает сигнал от GPS модуля, не мигая при этом значком спутника.
загадка, логи аналогичны, но мега никак GPS не видит, дата на ногу меги сыплется, правда с уровнем 3.3в, должно хватать по идее, а там в исходниках случаем ничего раскомментить не надо?
а по дефолту в прошивке 4800?
правда с уровнем 3.3в
У меня тоже 3,3В
а там в исходниках случаем ничего раскомментить не надо?
Нет. Нужно прошивку брать, которая находится тут cl-osd.googlecode.com/svn/trunk/E-OSD-GPS/
Подключить Tx модуля к 30 ноге меги, Rx модуля к 31 ноге
а по дефолту в прошивке 4800?
Да. Мой модуль на MT3329 работает с дефолтной прошивкой с теми настройками, что на скринах.
вести с полей…
оказалось что модуль не может работать на 4800 тупо игнорит команду в терминале, остальные скорости переключает, поправил исходники на 9600, скомпилил, залил. толку ноль 😦
а зачем rx модуля заводить на мегу? на всех ссылках только tx на 30
вести с полей…
Максим, кварц на какую частоту запаян?
Просто если в исходниках частота такта написана 24мгц, а вы прицепили кварц отличающийся от 24мгц то все так и будет как вы описали)
gps модуль должен отдавать сообщения $GPRMC и $GPGGA
если все правильно сделано работает с пол тычка.
24 мгц
отдает как положено, лог стандартен
Просто если в исходниках частота такта написана 24мгц, а вы прицепили кварц отличающийся от 24мгц то все так и будет как вы описали)
Есть подозрение что надо кондеры у кварца подобрать, возможно они частоту слишком “уводят”, вообще подумываю на крайний случай прошить заводскую e-osd и проверить на ней, но моя версия лучше изображение дает как оказалось, да и не хочу пока заводскую прошивку гробить
однако не работает, прошил фирменную E-osd тот же результат, в упор не видит gps
заработало, нашел комбинацию параметров при которых можно перевести приемник на 4800, при понижении скорости он тут же определился, на 9600 работает крайне неустойчиво буду дотачивать
Вот такие логи.
Выяснилось, что если сделать как в том посте на рцгрупс, то только 2D-fix доступен - не хватает данных предложения GSA.
покопался в исходниках, кроме RMC и GGA прошивка больше ничего не парсит, так что просто обязано этого хватить на весь функционал.
Так что если кому пригодится кратенько помечу миниFAQ по сопряжению GPS модуля и e-osd:
- в GPS приемнике включить RMC и GGA, остальное выключить.
настройки файла config.h - для повышения частоты обновления экрана (и данных от датчиков) до 2 гц нужно в исходниках поправить параметр #define SCREEN_AND_SENSOR_UPDATES_PER_SEC 2
- Можно прописать позывной выводимый в правом верхнем углу экрана, буквы понимает только заглавные
#define TEXT_CALL_SIGN “здесь пишем что хотим” - Как оказалось режим NTSC нужно принудительно включать, раскомментируем строчку //#define COLORSYSTEM_NTSC (убрать //)
- Скорость порта по умолчанию 4800, что бы перевести на 9600 нужно изменить параметр #define GPS_BAUD 4800
у меня на этой скорости начинают сыпаться данные, либо сказывается уход кварца по частоте, либо просто не хватает времени атмеге на обработку. - Некторые (а может быть все) 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х спутников
#define HOME_SET_FIX_COUNT 10 //Config for _SET_AT_FIX: After 10 successfully fixes, home is set.
вот это я не понял, расшифруйте плз
это кол-во принятых актуальных данных с координатами
то есть он должен поймать фикс через 10 пакетов с координатами, почему не ловит?
Координаты идут не совсем одинаковые, меняются последние цифры.