GNSSpot is an ESP32-based firmware that transforms a GNSS module into a fully networked GPS/NMEA server.
GNSSpot
One ESP32, one u-blox M7N, and your whole LAN gets GPS. GNSSpot reads the NMEA-0183 stream from the module and publishes it twice: fixes as JSON over MQTT, raw sentences over TCP on port 10110. I picked TCP for the raw stream because some nav software wants the bytes untouched, and MQTT for everything else.
What's inside
- ESP32 firmware, PlatformIO.
- u-blox M7N GNSS module and ILI9341 TFT.
- C++ libraries, one per concern. GPS parser, GPSDataHub, NMEA server, MQTT bridge.
- PPS RTC, ~10 ms. Overkill. I wanted it anyway.
What runs where
The raw TCP path is the simple one. NMEA-0183 comes in over serial from the GNSS module, the parser splits it by type, and the raw bytes pass to a TCP server on port 10110. mDNS advertises it as `_nmea-0183._tcp`. The other path is parsed: fixes become JSON on MQTT topic `{topicBase}/gnss`. I keep both because a few clients expect plain NMEA, not a rewrite. PPS from the module disciplines the RTC to ~10 ms. WiFi AP+STA with failover, web UI for config and OTA.