четверг, 3 января 2013 г.

GPS u-Blox CN-06

Среди деталей, которые я покупал для квадрокоптера, был GPS-модуль u-Blox CN-06. Его я покупал впрок, и выбирал руководствуясь исключительно ценой (27$). С момента покупки он лежал без дела, и вот наконец дошли до него руки.
Судя по надписям (RxD и TxD) -  интерфейс у него UART. Потому взял я преобразователь USB-UART на cp2102 (кстати, эта штука с доставкой стоит дешевле раза в 2, чем у нас все детали из которых она состоит), и подключил к компьютеру. Соединился на скорости 9600:

$ screen /dev/tty.SLAB_USBtoUART 9600
$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
$GPTXT,01,01,02,HW  UBX-G60xx  00040007 FF7FFFFFp*53
$GPTXT,01,01,02,ROM CORE 7.03 (45969) Mar 17 2011 16:18:34*59
$GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20
$GPTXT,01,01,02,ANTSTATUS=DONTKNOW*33
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,1,1,00*79
$GPGLL,,,,,,V,N*64
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,3,1,09,01,,,13,02,,,20,06,,,19,07,,,13*7A
$GPGSV,3,2,09,08,,,19,10,,,23,11,,,24,13,,,09*7C
$GPGSV,3,3,09,15,,,18*7D
$GPGLL,,,,,,V,N*64
$GPRMC,,V,,,,,,,,,,N*53
$GPVTG,,,,,,,,,N*30
$GPGGA,,,,,,0,00,99.99,,,,,,*48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30
$GPGSV,3,1,11,04,,,13,08,,,20,09,,,11,10,,,12*7C
$GPGSV,3,2,11,13,,,14,14,,,20,15,,,12,21,,,15*78
$GPGSV,3,3,11,22,,,11,24,,,23,25,,,26*7D
$GPGLL,,,,,,V,N*64

Видимо, где-то здесь должны быть GPS-координаты. Начал искать документацию. На сам модуль CN-06 datasheet не нашелся, зато нашлась документация на саму сборку blox NEO-6M и на протокол обмена, лог которого я получил ранее (в принципе этого достаточно, чтобы написать программу определения координат).
Дальше - интересней. На сайте какого-то японца я увидел скриншоты некой программы, которая умеет общаться с этим модулем. Полазив по сайту производителя NEO-6M я нашел чудную программу u-center GPS, которую правда пришлось устанавливать на виртуальной машине под WinXP (так как версий для OSX или Linux не оказалось). После указания порта, к которому подключен GPS, программа сразу же начала работать, и показывать какие-то графики доступности спутников, их положение на карте, мировое время и еще кучу всего. После нескольких минут работы GPS-модуль сориентировался, и начал выдавать координаты.


Программа позволяет в реальном режиме смотреть данные, которые поступают от модуля, и их интерпретацию в удобочитаемом виде. Также можно подключить плагин Google Earth и смотреть свою позицию на карте Гугла. Вот, в принципе, все необходимое для того, чтоб начать писать библиотеку для этого модуля.


4 комментария:

  1. я не оставил своих данных для связи... если не трудно ответить giv1@yandex.ru , спасибо в заранее за ответ

    ОтветитьУдалить
  2. а вопрос был такой... при работе приёмника находящегося на одном месте, координаты местонахождения посекундно меняются таким образом что создаётся такое впечатление что это место постоянно передвигается, удаление составляет до 500 метров, при реализации функции "возврат домой" это довольно большой разброс... возможно ли при помощи u-center или другими средствами настроить CN-06 таким образом что бы место нахождения приёмника было более точно?

    ОтветитьУдалить
  3. Скорее всего нет. Во всяком случае, мне такие способы неизвестны. Похоже, что такой разброс параметров - это ограничения гражданских GPS + аппаратные ограничения данной модели. Для более точных координат нужно использовать чип, который работает в двух системах - GPS + Глонасс, да и то - там точность будет порядка 3-5 метров. А большей точности гражданские GPS пока что не дадут, потому что тут нужно использовать специальные алгоритмы шифрования для получения дополнительных данных со спутников, плюс специальные алгоритмы определения расстояния например по сдвигу фаз сигнала, а не только по времени задержки. Ну, и насколько мне известно, в сигнал от GPS специально добавляется помеха для понижения точности, которую гражданская аппаратура отфильтровать не может.

    ОтветитьУдалить
  4. А gpsd его не поддерживает?

    ОтветитьУдалить