Maciej Krzanowski, Mateusz Mrozowski, Mateusz Oszajca V rok Koło Techniki Cyfrowej dr inż. Wojciech Mysiński opiekun naukowy GPS module based on Google Maps and LabView environment Rejestrator GPS wykorzystujący Google Maps i środowisko LabView Keywords: GPS technology, GPS receiver, positioning system, STM32F103 microcontroller Słowa kluczowe: technologia GPS, odbiornik GPS, system pozycjonowania, mikrokontroler STM32F103 In this article a new way of GPS position measurment was described. Discussed method includes using Navstar Superstar II receiver, STM32F103 microcontroller, LabView software and application Google Maps. Microcontroller is used for data acquisition delivered from GPS receiver. LabView was applied to generate HTML file with track and location information. Google Maps allows user to generate accurate and efficient maps with actual position of GPS receiver. 1. Technologia GPS W ostatnich latach technologia GPS (akronim od Global Positioning System) staje się jednym z najbardiziej popularnych i sktuecznych systemów pozycjonowania i lokalizacji. Dość powiedzieć, że na chwilę obecną odbiornik sygnału GPS znajduje się w niemal każdym nowoczesnym modelu telefonu komórkowego. System ten, jak wiele innych, użytecznych w życiu codziennym technologii, zawdzięczany jest armii Stanów Zjednoczonych. W połowie lat osiemdziesiątych specjalnie powołany zespół naukowców, wspomagany ogromnymi wojskowymi funduszami, zaprojektował i wprowadził w życie sieć 27 satelitów okołoziemskich, tworząc tym samym zaawansowany system nawigacji. Początkowo służył on głównie do określania pozycji i naprowadzania rakiet na cele militarne. Niedługo potem satelity zostały udostępnione również do użytku cywilnego. Ogólna zasada działania systemu pozycjonowania obiektów za pomocą okołoziemskich satelitów polega na pomiarze ich odległości od rozważanego odbiornika GPS. Metoda ta opiera się zasadniczo na pomiarze czasu potrzebnego sygnałowi radiowemu wysłanemu przez jednego z satelitów na dotarcie do wspomnianego odbiornika. Niemniej jednak, aby móc dokładnie określić pozycję odbiornika potrzebny jest pomiar w odniesieniu do większej ilości satelitów. Problem ten obrazuje rysunek 1.
Rys. 1. Idea wyznaczania pozycji przez system GPS Jeśli odbiornik ustala pozycję w odniesieiu do jednej tylko satelity, jego użytkownik może stwierdzić, że znajduje się w jednym z wielu miejsc na świecie, których odległość od satelity jest taka, jak zmierzono. Ustalanie pozycji w odniesieniu do kolejnych satelitów zawęrza obszar poszukiwań. Przyjęto, że do oszacowania relatywnie dokładnej pozycji obiektu potrzeba pomiaru w stosunku do conajmniej czterech satelitów (trzy z nich określają położenie w przestrzeni, natomiast czwarta - wysokość, na której położony jest obiekt). Aczkolwiek biorąc pod uwagę wszlekie niedoskonałości odbiorników GPS (za przykład podając choćby dużo mniej dokładny pomiar czasu w stosunku do zegarów stosowanych w satelitach) im większa liczba satelitów odniesienia tym lepiej. Omówiona zasada działania, z różnymi usprawnieniami czy modyfikacjami, jest stosowana zasadniczo w większości urządzeń dostępnych na rynku. W niniejszej pracy dokononano udanej próby stworzenia rejestratora GPS, który z wymaganą precyzją będzie dokonywał lokalizacji obiektów. Do wyświetlania informacji o pozyzji w przestrzeni posłuży darmowa aplikacja Google Maps. 2. Skonstruowany rejestrator 2.1. Wykorzystane komponenty Do stworzenia rejestratora wykorzystano dwa podstawowe układy. Mowa o zestawie ewaluacyjnym firmy Propox wyposażonym w mikrokontroler STM32F103 (rysunek 2) oraz o module odbironika sygnału GPS - w niniejszej pracy wykorzystano urządzenie Navstar Superstar II (rysunek 3). Zastosowanie drugiego z wspomnianych modułów jest oczywiste - będzie on służył do pomiaru i przetwarzania sygnałów pochodzących z satelitów okołoziemskich. Z kolei praca mikrokontrolera STM32F103 będzie polegała na akwizycji danych z modułu GPS i komunikacji z komputerem wyposażonym w środowisko LabView. Oprogramowanie firmy National Instrumensts jest potężnym narzędziem, o bardzo wielu - często nietypowych - zastosowaniach. Jednym z nich jest na przykład funkcja, którą LabView spełniało w naszej pracy. Więcej na ten temat napisano w rozdziale 4. Cały system stworzony na potrzeby niniejszego opracowania został przedstawiony na rysunku poniżej.
Rys. 2. Zasada działania rejestratora 2.2. Zasada działania Odbiornik Navstar Superstar II jest urządzeniem, którego zadaniem jest dokonywanie pomiaru z satelitów przesyłających sygnał GPS. Moduł komunikuje się z mikrokontrolerem w celu przesłania swoich danych do dalszej obróbki. Transmisja ta ma charakter szeregowy i została opracowana na bazie ramki komunikacyjnej odbiornika. Jej opis znajduje się w tabeli 1. Opis ramki komunikacyjnej według standardu NMEA Nazwa elementu Przykładowe dane Opis Identyfikator $GPGGA T a b e l a 1 Określa ramkę danych zawierających informacje o położeniu Czas 170834 17:08:34 UTC Szerokość 4124.8963, N 41d 24.8963' N or 41d 24' 54" N Długość 08151.6838, W 81d 51.6838' W or 81d 51' 41" W Dane: - 0 = Nieprawidłowe - 1 = GPS - 2 = DGPS Horizontal Dilution of Precision (HDOP) 1 Dane pochodzą z GPS Ilość satelitów 05 5 Satelitów w zasięgu widzenia 1.5 Względna dokładność pozycji horyzontalnej
Wysokość 280.2, M 280.2 m n.p.m. Wysokość geoidy powyżej elipsoidy generowanej przez WGS-84-34.0, M -34.0 m Czas od ostatniej poprawki DGPS blank Nie było poprawek Stacja odniesienia systemu DGPS blank Nie ma id stacji Suma kontrolna *75 3. Oprogramowanie systemu 3.1. Program dla mikrokontrolera Program mikrokontrolera został napisany w języku C w środowisku Keil uvision4. Dane w odstępach jednosekundowych z odbiornika GPS przesyłane są po interfejsie szeregowym. Następnie poddawane są obróbce. Po uruchomieniu układu mikrokontroler czeka, aż odbiornik wykryje aktualną pozycję. Z całej odbieranej ramki danych wykorzystywane są tylko informacje z aktualną szerokości i długością geograficzną. W sumie 19 bajtów, co pozwala zapisać do dostępnej pamięci około 122 godzin ciągłych pomiarów. Fragment kodu programu odpowiedzialny za tą część został zamieszczony poniżej. while(1){ while((temp[0]=getch())!='$'); for(i=0;i<5;i++) temp[i]=getch(); if(strncmp(temp,"gpgaa",5)) {for(i=0;i<2;i++) temp[i]=getch(); if (!strncmp(temp,",,",2)) {} else{ for(i=0;i<9;i++) temp[0]=getch(); for(i=0;i<9;i++) Tx_Buffer[i]=getch(); for(i=0;i<3;i++) temp[0]=getch(); for(i=9;i<19;i++); Tx_Buffer[i]=getch(); sflash_writebuffer(tx_buffer,flash _WriteAddress+ind*19,19); ind++; }} 3.2. Program w LabView Dane zapisane w zewnętrznej pamięci mikrokontrolera mogą zostać przesłane również za pomocą interfejsu szeregowego do programu LabView. Odpowiednio przygotowana aplikacja odczytuje dane podczas startu urządzenia i odpowiednio je konwertuje. Na końcu generowana jest mapa zawierająca zapisane współrzędne. Plik HTML został utworzony przy użyciu Google Maps API, pozwala ono w łatwy sposób generować mapy. Korzystanie z tak przygotowanych map wymaga połączenia z internetem. Fragment kodu generowanego z przykładowymi danymi został przedstawiony poniżej.
function initialize() { <!--punkt startowy--> var start = new google.maps.latlng(50.087475,19.964237); <!--ustawienia trybu wyœwietlania mapy--> var myoptions = { zoom: 18, center: start, maptypeid: google.maps.maptypeid.roadmap}; var map = new google.maps.map(document.getelementbyid("map_canvas"), myoptions); <!--wstawienie znacznika w punkcie startowym--> var marker = new google.maps.marker({position: start, map: map, title:"start"}); <!-- wspolrzedne zawierajace zapisana trase--> var trasa_wsp = [new google.maps.latlng(50.087793,19.963643), new google.maps.latlng(50.087475,19.964237), new google.maps.latlng(50.083547,19.965612), new google.maps.latlng(50.082379,19.965479), new google.maps.latlng(50.081657,19.962317)]; <!--ustawienia wyswietlania trasy --> var trasa = new google.maps.polyline({ path: trasa_wsp, strokecolor: "#FF0000", strokeopacity: 1.0, strokeweight: 2}); trasa.setmap(map); } 4. Wykonane pomiary Poniżej przedstawiono wyniki działania aplikacji. Zdjęcie prezentuje sposób wyznaczania trasy "z punktu do punktu" na mapie Google Maps, co może być przydatne w planowaniu podróży i stanowić dość interesującą alternatywę dla tradycyjnych modułów GPS. Rys. 3. Zarejestrowana przez urządzenie trasa
5. Podsumowanie Celem opisanego projektu było stworzenie interesującego rozwiązania do pomiaru i lokalizacji pozycji. Oprócz standardowych elementów stosowanych w podobnych aplikacjach (wymienić tu należy przede wszystkim odbiornik GPS Superstar II) zastosowano narzędzia dość nietypowe, takie jak środowisko LabView. Niemniej jednak wynikowy system okazuje się posiadać spore możliwości i perspektywy ewentualnego rozwoju. Wykorzystanie bardzo dokładnych i elastycznych w użytkowaniu map z aplikacji Google Maps powoduje, że skonstruowany rejestrator może być bardzo użyteczny w takich zastosowaniach jak rejestrowanie i planowanie trasy, nawigacja do określonego punktu czy proste pomiary geodezyjne (na przykład wyznaczanie powierzchni terenu). L i t e r a t u r a [1] N a r k i e w i c z J., GPS i inne satelitarne systemy nawigacyjne, Wyd. Komunikacji i Łączności, Warszawa 2007. [2] P a p r o c k i K., Mikrokontrolery STM32 w praktyce, Wyd. BTC, Legionowo 2009. [3] http://code.google.com/intl/pl-pl/apis/maps/documentation/javascript/ [4] http://gpsd.googlecode.com/files/_superstar2.pdf