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

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 символа.

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

lamakazzz

Дело в том, что если не убрать те два символа, то координаты на экран выводились вида 192.12345, 105.12345
то есть вообще не существующие координаты. вот…

alexmx:

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

да, я заметил у вас другие функции обработки. Сегодня постараюсь попробовать
А подскажите, вы доделали вывод в ПАЛ стандарте? увидел в гитхабе коментарии по поводу ПАЛа, хотел уточнить =)

alexmx
lamakazzz:

А подскажите, вы доделали вывод в ПАЛ стандарте? увидел в гитхабе коментарии по поводу ПАЛа, хотел уточнить =)

да, с PAL все ок. Проверил, выложил изменения. Нужно в конфиге закоментить #define COLORSYSTEM_NTSC.

lamakazzz

Да, с НТСЦ я увидел, спасибо!
Вы писали, у вас ГПС 10 Гц но по конфигу я читаю, что
#define SCREEN_UPDATES_PER_SEC 10
#define SENSOR_UPDATES_PER_SEC 1
значения от сенсоров (в том числе и ГПС) обновляются раз в секунду, соответственно и обновление экрана можно ставить 1 раз в секунду, меньше будет нагружаться камень, а результат будет тот же

alexmx

#define SENSOR_UPDATES_PER_SEC 1
К GPS это не относится - обновляется как только приходят валидные пакеты.
Это касается датчика тока, ADC’шек - можно чаще.
Если обновлять экран реже - нет смысла в GPS 10 Hz.
Напротив кол-ва спутников крутится палочка - видно принятые пакеты и заодно частоту обновления.

lamakazzz

ага понятно, тогда гуд… у меня датчик до 5 гц максимум, буду менять под мои значения

lamakazzz

Работает!!! =)
ура! теперь гпс кажет точно!
Если не сложно, опишите плз какая информация и где именно на экране расположена. Общение с ОСД у меня было только с еосд, других не видел, поэтому немножко сложновато все понять.
Если я правильно понимаю, левый край экрана по центру - скорость, правый край по центру - высота относительно позиции “Дом”

Снизу по центру расстояние до точки “Дом” и угол относительно этой позиции, поправьте, если ошибаюсь.
Интересно то, что сейчас как-будто работает датчик тока, и осд считает съеденные милиамперы, хотя датчика тока нет =)
РССИ видимо назначен на другой пин, т.к. при появлении сигнала РУ я увидел отображение напряжения для второй батареи (нижний левый угол, средняя позиция).
Подскажите, как ориентироваться по радару? маленький круг обозначает самолет или точку “Дом”? То есть, если маленький круг выше большого круга, то мы летим вперед и база получается сзади нас? или наоборот? в квартире не могу проверить )

Верхняя часть экрана вторая позиция слева (после часов) - это пройденный путь?
если можно покажите плз картинку с объяснениями 😃

Мне очень понравилось отображение! как на дорогих ОСД =)