Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP_RTK_ROVER

A 50 € robot-mower part turned into a DIY centimetre-accurate GNSS rover.

Platform Framework GNSS DIY License

The converted dome on a survey pole, powered from a USB power bank

⚑ Flash in your browser Β· πŸ›°οΈ Live Dashboard Β· πŸ”§ Hardware Β· πŸ“‘ K803 Commands Β· πŸ“– Flashing


What it is

ECOVACS GOAT lawnmowers ship with an RTK base station β€” the black dome you screw onto a pole. People sell them second-hand for 40–90 € when they change mowers.

Inside is a SinoGNSS K803 Lite by ComNav: a multi-frequency GNSS board with a real RTK engine, a patch antenna and a machined ground plane.

This project wires that board to a Seeed Studio XIAO ESP32C6 and turns the dome into a Bluetooth RTK rover that any mobile GIS app can talk to.

  phone  (NTRIP client + GIS app)
    β”‚   RTCM3 down  Β·  NMEA up
    β”‚   Bluetooth LE / SPP
  ESP32 / XIAO ESP32C6
    β”‚   UART 115200
  ComNav K803 Lite  ──  patch antenna + ground plane

The firmware:

  • reconfigures the K803 from base station to rover on every boot β€” no laptop before a survey
  • passes bytes both ways, transparently β€” NMEA up, RTCM3 corrections down
  • speaks BLE (XIAO, works on iOS and Android) or Bluetooth Classic SPP (ESP32 DevKitC)
  • ships a browser dashboard for live diagnostics

Total build cost: under 100 €.


⚠️ This is a DIY device, not a survey instrument

Read this before using it for anything that matters.

  • No calibration. The antenna has no phase-centre calibration. Heights carry an unknown constant offset, probably a few centimetres.
  • No certification. No type approval, no conformity assessment, no traceability to a national standard.
  • No integrity monitoring. Commercial receivers add interference detection, multipath mitigation and integrity checking. This has none. A false fix looks exactly like a good one.
  • No support. If it gives you a wrong answer, there is nobody to call. That, more than the silicon, is what the expensive units are really selling.

Do not use it for: cadastral or land-registry work, legal boundaries, construction setting-out, aviation, marine navigation, or anything where a wrong position hurts someone.

Use at your own risk.

What it is good for

Use Why it fits
Robotics Autonomous rovers and mowers, ground stations, drone pads β€” centimetre positioning at hobby cost
DIY auto-steering Tractor guidance and precision-agriculture experiments
Hobbyist survey & mapping Field boundaries, garden and site layout, trails, asset mapping
Learning GNSS / RTK A genuine multi-frequency receiver to experiment with, for the price of a takeaway

How accurate is it?

Two field tests against official government height benchmarks, using free NTRIP corrections. Then we stopped β€” this is a hobby device, and characterising it properly needs reference equipment we do not have.

Test 1 β€” BΓΌhl, 22 Aug 2026

SW Maps point properties: RTK Fix, 16 satellites, PDOP 0.80

RTK FIX. 16 satellites, PDOP 0.80, corrections 1 s old, 7.7 km baseline. The receiver's own precision estimate: 2 mm horizontal, 4 mm vertical.

We went to check it against an official first-order height benchmark. The physical mark turned out to be a bolt on the side of a granite pillar, and we never found it β€” so there was nothing to compare against. The measurement itself came out sane.

Test 2 β€” a nearby building, 23 Aug 2026

SW Maps point properties: RTK Fix, 14 satellites, PDOP 0.90

RTK FIX. 14 satellites, PDOP 0.90. Precision estimate 7 mm horizontal, 11 mm vertical β€” worse than test 1, because the antenna was standing right against a wall.

This time the benchmark was found: a bolt in the wall, 0.28 m above the paving, with a published official height.

Measured ellipsoidal height βˆ’ official height = 48.71 m

That difference should be the geoid separation, which in this part of Germany is 47–50 m. It is. And it lands within about a centimetre of what test 1 implied, from a site 14 km away.

What that proves β€” and what it doesn't

βœ… The receiver produces a stable RTK fix, correctly referenced, with no gross error βœ… Two independent sites agree with each other

❌ It is not an accuracy figure. The millimetre numbers the app displays are the receiver grading its own homework ❌ It does not separate the antenna's own offset from the geoid model β€” that would need the official geoid value, a proper 15-minute occupation, and repeat visits on different days

