Tern

Tern · project

DPV-Nav

Dead reckoning that mounts on your scooter — bearing and range to named waypoints, and an estimated position that keeps up with you.

Field-tested

It's been in the water, perhaps repeatedly, iterating towards a better answer.

DPV-Nav mounted on the scooter

What it is

Better than doing it by hand

If your current process is reading a magnetic compass and tracking time and distance in your head, DPV-Nav will save you a lot of effort and produce a dramatically better result. It's not perfect, but (if well-calibrated) will have much better accuracy than whatever you're doing now.

What it isn't

This is not underwater GPS.

GPS doesn't work underwater, and I haven't built magic that violates the laws of physics. Precise subsea positioning is a lovely engineering problem with several excellent solutions — and precision scales almost linearly with how much you're willing to spend. At this price point, expect to achieve results comparable to the commercial products, except with the pride that you built it yourself.

How it works

DIY Digital Dead Reckoning.

Take a known starting position. Add heading and speed, over and over, a hundred times a second. Each step turns the last estimated position into a new one.

  1. 01

    Fix your start

    On the surface, the external GPS antenna nails down a starting point. Everything downstream is measured from this point, so it's worth waiting to get a solid fix.

  2. 02

    Track your heading

    A tilt-compensated AHRS fuses gyro, accelerometer and magnetometer. The calibration process takes into account hard- and soft-iron factors to produce a real time digital heading.

  3. 03

    Measure speed through the water

    A flow sensor counts water actually moving past the hull, so if you're carrying extra gear and moving more slowly, it takes that into account instead of messing up the math. It does not take into account current (yet), so if the water is moving over the ground, your position will drift.

  4. 04

    Read off bearing and range

    The display shows bearing and distance to the waypoint you selected. Arriving at any known point snaps position and clears the error you've accumulated so far.

Calibration is the great challenge. DPV-Nav walks you through it on-screen — baseline and mounted magnetic passes, then a 12-point heading correction, all with feedback along the way so it doesn't feel like black magic. Diligent calibration is the difference between 10% and 3%. I've gone to a lot of effort to make this as painless as possible. It's still pretty involved, but users now get consistent results, which is a good start. This is one area I'm excited to improve, if anyone has ideas.

Accuracy

Errors compound. Plan for it.

~10%

of distance since your last fix

If you've calibrated well, this is a good thumbrule number to plan with. Run 500 m from your fix, assume you're within 50 m.

2–3%

achievable in practice

Seen on real runs with careful calibration and known courses. Earn it, don't assume it.

12

point heading correction

A final pass that trims the last few degrees of residual heading error out of the system.

The longer it's been since you actually knew where you were, the further off you may be. When you arrive, you're probably closer than you would be if you'd just guessed. But in poor visibility, close is rarely the same as close enough. Plan on dropping a marker and running a reel to conduct a spiral search, until I can build out the DPV-mounted sonar.

The system

Two boards on the scooter.

NAV unit

The sensor head: accelerometer, gyro, magnetometer, GPS and flow sensor. Runs the attitude filter and the position estimate, logs the dive, and serves a web UI at tern.local for waypoints, WiFi and calibration.

DISPLAY unit

A sunlight-legible 320×240 TFT with two-button control, built by a diver who wanted something simple and intuitive. Bearing, range, heading and speed at a glance, with a menu you can work in gloves.

Dive Map

The companion web app. Layered nautical charts for planning the dive, then reviewing the track you actually covered against known positions. Launch Dive Map →

What's in the box, and what it does.
Heading Tilt-compensated AHRS fusing gyro, accelerometer and magnetometer. Hard- and soft-iron correction from a two-pass calibration, then a 12-point heading correction.
Speed Flow sensor measuring water actually moving past the hull, so extra gear and a slower run are accounted for rather than assumed away.
Position fix Onboard GPS with a raisable external antenna. Everything downstream is measured from this point.
Depth Pressure sensor, used for logging and for sanity-checking position against known contours.
Processing A pair of ESP32s — NAV runs the filter and the position estimate, DISPLAY drives the screen and the menu.
Display 320×240 sunlight-legible TFT, two-button control, workable in gloves.
Interfaces Web UI at tern.local for waypoints, WiFi and calibration. Dive logs written to onboard storage.
Housing Off-the-shelf GoPro and Blue Robotics housings both work. Custom acetal and acrylic housings are in progress and offer real advantages if you can mill simple shapes.

Roadmap

Where this is going.

Directional, not promised. The further right, the more likely it changes.

Now

Actively being built or tested

  • Dead-reckoning noise filtering — speed-threshold filter first
  • Custom acetal + acrylic pressure housing
  • Calibration-server integration

Next

Committed, not started

  • Field-test protocol: long out-and-back with SMB GPS fixes at both endpoints, to separate mount bias from speed error
  • Resolve the ~0.75× speed correction and ~3.7° course error — and whether mount rigidity explains either
  • Home-WiFi calibration upload with RMS quality feedback

Later

Directional, may change

  • Dive Map → DPV-Nav waypoint handoff
  • OAuth device flow, once there are enough devices to justify it
  • Reducing position uncertainty from depth contours or crossing known lines

Open problem. Piezo push-button depth qualification. It needs physical pressure testing before I will claim it works at depth.

Source & docs

Build one.

DPV-Nav is built from readily-available parts wherever possible, to keep it within reach of most technical divers. Some of it is genuinely technical: you'll manufacture and solder custom PCBs, flash firmware to a pair of ESP32s, and print parts. You may not have a 3D printer, but chances are excellent you know someone who does. The housings are an area of compromise: off-the-shelf housings from GoPro and Blue Robotics work, but they're either expensive or challenging to work with. If you have access to a CNC mill — or are comfortable milling simple shapes by hand on a drill press — Delrin housings offer some significant advantages. Everything else is available for purchase on the open internet.

Licensing

How you may use it.

PolyForm Noncommercial (firmware) · CC BY-NC-SA (docs & hardware)

Source-available, not OSI-open: free for divers and tinkerers, not for commercial resale. The full position — including the labour-for-a-friend carve-out and the Tern trademark note — is still being written up.

Don't blindly follow the navigator.

DPV-Nav gives you an estimated position. It does not execute your dive plan, and it does not replace training, a compass, or your own judgement. Sanity-check it constantly against depth contours and time: if you're headed to a wreck at 76 ft and you're at 120 ft six minutes in, you've erred somewhere. If the screen says keep going and you're at 250 ft with no wreck in sight, stop.

Technical diving is dangerous. This is a hobbyist, DIY instrument with no warranty and no certification of any kind. Read the full safety position →