Skip to content
20 min read Reviews

NMEA 2000 powered Raspberry Pi

Easy to install Raspberry Pi computer that gets its power from the NMEA 2000 bus. Great for SignalK, OpenCPN, and OpenPlotter.

NMEA 2000 powered Raspberry Pi

Running a Raspberry Pi aboard a boat has been a popular thing to do for a number of years. I’ve had them on every boat since the Pi first came out. Connecting them to a NMEA 2000 network, and powering them off a DC battery bank has required a bit more work up until now.

Why a Pi?

There are many reasons to have a Raspberry Pi connected to your boat network that I can think of. My main reason is to run a Signal K server on it, have it connected to my NMEA 2000 network, and leverage the hundreds of plugins and pieces of software that you can install to create dashboards, gather data, set alarms and alerts, and so much more.

In addition, you can run OpenCPN or OpenPlotter and have a fully functioning boat control, autopilot, chart, etc. system that has features just like the big vendors.

On sailboats in particular, I loved having a Pi on board because I could have an always-on computer that didn't take a ton of power, had a decent amount of CPU power, and use it to monitor things while I was away.

The old way…

The first step in connecting a Pi to the boat was to find a proper power supply. Raspberry Pi's run off of USB power which is 5V, and not generally available on the boat in a permanent way. I always wanted mine to run off of the 12v DC battery bank without any connection to an AC outlet, inverter, or USB converter that isn't hard wired. I have had good luck with this 12v-5v converter from Tobsun, and I particularly like it because it has four screw down terminals on it, making it easy to connect cabling.

Once the power problem is solved, connecting the Pi to the boat network involved either an Actisense NGT-1 USB adapter ($) or a canable.io adapter to get it on the NMEA 2000 network. Both have pros and cons and require connecting to a USB port on the Pi, plus some configuration.

An easier way….

A reader and Instagram follower (thanks Ilker Temir!) pointed me to an add-on board, or HAT, for the Raspberry Pi called the PICAN-M, and I was intrigued. I ordered one from Copperhill Technologies here in the US and it arrived a few days later. The original manufacturer of the board is SK Pang Electronics out of the UK.

Raspberry Pi 4

I had a Raspberry Pi 4 that I had been playing around with ever since it came out, but didn’t have a clear purpose for it. I decided to install the PICAN-M on it, and then try out a few different things. I generally purchase the CanaKit bundle when I am buying a Raspberry Pi (I think I have about 15 right now doing various things at home and on the boat) as they tend to include a nice power supply, case, cables, and mainstream brand SD card, but you can get them cheaper without those pieces if you prefer. In this case, the extra parts and pieces were important when I bought the Pi to do testing in general, but were not necessary since the PICAN-M provides power, and the case provided by CanaKit won't work.

PICAN-M HAT board

The PICAN-M is a pretty simple, yet well designed board. It has a NMEA 0183 terminal block and NMEA 2000 port on the left side in the picture above, and the connector for the Raspberry Pi on the right hand side.

Close up of PICAN-M board

There is a really nice schematic and user guide that SK Pang have provided on their website. The board looks very well built with clearly labeled bits. Here's what SK Pang say the board is capable of:

Features

So besides NMEA 2000 and 0183, you can also connect other I2C sensors if you'd like.

The biggest challenge with the board is going to be finding a proper case that has the right cutout.

PICAN-M installed on top of Raspberry Pi 4

Installing the board is straightforwards. Included in the package are four standoffs and screws which need to be attached to the Raspberry Pi. Then carefully slide the PICAN-M down the pins on the Raspberry Pi until it is well seated, and screw it down to the standoffs.

If you're interested in a step-by-step guide on how to set this up with Signal K, Grafana, InfluxDB and more, check out my article below:
Set up Signal K and Grafana on Raspberry Pi with PICAN-M NMEA 2000 board
With the advent of streamlined Raspberry Pi + NMEA 2000 hardware, building a dedicated Signal K server has never been easier. This article walks you through the steps.

Case

This is probably the only downside to this setup. The standard cases that come with the Raspberry Pi do not assume you will have an add-on or HAT board with it. Those that accommodate HATs are pretty specific, and have holes or punch outs for specific types of connectors. I have not found a NMEA 2000 specific case – perhaps an opportunity for 3d printing!

I found a case from HiFiBerry that was meant for an audio HAT and hacked holes in it to allow the NMEA 2000 port to be exposed. It's not great, but it works for now and keeps the boards reasonably safe.

Software & Usage

I installed three different things on the Pi to test with, just for OpenPlotter, OpenCPN, and then just Linux with Signal K.

To do this, I simply connected the NMEA 2000 port to power up the Pi, plugged the included HDMI-mini to HDMI cable into a monitor, connected a keyboard, and followed the install instructions for OpenPlotter/OpenCPN. You can do this in an automated way, or even headless (without a monitor or keyboard) but it can get a bit fiddly if you make a mistake in the installation.

For Linux + Signal K, I used the standard Raspbian server minimal distribution and then installed Signal K afterwards.

PICAN-M + Raspberry Pi running Signal K

The super nice thing is that the NMEA 2000 port just shows up as can0 to the operating system, so it is very easy to start using one of these applications to access the data on the NMEA 2000 network.

The absolute best part about this entire setup is the fact that the NMEA 2000 port is native, and that it powers the entire computer. No other cables or connections are required.

This opens up even more utility when considering what you could use this for. Besides running heavier applications like the above, you could use these in strategic places all around the boat to create an entire sensor network. Connect it to a NMEA 2000 tee somewhere, and have I2C or other sensors (Raspberry Pi have a wealth of different ways to connect various sensors) connected to tanks, temperature, momentary, etc. and run Signal K on each, spitting the data back to a central Pi or other computer to display things. The possibilities are actually quite exciting. I've tried to do this in the past with Arduino and other technologies, and it has been a bit of a mess with having to power them by battery or other conversions.

Cost & Conclusion

Overall this is a pretty inexpensive way of getting a boat computer on board:

Total: $242.89

This is a very reasonable price, and is actually about the same cost as the Actisense NGT-1 USB to NMEA 2000 interface alone! For just under $250, you end up with a bus-powered, low power usage, reasonably powerful computer on your NMEA 2000 network.

You could buy a bare Raspberry Pi instead of one in a kit like I did and save some money, since you won't need a power supply or the case it comes with. You could throw in a 7″ touch screen, similar to what I did on Grace's navigation panel, and have a complete computer setup that you could interact with like a chart plotter, all powered by the NMEA 2000 bus connection.

I think this is a fantastic way to get Signal K on board your boat in a single hardware device, all powered by the NMEA 2000 network. It's also a great way to add OpenCPN or OpenPlotter if you don't have a good navigation / boat management tool already on board. It's well made, easy to put together, and opens up the possibility of having access to boat data for those not interested in the more DIY approach. If you have a NMEA 2000 network, and don't have Signal K installed, this is a perfect way to do it.


Archived Comments

These are read only comments from the old system. Scroll down to participate in SeaBits Discussions, our new interactive forum attached to each article.

Charles Milléquant
November 15, 2020 at 6:26 pm
Thanks for this article. I am currently building my own setup and this PICAN Hat will be part of the game !
I however have a question : how would you manage to add an active cooling device to this setup knowing that Raspberry pi 4 tends to produce a lot of heat and will need to be cooled by a fan if enclosed in whatever case I can fit all of this into ?

Phil
November 15, 2020 at 7:44 pm
Have been using this board full time for about 2 months now. I have not had any problems with a Pi 4 getting hot (in and enclosed case). A tip that caught me out was the the NMEA0183 (RS422) input. to send data to the PiCAN-M use pints IN+ and Ground, not IN+ and IN-

Bram de Vries
November 24, 2020 at 11:32 am
Hi Steve,
great article, thanks! I do wonder though if this won’t harm the NMEA2000 power supply, as I believe it is restricted to 1A per client, and a Raspberry Pi can draw up to 3A?
Cheers,
Bram

ML_C36
December 16, 2020 at 3:45 pm
I have purchased the Pican-M and followed their installation guide. Using the candump, I am able to see the data stream similar to what is shown in the guide. I am however not able to see the data within SignalK, what are the steps for setup within SignalK to recognize the data coming from the Pican?
Note I have successfully been able to get the usb data from my Lobster fridge.

jaymzru
January 17, 2021 at 7:47 am
I was just googling ways to connect a raspberry pi to nmea2k for my Beneteau sailboat, and this article is basically everything I was looking for! Thanks

Javier
January 31, 2021 at 9:50 am
Can i use this setup to read the data of my analog sensors, fuel, etc., and export those reading on the nmea 2000 port to my garmin charploter???

Peter Wadsworth
February 10, 2021 at 9:24 pm
Would there be any incompatibility with using a Navionics chart in this type of setup ? I know it would be more expensive, but where we live, the CPN charts are not as detailed as Navionics.

Hans Bratland
March 3, 2021 at 3:09 pm
Hi, Thanks for your article.
Im looking into upgrading my system with a raspberry pi and openCPN, and wanted to ask something regarding this PICAN-M hat.. I have a daisy AIS reciever (https://shop.wegmatt.com/collections/frontpage) that outputs for NMEA0183. Is it possible to connect this AIS device to NMEA0183 on the PICAN-M board, and from there send the signal out on the NMEA2000 network? So basically using the board as a bridge between the ais and the NMEA2000 network, and at the same time get the ais data on the pi?
Thanks for any help 🙂

John Gallo
April 9, 2021 at 3:16 pm
Hi I read this and it was all Greek to me. I was wondering what classes I could take to get e up to speed. I am 72 and retired I feel left in the dust.

Jim
April 11, 2021 at 1:31 am
Thanks for a good post. I just resonantly bought my self a 3D printer, and as a first project I did a case for my CANPI + PI 3 B, see:
https://www.thingiverse.com/thing:4817180

Jim
April 13, 2021 at 9:01 am
Hi
I just recently bought a 3D printer, and one of the first project was a case to my RPI3 and PICAM-M card. More info can be found here:
https://www.thingiverse.com/thing:4817180

Christoph Ritzmann
April 18, 2021 at 1:39 am
Hi Steve
While i was surfing the web, i have found these 2 links for the pican-m case:
https://buyzero.de/products/metal-case-for-pican-m-and-raspberry-pi-4
or
http://skpang.co.uk/catalog/metal-case-for-picanm-and-raspberry-pi-4-p-1594.html
Cheers!
Christoph

Wolfgang
April 21, 2021 at 11:27 pm
Actually, you can purchase a case for the PICAN-M:
http://skpang.co.uk/catalog/metal-case-for-picanm-and-raspberry-pi-4-p-1594.html

Colin
May 8, 2021 at 11:57 am
I have a boat with a Raymarine SeaTalk network. I have a ST60+ Graphic, which can convert SeaTalk to NMEA0183, so I’m trying to use this to interface to the Pican-M / Pi.
I can see data coming over the line, but it’s just garbage – I’m not sure what’s meaning I’m not seeing the correct messages – any ideas?
root@signalk:/home/pi# stty -F /dev/ttyS0 raw 4800 cs8 clocal
root@signalk:/home/pi# cat /dev/ttyS0
����З[�����C����v��I]-�k��������|��ߵѼ���*�ُ����7��������5������-
etc, etc. I see new data every 2 seconds which matches up with what the ST60+ is supposed to be outputting.

Jim
June 10, 2021 at 4:07 pm
Is there a way to power from the HAT when NMEA 2K power is available then switch to the 5V input if available (ie on shore power)?

Bill K
July 8, 2021 at 6:06 am
I generally dislike using ‘canned’ images for microSD cards. You never know what compromises were made to set it up. I greatly prefer being able to do installs from scratch (though I’m not so gung-ho as to insist they be compiled from source). It’s bad enough dealing with package manager issues, it almost NEVER gets better starting from someone else’s unknown ‘assumptions’. Thus ‘from scratch’ is preferable.
In the limited time I was futzing with this last weekend I couldn’t find a clear set of instructions on what pieces are actually in an ‘openPlotter’ image and how to recreate it on an existing install. I don’t need to wander down the road of building a whole image, just the various installed pieces to get the same set of things running on an existing image.
Why? Well, beyond questions about known/unknown image choices, there are other things already running on this pi4 that I’d rather not have to backup/reinstall on a different OS image.

Bill K
July 14, 2021 at 5:08 pm
I also made the mistake of ordering the one that CAN power itself from the n2K bus. I meant to get one that did not. As I want to be able to power cycle the system externally, but don’t want to also power off the n2k bus. That and I don’t want the added drain on the n2k bus to power it.
I’m told that desoldering the small green power supply board on the pican-m will accomplish that. Though I don’t know if that also means I have to use the 12vdc pads on the board.

Bill K
July 14, 2021 at 5:13 pm
Upside is I did managed to get various pieces working and could see all the active data on the bus. I have several devices that provide the same sentences (gps from a puck and a sat compass, along with that and heading, pitch and other info overlapping from an airmar weather unit. Their instances are set uniquely but it wasn’t immediately clear how to select the various sources. But I’ll tinker with that another time.
Though now that I have more than one thing that can consume AIS it looks like I’ll have to get that put onto the n2k bus. Right now it’s from a Furuno FA-50 via ethernet to the TZT3 units, and 0183 to the old NN3D MFD12 plotters. I’ve got a Yacht Devices router and will probably use that. As I’m interested in keeping a PC out of the message-passing part of the equation, for now. Dedicated, lower-power devices seem to handle this sort of thing better, with less fuss over time.

Adrian
July 26, 2021 at 2:24 am
Hi!
Thanks for a great post! I am myself trying to set up a navigation computer with a PI where I want to plug in an AIS (em-trak). Doing it with a PICAN-M HAT looks like it would do the job! I just wonder (I am very much a novice with both Raspberry Pi and OpenCPN), do you install the “regular” Pi first, and set it up with OpenCPN/OpenPlotter, and when you’ve got that up and running, add the PICAN-M? Or do you do the configuration with everything from start?
I also wonder about the power supply from the HAT. Does it power the PI automatically when connected to NMEA or is that something that has to be configured?
Many thanks from Sweden!
Adrian

Gary
July 29, 2021 at 3:48 pm
I already have a RPI4 installed on my boat with a 5V 5A buck converter connected to OpenPlotter. Does it make sense for me to get the Pican-M without the SMPS?

Comments