obrazek-posta Tytułowy projekt zrealizowałem kilka lat temu w ramach pracy inżynierskiej. Co dokładnie oznacza? W uproszczeniu można powiedzieć, że urządzenie lokalizujące pojazd (samochód, motocykl itd.) oraz aplikację internetową do jego obsługi i odczytywania danych.

ℹ️ UWAGA AUTORA
System był projektowany wiele lat temu, około 2017 roku. Wiele się od tego czasu zmieniło :) System robiłem od podstaw samemu (AI nie było, a szkoda - bardzo by wtedy pomogło), konieczne było robienie wielu rzeczy wręcz na oślep. Być może część z prezentowanych w tym cyklu artykułach technik jest obecnie przestarzała. Był to jednak projekt edukacyjny, więc proszę o wyrozumiałość, gdy zauważycie, że gdzieś jest luka, coś robi się inaczej, a aplikacja nie jest przystosowana na smartfony 😉

Długo szukałem tematu, jaki mógłbym zrealizować jako pracę inżynierską. W końcu padło na pomysł urządzenia do lokalizacji obiektów. W zamyśle miało to być miniaturowe urządzenie które można schować np. pod siodełkiem roweru lub wewnątrz przesyłki kurierskiej, jednak wraz z zagłębianiem się w temat, postanowiłem opracować urządzenie, które można wykorzystać jako lokalizator GPS do samochodu czy motocykla. Wprawdzie na rynku takich urządzeń i rozwiązań mnóstwo, ale czemu nie zrobić tego samemu, tanim kosztem, na własnych zasadach i w oparciu o otwarte platformy?

Trochę teorii

Wiedza o działaniu lokalizacji satelitarnej nie jest może konieczna, by zbudować omawiany tutaj system, przydałoby się jednak wyjaśnić nieco podstaw teoretycznych, na których oparte jest działanie urządzeń wchodzących w skład systemu. Jak działa lokalizacja satelitarna? Choć całość systemu jest bardzo skomplikowana, założenia są bardzo proste. Działanie lokalizacji satelitarnej polega na pomiarach odległości między satelitami, a odbiornikiem. Do wyznaczenia pozycji punktu w trójwymiarowej przestrzeni konieczna jest znajomość odległości między odbiornikiem a minimum czterema satelitami. Jeśli znamy odległość między odbiornikiem a satelitą, możemy określić, że znajduje się gdzieś na powierzchni sfery o promieniu równym zmierzonej odległości. Jeśli znamy odległość między odbiornikiem a dwoma satelitami, możemy już zlokalizować się gdzieś na przecięciu dwóch sfer. Znajomość odległości do trzech satelitów wyznacza punkty przecięcia się sfer w dwóch miejscach, a od czterech jeden punkt, który jest naszą lokalizacją. Wyjaśnia to poniższy rysunek: Alt text

A skąd wiemy jaka jest odległość? Na podstawie różnicy między czasem nadania sygnału przez satelitę (na których są zegary atomowe o wybitnie wysokiej dokładności) a czasem otrzymania go przez odbiornik. Ponieważ prędkość rozchodzenia sygnału jest znana i równa prędkości światła, możliwe jest obliczenie drogi jaką ów sygnał pokonuje.

Obecnie w użyciu są 4 systemy nawigacyjne: amerykański GPS, rosyjski GLONASS, europejskie Galileo oraz chińskie BeiDou. Każdy system lokalizacji satelitarnej można podzielić na trzy segmenty:

  • kosmiczny – jest to zbiór sztucznych satelitów Ziemi nadających informacje nawigacyjne,

  • kontroli – są to stacje nadzorujące i obsługujące działanie segmentu kosmicznego oraz instytucje wspierające, które dostarczają informacji o wzorcowym czasie UTC, parametrach orbit, przygotowują wymianę satelitów itp.,

  • użytkownika – są to odbiorniki GPS.

Więcej informacji o systemach lokalizacji satelitarnej znajdziesz na stronie technologiagps.org.pl

