FPV с OSD весом до 25 грам. для мелколётов

Rabbit_Fly
alexmx:

G_OSD
#define KEY (1<<PD4)
#define LED (1<<PD3)
#define ANALOG_IN_1 0 // Voltage 1 = ADC0
#define ANALOG_IN_2 1 // Voltage 2 = ADC1
#define ANALOG_IN_3 2 // RSSI = ADC2 (only 0-5 Volt!)
#define ANALOG_IN_4 3 // No input, just a pot = ADC3

Ну тогда помоему схема лежит в вашем 16ом посте…

alexmx
Rabbit_Fly:

Ну тогда помоему схема лежит в вашем 16ом посте…

Это схема E-OSD

alldn

Вот схема G-OSD
Отличается от E-OSD ножками на кнопку и светодиод
Если в E-OSD довавить вывод от 30 ноги - RXD данные от GPS и вывод от 25 ноги - RSSI, то будет функциональный аналог.
Ножки светодиода и кнопки переназначаются в прошивке.


Сегодня пробовал скомпилить проект u-osd под E-OSD. Переназначил ножки, запретил 9600 в GPS, разрешил PAL. Все нормально скомпилилось, прошить не успел, завтра буду шить.

alexmx
alldn:

Сегодня пробовал скомпилить проект u-osd под E-OSD. Переназначил ножки, запретил 9600 в GPS, разрешил PAL. Все нормально скомпилилось, прошить не успел, завтра буду шить.

PAL не пробовал совсем. Будет интересно увидеть результат. Возможно придется немного сдвинуть Линию начала апдейта.

Rabbit_Fly

а для чего используется кнорка на осд платке?

alldn

Длинное нажатие на кнопку вызывает запоминание HOME позиции.

alexmx
Rabbit_Fly:

а куда вещается токовый датчик

Я вешал на вход RSSI, а вообще можно на любой правда от этого страдает точность.

alldn:

Длинное нажатие на кнопку вызывает запоминание HOME позиции.

В пределах одной секунды после того как GPS приемник увидит спутники.

Rabbit_Fly
alexmx:

Я вешал на вход RSSI, а вообще можно на любой правда от этого страдает точность.

а в прошивке как это цчитывать чтоб ма считал

alexmx
Rabbit_Fly:

а в прошивке как это цчитывать чтоб ма считал

В CURRENT_INPUT номер ADC

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

alexmx
alldn:

Вот схема G-OSD Отличается от E-OSD ножками на кнопку и светодиод Если в E-OSD довавить вывод от 30 ноги - RXD данные от GPS и вывод от 25 ноги - RSSI, то будет функциональный аналог.

В схеме ошибка. Между RSSI входом и землей сопротивление 100кОм.

alldn

У меня в Е-OSD нет этого резистора, и слава Богу.

Докладываю, сегодня изголялся над своей платой E-OSD. Пробовал прошивку U-OSD в варианте G-OSD.
Закоментарил объявление GPS для настройки скорости UART на 4800 потому что мой GPS приемник работает на этой скорости.

//#define GPS_MTK3229

Для совместимости изменил строки, определяющие выводы кнопки и светодиода:

#define KEY (1<<PD5) //4)
#define LED (1<<PD6) //3)

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

Плата E-OSD у меня доработана как показано здесь.
Отличие от этой доработки в том, что я на дополнительные выводы подключил сигналы от 30 ножки контроллера (RX) и 25 ножки контроллера - вход от измерителя тока. Измеритель пока не подключал.

Пробовал перекомпилить прошивку под PAL. К сожалению в этом режиме программа на заработала. На экране моргает что-то, причем это не значения переменных, а имена переменных. В частности моргала надпись %OSD.

Сильно я не расстроился по этому поводу, как выяснилось мои камеры переключаются и в PAL и в NTSC, телевизоры сами понимают что им передают, Шарки тоже сами понимают кодировку, так что решил остановиться на NTSC и не париться.

Не понравилась надпись ALEX в левом верхнем углу. Это право автора без сомнения, но мне свое имя перед глазами не нужно, решил не загружать экран. Сделал эту переменную пустой.

#define TEXT_CALL_SIGN ""    //Set this to your call sign.

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

#define TEXT_CALL_SIGN " "    //Set this to your call sign.

Теперь ничего лишнего не видно. Будет квадратик серенький, но это не страшно.

Работали над платами параллельно с товарищем. Он свою плату мучал, я свою. Остались очень довольны прошивкой. Выглядит очень круто, гораздо лучше, чем прошивка CL-OSD.
Спасибо Александр, отличная работа.

alexmx
alldn:

У меня в Е-OSD нет этого резистора, и слава Богу.

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

Обновил и выложил конфигурацию проекта для компиляции E-OSD / GPS.

Вчера наконец-то нашел PAL камеру. Подключил без изменения прошивки (NTSC) - картинка есть но соотв. немного меньше чем экран так как PAL разрешение выше. Сегодня подправлю код.

TEXT_CALL_SIGN - это не для имени автора, а позывной 😃 каждый меняет под себя. Так же гляну почему съезжают строки.

И спасибо за отзыв! Приятно что еще кому-то пригодилось 😃

lamakazzz

Александр, большое спасибо! попробую на днях и свою е-осд перешить
У меня камера пал, как раз и посмотрим, как оно будет сочетаться =)

alexmx
lamakazzz:

Александр, большое спасибо! попробую на днях и свою е-осд перешить У меня камера пал, как раз и посмотрим, как оно будет сочетаться =)

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

lamakazzz

так гпс прикручен… в общем-то, стоит сейчас прошивка cl-osd, но у меня непонятки с координатами для гпс-модуля EB-240 TD
valera_o поделился прошивкой
Изменения коснулись файла gps-nmea.h

а именно 2 строки:

1)
было:
gGpsLastData.pos.latitude = parseFloat(gGpsText, GPS_MAX_CHARS);
стало:
gGpsLastData.pos.latitude = parseFloat(gGpsText, GPS_MAX_CHARS-2);

2)
было:

gGpsLastData.pos.longitude = parseFloat(gGpsText, GPS_MAX_CHARS);
стало:
gGpsLastData.pos.longitude = parseFloat(gGpsText, GPS_MAX_CHARS-1);

в таком варианте ошибка гпс была порядка 500 метров
пару раз сам поковырял прошивку, пробовал выводить координаты напрямую, т.е. просто посимвольный вывод на экран. первые четыре-пять символов до точки выводятся норм, а после точки почему-то бред… На компе гпс кажет точно, ошибка в 3-5 метров. Пока что нет времени поковыряться, попробую вашу прогу =)

alexmx
lamakazzz:

но у меня непонятки с координатами для гпс-модуля EB-240 TD

Пришлите мне фрагмент NMEA - лога.

lamakazzz

$GPGGA,065413.000,5002.804614,N,03617.042708,E,2,4,3.32,200.801,M,16.986,M,0000,0000*55
$GPRMC,065413.000,A,5002.804614,N,03617.042708,E,0.45,246.43,170913,D*67
$GPGGA,065414.000,5002.804568,N,03617.042520,E,2,4,3.32,200.802,M,16.986,M,0000,0000*51
$GPRMC,065414.000,A,5002.804568,N,03617.042520,E,0.63,248.09,170913,D*64

вроде бы ничего плохого нет
гпс настроен на частоту обновления 1 гц 4800 бод, вывод только RMC и GGA и в них установлены значения “1”

alexmx
lamakazzz:

$GPGGA,065413.000,5002.804614,N,03617.042708,E,2,4,3.32,200.801,M,16.986,M,0000,0000*55 $GPRMC,065413.000,A,5002.804614,N,03617.042708,E,0.45,246.43,170913,D*67 $GPGGA,065414.000,5002.804568,N,03617.042520,E,2,4,3.32,200.802,M,16.986,M,0000,0000*51 $GPRMC,065414.000,A,5002.804568,N,03617.042520,E,0.63,248.09,170913,D*64

Проверил в своей прошивке - парсит все корректно.
Смотрите, в CL-прошивке и в моей есть так называемые поправочные коэффиценты, которые специально сделаны для стандартного G-OSD II модуля.
В CL - выглядит так:
//GPS
#define GPS_CAL_GOOGLE_LAT 7382 //Local calibration of Google GPS Lat (Truglodite)
#define GPS_CAL_GOOGLE_LON 4728 //Local calibration of Google GPS Long (Truglodite)

для остальных\других модулей это нужно убирать иначе будут вылазить лишние метры
Те координаты которые в логе соответсвуют действительности?

lamakazzz

Да, те координаты настоящие и показывают с точностью до 3-5 метров.
я тоже грешил на те константы, но не проверял, посмотрю спасибо
Если вам понятно, то объясните плз, почему приходится указывать максимальную длину символов на 2 меньше?
повторю строки:
было:

gGpsLastData.pos.latitude = parseFloat(gGpsText, GPS_MAX_CHARS);
стало:
gGpsLastData.pos.latitude = parseFloat(gGpsText, GPS_MAX_CHARS-2);

и

было:
gGpsLastData.pos.longitude = parseFloat(gGpsText, GPS_MAX_CHARS);
стало:
gGpsLastData.pos.longitude = parseFloat(gGpsText, GPS_MAX_CHARS-1);

Разве длина посылки из EB-240TD отличается? Вроде бы все посылки по стандарту. К сожалению, нет другого модуля, чтобы проверить.
Пришлите плз пару строк из вашего лога нмеа

alexmx
lamakazzz:

Пришлите плз пару строк из вашего лога нмеа

$GPGGA,083624.60,5031.57025,N,03034.50213,E,1,09,1.21,98.5,M,25.7,M,*68
$GPRMC,083624.80,A,5031.57016,N,03034.50227,E,9.698,266.45,190613,A*6E
Кстати совершенно бестолково убирать 2 символа.

Код парсера я полностью переписал.