In January 2021 we purchased our boat Arabesque, a Sigma 33 OOD. The gentleman who sold her to us mostly used her for gentle cruising and had kept her in immaculate condition. We got a solid boat that had none of the usual battle damage that hard raced Sigmas sustain. However, as she had not been pushed or used for much more than day sailing her electronics outfit was a little tired and dated. For this reason I decided that a major overhaul was in order, and set to work planning what that might look like.
I wanted to build a system that took data from as many instruments on the boat as possible, and must include a Class B AIS transceiver to comply with ISAF rules.
I started by researching off the shelf systems and I found myself both underwhelmed by their features and appalled by their cost. I figured I must be able to DIY something of at least equal performance for a fraction of the cost.
My search for a DIY solution lead me to OpenCPN, the opensource chart plotter software, I was immediately drawn to it's versatility and how it mimicked the user interfaces I was used to on ship ECDIS systems. It didn't take much longer to find and settle on OpenPlotter, a complete linux build incorporating OpenCPN and all the software required to ingest, process, and distribute NMEA data around the boat.
The Shopping List
Now I knew what I wanted to achieve and roughly how I would do it I set about finding the components required. These are the components used (prices are approximate at time of purchase).
Matsutec HA-102 AIS - £180
AIS Stub antenna - £40
RPi 4 4Gb - £40
RS-422 serial-to-USB adapter x 2 - £7 each
Arduino Nano - £10
9-Pin DIN connector - £2
Powered USB Hub - £10
12V to 5V DC-DC converter - £16
MPU-9250 - £5
2-Port USB panel mount extension - £5
HDMI panel mount extension - £5
WIMAXIT Portable Monitor 11.6 Inch - £95
PERIBOARD-409H Wired USB Mini Keyboard with 2 USB Hubs - £16
Kensington Orbit Trackball - £24
o-charts oeSENC chart set - £33
So how did I settle on the components used?
Firstly the AIS - this was always going to be the most expensive item on the list. Many people would be content with just a receiver, and for that purpose OpenPlotter includes the ability to use a USB Software Defined Radio (SDR) to receive nearby AIS contacts. However, to comply with the Racing Rules of Sailing for the cross channel racing we plan to do a Class B Transmitter is essential. I settled on the Matsutec HA-102 and got it from AliExpress for £180 inc. shipping. This is a headless unit, but that's not an issue as I planned to have it feed AIS data into OpenPlotter. I reused the GPS antenna from the old Navman chart plotter and just re-terminated the coax with a TNC connector, this helped reduce the number of holes drilled in the deck as I also have a solar system and shore power to install (build logs to follow shortly).
Now the Raspberry Pi - this one is a no-brainer. OpenPlotter provides a great experience on the Pi and images are available ready to flash to the SD card. The RPi4 4Gb is plenty capable for the job and is a fair bit cheaper than it's 8Gb sibling.
The serial adapters are to interface with the AIS and existing NMEA0183 capable equipment on the boat - a NASA Clipper GPS display and a DSC Radio. One will be configured at 38400-baud for the AIS and GPS data in, and the other at 4800-baud to distribute position and track information. The arduino will be configured as a 4800-baud NMEA input device in OpenPlotter, it will be programmed with a sketch to interpret the I2C data coming from the NASA Clipper Depth sounder's slave display port and send valid NMEA0183 depth sentences to the Pi. The MPU-9250 completes the inputs for this iteration of the nav system. It will provide a stabilised compass input and pitch/roll information to the Pi. All the USB inputs will be interfaced via the powered hub, as the Pi lacks the ports and power delivery to attach all the devices simultaneously.
Power is supplied to the Pi and USB hub via a DC-DC power converter which easily handles the 11-15V that could potentially be seen from the house battery bank, and delivers a steady 5V at up to 10A.
I chose the peripherals with the intent of mimicking the user experience of a big ship ECDIS terminal. Nothing annoys me more than trying to tap a route into a touchscreen chart plotter while the boat is pitching and rolling in big seas, only to click every button except the one you're aiming for as your finger is thrust across the screen by the motion. For me, a keyboard and trackball is the way to go for any below deck chart plotter. The trackball of the Kensington isn't captive, which concerns me, but it is heavy and the mouse is secured to the chart table to avoid it sliding around. We will see how well it stays put over the coming season, but I'm sure I can 3D print some kind of retaining ring if it's required.
Once I had done as much research as I could and assembled a list of components it was time to build the plotter and begin testing.
I started by plugging everything into the pi on the workbench just to quickly test functionality, then I got to work designing a case to be 3D printed. The initial prototype, whist technically fitting everything, left inadequate room for cable routing; and so a second slightly larger revision was required.
I tested the functionality of the serial adapters by using synthetic NMEA0183 data generated by a laptop and also by hanging the AIS and GPS antennas out of the window of my office (thankfully we overlook the Solent so plenty of tracks appeared). The MPU9250 was also integrated and proven functional on the test bench. Data output is managed by the signal k to NMEA plugin, this was proven by connecting the output serial adapter to a laptop and initiating a serial console session to verify intelligible sentences were being sent.
At this stage it was impossible to test the depth sounder integration via the Arduino, but I had high confidence as I had followed the guide here. Due to the lack of a proper repository I had to carefully review the sketch and remove any artefacts of html formatting, you can find the functional sketch I am using on my github.
Once the initial build was complete, all that remained was to install the plotter in the boat. I decided to locate the main body of the system below the chart table. This resulted in a very tidy finish, but it's definitely not a space designed for someone of my stature to work in!
The display is mounted on a lockable rotating VESA mount, this along with the spare HDMI port allows it to double up as a TV when we are alongside for the night. My aspiration is to build a whole boat network with a masthead 4G antenna, partly so we can stream TV at anchor and not be dependant on dodgy marina WiFi when we're travelling.
Surprisingly after some consultation with instruction manuals and some swapping around of data cables, all the inputs and outputs of the plotter worked!
I am very happy with the outcome, OpenPlotter has proven to be capable of doing everything I have asked of it and at a total spend of around £500 I cannot find any commercial system that comes close to the features and performance of my build for that.
There is however more I would like to do. We currently have the original wind instruments and log from 1986. These are showing their age and to say they function intermittently is generous. However, both require the boat to be in the yard for replacement, so they will have to wait for winter. When the time comes they will be replaced with NMEA compatible instruments and integrated into the system. In the meantime I am on the lookout for a defective Autohelm 2000 control box to house a pyPilot build. I am also investigating how to integrate engine telemetry from out Volvo Penta D1-20 into OpenPlotter, and a solution for a cockpit display (either standalone or a slave display). In short there's a lot to do, and I look forward to sharing it all with you.