Jedním ze způsobů zjišťování pozice je systém GPS. Systém je všeobecně známý a používaný pro mnoho aplikací. Nejrozšířenější je především navigace pro automobily, cyklisty a pěší turisty, ale jakmile chcete vytvořit vlastní aplikaci, která by měla být závislá na poloze, tak je zbytečné kupovat drahou navigaci nebo mobil s integrovanou GPS. Stačí pouze šáhnout po značně levnějším modulu, který vyrábí Quectel.
Náhodou, díky firmě SOS electronic, která distribuuje moduly firmy Quectel, jsem se dostal k celému vývojovému kitu pro tento GPS modul (Obr. 1) a měl jsem šanci zjistit jeho výhody a nevýhody a popř. využití pro praktické aplikace.
Obr. 1: Vývojový kit pro GPS modul L30.
Jednou z hlavních výhod vývojového kitu je jeho snadná implementace a především to, že modul GPS L30 je už napájen na desce. Modul je totiž možné zakoupit pouze v provedení SMD s pájecími ploškami ve spodu a proto pájení takového modulu není možné v běžných amatérských podmínkách. Samozřejmě vývojový kit 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.
Dalším kladem je balení obsahující kromě vývojového kitu i spoustu doplňků (Obr. 2), které by bylo nutné za jiných okolností dokoupit. V balení tedy najdete:
- Vývojový kit
- Napájecí adaptér (5V, 2A)
- Anténa 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, je třeba správně připojit kit k PC nebo k 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 je v balení 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. Na to je možné 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í a je vhodné připojit i anténu, zvláště v baráku, kde je signál GPS tlumen zdí. Po připojení do USB je nutné nainstalovat ovladač, který je přiložen na CD. V případě win7 se ovladač nainstaluje sám. Dále v případě kitu L30 je potřeba jej 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ž GPS bude mít 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“ (Obr. 3), ve kterém jde přijímat data přes rs232. Na obrázku 3 je vidět veškeré nastavení portu. Jen číslo portu (Name) je nutné si zjistit v systému. Pak stačí stisknout tlačítko „Open“. Nyní už se přijímají data. Obrázek 3 ukazuje přijatá data v době, kdy GPS ještě nemá signál, proto je tam tolik čárek za sebou. V případě, že GPS získá polohu (Obr. 4), pak mezi čárkami jsou jednotlivá data.
Obr. 3: Testovací software – GPS bez signálu.
Obr. 4: Testovací software – GPS se signálem.
Datové rámce
Na obrázcích 3 a 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čí, co rámec nese za informace. Hodnoty jsou pak jako další odděleny čárkami. Jako příklad jsem zde vypracoval tabulku pro datový rámec, který je vidět na obrázku 4 jako první.
Pole | Popis |
$ | Začátek rámce |
GPRMC | Název rámce |
UTC čas | Čas ve formátu „hhmmss.sss“ |
Správnost dat | ‚V‘ – nesprávný ‚A‘ – správný |
Zeměpisná šířka | Zeměpisná šířka ve formátu „ddmm.mmmm“ (d-stupeň, m-minuta) |
N/S | ‚N‘ – sever
‚S‘ – jih |
Zeměpisná délka | Zeměpisná délka ve formátu „dddmm.mmmm“ (d-stupeň, m-minuta) |
E/W | ‚E‘ – východ ‚W‘ – západ |
Rychlost | Rychlost země v uzlech |
COG | Kurz země ve stupních |
Datum | Datum ve formátu „DDMMRR“ |
Magnetic variation | — |
E/W | — |
Mód zjišťování pozice | ‚N‘ – bez opravy
‚A‘ – autonomní GNSS oprava ‚D‘ – diferenciální GNSS oprava |
* | Konec datového rámce |
Kontrolní součet | Kontrolní součet v HEX |
<CR><LF> | Obsahuje každý rámec na konci |
Takovýchto rámců posílá kit spoustu. Např. kolik satelitů přijímá, jaké jsou jejich čísla a další informace o poloze a satelitech. Všechny tyto informace jsou v datasheetu kvalitně zpracované.
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);
}