Components
- Tasmota Driver: Adds GNSS processing and NTRIP server/client functionality to ESP32 devices
- Custom PCB: Simple board design to connect OLIMEX ESP32-POE2 with the WTRTK-980 UM980 GNSS receiver and serves as a PoC for the driver.
Another more complex PCB is WIP which effectively puts together on the same board an ESP32 with POE support and an UM980 chip with additional extensions for 4g modems and digital radio for direct base-rover communication, all in a off-the-shelf antenna enclosure.
The Tasmota driver is split into two pieces, a generic GNSS driver which can be used to parse GNSS NMEA sentences and display the coordinates in the UI or make them available over MQTT. This is great when connecting simple GPS modules. And a NTRIP server/caster driver, which pushes RTCM messages from the GNSS device to NTRIP casters and clients. This document will focus on the complete solution GNSS+NTRIP, but this driver can be also used for GPS tracking only.
Features
- NTRIP Server: Connect to up to 2 remote casters simultaneously
- NTRIP Caster: Serve corrections to multiple clients via built-in web server
- Data Logging: Stream raw GNSS data via HTTP endpoint for PPP & other post-processing
- Web Interface: Standard Tasmota UI helps with monitoring GNSS status, configure NTRIP settings, view statistics
- PoE Support: Powered via Ethernet using OLIMEX ESP32-POE2 board
- GNSS Data Processing: NMEA message parsing, RTCM handling, multi-constellation support
- Open Source: Fully documented hardware and software
Getting Started
Main steps to get started:
- Get the hardware and put it together
- Build the firmware, or use the already pre-built firmware attached to this project
- Install and configuration of the firmware, update the firmware of the UM980 chip
- Mount the antenna and the receiver at a fixed position
- Obtaining the precise coordinates of your base using a PPP service
- Publish correction data to a NTRIP Caster or connect with you rover to the base
1. Get the Hardware and Put It Together
Getting the hardware
Although any ESP32 and UM980 board will work, I've used the OLIMEX ESP32-POE2 and the WITMOTION WT-RTK-980 boards that I highly recommend, they also fit the baseboard I designed for my permanent installation. You can easily find those online so will not put links here.
Hardware Assembly Options
You have two options for connecting your ESP32 board to the UM980 GNSS receiver:
Option A: Direct Wire Connection (Simple Method)
Required Components:
- OLIMEX ESP32-POE2 (or any ESP32 development board)
- WTRTK-980 UM980 GNSS receiver module (or any other UM980 receiver)
- Jumper wires
In case another UM980 module is used, look at the input voltage and the serial level voltages, certain boards have 5v level shifting circuitry which will not work with the 3.3v ESP32 requires. My initial development was done on one of these boards so I had to do another level shifting from 5v back to 3.3v to make it work with my ESP32-POE board.
Connections:
- Connect ESP32 GPIO 16 to UM980 COM2 TX
- Connect ESP32 GPIO 17 to UM980 COM2 RX
- Connect ESP32 GND to UM980 GND
- Connect ESP32 5V to UM980 VCC (5V input required)
This method works for prototyping and testing but may not be suitable for permanent installations.
Option B: Custom PCB Assembly (Recommended)
Required Components:
- OLIMEX ESP32-POE2 board
- WTRTK-980 UM980 GNSS receiver module
- Custom motherboard PCB from: https://github.com/catalinsanda/gnss_motherboard
- 12-wire ribbon cable with IDC male connector
- 26-wire ribbon cable with IDC male connector
- 12-pin PCB female connector
- 26-pin PCB female connector
- 12-pin 90-degree bent connector
- M3 metal or plastic standoffs (various heights as needed)
- M3 screws for standoff mounting
Assembly Steps:
- Mount Modules on Baseboard:
- Install M3 standoffs on the motherboard PCB at the designated mounting points
- Mount the ESP32-POE2 board on standoffs using M3 screws
- Mount the WTRTK-980 module on standoffs using M3 screws
- Ensure proper clearance between components...