Autorska aplikacja internetowa opracowana w ramach pracy inżynierskiej.
O projekcie • Funkcjonalności • Technologie • Instalacja • Licencja
Aplikacja wykorzystuje usługi Google Maps JavaScript API, część funkcjonalności jest zależna od dostępności tych usług.
SystemLokalizacji to aplikacja internetowa oparta na Laravel 11 stanowiąca część autorskiego systemu lokalizacji pojazdów, opracowanego w ramach pracy inżynierskiej:
„System lokalizacji pojazdów bazujący na platformie Arduino i technologii Laravel”
Celem projektu było zaprojektowanie i wytworzenie systemu umożliwiającego monitorowanie lokalizacji pojazdów poprzez zbieranie danych geolokalizacyjnych z lokalizatora oraz prezentowanie w aplikacji.
Projekt składa się z dwóch głównych elementów:
- aplikacji internetowej opartej na frameworku Laravel,
- lokalizatora pojazdu opartego na platformie Arduino Nano Every, modułach GPS i GSM.
Aplikacja odpowiada za odbieranie, walidację i archiwizację danych geolokalizacyjnych, zarządzanie pojazdami oraz wizualizację ich lokalizacji na mapach.
Do obsługi map wykorzystano Google Maps JavaScript API wraz z dodatkowymi usługami:
- Google Maps JavaScript API,
- Drawing Library,
- Reverse Geocoding.
Lokalizator pozyskuje współrzędne GPS i przesyła je do aplikacji internetowej za pośrednictwem sieci GSM/GPRS.
Kod lokalizatora Arduino jest dostępny w osobnym repozytorium:
Repozytorium lokalizatora Arduino Nano Every
System posiada mechanizm rejestracji i uwierzytelniania użytkowników.
Posiadanie konta jest wymagane do korzystania z systemu.
Zalogowani użytkownicy mogą między innymi:
- zarządzać własnym kontem,
- zarządzać pojazdami,
- definiować obszary startowe,
- przeglądać dane lokalizacyjne,
- sprawdzać aktualne położenie pojazdów,
- przeglądać zapisane trasy,
- otrzymywać powiadomienia dotyczące położenia pojazdów.
Mechanizmy uwierzytelniania i zarządzania kontami zostały zrealizowane z wykorzystaniem Laravel Jetstream.
Aplikacja umożliwia wyświetlanie aktualnego położenia pojazdów na interaktywnej mapie.
Dane geolokalizacyjne są pobierane z lokalizatora i zapisywane w bazie danych. Użytkownik może sprawdzić najnowszą dostępną lokalizację pojazdu oraz związane z nią informacje.
Zalogowany użytkownik może:
- dodawać pojazdy,
- edytować dane pojazdów,
- usuwać pojazdy,
- przeglądać listę swoich pojazdów,
- wyszukiwać pojazdy,
- aktywować lub dezaktywować odbieranie danych,
- konfigurować ustawienia powiadomień.
W aplikacji wydzielono również moduły zarządzania danymi historycznymi, obszarem startowym oraz mapą danych.
Dla każdego pojazdu można zdefiniować obszar startowy na mapie.
Obszar może być określony przy pomocy obiektów geometrycznych. System wykorzystuje następnie metodę Ray Casting do sprawdzania, czy aktualna lokalizacja pojazdu znajduje się wewnątrz zdefiniowanego obszaru.
Pozwala to na automatyczne wykrywanie opuszczenia obszaru oraz generowanie powiadomienia email.
System archiwizuje dane geolokalizacyjne otrzymywane z lokalizatorów.
Użytkownik może:
- wyszukiwać i filtrować dane,
- sprawdzać szczegółowe informacje dotyczące wybranego punktu na mapie.
System umożliwia automatyczne grupowanie kolejnych danych geolokalizacyjnych w trasy.
Użytkownik może:
- przeglądać zapisane trasy,
- wyświetlać trasę na mapie,
- analizować poszczególne punkty trasy,
- obliczać długość przebytej trasy.
Do obliczania odległości pomiędzy punktami wykorzystano formułę Haversine. W aplikacji służy ona do wyznaczania długości tras pokonywanych przez pojazdy.
System może wysyłać powiadomienia email dotyczące położenia pojazdu.
Powiadomienie może zostać wygenerowane w szczególności w przypadku wykrycia opuszczenia zdefiniowanego obszaru startowego.
Aplikacja udostępnia interfejs POST API, przeznaczony do odbierania danych przesyłanych przez lokalizatory pojazdów.
Lokalizator przygotowuje dane w formacie JSON, a następnie przesyła je za pomocą żądania HTTP POST. Aplikacja sprawdza poprawność danych, identyfikuje pojazd oraz zapisuje dane geolokalizacyjne w bazie.
Przykładowa struktura przesyłanych danych:
{
"sim_id": "123456789",
"battery": 85,
"signal": 15,
"latitude": 52.4064,
"longitude": 16.9252
}Uwaga: struktura danych powinna odpowiadać implementacji znajdującej się w repozytorium lokalizatora Arduino.
Aplikacja internetowa współpracuje z fizycznym lokalizatorem pojazdu opracowanym na platformie Arduino Nano Every.
Jego głównym zadaniem jest:
- pobranie aktualnych współrzędnych z modułu GPS,
- przygotowanie danych w formacie JSON,
- przesłanie danych do aplikacji internetowej,
Lokalizator został oparty na module GPS NEO6MV2 oraz module GSM/GPRS SIM800L. Wykorzystano również komunikację UART, bibliotekę SoftwareSerial, TinyGPSPlus oraz wyświetlacz OLED wykorzystujący I²C.
Fizyczny lokalizator
Kod źródłowy programu mikrokontrolera znajduje się w osobnym repozytorium:
Repozytorium lokalizatora Arduino Nano Every
| Technologia | Wersja |
|---|---|
| PHP | 8.3.12 |
| Laravel | 11 |
| Laravel Jetstream | 5.2 |
| Filament | 3 |
| Livewire | 3 |
| Alpine.js | 3 |
| TailwindCSS | 3.4.13 |
| Vite | 5.0 |
| Google Maps JavaScript API | - |
| Google Maps Drawing Library | - |
| Google Maps Reverse Geocoding | - |
| SMTP | - |
Do uruchomienia aplikacji wymagane są między innymi:
- PHP 8.2,
- Composer,
- Node.js,
- npm,
- SQLite lub inny kompatybilny silnik bazy danych,
- serwer SMTP,
- serwer WWW obsługujący PHP,
- klucz Google Maps JavaScript API.
git clone https://github.com/DominikBut/SystemLokalizacji.git
cd SystemLokalizacjicomposer installnpm installUtwórz plik .env na podstawie:
cp .env.example .envNastępnie wygeneruj klucz aplikacji:
php artisan key:generateSkonfiguruj połączenie z bazą MariaDB w pliku .env.
Następnie wykonaj migracje:
php artisan migrateDo wysyłania wiadomości można wykorzystać dowolny serwer SMTP obsługiwany przez dostawcę poczty.
Konfigurację należy przeprowadzić w pliku .env.
**Aplikacja wykorzystuje Google Maps JavaScript API.
Do uruchomienia funkcji mapowych wymagany jest własny klucz API.
- Przejdź do Google Maps Platform.
- Zaloguj się za pomocą konta Google.
- Utwórz nowy projekt Google Cloud lub wybierz istniejący projekt.
- Skonfiguruj konto rozliczeniowe zgodnie z wymaganiami Google Maps Platform.
- Włącz Maps JavaScript API dla wybranego projektu.
- Przejdź do sekcji Credentials.
- Wybierz Create credentials → API key.
- Skopiuj wygenerowany klucz API.
Google zaleca ograniczenie klucza API do określonych stron internetowych oraz ograniczenie listy API, z których klucz może korzystać.
Pozyskany klucz należy wkleić w pliku .env pod zmienną GOOGLE_MAPS_API_KEY w miejsce TWÓJ_NOWY_KLUCZ
npm run devphp artisan serveAplikacja będzie dostępna lokalnie pod adresem:
http://127.0.0.1:8000
System został przetestowany w warunkach rzeczywistych poprzez przejazd pojazdem wyposażonym w wykonany lokalizator.
W przeprowadzonych testach lokalizator przesyłał dane średnio co około 3 minuty, a dokładność lokalizatora oszacowano na około 2,5 m.
Projekt wykorzystuje moduł GPS NEO6MV2, którego dokładność może powodować rozbieżności pomiędzy zarejestrowaną lokalizacją a rzeczywistym położeniem pojazdu. Problemy z uzyskaniem dokładnych współrzędnych mogą występować szczególnie w gęstej zabudowie miejskiej oraz przy niekorzystnych warunkach.
Drugim ograniczeniem jest wykorzystanie modułu SIM800L działającego w sieci 2G. Rozwój i stopniowe wycofywanie starszych sieci komórkowych może w przyszłości wymagać zastosowania modułu obsługującego nowsze standardy komunikacji.
Aplikacja wykorzystuje usługi Google Maps, część funkcjonalności jest zależna od dostępności tych usług.
Kod źródłowy projektu jest udostępniany na licencji MIT.
Wymagane jest zachowanie informacji o prawach autorskich oraz treści licencji.
Copyright © 2025 Dominik But
Licencja projektu nie obejmuje automatycznie zewnętrznych bibliotek, frameworków, usług Google Maps, dokumentacji ani innych materiałów należących do osób trzecich. Ich wykorzystanie podlega odpowiednim, odrębnym warunkom licencyjnym.
Projekt został zrealizowany z wykorzystaniem otwartego ekosystemu PHP i Laravel oraz bibliotek i narzędzi Open Source.
Szczególne znaczenie dla projektu miały:
- Laravel,
- Livewire,
- Filament,
- Jetstream,
- Alpine.js,
- Tailwind CSS,
- Google Maps JavaScript API.
SystemLokalizacji
System lokalizacji pojazdów bazujący na platformie Arduino i technologii Laravel








