Motorcycle rental businesses often operate on trust β but in reality, they have no way to verify what happens after a vehicle leaves.
During my research, I found real cases where rental owners lost multiple motorcycles due to fraud, late returns, and lack of monitoring systems. Most operations still rely on manual tracking and human memory, which creates serious security and operational risks.
This led me to a key question:
What if a rental system could not only monitor vehicles β but actively protect them in real time?
- Type: Independent Final Thesis
- Field: Computer Engineering / Internet of Things
- Role: IoT System Developer
- Institution: State Polytechnic of Sriwijaya
- Validation: Field-tested with Rental Motor Palembang and published in JATI Journal
As the individual developer of this project, I was responsible for designing and implementing the end-to-end IoT system, including the Laravel dashboard, GPS data processing, polygon geofencing logic, Arduino-based hardware integration, relay control, buzzer warning system, and Telegram notification flow.
I also conducted field testing with a motorcycle rental business to validate GPS accuracy, hardware reliability, and real-world usability.
Instead of building a basic tracking system, I focused on three key principles:
Most systems use circular geofencing (radius-based), which is inaccurate for real-world city boundaries.
β‘οΈ I implemented polygon geofencing using the Ray Casting Algorithm, allowing the system to follow actual administrative borders.
Most solutions only provide information.
β‘οΈ I designed a system that acts automatically:
- Cuts off engine when rules are violated
- Sends alerts without human intervention
Instead of stopping at simulation:
β‘οΈ I tested the system with an actual rental business to ensure:
- Hardware durability
- Network reliability
- Practical usability
An end-to-end IoT system designed to solve real-world security and operational challenges in motorcycle rentals by combining real-time tracking, polygon geofencing, automated alerts, and remote vehicle control.
- π Live Tracking: Real-time geospatial monitoring using Ublox NEO-6M.
- π‘οΈ Polygon Geofencing: Advanced boundary detection using the Ray Casting Algorithm for precise administrative-level accuracy.
- π Remote Kill-Switch: Automated engine immobilization via Relay modules when the vehicle exits the Palembang geofence or rental time expires.
- π Smart Alarm System: Built-in buzzer/speaker that automatically triggers when the vehicle exits the Palembang area or when the rental time is about to expire, providing immediate on-vehicle warning.
- π€ Telegram Bot Integration: Instant push notifications for rental expiration and geofence exit alerts.
- π Admin Control Center: A centralized Laravel-based dashboard for managing rental operations, including rental time configuration, customer management, and motorcycle fleet registration.
Building on this problem, I explored deeper structural issues in rental operations:
- Real Threat: Recent cases (Jan 2025) showed 20 units stolen by one fraudster, causing ~Rp400M in losses (Humas Polres Bantul, 2025).
- Operational Gap: Manual logging results in zero real-time visibility, leading to delayed returns and untraceable theft.
Standard circular geofencing is imprecise for urban use. My research focuses on strict, administrative-based boundaries to provide the high-level security that rental businesses actually require.
- Precision Logic: Used Polygon Geofencing (Ray Casting Algorithm) to follow the exact administrative borders of Palembang Cityβfar more accurate than standard radii.
- Proactive Intervention: Integrated a Remote Kill-Switch (Relay). The system doesn't just monitor; it automatically immobilizes the engine if a boundary breach or time expiration occurs.
- Automated Ecosystem: Integrated Laravel, APIs, and Telegram to replace manual workflows with a seamless, real-time alert and control system.
- Accuracy: Proven GPS deviation of only 16.15 meters.
- Efficiency: Reduced the need for continuous manual monitoring by automating geofence alerts, rental-time warnings, and engine immobilization triggers.
This system was field-tested in collaboration with Rental Motor Palembang founded by Ihsan Fikri, a local motorcycle rental business.
- Field Test Goal: To ensure hardware durability and GPRS connectivity reliability in high-mobility urban scenarios.
- Result: Successful integration and real-time intervention capabilities during active rental periods.
The methodology and technical implementation of this project have been peer-reviewed and published:
- Title: "Rancang Bangun Sistem Monitoring dan Kontrol Jarak Jauh pada Rental Motor Berbasis IoT dengan Geofencing"
- Journal: JATI : Jurnal Mahasiswa Teknik Informatika
- Status: Published (2025)
- Publication Link: JATI Journal Article
| Category | Tools & Technologies |
|---|---|
| Hardware | Arduino Mega 2560, SIM7000G (LTE/GSM), Ublox NEO-6M, Relay, Buzzer |
| Backend | Laravel (PHP), MySQL |
| Geospatial | QGIS, Geopandas (Python), Ray Casting Algorithm |
| Frontend | Bootstrap 5, JavaScript, Leaflet.js (Maps) |
git clone https://github.com/achmaddoli/Motorcycle-Rental-Monitoring-System.git
cd Motorcycle-Rental-Monitoring-Systemcomposer install
npm installcp .env.example .env
php artisan key:generateCreate a new MySQL database, for example:
db_rental_motorUpdate your .env file:
DB_DATABASE=db_rental_motor
DB_USERNAME=root
DB_PASSWORD=If you provide an SQL file:
Import the provided .sql file into MySQLOr if using migrations:
php artisan migratephp artisan serve
npm run dev- Arduino Mega 2560
- SIM7000G
- Ublox NEO-6M
- Relay module
- Buzzer
- Li-Po Battery
- UBEC
Open the Arduino IDE, then upload the firmware source code which is Microcontroller Program.ino.
Make sure the required Arduino libraries are installed:
- TinyGPSPlus
- TinyGSM
- ArduinoHttpClient
Before uploading, adjust the following inside the Arduino code:
- GSM/APN provider configuration
- Laravel API endpoint URL
- Vehicle ID or device ID
- Relay and buzzer pin definitions
Example:
const char server[] = "your-domain.com";
const char resource[] = "/api/location/update";
String vehicle_id = "MTR001";Create a bot using @BotFather, then add the token into your Laravel .env file:
TELEGRAM_BOT_TOKEN=your_bot_token_hereAlso make sure each customer/user record includes a valid Telegram chat ID.
-
Turn on the Laravel server and database
-
Power the Arduino Mega device
-
Arduino reads GPS coordinates from Ublox NEO-6M
-
SIM7000G sends location data to Laravel API
-
Laravel checks:
- geofence status (inside/outside Palembang)
- rental time status
-
Laravel sends response back to Arduino
-
Arduino triggers:
- relay for engine cut-off
- buzzer for warning
-
Laravel sends Telegram notifications when needed
- This project is an integrated IoT + Web system, so both the Laravel backend and Arduino hardware must be configured correctly.
- The website alone does not represent the full system.
The management system features 6 core modules: Authentication, Real-time Dashboard, Live Monitoring, Rental Logs, User Management, and Vehicle Fleet Data.
| π Login Page | π Main Dashboard | π‘ Live Monitoring |
|---|---|---|
![]() |
![]() |
![]() |
| ποΈ Vehicle Fleet | π₯ User Management | π Rental Records |
![]() |
![]() |
![]() |
| Security & Duration Alerts |
|---|
![]() |
| Automated alerts for geofence breaches & rental duration warnings |
Click the thumbnails below to watch the system in action.
Simulation Focus: Demonstrates real-world hardware response: buzzer activation and automatic engine cut-off when the vehicle exits the Palembang geofence.
System Focus: Showcases the complete workflow across 6 modules: Login, Dashboard, Monitoring, Rental, User, and Vehicle Management.
- Challenge: During early testing, the Ublox NEO-6M module experienced GPS data drifting, where coordinates jumped significantly even when the vehicle was stationary, leading to false geofence triggers.
- Solution: I implemented a moving average filter and data-validation logic in the firmware. By filtering out outlier coordinates that exceeded logical speed thresholds, I improved GPS reliability and achieved a field-validated average deviation of 16.15 meters.
Building this "End-to-End" system sharpened my skills in systems thinking. I learned to bridge the gap between physical hardware and cloud-based software, while managing the complexities of real-time geospatial data processing. Beyond technical skills, I learned how to communicate technical limitations to non-technical stakeholders (the rental owners) and adapt the system based on their real-world feedback.










