HobbyKing E-OSD

kamisama
dROb:

В общем вот так выглядит картинка. Есть подозрение, что синхронизация рвётся в момент получения посылки с GPS данными. У всех так?

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

dROb
kamisama:

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

В принципе похоже, но что-то я сомневаюсь, что AVR таким образом работает с UART - надо проверить.
P.S. Хотя это может быть проблема в самой прошивке CL-OSD - я об этом сразу не подумал…

falke5
kamisama:

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

там обычный буфер UART, ничего соседнего там не затрете, он либо будет считан контроллером либо будет очищен и будет ждать новой послылки.
Подобный датчик работает нормально вполне у меня, причем на 2х герцах частоты обновления от длатчика и 2 гц прорисовки данных. Времени ему вполне хватает.
Я кстати не спросил вы отрезали лишнюю дату от датчика в настройках? МиниFAQ тут rcopen.com/forum/f90/topic226809/147.
Вообще идеальный вариант поправить пакеты от датчика полностью исключив лишние данные, тогда запас по нагрузке появится у меги. Можно будет поднять скорость обновления

dROb
falke5:

там обычный буфер UART, ничего соседнего там не затрете, он либо будет считан контроллером либо будет очищен и будет ждать новой послылки.

Ок, понятно, спасибо.

falke5:

Подобный датчик работает нормально вполне у меня, причем на 2х герцах частоты обновления от длатчика и 2 гц прорисовки данных. Времени ему вполне хватает.
Я кстати не спросил вы отрезали лишнюю дату от датчика в настройках? МиниFAQ тут rcopen.com/forum/f90/topic226809/147.
Вообще идеальный вариант поправить пакеты от датчика полностью исключив лишние данные, тогда запас по нагрузке появится у меги. Можно будет поднять скорость обновления

Мм, сейчас уже точно не уверен, но по-моему в одной из стадий эксперимента - я отрезал всё кроме GGA, и улучшений не наступило. Но надо обязательно попробовать опять.
В общем думаю гадать далее не стоит - нужно, как вернусь:

  1. Убрать лишнюю инфу из GPS
  2. Проверить питание
  3. Если не поможет всё вышеперечисленное - править строки. Быть может это проблема именно на моей конкретной атмеге, которая не хочет работать при повышенной частоте и нагрузке…
18 days later
Женьчик

Народ, подскажите пожалуйста в чем проблема?
Понапутал с подключением батареи и…вобщем все понапутал, потом подсказали и подключил все правильно, на картинку не накладывает ничего… led на плате мигает быстро и все… спалил?

falke5

раз мигает диод, значит процессор работает, круг потенциальных проблем сужается до:

  1. не работает селектор СИ, нужно проверить транзистор
  2. все еще подключено не то и не туда
  3. Отсутствует общий провод (масса) между камерой и ОСД
16 days later
sashok17

Сделал свой вариант печатной платки под E-OSD.
Входы: Батарея 1, Батарея 2, вход RSSI (без делителя). Задача была сделать максимально небольшой ОСД с минимумом необходимого для ФПВ полета. Выкладываю печатную плату. Схема из сообщения №125. + выкладываю упрощенный вариант прошивки. Огромнейшее спасибо Dollop за помощь в редактировании и облегчении прошивки “под мои нужды”.
Что изменилось/осталось:

  1. Если ко входам ОСД ничего не подключено, то соответственно на экране ничего не будет выводится, дабы не мозолили глаза нули.
  2. Батарея 1: показания выводятся в вольтах и процентах. 12.6 вольт = 100% (заточено под 3 банки липы)
  3. Батарея 2: показания выводятся только в Вольтах.
  4. RSSI : показания только в процентах. 100% соответствует напряжение 1.86 вольта. На убывание.
  5. Время полета

Выкладываю прошивку + исходники. Прошивка под NTSC камеру, будет ли работать с ПАЛ не знаю. Если кто умеет, можно в исходниках подправить если что.

Вот тут видна картинка с ОСД, за качество не пинать… как получилось. http:// Fatshark Predator Problem (после Http пробел убрать)

Фото платки ОСД

Еще раз спасибо Dollop !

ссылка на прошивку: narod.ru/disk/…/E-OSD for Sashok17.rar.html

18 days later
dROb

народ, а какой транзистор можно поставить вместо s9012 ?

dollop

У меня стоит BC857. В принципе любой среднечастотный p-n-p подойдет.

16 days later
dROb

Сваял себе самодельный E-OSD - заработало сразу, но при подключенном ОСД - сильно мутное и почти черно-белое изображение. Что посоветуете подкрутить? Номиналы конденсаторов из этой схемы: rcopen.com/files/4f89bcf29970730077fac63b

