FPV с OSD весом до 25 грам. для мелколётов
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ом посте…
Ну тогда помоему схема лежит в вашем 16ом посте…
Это схема E-OSD
Вот схема G-OSD
Отличается от E-OSD ножками на кнопку и светодиод
Если в E-OSD довавить вывод от 30 ноги - RXD данные от GPS и вывод от 25 ноги - RSSI, то будет функциональный аналог.
Ножки светодиода и кнопки переназначаются в прошивке.
Сегодня пробовал скомпилить проект u-osd под E-OSD. Переназначил ножки, запретил 9600 в GPS, разрешил PAL. Все нормально скомпилилось, прошить не успел, завтра буду шить.
Сегодня пробовал скомпилить проект u-osd под E-OSD. Переназначил ножки, запретил 9600 в GPS, разрешил PAL. Все нормально скомпилилось, прошить не успел, завтра буду шить.
PAL не пробовал совсем. Будет интересно увидеть результат. Возможно придется немного сдвинуть Линию начала апдейта.
а для чего используется кнорка на осд платке?
Длинное нажатие на кнопку вызывает запоминание HOME позиции.
а куда вещается токовый датчик
а куда вещается токовый датчик
Я вешал на вход RSSI, а вообще можно на любой правда от этого страдает точность.
Длинное нажатие на кнопку вызывает запоминание HOME позиции.
В пределах одной секунды после того как GPS приемник увидит спутники.
Я вешал на вход RSSI, а вообще можно на любой правда от этого страдает точность.
а в прошивке как это цчитывать чтоб ма считал
а в прошивке как это цчитывать чтоб ма считал
В CURRENT_INPUT номер ADC
А также указываются лимиты какое напряжение какому току соответствует, зависит от вашего датчика тока, смотрите даташит на него.
Вот схема G-OSD Отличается от E-OSD ножками на кнопку и светодиод Если в E-OSD довавить вывод от 30 ноги - RXD данные от GPS и вывод от 25 ноги - RSSI, то будет функциональный аналог.
В схеме ошибка. Между RSSI входом и землей сопротивление 100кОм.
У меня в Е-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.
Спасибо Александр, отличная работа.
У меня в Е-OSD нет этого резистора, и слава Богу.
Я думаю потом возникнут проблемы при измерении показаний с датчика тока. Сознаюсь, я не силен в схемотехнике, но когда экспериментировал со своим датчиком и подключал напрямую без делителя - значения убегали далеко в бесконечность. Вот немного инфы.
Обновил и выложил конфигурацию проекта для компиляции E-OSD / GPS.
Вчера наконец-то нашел PAL камеру. Подключил без изменения прошивки (NTSC) - картинка есть но соотв. немного меньше чем экран так как PAL разрешение выше. Сегодня подправлю код.
TEXT_CALL_SIGN - это не для имени автора, а позывной 😃 каждый меняет под себя. Так же гляну почему съезжают строки.
И спасибо за отзыв! Приятно что еще кому-то пригодилось 😃
Александр, большое спасибо! попробую на днях и свою е-осд перешить
У меня камера пал, как раз и посмотрим, как оно будет сочетаться =)
Александр, большое спасибо! попробую на днях и свою е-осд перешить У меня камера пал, как раз и посмотрим, как оно будет сочетаться =)
Как раз сейчас чиню PAL, к выходным будет все норм.
Без GPS - моя прошивка бестолкова… выводить нечего.
так гпс прикручен… в общем-то, стоит сейчас прошивка 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 метров. Пока что нет времени поковыряться, попробую вашу прогу =)
но у меня непонятки с координатами для гпс-модуля EB-240 TD
Пришлите мне фрагмент NMEA - лога.
$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”
$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)
для остальных\других модулей это нужно убирать иначе будут вылазить лишние метры
Те координаты которые в логе соответсвуют действительности?
Да, те координаты настоящие и показывают с точностью до 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 отличается? Вроде бы все посылки по стандарту. К сожалению, нет другого модуля, чтобы проверить.
Пришлите плз пару строк из вашего лога нмеа
Пришлите плз пару строк из вашего лога нмеа
$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 символа.
Код парсера я полностью переписал.