I’ve been busy aboard Nauticarazi lately. It all stems from one issue: the Attitude Attribute – Yaw, Pitch, Roll of the boat.
Nauticarazi came with a standard (and now slightly dated) Raymarine instrument set up, to which I instantly began updating. There is nothing inherently wrong with what was here, it just wasn’t optimal. And, I hate standing at the fixed dreaded Raymarine C125 MFD (or Multi-Function Display). The C125 is rather dated on it’s own, but it was the heart of the whole system, which included Depth, Speed, Temp, Wind, Radar and Autopilot info and controls. The charts in it were also dated. And, being as much of a technology guy as I have been over the years, the interface is not intended for a guy like me, who’s not impressed by pretty pictures and clunky interfaces. It needed something else.
For years, I’ve run all my navigation stuff on my trusty ol’ 2012 MacBookPro. I use an open source chart plotting software called OpenCPN, which has the advantage of being constantly updated and FREE! I’ve even participated in debugging and developing certain portions of the software, so I am certainly comfortable with it. I installed my Mac Mini on to Nauticarazi as my primary navigation device to interface OpenCPN with the existing onboard system.
Next, I needed MORE info, so I added a Raymarine 700 AIS transceiver (the device that shows YOU where we are when we are sailing), thereby expanding our proprietary Raymarine SeatalkNG network data on the boat. Next, due to a software failure (which may or may not have been my fault) in the autopilot, we upgraded to a new Raymarine Evolution Autopilot (which is awesome!). Networking all these new items with our old instruments through the existing onboard network isn’t that complicated: basically all just plug-n-play with a proprietary manufacturers parts, in our case, Raymarine SeatlkNG – see the picture.
After adding a couple Yacht Devices network adapters, I had the SeatlkNG network running well and interfaced with with the Mac mini running OpenCPN. Fantastic! Well, almost… Here’s where my OCD sets in and things get really good…
In OpenCPN, there’s a software extension (or plugin) for sailing called Tactics. Tactics reads a lot of the instrument data (wind, speed, etc.) and makes calculations on sailing efficiency based on many of the metrics available on the SeatalkNG Network. One of the most important was Leeway, or how much the wind is pushing you sideways as you are sailing across it. Leeway is calculated on the amount of Heel verses wind speed and the speed through water of the boat. It’s an issue, as I have all this high-tech gear running, but the heel or “attitude” of the boat is missing. Attitude (which is read in the autopilot course computer) is read as “Yaw, Pitch, and Roll.” In our case Roll equals Heel of the boat, or how much it “tilts” in the wind. But, this info wasn’t getting passed over to OpenCPN. This is where my OCD set in and I begin a quest for better data management.
After extensive debugging, I discovered my Yacht Devices network adapters weren’t passing on the important Roll attribute to OpenCPN. OpenCPN, in turn, couldn’t calculate “Leeway” and my Tactics Plugin was using “estimated” data to make calculations. OMG! ESTIMATED DATA?! Not on MY boat! So the long trek began for the elusive Yaw, Pitch, and Roll transformation.
First move was to contact Yacht Devices and ask them to add that ability to the network devices I have installed that are not passing on the data. They promptly replied that there had a plan to include that ability in a future firmware upgrade due out February 2020. Needless to say, that never happened, certainly not in February.
Next I tried a different path all together. I bought another device, for which I had to help programmers develop software for to make it work on my Mac. It worked, and I got the data!!!! Unfortunately, at the cost of other data in exchange for this data. That wasn’t (or isn’t yet) my solution. So I continued in my quest…
And what I discovered was something I wasn’t even looking for… SignalK!
Before I delve into SignalK, here’s a bit of dreary marine electronics background:
The National Marine Electronics Association (NMEA) is creator the first marine electronics standards used by the manufacturers and programmers of boat electronics, allowing them to be interfaced with each other. Of these “standards,” there are two: NMEA0183 (developed in the 80’s) and NMEA 2000 (release in 2001), an upgraded technology architecture for “modern” day. NMEA0183 is a slow, archaic text based language where data is expressed in simple sentences such as $XDR,A,-4.02481,D,Roll*22, where XDR means “transducer” or instrument that reads boat data, “A” for Angle or type of data, -4.0248 means 4ish degree angle to the left (+ for right), “D” for degrees, and “Roll,” the attribute we are looking for!
NMEA2000 is different. It’s digital and unreadable to the untrained eye. The data is transmitted in numbered sentences, such as 127257 — the sentence that contains the “yaw, pitch, & roll data.” NMEA2000 is fast. Where NMEA0183 is like an old dial up modem, NMEA2000 is like 4gLTE. That means it must be better, right? Not necessarily.
The rub is that most chart plotting software and commercial navigation systems still use, read, and understand NMEA0183, albeit at a much fast rate. So for it to work, the NMEA2000 sentences must be translated, which is where the “Roll” info is dropping off due to the lack programming in the Yacht Devices adapters, as stated.
So I began searching and discovered something called SignalK. SignalK is open source marine electronics language developed by a world-wide group of individual developers (one of whom I actually used to personally know in Florida!) who had an idea of a truly “language-less” electronics protocol. SignalK was their answer.
SignalK can read and interpret both NMEA0183 and NMEA2000 and a whole bunch of other things, giving it the ability to be the true data hub onboard Nauticarazi. It’s modular, so it can be easily expanded. There is a bit of a learning curve, which has never been a deterrent for me. It runs as a server, so I have to run it on my Mac Mini for it to work, which is a bit of a downfall, but I plan to migrate it to a Raspberry Pi4 soon, so it will have it’s own stand-alone, low-power, server/device to run on (Raspberry Pis are exceedingly inexpensive and very energy efficient). With SignalK up and running, I’ve converted some of our Yacht Devices adapters to dump RAW NMEA2000 data into SignalK directly, which instantly solves the Yaw, Pitch, Roll data void. Where there was other missing data because of this, SignalK reads other adapters that send NMEA0183 data, thereby completing the whole collection of data generated by the boat and it’s multitude of sensors. OpenCPN can even read SignalK data it’s self! Problem solved! We are now sailing fools with so much data available, sailing isn’t even a challenge anymore! It’s become something we do to get from “here” to “there.”
But that isn’t the end of SignalK. I’ve reconfigured both NMEA2000 & NMEA0183 networks and SignalK handles all that data and routes it to wherever it needs to go, for example to the VHF radio. If there was ever an emergency, just a flip of a switch on the radio and everyone around knows our location and nature of our distress. Pretty basic boat stuff, really.
Where SignalK shines is with the integration of extraneous data outside of both NMEA standards. For example, I have a battery monitor onboard. I ran a USB cable to the Mini and SignalK is now able to read and calculate our state of charge and express it digitally on any “iDevice” I want. See the picture with House & Starting voltages, state of charge, time remaining, and current draw. I’m awaiting an interface cable for our solar charge controller as that will add even more useful data into our set up. In the next picture, you can see the Fusion stereo control, along with wind direction and speed, water temperature, and water depth — digital representations of standard boat data.
Using SignalK, I am able to derive and combine a HUGE amount of data and expand it as necessary. I’ll eventually add a bunch of cheap environmental sensors that will tell me the temperature, humidity, and pressures outside the boat, in the refrigerator, in the freezer and in the engine room. I’ll eventually get the old Lehman Ford engine digitized and tied into SignalK to automate much of that data collection I now do manually. And it makes all my data available in the cloud, so using my iPhone & SignalK, I can check to see what’s happening on my boat from anywhere in the world as long as I have an internet connection. Pretty sweet!
All this on a $50 Raspberry Pi. Who knew. This is indeed a brave new world we live in!
I love this stuff and am happy to share. Feel free to post comments and ask questions below…
Until next time,
Steve