GPS Tracker using Arduino Nano
In today's world, vehicle theft, missing assets, and personal safety are growing concerns. Traditional tracking systems rely on expensive hardware or dedicated apps. Our GPS Tracker provides a simple, low-cost, SMS-based real-time location tracking system that works anywhere there is a mobile network — no internet, no app, no subscription required.
What Makes This Project Different?
Instead of relying on internet connectivity or expensive GPS subscriptions, this system uses a BN-220 GPS module to capture live coordinates and a SIM800L GSM module to transmit location data directly to your phone via SMS. A simple text message is all it takes to know the exact location of your vehicle, asset, or person — instantly as a Google Maps link.
Why It Matters?
- Vehicle Tracking — Know where your bike or car is at all times
- Personal Safety — Track children, elderly, or hikers in real time
- Asset Monitoring — Attach to valuables and locate them on demand
- No Internet Required — Works purely over GSM mobile network
- Minimal Cost — Built with affordable, easily available components
.png)
.png)
Components Used
| Component | Quantity |
| Arduino Nano (ATmega328P) | 1 |
| Beitian BN-220 GPS Module | 1 |
| SIM800L GSM Module | 1 |
| EASTAR ICR18650 3.7V 2200mAh Li-ion Battery | 1 |
| General Purpose PCB (Zero PCB / Perfboard) | 1 |
| Connecting wire | - |
.png)
How It Works — System Overview
The system follows a simple but effective flow:
Your Phone
↓ SMS ("GETLOC")
SIM800L GSM Module
↓ Serial UART
Arduino Nano (Brain)
↓ Requests coordinates
BN-220 GPS Module (Satellites)
↓ Latitude + Longitude
Arduino Nano formats Google Maps link
↓ Sends SMS back
Your Phone receives location link
Step 1: Gather the Components
Before starting, collect all the hardware components. The three main modules are the Arduino Nano, BN-220 GPS module, and SIM800L GSM module. You will also need an 18650 Li-ion battery to power the SIM800L and jumper wires for connections.
Step 2: Understand the Pin Connections
Before wiring, understand how each module connects to the Arduino Nano. Since the Nano has only one hardware UART (used for USB debugging), we use SoftwareSerial to create two virtual serial ports — one for GPS and one for GSM.
| Module | Arduino Nano Pin | Purpose |
| BN-220 TX | D7 | GPS data IN |
| BN-220 RX | D8 | GPS data OUT |
| SIM800L TX | D2 | GSM data IN |
| SIM800L RX | D3 | GSM data OUT |
| BN-220 VCC | 3.3V | GPS power |
| SIM800L VCC | Battery (+) directly | GSM power |
| All GNDs | Common GND | Ground |
.png)
Step 3: Wire the BN-220 GPS Module
Connect the GPS module first since it is the simpler connection:
- VCC → Arduino 3.3V
- GND → Arduino GND
- TX → Arduino D7
- RX → Arduino D8
GPS module requires an open sky view to lock onto satellites. Keep it near a window or outdoors during testing.
Step 4: Wire the SIM800L GSM Module
Now connect the SIM800L. This is the most critical part due to its high current requirement:
- TX → Arduino D2
- RX → Arduino D3
- GND → Common GND (shared with Arduino and battery negative)
- VCC → Battery (+) directly — never use Arduino's 5V or 3.3V pin
SIM800L draws up to 2A peak current during SMS transmission. Powering it from Arduino's regulator will cause voltage drops and resets. Always connect it directly to the 18650 Li-ion battery.
Step 5: Common Ground — Most Important Step
Connect all GND pins together:
- Arduino GND
- BN-220 GND
- SIM800L GND
- Battery negative (−)
This is the most common cause of failure in beginners' builds. Without a common ground, modules cannot communicate properly.
Step 6: Insert SIM Card
Before powering on, insert an activated Micro SIM card into the SIM800L's card slot:
- SIM card should be active with SMS balance
- PIN lock must be disabled (Settings → Security → SIM lock → OFF on your phone)
- Attach the GSM antenna to SIM800L's IPEX connector — without antenna, module won't register on network
- Check SIM800L LED — slow blink every 3 seconds means network registered successfully
Step 7: Assemble on Perfboard
Mount all modules on a perfboard for a clean and durable build:
- Place Arduino Nano at the top
- Place SIM800L at the top right corner
- Place BN-220 GPS at the bottom left
- Place 18650 battery alongside the board
- Solder all connections using appropriate wire colors (red = VCC, black = GND, green/yellow = data lines)
Step 8: Upload the Code
Connect Arduino Nano to your PC via USB cable and open Arduino IDE:
- Install TinyGPS++ library from Library Manager
- SoftwareSerial is built-in — no installation needed
- Paste the project code
Replace the phone number in the code with your number:
GSM.println("AT+CMGS=\"+91XXXXXXXXXX\"");- Select Board → Arduino Nano
- Select correct COM Port
- Click Upload
Step 9: Power On and Test
After uploading, power the circuit with the battery and wait 30–60 seconds for SIM800L to register on the network:
SIM800L LED Status:
| LED Blink | Meaning |
| Fast blink (every 1 sec) | Searching for network |
| Slow blink (every 3 sec) | Registered, ready |
| LED off | Power issue |
Step 10: Send SMS Commands and Test
From your phone, send an SMS to the SIM card number inserted in SIM800L:
| Command | What Happens |
| GETLOC | Replies with Google Maps link of current location |
| ON | Replies "Bike set to ON" |
| OFF | Replies "Bike set to OFF" |
Expected Output
When you send "GETLOC" from your phone, you receive an SMS reply like:
Clicking this link opens Google Maps showing the exact location of the tracker — no app needed, no internet on the tracker side, just a simple SMS.
Applications
- Vehicle Tracking — Monitor bikes, cars, or school buses in real time
- Smart Helmet — Send rider's location during accidents via SMS
- Personal Safety Device — Track children, elderly people, or hikers
- Logistics & Fleet Management — Monitor truck locations and optimize routes
- Asset & Pet Tracking — Locate valuables or pets using GPS + GSM alerts