Dostępność bardzo tanich modułów GPS, umożliwia zbudowanie (przy wykorzystaniu opisanego wcześniej loggera OpenLog) bardzo prostego zestawu do zapisu danych lotu modelu, takich jak wysokość i prędkość. Nie wymaga to programowania Arduino, wystarczy jedynie odpowiednio podłączyć moduły, a następnie prawidłowo odczytać informacje zapisane w postaci pliku tekstowego na karcie MicroSD. Można się oczywiście zastanawiać jaki to ma sens, skoro do nowoczesnych aparatur istnieją dedykowane moduły GPS. Ale to z reguły dość drogie rozwiązania, dostępne tylko w niektórych aparaturach. W opisywanym przypadku nie ma to znaczenia, a dodatkowo jest jeszcze istotny walor edukacyjny – samodzielnie eksperymentując, można sporo się dowiedzieć o tej technologii.

Wykorzystałem bardzo tani obecnie (ok. 5$) moduł, dostępny w wielu wersjach i często nazywany „Arduino GPS”, oparty o popularny (i dość leciwy) układ U-blox 6M. Na jego temat można znaleźć w sieci mnóstwo informacji (oraz aplikacji), dlatego w tym artykule nie będę się zagłębiał w szczegóły (temat jest bardzo obszerny), poruszę tylko najprostsze niezbędne kwestie, związane z moim projektem.

Jedna płytka, to dedykowany odbiornik (można go przekonfigurować przy użyciu specjalistycznych programów) do odczytu i przetwarzania sygnału GPS, a druga część to antena GPS. Anteny w tych zestawach bywają różne (tak jeśli chodzi o wymiary jak i zapewne czułość). Moja nie odbiera sygnału w domu, za to na zewnątrz z odbiorem nie ma żadnego problemu. Część ceramiczna musi być skierowana w stronę nieba. W niektórych rozwiązaniach antena jest przylutowana od spodu płytki procesora (moduł o mniejszych wymiarach, ale „gruby”), ja zdecydowałem się na oddzielne części, kierując się możliwością wymiany anteny, a jak się okazało później była to dobra decyzja również z drugiego względu. Jeśli antena znajduje się nad płytką, to po skierowaniu jej do góry nie widać diod sygnalizacyjnych na płytce procesora.

W związku z tym ja spreparowałem (w sposób pokazany na zdjęciach - kawałek cienkiego laminatu, dwustronna taśma klejąca i koszulka termokurczliwa) własny moduł, w którym te diody są widoczne w położeniu roboczym. Szczególnie chodzi o diodę statusu, która zapala się na zielono, kiedy odbiornik złapie synchronizację z satelitami. Trwa to zwykle ok. 30 sekund po włączeniu zasilania, chyba, że zasilanie zostało odłączone na krótko (np. podczas wymiany pakietu), w stanie kiedy był już zsynchronizowany. Wtedy kolejna synchronizacja następuje po kilku sekundach.

Ponieważ modułu GPS ma taki sam standard napięciowy jak OpenLog (logika 3,3V, zasilanie 5V), to ich podłączenie jest bardzo proste - nie wymaga dopasowania poziomów, a zasilanie można pobrać wprost z odbiornika RC (5V).

Nie mając pewności jak czuła jest antena, na wszelki wypadek przeprowadziłem testy umieszczając moduł zarówno na zewnątrz modelu jak i w środku kadłuba (pod płatem). W obu przypadkach nie było problemu z synchronizacją GPS, wydaje się więc, że styropian oklejony folią nie tłumi sygnału. Zapis danych rozpoczyna się po podłączeniu zasilania. Początkowo nie są one kompletne, jak wspomniałem wcześniej pełen zestaw pojawia się dopiero przy pełnej synchronizacji.

Tak wyglądają dane, zapisane do pliku tekstowego przy domyślnych (fabrycznych) ustawieniach modułu. Na zrzucie zamazane są liczby związane z położeniem geograficznym (długość/szerokość). Jak widać wiersze zaczynają się od komendy ($ i nazwa komendy), po której następują ciągi znaków, oddzielone przecinkami. Dokładne znaczenie tych komend można znaleźć na licznych stronach poświęconych technologii GPS, ja korzystałem tylko z komend $GPRMC (tu jest informacja dot. szybkości w węzłach względem ziemi ) oraz $GPCGA (tu jest informacja o wysokości nad poziomem morza). Sekwencja komend powtarza się co 1 sekundę (domyślne ustawienie), na początku pliku znajduje się także informacja dot. wersji firmware oraz status anteny.

Obróbkę danych przeprowadzam w pliku MS-Excel SGM-GPS.xlsm (pobierz) , za pomocą przygotowanych przeze mnie odpowiednich skryptów. Poniżej szczegółowo wyjaśniam jak się to odbywa. Należy pamiętać, aby po otwarciu pliku zezwolić na wykonywanie makr.

