This is a brain dump of what I've figured out about boat networks.
There are devices on a boat that need to talk to each other, needing protocols
and physical connections. This is on a boat which is a physically demanding
harsh environment. There is little space, frequently not easy wiring runs,
sharp corners (both radius and cutting), and salt water and salty air. They
are making some wireless devices now, but I don't trust them to provide a
reliable connection in wireless saturated areas (and near military bases), and
you still frequently have to get power there anyway so you still need wires.
There are some industry standards:
On our boat, we have to deal with another proprietary physical
connection/protocol called
Raymarine SeaTalk 1.
The NMEA 0183 physical connection is essentially a
RS422
serial connection (an old computer standard that was used to connect computers
to modems, among other devices). It is point-to-point...two devices that want
to talk to each other need two wires running between them, but one transmitter
can have several listeners. While this standard is obsolete, it is still used
in many older devices, and newer devices sometimes still support it for
backwards compatibility. On Fantasia, we used NMEA 0183 to feed
GPS data
from the chart plotter to the VHF radio. If you hit the
DSC
(Digital Selective Calling) panic button on the VHF radio, it would transmit
the GPS data to the Coast Guard in a digital format, broadcasting the
MMSI
(a primary key number into a Coast Guard boat database) and GPS coordinates
and saying "come get me". The protocol is expressed essentially in text
"sentences" like $GPAAM,A,A,0.10,N,WPTNME*32. It is very low bandwidth, 4800
baud normally. You must run an extra two wires for power, so normally there
are four thin wires between devices.
NMEA 2000 is essentially
CAN Bus, a standard used
in cars, airplanes, and manufacturing. There is a backbone cable that
stretches on the boat that is terminated on each end. Various devices plug
into this backbone cable, and the drop cable going to the device can be 27
feet. The protocol is 8 byte packets. Most devices produced in the last 10-20
years use this protocol. Bandwidth is 250kbs--good enough for most data, but
not for radar/sonar/video. It has power up to 25 watts per device on the wire.
|
Example of a NMEA 2000 backbone similar to ours.
|
Our NMEA 2000 backbone on Achernar is literally about 1 foot long (this
will be changing soon), with the drop cables running to different points. As
we bought Achernar, there were three drops to the NMEA backbone: 12V power
in, a Garmin 17X GPS antenna, and a Garmin 4212 chart plotter. Significantly
missing is information from the West Marine 1000
AIS
transceiver, which has NMEA 0183 (only) output that currently goes nowhere.
NMEA OneNet is essentially
Ethernet, with a custom
protocol sitting on top of
IPv6. The standard took about
10 years to produce, and was published about two years ago. As near as I can
tell, no manufactured devices actually use it yet. It should be able to handle
radar/sonar/video. It does power with
PoE (power
over Ethernet), with all the strengths and limitations that has.
The wind, depth, speed over water, water temperature, and autopilot on
Achernar don't use any of these to communicate to the displays at the
helm...it uses a proprietary protocol called Raymarine SeaTalk 1. (This is not
to be confused with
SeaTalk NG
or several other similarly named protocols. SeaTalk NG is a rebranded NMEA
2000 using proprietary cables.) The details of this SeaTalk 1 have been
reverse engineered. You
can get
SeaTalk 1 devices to talk to a NMEA 2000
network by converting SeaTalk 1 to SeaTalk NG, then connecting SeaTalk NG to
NMEA 2000. With this translation, we should be able to see wind, depth, speed,
and water temperature on the chart plotter without having to replace all the
devices.
Sometimes you want to get the info on the NMEA 2000 backbone in a format that
can be interpreted by a computer. With OneNet, that would be easy, you just
get a device driver for the OneNet packets, but with NMEA 2000, that's
trickier. There is a device called
iKommunicate that convert NMEA 2000
packets into Ethernet packets. It basically plugs into the NMEA 2000 backbone
and dumps out Ethernet packets in HTTP SignalK format on an Ethernet port. (It
also accepts a couple NMEA 0183 devices.)
SignalK is an open source
JSON protocol for
understanding NMEA 2000 data. The output from the iKommunicate device can be
fed to the Ethernet input on a computer or a
Raspberry Pi. There
are various programs that interpret the SignalK format and produce displays of
instruments and log where you have been. Another alternative is there is hat
board that fits onto a Raspberry Pi unit called
PICAN-M. This board performs the same task as iKommunicate, except it only works
with a Raspberry Pi.
Our friend Ilker has written a Signal K logging program that's pretty nice:
https://saillogger.com. I will write up
our use of this program later.
Our Garmin radar uses an Ethernet cable for talking to our Garmin chart
plotter. The cable is run point to point from the radar dome to the chart
plotter. It uses a proprietary Garmin protocol.