Может c8 убрать?

dROb
dROb:

Сваял себе самодельный E-OSD - заработало сразу, но при подключенном ОСД - сильно мутное и почти черно-белое изображение. Что посоветуете подкрутить? Номиналы конденсаторов из этой схемы: rcopen.com/files/4f89bcf29970730077fac63b

Может c8 убрать?

Убрал c8 - радикально полегчало

falke5

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

sashok17

Я собирал по этой схеме, на обоих камерах работает нормально, одна камера с дешевого комплекта на 900 мгц, другая отдельно покупал на ХС за 32 бакса. с обеими работает без проблем

falke5
sashok17:

Я собирал по этой схеме, на обоих камерах работает нормально

по вашему видео в предыдущих постах видно это “нормально”, в итоге я вымерял в заводской e-osd емкости и запаял.

sashok17

то проблема видеоочков. Без ОСД все так же было.

Если вымеряли, так огласите номиналы чтоб народ не мучился если возникли проблемы

dROb

Рано я радовался - свежеспаянный клон всё равно работает не очень. На камере с высоким разрешением синхру не может поймать - куски ОСД по экрану прыгают. Запустил на старой дешевой камере - полетел, так данные почему-то иногда зависают на целую минуту… То есть изображение выводится, но как-будто я на месте стою…

falke5

надо подбирать емкости на селекторе СИ

это с9 и с8 по схеме выше

sashok17:

Если вымеряли, так огласите номиналы

если бы я их еще помнил, а распаивать еще раз очень не хочется

14 days later
dROb

Долбанный “Маркер безопасности устарел” сожрал огромное моё сообщение. На этот раз буду краток:

Никто нигде не видел код (желательно на си), для инициализации GPS модуля? Мне кажется это можно найти в мультикоптерах или в OSD каких-нибудь, но я не нашёл…
Можно написать самому с нуля, но если писать грамотно - уйдёт время которого нет…

leprud
dROb:

Никто нигде не видел код (желательно на си), для инициализации GPS модуля?

Оно ж после включения сразу начинает выплевывать NMEA строки.
Переключение частоты обновления или скорости порта уже в даташите надо смоотреть на определенный модуль

dROb
leprud:

Оно ж после включения сразу начинает выплевывать NMEA строки.
Переключение частоты обновления или скорости порта уже в даташите надо смоотреть на определенный модуль

Так то оно так - но я имел в виду конечно же настройку тонкостей GPS 😃 (хотя бы скорости порта в 4800бод)
Мало того, даже и эти параметры настройки - довольно стандартны для большинства модулей, но всё равно тонкостей предвидится много. Мне видится такой алгоритм (который не очень хочется изображать самому 😃 ) :

  • Автоопределяем скорость датчика
  • Соединяемся
  • Настраиваем выдаваемые параметры до минимума необходимого E-OSD
  • Переключаем скорость модуля на 4800бод,
  • Переподключаемся на скорости 4800
  • работаем …

В принципе всё это, кроме автоопределения, - можно сделать в несколько строк, но меня смущает то, что когда я экспериментировал с EB-500 - он как то не всегда мои команды воспринимал. А это значит нестабильность приёма команд, необходимость проверки, и пошло поехало… плёвое дело разрастается в нескончаемый в условиях ограниченного времени проект…

или я не знаю какой-то тонкости в отправке команд… Быть может отправлять надо в определенный момент… или ещё чего…

P.S. Меня, например, также, смутило что найденный кусочек инициализации в коде MULTIWII GPS выглядит так:
Serial.write(“$PGCMD,16,0,0,0,0,0*6A\r\n”);
delay(1000);
Serial.write(“$PGCMD,16,0,0,0,0,0*6A\r\n”);
delay(300);

Почему то команда дублируется… зачем?

leprud
dROb:

Мало того, даже и эти параметры настройки - довольно стандартны для большинства модулей

Увы, они различны…
Примеры кода можете посмотреть или в i2c-gps-nav, или arducopter/megapirate
Но даташит конечно все равно нужно будет прочесть.

dROb:

Меня, например, также, смутило что найденный кусочек инициализации в коде MULTIWII GPS выглядит так:

diydrones.com/forum/…/mediatek-ardupilot-imu

void setup()
{
Serial1.begin(38400); // GPS port on APMega
Serial1.print(“$PGCMD,16,0,0,0,0,0*6A\r\n”); // Custom binary protocol
//Serial1.print(“$PGCMD,16,1,1,1,1,1*6B\r\n”); // NMEA
}

However, somewhere, something resets it to output the initial format again. Any ideas?