Treat heights as good to a few centimetres, not millimetres. Horizontal behaves better than vertical. If you need certainty, buy a certified instrument.


Hardware

Item Cost
ECOVACS GOAT RTK base station (second-hand) 40–90 €
Seeed Studio XIAO ESP32C6 ~8 €
USB power bank, wire, heat-shrink on hand

K803 Lite carrier board with 5V, GND, GNSS TX and GNSS RX called out

K803 harness XIAO ESP32C6 ESP32 DevKitC
GNSS TX (blue) D7 / GPIO17 GPIO16 (RX2)
GNSS RX (green) D6 / GPIO16 GPIO17 (TX2)
GND (yellow) GND GND
5 V (orange) 5V VIN

TX and RX cross over. If you get no data, swap those two first.

⚠️ Power the receiver properly. It pulls 150–300 mA. Feeding it from a DevKitC's onboard regulator causes boot loops that look like corrupted firmware. See HARDWARE.md β†’ Power.

Full teardown, pinouts and assembly: HARDWARE.md


Flash it

XIAO ESP32C6 β€” one click, no toolchain: hmd83.github.io/ESP_RTK_ROVER/install β€” Chrome or Edge on desktop.

ESP32 DevKitC β€” build from source. No prebuilt image on purpose: WROOM and WROVER need different GNSS pins, and SPP and BLE are different firmwares.

pio run -e xiao_esp32c6_ble -t upload   # XIAO ESP32C6, BLE
pio run -e esp32dev_spp     -t upload   # ESP32 DevKitC, Bluetooth Classic
pio device monitor                      # console @ 115200

Details: FLASHING.md


Connect your phone

SW Maps GNSS Connection dialog    SW Maps showing RTK FIX

In SW Maps (Android / iOS):

  1. ☰ β†’ Bluetooth GNSS
  2. Connection Mode: Bluetooth LE for the XIAO, Bluetooth for the DevKitC SPP build
  3. Pick ESP32-RTK-XXXX
  4. Instrument Model: Generic NMEA β€” set Instrument Height to your pole length
  5. Connect
  6. ☰ β†’ NTRIP Client β†’ your caster details β†’ Connect
  7. Wait for SINGLE β†’ FLOAT β†’ RTK FIX

Also works with QField, Mergin Maps, Mapit GIS, and Windows collectors over SPP.

Corrections come from your phone, not the ESP32 β€” the phone already has the internet connection. Free NTRIP networks such as Centipede-RTK or RTK2go work, as do national services.

Note: SW Maps subtracts the instrument height from the elevation it stores. Enter your pole length and it records the ground point; leave it empty and it records the antenna.


Live dashboard

Open the dashboard β†’

One self-contained HTML file. Connects to the rover over Web Bluetooth in Chrome or Edge and decodes the stream live: fix quality, position, Οƒ values, DOPs, correction age, and a raw NMEA log with checksum errors highlighted. Nothing is uploaded anywhere β€” your position stays in your browser.


Documentation

HARDWARE.md Teardown, pinout, wiring, power, antenna, assembly
COMMANDS.md The ComNav K803 command set β€” base β†’ rover, NMEA rates, recovery
FLASHING.md Web flashing, PlatformIO, esptool, troubleshooting

Firmware layout: src/main.cpp moves bytes, src/gnss_init.cpp configures the K803, src/link_ble.cpp and src/link_spp.cpp implement the two transports.


Credits

Hussein Daj β€” hardware reverse engineering, teardown, K803 command discovery, field testing.

Claude (Anthropic) β€” project partner: firmware architecture, dashboard and documentation.

Thanks to Seeed Studio for the XIAO ESP32C6, and to NimBLE-Arduino, pioarduino and ESP Web Tools.

Thanks also to the GNSS professionals who pushed back on the first version of these accuracy claims β€” the limitations section exists because of them.

License

MIT β€” do what you like, credit appreciated, no warranty.

Disclaimer

Not affiliated with, endorsed by or supported by ECOVACS, ComNav Technology or SinoGNSS. Opening the base station voids any warranty and ends its usefulness to the mower. Trademarks belong to their owners.

This is a hobbyist instrument. It is not certified for any regulated purpose.

About

Turn a ~50EUR e-waste ECOVACS GOAT RTK base station (ComNav K803 Lite) into a centimetre-accurate Bluetooth GNSS rover with an ESP32 / Seeed XIAO ESP32C6

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages