My NMEA183 COVID Project

For those who are interested, here is an update on my ongoing project.

It started last spring, when I thought I had blown up my Stowe Dataline Speed/Depth display. I have depth and speed sensors connected to a Stowe Dataline Databox. The Databox is wired to the display unit.

Since the hardware is old and no longer available, I thought I’d have to buy all new equipment. But then I read about a device that connects to any NMEA 0183 output and provides a boat wide WiFi signal. NMEA 0183 is the National Marine Electronics Association standard protocol. Then you can use one of many available smart phone apps to display the data. I bought a Wireless NMEA Server from Digital Yacht. But none of the apps I tried displayed my data. I contacted the developers of the apps and they explained that the data “sentence” must be followed by a checksum. Also, some of the Stowe sentences were non-standard.

So I wrote my own Android app, tailored to Stowe’s unique data. It includes shallow and deep warnings, race timers and displays water temperature, battery voltage, total log, trip distance in addition to speed and depth. This was Phase I.

I already had the Navionics app on a tablet and a subscription to the charts for our area. But I read on Digital Yacht’s web site about Navionics’ Sonarchart Live. They also tap into the WiFi signal from the Wireless Server and can display depth from my sensor and plot it and display over the chart. (If I had AIS, they would integrate this too.) Navionics connected to the server but silently refused to process depth. After many emails to their support line they finally told me that my DBK (depth below keel) was not acceptable. It had to be DBT (depth below transducer) or DPT (depth). And , of course, they required a checksum.

So I decided to implement a “man in the middle” solution. I use a small, cheap ($20) microprocessor to take the output from my Databox, transpose the DBK into DBT, strip out some non-standard fields and compute and append a checksum.

Navionics on my phone or tablet now display depth from my sensor. And, as I move around, they plot it.

From their marketing…
Watch new 1 ft/0.5 m personal HD bathymetry maps develop in real time as your boat moves along the water! It appears as an additional layer over your map, while it also gets stored on your device for future use.

So, that is Phase II.

I can make the source code for both the Android app and the microprocessor code available if any one is interested.

The Android app is written in Java. I designed it so that the Stowe specific NMEA parser can be swapped for another. It currently only connects with UDP, but I’m sure it can be modified to use TCP. Of course, it’s “broken” now, because it’s expecting the original, non-standard Stowe sentences and those coming from the server are fixed to be standard.

The “Man in the Middle” runs on an Arduino Mega2560, but smaller ones would work too. The code is C++, and again, the logic that transposes Stowe sentences to standard compliant sentences is isolated for easy swapping out. I read at 4800 BAUD and write at 38400 BAUD.

I don’t know yet how I’m going to package the micro for the marine environment.

P.S. The display wasn’t blown up. The gel battery was dying. The Databox powered the display’s LCD but didn’t send any data. I didn’t find out until I had everything set up on the bench, but with a lawn mower battery!

Published by

Trevor Stokes

German "A-Schein" - Inland Lakes. German "BR-Schein" - Coastal cruising within 12 nM. The required 300 nM were logged off the coast of Turkey in a Bavaria 30. Retired software developer. Twenty years with Texas Instruments as Member, Group Technical Staff.

2 thoughts on “My NMEA183 COVID Project”

  1. I wanted to connect both my Android Stowe display emulator and Navionics to the WiFi server. This is only possible with UDP.
    Navionics has a quirk: UDP doesn’t require an IP address. But if you enter a valid one or leave it blank Navionics fails to connect. I found you have to enter 0.0.0.0.

Leave a Reply