GSM-Based Vehicle Tracking System: SIM800L & GPS Arduino
A GSM vehicle tracking system using SIM800L and GPS with Arduino is one of the most practical and satisfying projects an Indian maker can build. Whether you want to track a two-wheeler, monitor a delivery vehicle, or build a low-cost fleet management prototype, this combination of the SIM800L GSM module and the NEO-6M GPS module gives you real-time location data over India’s 2G network — which still has excellent coverage even in semi-urban areas. In this guide, you will get a complete hardware circuit, working Arduino code, and practical tips for using Indian SIM cards with SIM800L.
Components Required
- Arduino Uno or Nano
- SIM800L GSM/GPRS module
- NEO-6M GPS module
- Active GPS ceramic antenna (25×25mm, 28dB)
- 3.7V–4.2V LiPo battery or 3.4–4.4V regulated supply for SIM800L
- 1000µF / 6.3V capacitor (SIM800L power decoupling)
- Indian SIM card with 2G data/SMS plan (Jio does NOT work; use Airtel, Vi, or BSNL prepaid)
- Jumper wires, breadboard or PCB
GPS NEO-6M Satellite Positioning Module for Arduino
Widely used NEO-6M GPS module with UART interface, perfect for vehicle tracking projects. Includes onboard patch antenna.
NEO-6M GPS Module with EPROM
NEO-6M GPS with onboard EPROM for faster cold start — reduces time to first fix (TTFF) significantly on power-up.
SIM800L Module Overview & Indian SIM Compatibility
The SIM800L is a quad-band GSM/GPRS module that supports 850/900/1800/1900MHz. It communicates with Arduino via UART using AT commands and can send SMS, make calls, and send GPRS data packets. It is the go-to choice for IoT tracking projects due to its small size (24×24mm) and low cost.
Critical: SIM Card Compatibility in India
This is the most common issue Indian makers face. The SIM800L operates on 2G (GSM) networks. As of 2024:
- Jio: Does NOT work — Jio shut down its 2G network entirely. Jio SIMs will not register on SIM800L.
- Airtel: Works — Airtel still maintains 2G in most areas. Use an Airtel prepaid SIM. Activate it in a 2G-capable phone first.
- Vodafone-Idea (Vi): Works — Vi has 2G coverage in most cities and rural areas.
- BSNL: Works — Best rural coverage on 2G, ideal for vehicle tracking in remote areas.
SIM800L Power Requirements
The SIM800L requires 3.4V–4.4V DC, NOT 5V. It draws current spikes of up to 2A during GPRS transmission. Use a dedicated LiPo battery or a high-current 3.7V voltage regulator. Never power it from the Arduino’s 3.3V or 5V pins — this is the number one cause of "SIM800L not responding" issues.
NEO-6M GPS Module Overview
The u-blox NEO-6M is a compact GPS receiver with a UART interface (9600 baud default) that outputs NMEA sentences. Key specs:
- 50 channels, -161dBm tracking sensitivity
- Time to First Fix (cold start): ~27 seconds (with clear sky view)
- Horizontal accuracy: 2.5m CEP (with active antenna)
- Operating voltage: 3.3V–5V (most breakout boards have a regulator)
- Update rate: 1Hz default, configurable to 5Hz
25x25x8mm 28dB High Gain Active GPS Antenna for NEO-6M
External active ceramic GPS antenna with 28dB LNA gain — dramatically improves satellite fix in urban Indian environments with tall buildings.
Circuit Diagram & Wiring
Use two separate SoftwareSerial ports on Arduino to communicate with both the SIM800L and NEO-6M simultaneously (Arduino Uno has only one hardware UART, used for USB/debug).
| Module Pin | Arduino Pin | Notes |
|---|---|---|
| SIM800L RX | D2 (TX) | Use 1kΩ+2kΩ voltage divider (5V→3.3V) |
| SIM800L TX | D3 (RX) | Direct connection OK (3.3V TTL readable by Arduino) |
| SIM800L VCC | LiPo 3.7V+ | NOT Arduino 3.3V/5V |
| SIM800L GND | GND (common) | Share GND with Arduino |
| NEO-6M TX | D4 (RX) | GPS UART output |
| NEO-6M RX | D5 (TX) | Optional (for config commands) |
| NEO-6M VCC | 5V | Module has onboard 3.3V regulator |
Arduino Code: GPS Coordinates via SMS
#include <SoftwareSerial.h>
#include <TinyGPS++.h>
SoftwareSerial sim800(2, 3); // SIM800L: RX=D2, TX=D3
SoftwareSerial gpsSerial(4, 5); // NEO-6M: RX=D4, TX=D5
TinyGPSPlus gps;
String phoneNumber = "+91XXXXXXXXXX"; // Your Indian mobile number
void setup() {
Serial.begin(9600);
sim800.begin(9600);
gpsSerial.begin(9600);
delay(3000);
Serial.println("System ready");
sim800.println("AT"); // Test SIM800L
delay(1000);
sim800.println("AT+CMGF=1"); // SMS text mode
delay(500);
}
void sendSMS(float lat, float lng) {
String mapLink = "https://maps.google.com/?q=" + String(lat, 6) + "," + String(lng, 6);
sim800.println("AT+CMGS="" + phoneNumber + """);
delay(500);
sim800.print("Location: " + mapLink);
sim800.write(26); // Ctrl+Z to send
delay(3000);
Serial.println("SMS sent: " + mapLink);
}
void loop() {
// Read GPS data
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
if (gps.location.isUpdated() && gps.location.isValid()) {
float lat = gps.location.lat();
float lng = gps.location.lng();
Serial.print("Lat: "); Serial.print(lat, 6);
Serial.print(" Lng: "); Serial.println(lng, 6);
sendSMS(lat, lng);
delay(60000); // Send location every 60 seconds
}
}
Libraries needed: Install TinyGPS++ by Mikal Hart from the Arduino Library Manager. SoftwareSerial is built into the Arduino IDE.
Google Maps Integration
The SMS sent by the tracker contains a Google Maps link in the format https://maps.google.com/?q=LAT,LNG. When you receive this SMS on your smartphone, tapping the link opens Google Maps at the exact vehicle location. No server or app is needed for this basic setup.
Upgrading to GPRS Tracking (IoT Platform)
For continuous tracking with history, upgrade the code to use SIM800L’s GPRS to POST coordinates to a free IoT platform like:
- ThingSpeak: Free tier, supports up to 8 fields per channel, good for Indian students
- Ubidots: Has a map widget, free tier available
- Cayenne myDevices: Easy dashboard with GPS map out of the box
Adafruit FONA 808 – Mini Cellular GSM + GPS Breakout
All-in-one GSM + GPS module on a single breakout — simplifies wiring for vehicle tracking projects compared to using separate modules.
Power Supply Tips for Vehicles
Deploying this tracker in an actual vehicle introduces power supply challenges that your bench setup never will.
12V Vehicle Battery to Arduino
Use a mini DC-DC buck converter module (LM2596-based) to step down the vehicle’s 12V to 5V for Arduino. Do NOT use a 7805 linear regulator — it will overheat and burn in an enclosed vehicle, especially in Indian summer conditions (cabin temps can exceed 65°C).
SIM800L Power
Power the SIM800L from a dedicated LiPo cell or use a high-current capable LDO/buck converter set to 3.9V. A 1000µF capacitor across the SIM800L power pins is mandatory to handle current spikes during GPRS bursts.
GPS Antenna Placement
Mount the active GPS antenna on the dashboard near the windscreen, or on the roof if you use an external magnetic mount antenna. Avoid placing it inside metal dashboards or under engine bonnets. In sedans, the antenna works well on the rear parcel shelf near the back window.
Ignition-Switched Power
Wire the tracker’s 12V input to the vehicle’s ignition-switched ACC line (not directly to the battery) so it powers on/off with the ignition. This prevents battery drain when the vehicle is parked for extended periods.
15cm 3dBi GSM/GPRS/3G PCB Antenna with IPEX Connector
Compact PCB antenna for SIM800L with IPEX/U.FL connector — improves GSM signal strength inside metal vehicle enclosures.
Frequently Asked Questions
Q: Does Jio SIM work with SIM800L in India?
No. Jio operates exclusively on 4G LTE and VoLTE; it shut down its 2G network. The SIM800L is a 2G module and cannot connect to Jio’s network. Use Airtel, Vodafone-Idea (Vi), or BSNL 2G SIMs instead.
Q: My GPS is not getting a fix indoors. What should I do?
GPS requires line-of-sight to at least 4 satellites — it will not work indoors unless you use an external active antenna placed near a window or outside. For initial testing, take your setup outdoors or place the antenna module near a window with a clear sky view. In Mumbai or Delhi, you should get a fix within 60–90 seconds outdoors.
Q: Why does the SIM800L keep restarting?
This is almost always a power supply problem. The SIM800L pulls up to 2A in short bursts during GPRS. If your power supply cannot deliver this current, the voltage sags and triggers a brownout reset. Use a LiPo battery with a good charge controller, or a dedicated high-current buck converter. Add a 1000µF/6.3V capacitor directly across the module’s VCC and GND pins.
Q: How much does it cost to send SMS for tracking with SIM800L?
Airtel and Vi prepaid SIM cards offer unlimited SMS plans (with per-day FUP). For GPRS-based continuous tracking via ThingSpeak, data consumption is approximately 1–5 MB/day depending on update frequency, costing under ₹10/day on basic data plans.
Q: Can I track multiple vehicles with one SIM800L setup?
Each vehicle needs its own SIM800L + GPS tracker unit. For centralized monitoring, upgrade to GPRS-based tracking where all trackers POST to a shared IoT platform dashboard that shows all vehicle locations on one map.
Build Your Vehicle Tracker Today
Zbotic stocks all the components you need — NEO-6M GPS modules, GSM modules, Arduino boards, and antennas — shipped across India. Start your tracking project today!
Add comment