Na początku importujemy do Excela (nowy arkusz, tymczasowy) dane z pliku tekstowego, które następnie skopiujemy do arkusza SGM-GPS.xlsm. W tym celu po uruchomieniu Excela wykonujemy: Plik-->Otwórz (rodzaj pliku -->„Wszystkie pliki (*.*)” i wskazujemy plik tekstowy z danymi (tu LOG00008_T4in.TXT).

Uruchamia się kreator importu tekstu. zaznaczamy typ pliku „rozdzielany”, import od wiersza (tu 5, ale można ok. 30 - uwzględniając, ze pełne dane pojawią się po ok. 30 sek), pochodzenie pliku dowolne (tu Windows), następnie klikamy „Dalej”. Po wybraniu w „Ograniczniki” --> „Przecinek” pojawią się pionowe kreski podziału na kolumny, klikamy „Zakończ”.

Dane z pliku tekstowego pojawiają się w formie tabeli w arkuszu Excela, to jest arkusz tymczasowy i stąd w kolejnym kroku kopiujemy je (zakres 20 kolumn i wiersze do końca danych) do arkusza SGM-GPS.xlsm (otwieramy ten arkusz).

Jeśli w arkuszu SGM-GPS.xlsm znajdowały się wcześniej jakieś dane, to czyścimy je wciskając przycisk „Clear”. Kiedy arkusz jest pusty, wstawiamy (od komórki A2) dane skopiowane wcześniej z tymczasowego pliku Excela. Wciśnięcie przycisku „Calc” uruchamia funkcję przetwarzającą informację.

Po jej zakończeniu podnosi się zakładka „Alt” (jak Altitude) ze stosownym komunikatem. Tu znajdują się już obrobione dane – wysokość i prędkość w funkcji czasu (w formacie Excela). Wysokość (w odróżnieniu od oryginalnych danych) nie jest podawana jako wartości w stosunku do poziomu morza, tylko wartości względne, skorygowane w stosunku do najmniejszej zarejestrowanej wartości. Przy założeniu, że najniższa wartość to model leżący (po włączeniu zasilania) na ziemi, wszystkie pozostałe odczyty to relatywna wartość w stosunku do tego położenia. Z reguły bardziej ciekawe jest to jaką osiągnęliśmy wysokość w stosunku do miejsca startu, niż na jakiej wysokości nad poziomem morza lecimy. Warto również pamiętać, że GPS podaje prędkość względem gruntu, a to jaka jest rzeczywista prędkość modelu względem powietrza, zależy jeszcze od wiatru.

Po przełączeniu się na zakładkę „Wykres” widać dane z zakładki „ALT” w postaci wykresów. W zależności od tego ile danych zarejestrowaliśmy, wykres może nie obejmować całego zakresu, należy więc go ręcznie skorygować, klikając prawym przyciskiem myszki w obszar wykresu i wybierając opcję „zaznacz dane”.

Na zakładce ALT znajdują się jeszcze 3 przyciski „Filtr”. Wciśnięcie wybranego powoduje uruchomienie filtra uśredniającego dla danej kolumny (jest to operacja nieodwracalna). Z moich obserwacji wynika, że dane (szczególnie jeśli chodzi o wysokość) trochę „pływają”, co daje nieraz dość „poszarpany” wykres, nałożenie filtra uśredniającego zauważalnie go wygładza.

Poprzedni wykres pokazywał dane zarejestrowane w modelu samolotu, natomiast tu dla porównania znajdują się dane zarejestrowane na dystansie kilkunastu kilometrów w samochodzie (mniejsze zmiany wysokości, większa prędkość). Moduł znajdował się za przednią szybą i był zasilany z „powerbanku”.

Na zakładce „Info” znajdują się nagłówki tabel, nie należy ich usuwać, można natomiast w ich miejsce podłożyć własne opisy. Ponadto na zakładkach RMC i CGA znajdują się dane związane z położeniem geograficznym (długość/szerokość), można więc byłoby się również pokusić o rysowanie trasy modelu (nałożonej np. na mapy Google). Z tego co się zorientowałem istnieją takie aplikacje, nie zgłębiałem jednak tego tematu, bo w moim przypadku nie ma to specjalnie sensu (latam z reguły w jednym miejscu i w zasięgu wzroku).

Przyznam, że ten projekt sprawił mi frajdę. Sporo czasu trzeba było poświęcić na znalezienie potrzebnych informacji i programowanie, ale tym razem niewiele na część sprzętową. Taki tani moduł, można wrzucić prawie do każdego modelu, ale również użyć w innych zastosowaniach (samochód, rower), kiedy nie chcemy rejestrować danych na smartfonie.

 

Nie masz uprawnień aby komentować.

Publikowane tutaj materiały i zdjęcia stanowią własność ich autorów, nie mogą być kopiowane oraz wykorzystywane bez ich zgody.
Strona niekomercyjna.