The build

From radio waves to a live race map.

A full end-to-end system I 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.

Explore the system — click any device

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.

  • 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, I selected, wired and tested every module here by hand — learning to troubleshoot firmware, wiring and signal issues systematically.

Inside the tracker

Explore the hardware in 3D.

Drag to rotate. Tap a part — or a label — to see what it does.

Specifications

What’s in each tracker.

A single boat node is built from a handful of proven, low-cost modules — no cellular, no subscription, no proprietary lock-in.

Sail Race Tracker boat-node hardware specification
SubsystemComponentWhy it was chosen
MicrocontrollerESP32 (TTGO LoRa32)Dual-core, low-power, integrated LoRa & Wi-Fi for firmware flashing
Positioningu-blox NEO-M8N GPSFast fix and metre-level accuracy for tight fleet racing
Radio linkLoRa (868/915 MHz) + aerialKilometre-range, licence-free, no SIM and no monthly fee
Power3.7 V LiPo battery8 hr+ endurance — a full day’s racing on one charge
EnclosureIP67 waterproof caseSealed against spray, capsizes and immersion
MountingCustom 3D-printed mast bracketHolds the aerial clear of the water for line-of-sight range

No SIM, no fees

LoRa carries positions kilometres over open water without any cellular network — nothing to subscribe to.

All-day battery

A single 3.7 V LiPo runs a full regatta day, so nothing has to come ashore mid-session.

Built for capsizes

An IP67 case and a mast-base mount keep the electronics dry and the aerial in clear line of sight.

Exploded anatomy of the waterproof tracker showing the GPS module, ESP32, LoRa radio, LiPo battery, waterproof case and 3D-printed mast bracket
The mount

A 3D-printed bracket that clips to any Optimist mast.

I modelled the mount from scratch and iterated it on the printer until it snapped securely onto a standard dinghy mast, held the aerial upright for maximum range, and shrugged off knocks during rigging and racing.

  • Custom-modelled to clamp a standard Optimist mast without tools
  • Raises the LoRa aerial clear of the deck for line-of-sight range
  • Printed in tough PETG — cheap to replace, easy to iterate
  • Keeps the sealed case above the waterline in a capsize
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 me 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
Open the tracker demo
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