The build

From radio waves to a live race map.

A full end-to-end system, designed and integrated from separate development modules — GPS, LoRa radios, microcontrollers, a Raspberry Pi backend and a browser dashboard — all engineered to survive a day of youth dinghy racing.

0
development phases, research → field trials
0
boats per regatta the system targets
0
battery endurance for a full race day
0
subscription & SIM cost — none required
System architecture

Three parts, one data flow.

Each boat carries a LoRa GPS tracker. A support-boat gateway collects every position over the mesh and hands it to a Raspberry Pi, which logs it to a database and serves the live dashboard.

Detailed system data-flow diagram
  • Boat tracker — ESP32 microcontroller + LoRa module & aerial + NEO-M8N GPS + 3.7V battery, in a waterproof case on a 3D-printed mast mount
  • Support-boat gateway — a TTGO LoRa32 board connected by USB to a Raspberry Pi 4 in a waterproof box
  • Backend — Mosquitto MQTT broker + a Python listener, writing to a SQLite database
  • Dashboard — a Flask API serving a Leaflet.js map to any browser
Hardware

Off-the-shelf parts, carefully integrated.

Unlike pre-packaged commercial trackers, every module here was selected, wired and tested by hand — learning to troubleshoot firmware, wiring and signal issues systematically.

Dashboard showing multiple boat trails
Software

The dashboard was the hardest — and most rewarding — part.

Getting many boats' data onto one map, with trails, data points and a time function, took many iterations of debugging the HTML and back-end data flow.

  • SQLite for GPS record logging
  • Flask API running on the Raspberry Pi
  • Leaflet.js front end with marker plotting & trails
  • Race-replay features and a live test site hosted via Vercel
Single boat track on map
Multiple boats with markers
Full dashboard interface
On the water

Tested where it matters.

Bench tests on land, waterproofing trials in the pool, then real sail-training sessions with Royal Akarana Yacht Club — the system ran with no physical or software failures.

Evaluation & next steps

A successful proof of concept — with a clear path to a product.

The prototype proved a low-cost, real-time, subscription-free tracker is possible. The main limitation was Meshtastic firmware throttling how much GPS data could flow. The roadmap:

⚙️

Custom firmware

Replace Meshtastic with an Arduino-based stack and custom Python to unlock continuous, time-stamped GPS data.

🔧

Custom PCB

Move from development boards to a purpose-built PCB — cheaper, smaller and more reliable.

🖥️

Full web app

Race setup, sailor/device pairing, training modes and a multi-race regatta dashboard with capsize alerts.

📈

Smarter devices

Add a start-timer display and motion sensors to detect capsizes and measure heel angle & tacking efficiency.

Want the full story?

See how this student project won the Samsung Solve for Tomorrow national award and made it onto RNZ.

Read the story & press