HobbyKing E-OSD
В общем вот так выглядит картинка. Есть подозрение, что синхронизация рвётся в момент получения посылки с GPS данными. У всех так?
похоже на то, что с гпс приемника приходит слишком длинная посылка, данные затирают ячейки памяти других объектов кода.
похоже на то, что с гпс приемника приходит слишком длинная посылка, данные затирают ячейки памяти других объектов кода.
В принципе похоже, но что-то я сомневаюсь, что AVR таким образом работает с UART - надо проверить.
P.S. Хотя это может быть проблема в самой прошивке CL-OSD - я об этом сразу не подумал…
похоже на то, что с гпс приемника приходит слишком длинная посылка, данные затирают ячейки памяти других объектов кода.
там обычный буфер UART, ничего соседнего там не затрете, он либо будет считан контроллером либо будет очищен и будет ждать новой послылки.
Подобный датчик работает нормально вполне у меня, причем на 2х герцах частоты обновления от длатчика и 2 гц прорисовки данных. Времени ему вполне хватает.
Я кстати не спросил вы отрезали лишнюю дату от датчика в настройках? МиниFAQ тут rcopen.com/forum/f90/topic226809/147.
Вообще идеальный вариант поправить пакеты от датчика полностью исключив лишние данные, тогда запас по нагрузке появится у меги. Можно будет поднять скорость обновления
там обычный буфер UART, ничего соседнего там не затрете, он либо будет считан контроллером либо будет очищен и будет ждать новой послылки.
Ок, понятно, спасибо.
Подобный датчик работает нормально вполне у меня, причем на 2х герцах частоты обновления от длатчика и 2 гц прорисовки данных. Времени ему вполне хватает.
Я кстати не спросил вы отрезали лишнюю дату от датчика в настройках? МиниFAQ тут rcopen.com/forum/f90/topic226809/147.
Вообще идеальный вариант поправить пакеты от датчика полностью исключив лишние данные, тогда запас по нагрузке появится у меги. Можно будет поднять скорость обновления
Мм, сейчас уже точно не уверен, но по-моему в одной из стадий эксперимента - я отрезал всё кроме GGA, и улучшений не наступило. Но надо обязательно попробовать опять.
В общем думаю гадать далее не стоит - нужно, как вернусь:
- Убрать лишнюю инфу из GPS
- Проверить питание
- Если не поможет всё вышеперечисленное - править строки. Быть может это проблема именно на моей конкретной атмеге, которая не хочет работать при повышенной частоте и нагрузке…
Народ, подскажите пожалуйста в чем проблема?
Понапутал с подключением батареи и…вобщем все понапутал, потом подсказали и подключил все правильно, на картинку не накладывает ничего… led на плате мигает быстро и все… спалил?
раз мигает диод, значит процессор работает, круг потенциальных проблем сужается до:
- не работает селектор СИ, нужно проверить транзистор
- все еще подключено не то и не туда
- Отсутствует общий провод (масса) между камерой и ОСД
Сделал свой вариант печатной платки под E-OSD.
Входы: Батарея 1, Батарея 2, вход RSSI (без делителя). Задача была сделать максимально небольшой ОСД с минимумом необходимого для ФПВ полета. Выкладываю печатную плату. Схема из сообщения №125. + выкладываю упрощенный вариант прошивки. Огромнейшее спасибо Dollop за помощь в редактировании и облегчении прошивки “под мои нужды”.
Что изменилось/осталось:
- Если ко входам ОСД ничего не подключено, то соответственно на экране ничего не будет выводится, дабы не мозолили глаза нули.
- Батарея 1: показания выводятся в вольтах и процентах. 12.6 вольт = 100% (заточено под 3 банки липы)
- Батарея 2: показания выводятся только в Вольтах.
- RSSI : показания только в процентах. 100% соответствует напряжение 1.86 вольта. На убывание.
- Время полета
Выкладываю прошивку + исходники. Прошивка под NTSC камеру, будет ли работать с ПАЛ не знаю. Если кто умеет, можно в исходниках подправить если что.
Вот тут видна картинка с ОСД, за качество не пинать… как получилось. http:// Fatshark Predator Problem (после Http пробел убрать)
Еще раз спасибо Dollop !
ссылка на прошивку: narod.ru/disk/…/E-OSD for Sashok17.rar.html
народ, а какой транзистор можно поставить вместо s9012 ?
У меня стоит BC857. В принципе любой среднечастотный p-n-p подойдет.
Сваял себе самодельный E-OSD - заработало сразу, но при подключенном ОСД - сильно мутное и почти черно-белое изображение. Что посоветуете подкрутить? Номиналы конденсаторов из этой схемы: rcopen.com/files/4f89bcf29970730077fac63b
Может c8 убрать?
Сваял себе самодельный E-OSD - заработало сразу, но при подключенном ОСД - сильно мутное и почти черно-белое изображение. Что посоветуете подкрутить? Номиналы конденсаторов из этой схемы: rcopen.com/files/4f89bcf29970730077fac63b
Может c8 убрать?
Убрал c8 - радикально полегчало
номиналы в этой схеме не соответствуют действительности, сейчас уже точно не помню что где, но факт. При тех номиналах схема работоспособна только с конкретной камерой и повторяемости нет
Я собирал по этой схеме, на обоих камерах работает нормально, одна камера с дешевого комплекта на 900 мгц, другая отдельно покупал на ХС за 32 бакса. с обеими работает без проблем
Я собирал по этой схеме, на обоих камерах работает нормально
по вашему видео в предыдущих постах видно это “нормально”, в итоге я вымерял в заводской e-osd емкости и запаял.
то проблема видеоочков. Без ОСД все так же было.
Если вымеряли, так огласите номиналы чтоб народ не мучился если возникли проблемы
Рано я радовался - свежеспаянный клон всё равно работает не очень. На камере с высоким разрешением синхру не может поймать - куски ОСД по экрану прыгают. Запустил на старой дешевой камере - полетел, так данные почему-то иногда зависают на целую минуту… То есть изображение выводится, но как-будто я на месте стою…
надо подбирать емкости на селекторе СИ
это с9 и с8 по схеме выше
Если вымеряли, так огласите номиналы
если бы я их еще помнил, а распаивать еще раз очень не хочется
Долбанный “Маркер безопасности устарел” сожрал огромное моё сообщение. На этот раз буду краток:
Никто нигде не видел код (желательно на си), для инициализации GPS модуля? Мне кажется это можно найти в мультикоптерах или в OSD каких-нибудь, но я не нашёл…
Можно написать самому с нуля, но если писать грамотно - уйдёт время которого нет…
Никто нигде не видел код (желательно на си), для инициализации GPS модуля?
Оно ж после включения сразу начинает выплевывать NMEA строки.
Переключение частоты обновления или скорости порта уже в даташите надо смоотреть на определенный модуль
Оно ж после включения сразу начинает выплевывать 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);
Почему то команда дублируется… зачем?
Мало того, даже и эти параметры настройки - довольно стандартны для большинства модулей
Увы, они различны…
Примеры кода можете посмотреть или в i2c-gps-nav, или arducopter/megapirate
Но даташит конечно все равно нужно будет прочесть.
Меня, например, также, смутило что найденный кусочек инициализации в коде 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?