DEV Community

Cover image for I Built a GPS Tracker Without a SIM Card - Here's How
David Thomas
David Thomas

Posted on

I Built a GPS Tracker Without a SIM Card - Here's How

Most GPS tracker tutorials hit you with the same wall: "You'll also need a SIM card, a GSM module, and..." - and suddenly a weekend project turns into a problem.

I wanted to skip all that. Here's what I built instead.
GPS Tracker with Seeed Studio XIAO ESP32-S3

The Setup

Hardware Setup of GPS Tracker

Hardware:

  • Seeed Studio XIAO ESP32-S3
  • Neo-6M GPS Module
  • External patch antenna
  • Breadboard + jumper wires

Software:

  • Arduino IDE
  • GeoLinker library (free cloud platform by Circuit Digest)
  • TinyGPSPlus + WiFiClientSecure

How It Works

The Neo-6M picks up satellite coordinates and feeds them to the ESP32-S3 over UART at 9600 baud. The ESP32 then pushes that data to the GeoLinker cloud over Wi-Fi every 15 seconds - and it shows up live on an interactive map.

Wiring is minimal:

Neo-6M XIAO ESP32-S3
VCC 5V
GND GND
TX GPIO 44 (RX)
RX GPIO 43 (TX)

The Part That Makes It Useful: Geofencing

GPS Tracker Real Time Map Data

This is where it gets practical. You define a home coordinate and a radius (default: 50 m). The firmware runs the Haversine formula continuously to check distance. Cross the boundary? An SMS fires automatically via the Circuit Digest Cloud SMS API with the exact coordinates.

if (dist > 50 && !alertSent) {
  sendSMS(latitude, longitude);
  alertSent = true;
}
if (dist <= 50 && alertSent) alertSent = false;
Enter fullscreen mode Exit fullscreen mode

The alert resets when the device returns inside the boundary - so it'll fire again next time.

Offline Buffering

No Wi-Fi? The ESP32 stores GPS points locally. When the connection comes back, it syncs the buffered data before resuming live uploads. Nothing gets lost.

GeoLinker Setup (Quick)

  1. Register at circuitdigest.cloud
  2. Go to My Account → API Keys and generate a key
  3. Drop it into the firmware — done

Free tier gives you 10,000 data points per key. One request per 10 seconds max.

Real-World Use Cases

  • Vehicle tracking via phone hotspot
  • Asset monitoring (alerts if moved)
  • Pet or child safety with geofence zones
  • Elderly care with boundary alerts

What I'd Improve

  • Add deep sleep between GPS pings for battery operation
  • Support multiple geofences with an array of coordinates
  • Add speed alerts using gps.speed.kmph()

If you've been putting off a GPS project because of the GSM complexity — this stack removes that barrier entirely. Find more esp32 project ideas for your next build

Top comments (0)