Jednou z možností zjišťování aktuální pozice je systém GPS – všeobecně známé řešení, využívané v celé řadě aplikací, zejména pak v případě navigací pro automobily, cyklisty nebo také pěší turisty. Když pak chceme realizovat něco vlastního, nemusíme hned kupovat hotovou navigaci nebo mobil s integrovanou GPS. Stačí sáhnout po výrazně levnějším modulu GPS L30 od společnosti Quectel. Díky firmě SOS electronic, která distribuuje moduly společnosti Quectel, jsem se dostal k celému vývojovému kitu pro GPS modul a měl tak možnost ověřit jeho chování a také předpoklady pro praktické využití.
Díky firmě SOS electronic, která distribuuje moduly společnosti Quectel, jsem se dostal k celému vývojovému kitu pro GPS modul a měl tak možnost ověřit jeho chování a také předpoklady pro praktické využití
Jednou z hlavních výhod vývojového kitu (viz obr. 1) se stává nejen jeho snadná implementace, ale také skutečnost, že samotný modul GPS L30 je již napájen na desce. Modul lze totiž zakoupit pouze v provedení SMD s pájecími ploškami zespod, takže je jeho osazování v běžných amatérských podmínkách poněkud komplikovanější. Vývojový kit samozřejmě nabízí i další výhody, např. vyvedené konektory pro data, anténu a napájení nebo integrovaný převodník z UARTu na RS232.
Obr. 1: Vývojový kit pro GPS modul L30
Dalším kladem je balení, obsahující kromě vývojového kitu i spoustu doplňků (viz obr. 2), které by bylo nutné za jiných okolností dokoupit. V balení tedy nalezneme:
-
Vývojový kit
-
Napájecí adaptér (5 V, 2 A)
-
Anténu GPS s kabelem
-
Převodník z USB na RS232
-
CD s ovladači pro převodník
Obr. 2: Obsah balení
Přenos dat
Nyní se dostáváme k přenosu dat. Než ale budeme přijímat data, musíme kit správně připojit k PC nebo mikrokontroléru. Pro ukázku využijeme rozhraní UART, které je v kitu převedeno přímo na RS232. Nové PC nebo notebooky bohužel RS232 postrádají a proto v balení nalezneme převodník na USB. V případě, že budeme připojovat kit k mikrokontroléru, je potřeba sestavit převodník RS232-UART. Můžeme přitom využít IO MAX232CPE.
Nejprve je vhodné vyzkoušet komunikaci pomocí PC, takže využijeme USB převodník a připojíme celý kit k PC. Zároveň je nutné, aby byl v tu chvíli připojen i k napájení, příp. je vhodné zapojit i anténu, zvláště v zástavbě, kde bývá signál GPS tlumen zdí. Po připojení USB musíme nainstalovat ovladač, který nalezneme na CD. V případě win7 se ovladač nainstaluje sám. Nyní můžeme kit L30 zapnout vypínačem označeným „S201“ a poté stiskem tlačítka „K302“. V tu chvíli by měla svítit „LED201“ a „LED302“ a blikat „LED303“. „LED301“ začne blikat, až když bude mít GPS signál a získá polohu.
Je-li vše v pořádku, můžeme přejít k softwaru pro příjem dat. Na pokus jsem nejprve použil „Hercules SETUP utility“ (viz obr. 3), ve kterém můžeme přijímat data přes RS232. Na obr. 3 vidíme veškeré nastavení portu. Jen číslo portu (Name) si musíme zjistit v systému. Pak stačí stisknout tlačítko „Open“. Nyní už se přijímají data. Obr. 3 zachycuje přijatá data v době, kdy GPS ještě nemá signál, proto tam vidíme tolik čárek za sebou. Až GPS získá polohu (viz obr. 4), budou mezi čárkami jednotlivá data.
Obr. 3: Testovací software – GPS bez signálu
Obr. 4: Testovací software – GPS se signálem
Datové rámce
Na obr. 3 a obr. 4 si můžeme všimnout jednotlivých datových rámců, které posílá vývojový kit. Každý z těchto rámců začíná znakem „$“ a končí hvězdičkou, za kterou je číslo jako kontrolní součet. Hned za znakem dolaru je několik písmen, která značí, jaké informace rámec obsahuje. Hodnoty jsou pak jako další odděleny čárkami. Jako příklad uvádím tabulku pro datový rámec, který je vidět na obr. 4 jako první.
Takovýchto rámců posílá kit celou řadu; např. kolik satelitů přijímá, jaká jsou jejich čísla nebo další informace o poloze či satelitech. Všechny tyto informace jsou přehledně zpracované v datasheetu.
Praktická ukázka jak vybrat jednotlivá data z rámce
Pro práci s daty jsem vybral dva programovací jazyky: Visual Basic 6 a C++. Basic je vhodný pro práci s porty a C++ je dnes hojně využíváno jak na PC tak i pro mikrokontroléry. Ve svém praktickém příkladu budu počítat s tím, že již máme v proměnné „data“, typu řetězec, přijatá data z portu a už je budeme pouze zpracovávat.
Příklad ve Visual Basicu 6
x = Split(data, ",") Rozdělí podle čárky
If x(0) = "$GPRMC" Then Porovná název rámce
Label1.Caption = x(3) & " " & x(4) Zeměpisná šířka
Label2.Caption = x(5) & " " & x(6) Zeměpisná délka
Text1.Text = x(1) Čas UTC
End If
Příklad v C++
char delims[] = ",";
x = strtok(data, delims); Rozdělí podle čárky
while(x != NULL) {
znaky[i] = x;
x = strtok( NULL, delims );
i++;
}
if(strcmp(znaky[0], '$GPRMC ') == 0){ Porovná název rámce
sprintf(lcd_buffer, "%s",znaky[3]); Zeměpisná šířka
Posli_retezec(lcd_buffer, 1, 0);
}
Download a odkazy: