RisalDash RisalDash

Project · GPS · No cloud

Build an ESP32 / ESP8266 GPS Tracker with a self-hosted web dashboard

A NEO-6M and a $3 microcontroller serve a live map, home geofence, GPX track export and OTA updates — straight from the board. No cloud, no app, no subscription.

ESP32 GPS trackerESP8266NEO-6MGeofenceGPX exportOTA
RisalDash GPS Tracker dashboard — full-width live map with an orange geofence circle, speed gauge, satellite count, altitude chart, distance-to-home and track export
The RisalDash GPS Tracker dashboard — served by the ESP itself, live over WebSocket.

Most DIY GPS trackers push your location to someone else's cloud. This one doesn't. An ESP32 or ESP8266 and a $3 NEO-6M module serve a full web dashboard straight from the board — live map, speed, satellites, a home geofence with alarm, and GPX / CSV track export you can open in Strava, OsmAnd or Google Earth. No account, no app, no monthly fee.

It's built with RisalDash, an open-source Arduino library that turns a handful of dash.metric(...) / dash.map(...) calls into a responsive, live dashboard over WebSocket.

What it does

The hardware

Wiring (ESP8266): NEO-6M TX → D5, RX → D6, VCC → 3V3, GND → GND; vibration motor on D1. A bare vibration motor draws ~70–100 mA and can't be driven from a GPIO (~12 mA) directly — put a transistor between the pin and the motor, with a flyback diode.

The code

The whole dashboard is declarative. This is essentially the entire UI:

#include <RisalDash.h>
RisalUI dash("GPS Tracker");

dash.map("Track", &lat, &lon).geofence(&homeLat, &homeLon, &fenceRadius);
dash.gauge("Speed", &speedKmh, 0, 40, "km/h");
dash.metric("Satellites", &sats);
dash.chart("Altitude", &altM, "m");
dash.link("History", "Download tracks", "/tracks");
dash.enableOTA();
dash.begin();          // captive portal, then joins your Wi-Fi

Feed the variables from TinyGPSPlus in loop(), and the map, gauges and chart update live in every open browser. Custom endpoints (the track list, CSV download, streaming GPX) hang off dash.server() on the same port.

Why no cloud matters

A tracker that phones home is a privacy liability and a subscription waiting to happen. Serving the dashboard from the device keeps your position on your LAN, keeps the tracker working when the internet is down, and leaves nothing to pay for or shut down. Away from home Wi-Fi it logs to flash; back on your network it auto-reconnects and you pull the day's GPX.

Complete, build-tested source for ESP32 & ESP8266.