Lekce 26 - Arduino a GPS
23.11.2013 17:34Translate to English
Pro dnešní lekci jsem si vybral modul přijímače GPS signálu od firmy SKYLAB typ SKM53. Tento je již integrován na desku s plošnými spoji a je zde i anténa, takže je modul připravený okamžitě k použití. GPS modul komunikuje pomocí seriového rozhraní (RX, TX) takže k jeho zapojení není třeba nějakých složitých postupů.
Já jsem modul použil ve spojení spolu s Arduinem UNO. Napájen je přímo z Arduina z 5V a GND pinu a Rx je zapojen na pin 2 a Tx na pin 3. Záměrně jsem ho nepřipojim na pin 1 a 0, kde již je sériový port, protože si tento port vytvoříme softwarově jinde a to právě na pinu 2 a 3. Odpadne nám tím problém při programování a nutnost odpojovat modul vždy, když do Arduina nahráváme program.
K celému programovaní pro základní fungovaní budeme potřebovat 2 knihovny. A to SoftwareSerial.h a TinyGPS.h. SoftwareSerial využijeme pro vytvoření sériové linky na pinech 2 a 3 a TinyGPS pro samotnou komunikaci s GPS modulem a získávání dat z něho. Nejsem si jist, ale knihovna SoftwareSerial je již součástí knihoven Arduina a stáhneme si pouze knihovnu pro práci s GPS. Na internetu se nalézá mnoho verzí. Mě fungovala až tato a je ke stažení zde.
Jako program pro otestování modulu vybyreme z příkladu knihovny. Tedy File --> Examples --> TinyGPS --> Examples --> simple_test . Tento program otestuje samotnou komunikaci s modulem, pro ty jež nechtějí vybírat z příkladů tak je zde:
Po spuštění SerialMonitoru, by jsme měli vidět výstup na obrazovce takto:
Program vypisuje po zobrazení informací o autorovi knihovny 3 údaje. První je CHARS - udáj o přijatých datech (pokud je číslo 0, zařízení nekomunikuje - zkuste obrátit Tx a Rx), Potom je to SENTENCES - platné informace o platných přijatých údajích modulem GPS (pokud je číslo 0 je to logické protože v budově nemáme signál - neřešíme) a jako poslední je to CSUM ERR - číslo, které by mělo být za každých okolností 0. Takže nami sledovaný a potřebný údaj je pro CHARS vždy nějaké číslo větší než 0 a CSUM ERR by naopak měla vždy být 0. Pokud tyto údaje máte jako na mém obrázku, modul komunikuje s Arduinem správně. Pokud vidíte na CHARS, že přijímáme z modulu data, ale cSUM ERR není nula, zkuste změnit rychlost SoftwareSerial na 9600 nebo jinou uvedenou výrobcem. Můj modul komunikuje právě na rychlosti 9600 a trvalo mi dlouho, než jsem zjistil proč mi to kvůli tomu nefunguje.
V dalším kroku si do Arduina nahrajeme program, který již bude vyhodnocovat data ze samotného modulu. Postup jse stejný, jen rozdíl je v tom, že vybereme jiný příklad a to: File --> Examples --> TinyGPS --> Examples --> test_with_gps_device.
Pokud ovšem budeme testovat modul uvnitř místnosti, signál nebude skoro žádný a přesnou polohu nezískláme. Doporučuji tedy dát modu alespoň za okno i třeba s Arduinem a spojit tento s delším USB kabelem s počítačem.
Kdo má dobré oči z obrázku může vyčíst, že se nám na seriový port vypisují hodnoty a to:
- počet satelitů, HDOP (přesnost - čím menší číslo tím lepší), LAT a LON (údaje o poloze), čas, stáří fixu pozice, nadmořská výška a další hodnoty jako vzdálenost k městu Londýn jakož i kurz ve stupních a světovou stanu, kde se od Vás nachází. RX a Fail jsme si vysvětlili před tímto příkladem.
Já záměrně nerozepisuji kód z předešlého příkladu na ten se podívejte sami protože pouze sloužil k otestování získání polohy z modulu. Nyní se se podíváme na minimum kódu, který je nutný pro komunikaci a zístzkání informace z modulu:
Výstup z programu:
Nejsou to zrovna dva řádky kódu v programu, ale pro minimální funkčnost a pochopení důležité. Já vysvětlím nejprve funkci feedGPS(), ta čeká až přestane modul komunikovat. Kdyby jsme nečekali a například vypisovali údaje na modul LCD, budou se na něho generovat nesmyslné znaky a dále to může způsobovat chyby v programu a jejich funkcích. To by bylo k tomuto a jako další asi ta nejdůležitější funkce, která je
gps.get_position(&lat, &lon); - tato připisuje proměným lat a lon data o pozici ve statisícinách stupnů (pro zobrazení vysledků ve stupních nutno vydělit číslem 100000
samozřejmě knihovna, kterou jsme použili pro modul GPS toho zvládne daleko více než jen toto. Po prozkoumání souboru v knihovně TinyGPS.cpp zjistíme spousty dalších funkcí jako:
void f_get_position(float *latitude, float *longitude, unsigned long *fix_age) - vrací pozici již ve stupních
float f_altitude() - vrací nadmořskou výšku
float f_course() - vrací kurz pohybu
float f_speed_knots() - vrací rychlost v uzlech
float f_speed_mph() - vrací rychlost v mílích/ hod
float f_speed_kmph() - vrací rychlost v km/hod
S těmito informace již dokážeme nějaký hezký program, který využijeme i prakticky. Já jsem si za úkol postavil přístroj s tímto modulem, který má displej z NOKIE5110, ukazuje kde jsem. Má jedno tlačítko, které slouží, když ho podržíme déle jak 5 sekund, k uložení mojí polohy do paměti EEPROM v Arduinu. Poté můžeme i třeba můj "Navigátor" vypnout až poté po zapnutí někde jinde mi ukáže vzdálenost k onomu místu i s kurzem ve stupních.
———
ZpětDiskusní téma: Lekce 26 - Arduino a GPS
Datum | 05.01.2017 |
---|---|
Vložil | Kamil |
Titulek | Přesnost |
pardon kamil.raus@seznam.cz
———
Datum | 05.01.2017 |
---|---|
Vložil | Kamil |
Titulek | Přesnost |
Dobrý den, s jakou odchylkou gps je třeba počítat, uvažuji o stavbě arduino sekačky na trávu.
děkuji za info
———
Datum | 14.05.2017 |
---|---|
Vložil | Radek |
Titulek | Re: Přesnost |
Také by mě zajímalo
———
Datum | 06.02.2015 |
---|---|
Vložil | lukáš |
Titulek | gps |
wé wé wé .aliexpress.com/
———
Datum | 25.04.2014 |
---|---|
Vložil | nedory |
Titulek | GPS + LCD nokia |
Dobrý den,
v závěru píšete o svém projektu GPS+LCD Nokia. Byl by jste ochoten se podělit o kód?
děkuji
———
Datum | 24.08.2014 |
---|---|
Vložil | Admin |
Titulek | Re: GPS + LCD nokia |
Ano zkoušel jsem, vznikly tam nějaké problémy tak jsem toho zanechal. Ale funkční to bylo, nicméně nic vhodného a vyladěného ke zveřejnění.
———
Datum | 29.01.2014 |
---|---|
Vložil | Pavel Hora |
Titulek | Dotaz na modul GPS SKM53 |
Dobrý den,
můžete mi prosím sdělit, kde jste výše uvedený modul koupil?
Předem moc děkuji.
———
Datum | 02.02.2014 |
---|---|
Vložil | Thomas |
Titulek | Re: Dotaz na modul GPS SKM53 |
mám dobrou zkušenost s xxxxxxx (odkaz na komerční stránky smazán adminem), napiště jim na email, objednají vám v podstatě cokoliv. GPS mám od nich za 890 Kč.
———
Datum | 13.11.2016 |
---|---|
Vložil | Honza |
Titulek | Re: Re: Dotaz na modul GPS SKM53 |
Poprosil bych o odkaz, kdyžtak na mail jan.sima.honza@seznam.cz tady to admin maže. Díky
———
Datum | 29.07.2023 |
---|---|
Vložil | xxxxxxx |
Titulek | Re: Re: Dotaz na modul GPS SKM53 |
hmm, tak odkaz na prodejce admin smaže, ale ty spamy ne???
To je tragédie
———