Skip to content

hasithaishere/esp32-gps-oled-wifi-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒ ESP32 GPS Monitor with OLED Display & WiFi Dashboard

Real-time GPS monitoring system with an OLED display and WiFi dashboard, built on ESP32 + NEO-6M GPS.


โœจ Project Story โ€“ From Curiosity to Creation

This project didnโ€™t start with a circuit diagram. It started with a simple question from my 6-year-old while riding the MRT in Malaysia:

"เถญเทเถญเทŠเถญเท, how do all the lights on those tall buildings blink together?"

I didnโ€™t have an answer at the time. Later, I discovered that many skyscraper lights are actually synchronized using GPS signals. Each light gets a precise time signal, so they blink in perfect unison โ€” like the city itself is breathing.

That small discovery lit a spark ๐Ÿ’ก. Why not build something ourselves using GPS?

๐Ÿ“– Read the backstory here: A Little Question, A Big Wonder (LinkedIn)
https://www.linkedin.com/posts/hasithaprabhath_curiosity-parenting-diyprojects-activity-7360663645384593411-XU2c

What began as a childโ€™s innocent curiosity has grown into this project: a real-time GPS monitor that displays data on an OLED screen and serves a live dashboard over WiFi.


๐Ÿš€ Features

  • ๐Ÿ“ก GPS Data Parsing โ€“ UTC time, date, latitude, longitude, altitude, speed, and course.
  • ๐Ÿ›ฐ๏ธ Satellite Tracking โ€“ Satellite count, fix quality, and fix status.
  • ๐Ÿ–ฅ๏ธ OLED Display โ€“ Minimal, glanceable UI for live data.
  • ๐ŸŒ WiFi Web Dashboard โ€“ ESP32 runs as an Access Point with a responsive dashboard.
  • ๐Ÿ”ด LED Fix Indicator โ€“ Slow blink = GPS fix, fast blink = searching.
  • ๐Ÿ”’ Offline Mode โ€“ Works without internet (local WiFi AP mode).

๐Ÿ› ๏ธ Hardware Requirements

  • ESP32 DevKit V1
  • NEO-6M GPS Module (3.3V power only โš ๏ธ)
  • SSD1306 OLED Display (128x64, I2C)
  • USB cable for flashing & power

๐Ÿ”Œ Demo

Demo - Image

Demo - Animation


๐Ÿ”Œ Circuit Diagram

Circuit Diagram


๐ŸŒ WiFi Access Point Details

  • SSID: ESP32_GPS_Monitor
  • Password: gps123456
  • Access URL: http://192.168.4.1

The ESP32 hosts a small web server with three routes:

  • / โ€“ dashboard (HTML + JS auto-refresh every 2s)
  • /data โ€“ returns live JSON (time, date, coordinates, speed, fix info)
  • /style.css โ€“ lightweight styling for the dashboard

๐Ÿ–ฅ๏ธ Web Dashboard

The dashboard shows:

  • Status Bar โ€“ GPS Fix vs No Fix, Satellite count
  • Date & Time โ€“ UTC from GPS
  • Position โ€“ Latitude & Longitude (DMS โ†’ decimal conversion handled in code)
  • Measurements โ€“ Altitude (m), Speed (km/h), Course (deg)
  • Signal Info โ€“ Fix quality, Fix status, Last update timestamp

The OLED updates ~every 500 ms; the browser fetches /data every 2 seconds.


๐Ÿ“‚ Project Files

  • esp32_gps.ino โ†’ Main Arduino sketch (GPS parsing, OLED UI, WiFi server).
  • docs/circuit-diagram.svg

๐Ÿš€ Getting Started

  1. Clone

    git clone https://github.com/hasithaishere/esp32-gps-oled-wifi-monitor.git
    cd esp32-gps-oled-wifi-monitor
  2. Install Arduino libraries

    • Adafruit SSD1306
    • Adafruit GFX
    • WiFi
    • WebServer
  3. Wire up GPS & OLED as per the diagram.

  4. Flash the sketch esp32_gps.ino to your ESP32 (Board: ESP32 Dev Module).

  5. Connect to the ESP32 WiFi AP:

    • SSID: ESP32_GPS_Monitor
    • Password: gps123456
  6. Open http://192.168.4.1 in your browser to view live data.


๐Ÿง  How It Works (Quick Technical Notes)

  • Serial & Parsing: GPS NMEA sentences are read from UART2 and parsed for GGA, RMC, and GSV. Time/position are decoded; speed in knots is converted to km/h.
  • Coordinate Conversion: Raw ddmm.mmmm / dddmm.mmmm are converted to decimal degrees with hemisphere sign handling (S/W negative).
  • Staleness & Fix: If no sentence is received for 5s, the system flags hasValidFix = false. LED blink interval is tied to fix status.
  • OLED UI: Large time header with supporting rows for sats/lat/lon/date for quick glances.
  • Web API: /data returns a compact JSON snapshot for simple integrations or future logging.

๐Ÿ”ฎ Roadmap / Ideas

  • Log GPS tracks to SD card (CSV/GeoJSON)
  • Google Maps integration for live plotting
  • NTP fallback for time when under poor sky view
  • Turn the dashboard into a PWA (installable on phones)
  • Add PPS pin handling for timing experiments

๐Ÿ“œ License

MIT License ยฉ Hasitha Prabhath Gamage


Sometimes, the best engineering projects start with the smallest voices โ€” in this case, a childโ€™s question about blinking lights.

About

Real-time GPS monitoring with ESP32, NEO-6M GPS, OLED display, and a built-in WiFi web dashboard.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages