Телеметрия (часть 1)

smalltim

Всё идет своим чередом, будет готово - выложу 😃

smalltim

Пора интегрировать код GPS в Атмегу, но есть пара вопросов.

Можно задать несколько вопросов гуру по GPS?

  1. Правильно ли я предполагаю, что все GPS-модули по дефолту передают на 4800/8/N/1 или 9600/8/N/1 в NMEA (я решил не связываться с внутренними форматами) и достаточно при инициализации перебрать в USART эти режимы и по получении корректных пакетов остановиться на нужном режиме?

  2. Правильно ли я предполагаю, что все GPS-модули по дефолту сразу передают пакеты GPRMC (pекомендуемый минимум GPS данных) один раз в секунду (или некоторые чаще) по дефолту, без дополнительных телодвижений со стороны атмеги?

  3. Правильно ли я предполагаю, что некоторые GPS-модули по дефолту вместе с GPRMC передают раз в секунду всякие прочие пакеты типа GPGLL, GPGGA?

  4. Для отображения

  • направления на точку старта (графически)
  • расстояния до точки старта
  • величины текущей скорости
  • направления движения (графически)
    достаточно GPRMС с кое-какой математикой.
    Имеет ли смысл выводить на экран дополнительные параметры типа DOP, количества спутников и т.д., или перечисленного выше достаточно?
  1. Какие телодвижения надо совершать со стороны атмеги, чтобы ежесекундно получать дополнительные пакеты типа GPGSA, GPGSV?
Artie
smalltim:
  1. Правильно ли я предполагаю, что все GPS-модули по дефолту передают на 4800/8/N/1 или 9600/8/N/1 в NMEA (я решил не связываться с внутренними форматами) и достаточно при инициализации перебрать в USART эти режимы и по получении корректных пакетов остановиться на нужном режиме?

Не так, чтобы абсолютно все, но основаня масса приемников умеют выдавать NMEA. Скорость передачи при этом ничем не гарантирована, и зависит от настроек, сохраняемых обычно в nvram/flash/etc.
Однако, из чисто практических соображений, можно работать только на 4800; - эту скорость должен поддерживать любой приемник.

  1. Правильно ли я предполагаю, что все GPS-модули по дефолту сразу передают пакеты GPRMC (pекомендуемый минимум GPS данных) один раз в секунду (или некоторые чаще) по дефолту, без дополнительных телодвижений со стороны атмеги?

“Дефолт” тут - понятие относительное.
Все приемники, умеющие NMEA, гарантированно умеют передавать RMC. Однако [строго так же, как и со скоростью], будут ли они передавать этот кадр - зависит от сохраняющихся настроек.

  1. Правильно ли я предполагаю, что некоторые GPS-модули по дефолту вместе с GPRMC передают раз в секунду всякие прочие пакеты типа GPGLL, GPGGA?

Передается тот набор, который был заказан через PGRMO (или иным способом). Передачу любого sentence’а можно включить и выключить соответствующей командой.

  1. Для отображения
  • направления на точку старта (графически)
  • расстояния до точки старта
  • величины текущей скорости
  • направления движения (графически)
    достаточно GPRMС с кое-какой математикой.
    Имеет ли смысл выводить на экран дополнительные параметры типа DOP, количества спутников и т.д., или перечисленного выше достаточно?

Для расчетов RMC вполне достаточно (равно как и любого другого кадра, содержащего широту и долготу), но количество видимых спутников показывать все-же полезно, чтобы можно было визуально оценить “перспективы” работы в данном конкретном месте. Имеет ли смысл отображать скорость (которая “over ground”) - вопрос вкуса.

Вообще, лучшая стратегия - это уметь обрабатывать как можно больше разных кадров, складывая принятые в них одинаковые поля в одни и те же переменные, но “достаточный набор” - это GPRMC и GPGGA (из первого - если нужно - берутся скорость и курс, из вторгого - высоты и количество спутников). Эти два кадра умеют выдавать подавляющее большинство приборов.

  1. Какие телодвижения надо совершать со стороны атмеги, чтобы ежесекундно получать дополнительные пакеты типа GPGSA, GPGSV?

Никаких. Будучи однократно настроен, любой NMEA-enabled приемник передает заказанный набор кадров сам.

Чтобы не привязываться к какому-то конкретному приемнику (или группе приемников), операцию программирования имеет смысл отдать на откуп пользователю (как минимум, потому, что не все приемники, умеющие выдавать nmea, умеют его и принимать).

smalltim

Ок, спасибо!

Значит, USART на атмеге навечно прошивается на асинхронный прием на 4800/N/1, и понеслась 😃

smalltim

Прикрутил отображение информации с GPS на экран, стараясь, чтобы всё было максимально наглядно.

