Skip to content

Repository files navigation

SystemLokalizacji

SystemLokalizacji – strona główna aplikacji

System lokalizacji pojazdów bazujący na platformie Arduino i technologii Laravel

Autorska aplikacja internetowa opracowana w ramach pracy inżynierskiej.

O projekcieFunkcjonalnościTechnologieInstalacjaLicencja

Aplikacja wykorzystuje usługi Google Maps JavaScript API, część funkcjonalności jest zależna od dostępności tych usług.


O projekcie

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


Funkcjonalności

Konta użytkowników

System posiada mechanizm rejestracji i uwierzytelniania użytkowników.

Posiadanie konta jest wymagane do korzystania z systemu.

Strona Główna

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.


Lokalizowanie pojazdów dostepne w zakładce Lokalizuj pojazdy

Lokalizowanie pojazdu

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.


Zarządzanie pojazdami dostępne w modułach zakładki Zarządzaj pojazdami

Zarządzanie pojazdami

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.


Obszar startowy pojazdu

Edycja obszaru startowego

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.


Dane historyczne

Historia danych

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.

Śledzenie tras dostępne w zakładce Sprawdź trasy

Śledzenie tras

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.


Powiadomienia email

Powiadomienie email

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.


API dla lokalizatorów

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.


Lokalizator Arduino

Aplikacja internetowa współpracuje z fizycznym lokalizatorem pojazdu opracowanym na platformie Arduino Nano Every.

Jego głównym zadaniem jest:

  1. pobranie aktualnych współrzędnych z modułu GPS,
  2. przygotowanie danych w formacie JSON,
  3. 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

Zbudowany lokalizator pojazdu

Repozytorium lokalizatora

Kod źródłowy programu mikrokontrolera znajduje się w osobnym repozytorium:

Repozytorium lokalizatora Arduino Nano Every


Technologie

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 -

Instalacja

Wymagania

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.

1. Klonowanie repozytorium

git clone https://github.com/DominikBut/SystemLokalizacji.git
cd SystemLokalizacji

2. Instalacja zależności PHP

composer install

3. Instalacja zależności JavaScript

npm install

4. Konfiguracja środowiska

Utwórz plik .env na podstawie:

cp .env.example .env

Następnie wygeneruj klucz aplikacji:

php artisan key:generate

5. Konfiguracja bazy danych

Skonfiguruj połączenie z bazą MariaDB w pliku .env.

Następnie wykonaj migracje:

php artisan migrate

6. Konfiguracja SMTP

Do wysyłania wiadomości można wykorzystać dowolny serwer SMTP obsługiwany przez dostawcę poczty.

Konfigurację należy przeprowadzić w pliku .env.

7. Konfiguracja Google Maps

**Aplikacja wykorzystuje Google Maps JavaScript API.

Do uruchomienia funkcji mapowych wymagany jest własny klucz API.

Utworzenie klucza API

  1. Przejdź do Google Maps Platform.
  2. Zaloguj się za pomocą konta Google.
  3. Utwórz nowy projekt Google Cloud lub wybierz istniejący projekt.
  4. Skonfiguruj konto rozliczeniowe zgodnie z wymaganiami Google Maps Platform.
  5. Włącz Maps JavaScript API dla wybranego projektu.
  6. Przejdź do sekcji Credentials.
  7. Wybierz Create credentials → API key.
  8. 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ć.

Konfiguracja klucza w aplikacji

Pozyskany klucz należy wkleić w pliku .env pod zmienną GOOGLE_MAPS_API_KEY w miejsce TWÓJ_NOWY_KLUCZ

8. Uruchomienie Vite

npm run dev

9. Uruchomienie aplikacji

php artisan serve

Aplikacja będzie dostępna lokalnie pod adresem:

http://127.0.0.1:8000

Testowanie

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.

Ograniczenia

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.


Licencja

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

About

Engineering Thesis project. A Laravel 11 system using Google Maps JavaScript API for vehicle tracking based on Arduino, GPS and GSM/GPRS communication. The application provides location monitoring, route visualization and location history.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages