Raspberry Pi and HDMIPi as a Marine Chart Plotter

The Problem

My pride and joy, Chameleon Too

A boat can be successfully navigated in the open sea with no electronic aids but the advent of GPS and its development into chart plotters has made the process much easier. I sail a Jenneau Sunfast 32 sailing yacht called Chameleon Too (photo 1) on the coast of East Anglia, the Thames estuary, and across the North Sea. Commercial chartplotters are OK but they cost between several hundred pounds and several thousand pounds. They are relatively heavy on power and the charts for each zone cost £100 to £200 each.

One solution is to use a laptop computer running freeware. I used to do this on a previous boat in Greece which had a large battery bank and solar panels but I looked for a lower-power option for my current boat. Luckily there is a large community of sailors doing similar things and following their lead I have developed a chartplotter based on the RPi. Initially I used it with a car media screen but the HDMIPI has improved things considerably.

Navigation Issues

A chartplotter displays in-built charts (nautical maps) with the boat position and as many as are required of the following:

  • repeated information from other instruments such as depth of water, boat speed, wind speed and direction
  • fixed waypoints and planned routes with the relationship of the boat to the current planned route
  • tidal heights and currents
  • weather forecasts (particularly wind)

A chartplotter can also output navigation information to other displays and to the boat’s autopilot.

Data Handling

The standard method of passing data around a boat is through NMEA (National Marine Electronics Association) sentences (fig 2). The sentences comprise a header and blocks of data. Explanation of the typical GPRMC sentence is copied at the bottom of this note.

One important supplier of marine instruments is Raymarine who use a completely different data handling system called SeaClear and if data is to be passed either way between the two then a translation unit is required.

All the data signals on Chameleon Too are output through a serial interface. There are options to connect these directly (after combining and filtering) to the RPi GPIO port but I decided in the first instance to use serial/USB converters and pass data to and from the RPi through the USB ports.

Currently I combine and filter data through a multiplexer program running on the RPi 2 called KPLEX. A future improvement might be to run the multiplexer on a headless Rpi A.

My first setup used an RPi B which worked well though it was sometimes overpowered by data when in the vicinity of many other vessels because of the need to handle all their AIS signals and compute potential collisions. I overcame this by switching off some of the AIS capability when traffic was heavy. I hope the RPi 2 can cope better.

AIS ([ship] Automatic Identification System)

AIS, originally developed for aircraft, is now universally used by all large shipping and some pleasure craft. AIS transmits at regular intervals VHF signals providing information on the vessel, speed, direction, rate of turn, destination, local weather etc. A black box called an AIS engine receives the signals and turns these VHF signals into NMEA sentences (see sentences !AIVDM on photo 2).

KPLEX running: NMEA data output stream


OpenCPN (opencpn.org) as the chartplotter software. It provides a comprehensive chartplotter with the following functions and more:

  • moving charts which are either centred on the boat or elsewhere, including quilting of individual charts and selection of large or small scale charts as required where there is an overlap
  • depiction of the vessel, its speed and direction and its track
  • AIS:
    • depiction of other vessels which are transmitting AIS,
    • display of the information received as required,
    • graphic depiction of vessel speed, direction, rate of turn, and track,
    • automatic calculation of closest projected position to own vessel and
    • visual and sound warning of potential collision by setting limits on closest position and time.
  • repeat of data from other instruments such as water depth, boat speed, wind, compass
  • establishment of waypoints and routes with the ability to:
    • follow route
    • output data to the autopilot or to other instruments.


KPLEX (stripydog.com/kplex) is a multiplexer which accepts all incoming data streams, combines them for output, filters by sentence header and period on input and output.



Originally I had an RPi B set up in a locker (boat name for a cupboard) and drove the display through an HDMI cable. The display is on the desk (chart table) in the cabin. The HDMIPI and especially the RPi 2 incorporated has allowed me to make a much neater setup with fewer connections. The system is low power and easy to read. The GPS information and AIS transmission is via a Matsutec HP33A which sits next to the HDMIPI. Other data comes from a NASA AIS engine and a SeaTalk/NMEA translator which are in the locker next to the chart table. The SeaTalk translator can also send messages to a repeater instrument on deck or an autopilot.

I use a cordless mini keyboard/mouse though also sometimes use a normal cordless mouse for setting up.

Power is provided from the boats’s battery via a MeanWell DCDC stabiliser and via a 12/5 adjustable stepdown.


Shows the HDMIPI and Matsutec on the chart table.
Shows the HDMIPI and Matsutec on the chart table.


Wooden adjustable stand which is bolted to the backplate of the HDMIPI
Wooden adjustable stand which is bolted to the backplate of the HDMIPI
Shows a typical screen.
Shows a typical screen.

Chameleon Too (red) is in the marina but you can also see other ships. Yellow depicts a vessel for which full information has not yet been received (full info is not sent in every VHF transmission). Green shows that full information has been received. The black dots and other symbols depict signs usually displayed on deck: black ball – anchored; balls and diamond – ship with limited manoeuvrability. The cursor is highlighting one vessel with short information: name, MMSI number, speed, course.

Shows a tide curve
Shows a potential collision
Shows a potential collision

This is not a real collision risk. I just put up the allowable separation distance. The vessel is “unknown” because full data has not yet been received. CPA is the closest point of approach with the time at which that will happen. The vector lines show the expected paths and the dotted line the closest separation.


GPRMC Recommended Minimum Navigation Information

GPRMC Recommended Minimum Navigation Information