Система отсчета на “карте” связана с Землей, север всегда сверху.
Стрелка - текущий курс самолета.
Кружочек на “карте” - направление из центра карты на “базу” - точку старта. Кружочек ползает по границе карты, между стрелкой и рамкой.
Слева от “карты” - количество спутников.
Справа от “карты” - удаление от “базы” - точки старта. Удаление считается на плоскости, то есть, при полете самика в 300 метрах над головой удаление будет нулевым.

Картинка:

И маленький ролик:

Стрелка и кружочек на ролике пока крутятся от балды. Математика в целом готова, но всё не могу достать паяльник и собственно подключить модуль.

Высоты по показаниям GPS и скорости по показаниям GPS, наверное, не будет. Для этого есть датчики давления.

Пойдёт?

LowAmper
smalltim:

Прикрутил отображение информации с GPS на экран, стараясь, чтобы всё было максимально наглядно.
Пойдёт?

обалденно!
если я правильно понимаю, сей девайс (вернее, прошивка) заточен под определенное разрешение камеры? Видимо, я пропустил это, читая форум и Ваш блог.

smalltim

Заточка только под 625 строк у ТВ-сигнала. Любая PAL камера пойдет. NTSC не пойдет.

maza

smalltim, мне кажется информация о количестве спутников лишняя.
Для служебной инфы наверное надо внедрить кнопку, по которой будет отображатся всякая информация.
А вообще отличные результаты!

mitmit

Привет Smalltim, результаты Вашей работы впечатляют, а можно какнить заказать такую штучку у Вас? Я вот прямо готов.
Кстати, иметь высоту и скорость от GPS неплохо, не все любят навешивать доп датчики давления и т.п. А расход mAh умеет показывать?

Dikoy
smalltim:

Пора интегрировать код GPS в Атмегу, но есть пара вопросов.

Можно задать несколько вопросов гуру по GPS?

  1. Не все. Обычно скорость 9600, но бывает и 19200 и 4800. У некоторых приёмников (типа LEA-LA) настраивается лапками, у более продвинутых можно управлять конфигом через порт. В любом случае, надо смотреть доку на конкретный приёмник.

  2. Это правильнее называть строками. Обычный набор строк RMC, GGA, VTG. Остальные по желанию производителя.

  3. Скорее не некоторые, а все 😃

  4. Я обычно вывожу режим ориентации none/2D/3D. Это более информативно, чем число спутников. Число спутников ничего не значит - они могут быть, но приёмник их не пользует. А вот от режима ориентации зависит всё - релевантность высоты, точность по горизонтали.

  5. Никаких. Приёмники начинают слать пакеты сразу же. Обычно по дефолту они шлют всё, что умеют. Далее можно влезть в настройки и отключить ненужное, чтобы МК не дёргать лишними данными Вот, я снимал с LEA-4H в разных режимах:

Начальное, состояние, ещё не определено НИЧЕГО:
$GPGGA,0,00,99.99,*48
$GPGSA,A,1,99.99,99.99,99.99*30
$GPGSV,1,1,01,05,35*7B
$GPGLL,V,N*64
$GPZDA,00,00*48
$GPRMC,V,N*53
$GPVTG,N*30
Определено время, дата:
$GPGGA,130309.00,0,00,99.99,*6E
$GPGSA,A,1,99.99,99.99,99.99*30
$GPGSV,1,1,01,05,33*7D
$GPGLL,130309.00,V,N*42
$GPZDA,130309.00,04,03,2008,00,00*63
$GPRMC,130310.00,V,040308,N*72
$GPVTG,N*30
Три спутника зелёные, но определения ещё нет:
$GPGGA,130551.00,0,03,13.44,*64
$GPGSA,A,1,12,05,14,13.47,13.44,1.00*01
$GPGSV,2,1,05,12,07,027,36,05,07,043,38,17,28,14,29,056,38*4F
$GPGSV,2,2,05,02,26*7A
$GPGLL,130551.00,V,N*49
$GPZDA,130551.00,04,03,2008,00,00*68
$GPRMC,130552.00,V,040308,N*72
$GPVTG,N*30
Есть 2D ориентация.
$GPGGA,130559.00,5402.49037,N,03816.97447,E,1,03,13.47,486.4,M,13.6,M,*60
$GPGSA,A,2,12,05,14,13.51,13.47,1.00*06
$GPGSV,2,1,05,12,07,027,37,05,07,043,38,17,29,14,29,056,39*4E
$GPGSV,2,2,05,02,27*7B
$GPGLL,5402.49037,N,03816.97447,E,130559.00,A,A*6D
$GPZDA,130559.00,04,03,2008,00,00*60
$GPRMC,130600.00,A,5402.49098,N,03816.97437,E,0.904,234.07,040308,A*67
$GPVTG,234.07,T,M,0.904,N,1.675,K,A*37
Есть 3D ориентация.
$GPGGA,131721.00,5402.25746,N,03816.70816,E,1,06,3.75,229.6,M,13.6,M,*52
$GPGSA,A,3,12,05,14,01,30,17,4.91,3.75,3.17*0D
$GPGSV,3,1,11,20,53,281,18,31,43,109,12,07,023,32,32,31,096,17*7E
$GPGSV,3,2,11,23,26,227,19,05,08,038,36,14,25,056,33,01,55,064,34*74
$GPGSV,3,3,11,30,06,056,28,17,23,302,35,11,53,224,22*47
$GPGLL,5402.25746,N,03816.70816,E,131721.00,A,A*6B
$GPZDA,131721.00,04,03,2008,00,00*6C
$GPRMC,131722.00,A,5402.25751,N,03816.70816,E,0.018,040308,A*71
$GPVTG,T,M,0.018,N,0.033,K,A*2A
Ещё пример 3D ориентации:
$GPGGA,131259.00,5402.26208,N,03816.70657,E,1,05,3.75,241.7,M,13.6,M,*53
$GPGSA,A,3,12,05,30,17,14,5.76,3.75,4.38*0E
$GPGSV,3,1,10,20,51,280,20,31,42,112,19,12,07,025,34,32,32,095,18*7B
$GPGSV,3,2,10,05,08,040,37,30,05,057,24,17,23,304,31,14,27,056,33*77
$GPGSV,3,3,10,11,55,226,21,23,26*48
$GPGLL,5402.26208,N,03816.70657,E,131259.00,A,A*66
$GPZDA,131259.00,04,03,2008,00,00*66
$GPRMC,131300.00,A,5402.26217,N,03816.70658,E,0.152,241.34,040308,A*64
$GPVTG,241.34,T,M,0.152,N,0.281,K,A*30