Założenia systemu

Głównym zadaniem urządzenia i całego systemu było stworzenie platformy, dzięki której mamy dostęp do danych lokalizacyjnych pojazdu. Zadania, jakie miał wypełniać system:

  • ustalanie pozycji i prędkości obiektu w danym czasie (automatycznie i na żądanie),

  • trwałe przechowywanie danych lokalizacyjnych, urządzeń oraz użytkowników,

  • wyświetlanie danych lokalizacyjnych na mapie,

  • generowanie raportów.

Minimum danych, jakie miały być zbierane:

  • długość geograficzną,

  • szerokość geograficzną,

  • wysokość nad poziomem morza,

  • prędkość,

  • dokładny czas uzyskania pozycji.

Ostatnia kwestia dotycząca urządzenia to na tyle wysoka energooszczędność, żeby akumulator nie rozładował się po kilku dniach stania auta.

Równie ważna kwestia to aplikacja użytkownika. W momencie kiedy projektowałem i budowałem system, zająłem się tylko aplikacją przeglądarkową na komputery (robienie wtedy aplikacji na telefon byłoby po prostu zbyt ambitne). Aplikację na telefon też w końcu zacząłem robić (już po obronie pracy, tak dla siebie :) ).

W całej tej aplikacji najważniejsze było móc przedstawić trasy na mapie z dowolnego dnia, móc sprawdzić prędkość w danym momencie itd. Oczywiście do tego system logowania, uprawnień do konkretnych pojazdów i kilka mniej istotnych rzeczy, jak zmiana danych użytkownika.

Ostatnia kwestia, to zrobić wszystko po prostu jak najtaniej, prostymi sposobami, otwartoźródłowym oprogramowaniem, ale jednocześnie nie odstawić fuszery, tzn. żeby całość była bezpieczna i ładnie wyglądała i działała.

Koncepcja działania systemu

Działanie systemu opiera się na o trzy zasadnicze elementy, a więc:

  • jednostkę,

  • serwer,

  • użytkownika.

Jednostka składa się z mikrokontrolera oraz komunikujących się z nim modułów:

  • modułu GPS,

  • modułu GSM / GPRS.

Całość w ogólnym ujęciu przedstawia się tak: Alt text

Zadaniem modułu GPS jest oczywiście zbieranie wszelkich danych lokalizacyjnych i “spamowanie” nimi mikrokontrolera. Moduł GSM służy do łączenia się z serwerem i wysyłaniem danych. Na serwerze skrypt odbiera dane przesłane z urządzenia i zapisuje je w bazie. Serwer www pozwala na wizualizację tych danych.

Jeśli chodzi o samo urządzenie, może działać ono w dwóch trybach:

  • monitorowania - gdzie włączone są wszystkie moduły i wysyłane dane w jakimś określonym interwale,

  • uśpienie - GPS jest wyłączony, a moduł GSM uśpiony. Urządzenie czeka tutaj albo na włączenie zapłonu, albo na ręczną aktywację przez SMS-a.

Alt text Do tego dochodzi jeszcze tryb pośredni, w którym po wysłaniu na numer jednostki SMS-a o odpowiedniej treści, moduł aktywuje się tylko na chwilę, zbierze lokalizację, wyśle dane na serwer i dalej “idzie w kimę”.

W kwestii aplikacji internetowej, całość funkcjonalności można przedstawić na takim diagramie przypadków użycia:

Alt text Całość koncepcji systemu można zobrazować na kolejnym schemacie, czyli diagramie wdrożeniowym systemu: Alt text To tyle, jeśli chodzi o teoretyczne kwestie dotyczące systemu. Dobre założenia to połowa sukcesu :). W kolejnym wpisie opiszę od strony technicznej serce projektu, czyli jednostkę lokalizacyjną.

Całość systemu wraz z kodem i schematami można znaleźć na moim Githubie: github.com/mateusznitka/nittrack.

Następną część serii znajdziesz tutaj.