Среди деталей, которые я покупал для квадрокоптера, был
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 и смотреть свою позицию на карте Гугла. Вот, в принципе, все необходимое для того, чтоб начать писать библиотеку для этого модуля.