Вертолетчик
mitmit:

Привет Smalltim, результаты Вашей работы впечатляют, а можно какнить заказать такую штучку у Вас? Я вот прямо готов.
Кстати, иметь высоту и скорость от GPS неплохо, не все любят навешивать доп датчики давления и т.п. А расход mAh умеет показывать?

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

maza

Какую документацию вы хотите? Читайте в теме, все необходимые файлы для постройки выложены.

Вертолетчик
maza:

Какую документацию вы хотите? Читайте в теме, все необходимые файлы для постройки выложены.

По подключению GPS компаса…

SGordon

А компас еще тока подключают, как я понял …

Хотел как всегда уточнить, планируется ли новая платка или будет очередной проводок к меге?

Dikoy
Вертолетчик:

По подключению GPS компаса…

Там не компас. GPS приёмник вычисляет курс математически, по точкам. При нулевой скорости его так мотать будет, что ой 😃 Считается, что все параметры, завязаные на скорости, начинают быть релевантными начиная с 5-10 км/ч. По этому я бы привязал показания GPS к датчику скорости (по давлению) и на малых скоростях просто не показывать часть оных.

Вертолетчик

Люди, поделитесь рабочей программой EAGLE. Накачал кучу, ни одна путем не пашет! 😠

maza

Тут где то писалось что он в определенную папку должен быть установлен, не помню какую вот только…
но мне точно помогало.

smalltim

>Хотел как всегда уточнить, планируется ли новая платка или будет очередной проводок к меге?

Будет работать с проводком к меге. Но проводков уже слишком много, да и помехи надо окончательно убить. Поэтому после вылизывания прошивки будет новая платка.

>Тут где то писалось что он в определенную папку должен быть установлен, не помню какую вот только…
но мне точно помогало.

Да в любую папку, только без русских букв и не длинную. Ну, например, c:\avia или d:\vasya\pupkin

>все параметры, завязаные на скорости, начинают быть релевантными начиная с 5-10 км/ч.

Да, при очень маленькой скорости относительно земли я собираюсь гасить стрелку. То же самое с указателем на базу: если самик ближе, скажем, 10 метров, то указатель гасится.

… блин, всё никак не могу придумать, как половчее циферки из ASCII в 32-битные целые переводить, да чтоб код был покомпактнее, да чтоб не завязываться на фиксированное количество знакомест, а то разные GPS приемники разное количество точек после запятой выдают. Кстати, посчитал, 4 разрядов после запятой достаточно, 5-й, выдаваемый напромер u-bloxами отброшу. Одна десятитысячная доля минуты в широте дает 18 см по земле, куда еще точнее, когда сам GPS приемник точность плюс-минус 2-3 метра выдает ? 😃

smalltim

Dikoy:

Смотрю на Ваши данные. Блин, если GPS приемник вздумает произвольно из 2D в 3D и обратно переключаться в полете, в зависимости от расположения спутников, то показания широны-долготы будут скакать, и судя по Вашим данным, сильно, на 500 метров туда-сюда. Надо будет запоминать базовые координаты в режиме 2D и в 3D, и в зависимости от текущего режима приемника, сравнивать текущие координаты с 2D или c 3D координатами.