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.


This is a companion discussion topic for the original entry at https://seabits.com/nmea-2000-powered-raspberry-pi/

I am currently testing an alternative to the PICAN-M from Hat Labs and hope to have some results in the next month or two. The name of the product is the Sailor Hat for Raspberry Pi and is available at https://hatlabs.fi/product-category/sh-rpi/sh-rpi-devices

Do you think that I could run this PICAN-M / Pi Solution off of the back of a Fusion Entertainment MS-RA70NSX head unit, which has NMEA2K on the back for their NMEA remotes?

The goals here would be to offer up an elegant media server solution, improve overall audio quality (versus Bluetooth) with the Pi and potentially a USB-powered DAC.

It should work in theory, right? Am I missing something?

That could potentially work. The only things I would be concerned about is power and termination. Most Fusion head units will power a NMEA 2000 network, while some require a special cable. You’ll have to figure out which one your model is.

Once you have the power side of things, then you’ll still need to terminate it on both “ends” so you will have to have a couple of tees at least along with the terminators. I don’t think you’ll have reliable results by just plugging the PICAN directly into the head unit without that.

Really interesting post. Apologies for newbie question, but if you can point me in the right direction then I’ll do my homework so hopefully future questions will be more intelligent!
I have a Raymarine setup which runs SeaTalk NG. I would like to achieve the following:

  • be able to deliver course-adjust instructions to the autohelm (SPX10 Course Computer). I would enter these using 4 Momentary Push On switches: +/- 1deg to port/starboard & +/-10deg to port/starboard
    I’m picturing a switch panel connected to the Pi, and the Pi then connected to the SeaTalk NG circuit.
    Is this a feasible goal? What kit do I need?
    Many thanks, Rich

My first reaction would be whether there is a Raymarine remote that you might be able to add that would be marine grade, already tested for this sort of use, and more likely to work :grinning:

However, I don’t see why you couldn’t use a Raspberry Pi + SignalK to do some of this. The easiest way, and it would require a decent amount of technical ability still, would be to connect the switches to the Pi, and then use something like NodeRED + SignalK to watch those inputs and send the autopilot change messages out. Depending on those messages, you might be able to use some of the existing plugins in SignalK that do Raymarine autopilot stuff, or you might have to write your own.

Sorry for the newbie question, but I just picked up a new boat, and wanted to play with some stuff like this. What I was hoping to do was get this Pi hardware to put on the NMEA2000 bus and then be able to access this information from maybe a webpage I put together being hosted by the Pi?

I was thinking that way I can dedicate an e-ink tablet or Kindle paperwhite (waterproof and can view in direct sunlight) on my boat dashboard. I would like to see speed, RPM, fuel levels but also some details outside the network like Time, Time to sunset, some sensors I plan to add to the Pi.

The existing tablet on the dash can’t be seen in the sun as it’s just not bright enough. The problem is the app for the existing NMEA transmitter is only for Android tablets and does not have all the data I would like to see.

Hi @Ivan

Your concept seems reasonable enough. What I would want to do first is to verify that the information you want to display is indeed on the NMEA 2000 network and that it is in a format that can be interpreted. In some cases, manufacturers will use proprietary busses to transmit their information. In other cases, they’ll use NMEA 2000 but still use proprietary messages that can sometimes be hard to decode.

The easiest way to do this would be to grab a Pi and stick it on the bus and see what is there. Pretty low investment cost, and if for some reason you needed to do some software development or create a SignalK plugin for your engines or the data, you could start there.

Thanks. Yeah, I have a couple Pi 3Bs laying around here, and a zero W sitting here too. I figured I would pick up that CAN + PS top hat for the 3B and give it a go.

Since the data feeding the tablet app via wifi is This device which just sits on the CAN bus, (and that info is also available on the CAN Open dial LCD display) I think getting the data into the raspberry pi should be possible.

I just am not very experienced with raspberry pi yet. I first was looking at an e-ink android tablet to load this existing wifi tablet app, but I kind of want more data and using a Pi might be a good interface that would allow more expansion into the future.

I would definitely check out SignalK and even Scott Bender’s excellent app WilhelmSK. The latter requires iOS, but I use it in tons of places and really like the reliability and marine related features.

Even without that, the instrument panel plugin app for SignalK, which it comes with by default, displays any sort of data and gauge on a webpage, and likely would be a good starting point for the data.

Sorry to bump an old topic, but I’m embarking on something like this for my RV. As such, I’m pretty unfamiliar with the ins and outs of NMEA 2000 and what it is capable of over an RPi.

The question I have is whether two RPi units both running Signal-K, but where only one is connected to an NMEA 2000 device can pass data back and forth, wirelessly.

My use case is pretty simple:

  • VenusOS running on an RPi 3B,
  • Plex on an RPi 3A connected to an NMEA 2000 enabled JL Audio Media Master head unit
  • Signal-K Server running on an RPi 4B at the other end of the RV where the tank sensors are located

I want to monitor and control everything via Signal-K and WilhelmSK. Can the RPi units transmit data and control signals wirelessly? Or do the two Signal-K RPi units need to be physically connected to the NMEA 2000 network (assuming they can be powered independently).

I think I’d need a little clarification before being able to say yes or no.

I assume the VenusOS will be running one copy of Signal K. Is it connected to Victron stuff? No NMEA 2000? Some Victron stuff does leverage NMEA 2000, so you may end up having it already there…

Is the Plex server the only device on NMEA 2000?
What else do you want to control on NMEA 2000?
For that matter, what all do you want to control in general?

Signal K can talk to other Signal K servers over WiFi/ethernet/network and you can share between them, but when you get to controlling things, it would depend on what is connected to what where, and what sort of controls you’re looking to leverage.

Yes. One RPi will be in the forward section of the RV near the batteries and chargers running VenusOS Large which includes an optional Signal-K and Node Red server built in to the OS. The connections will be through USB-VE.Direct cables.

The only devices in the RV that support NMEA will be a soon-to-be-purchased SeeLevel NK2 tank monitor and a JL Audio Media Master head unit (stereo). I may eventually upgrade the charging and inverter system which may eventually have NMEA capabilities but for now, it’s just these units. My plan was to employ PiCAN-M HATs on the RPi devices.

The Plex server will be in the aft section of the RV sitting next to the head unit so would be ideal to control the head unit via its NMEA 2000 port. The tank monitors are squarely on the middle of the RV and relatively difficult to reach. I just need to read them.

Long term plans may include fan controls, lights, and inverter controls. The inverter installed currently supports RV-C but the support for that protocol isn’t as robust it seems. I’m not sure I can run both RV-C and NMEA devices - the USB adapters seem to be insanely priced as well.

I think what would help here would be a high level diagram on how you would like to see them connected, and what each is connected to medium-wise to understand how you’d like them to work.

In theory, you could have Signal K instances connected via direct connections to some of these, plus VenusOS of course, and have Signal K share info back and forth over a WiFi network. Where you will run into limitations is what you want to control from where.

In some cases, Signal K could share the info between instances, but actual control logic might require a new plugin, or some sort of functionality that doesn’t exist yet. That diagram could help us understand more about those relationships, and where you would want to control what.

Just thought I’d mention that while your article extensively says that the board will power itself and the PI from the NMEA 2000 line, you actually link to the version of the PICAN-M board that does not provide that functionality. You might want to update your links to point to the correct version (or make it clear that there are two versions of the board) so folks don’t order the wrong one, thinking it’s the one you are describing in your article.

Hmmmm… when I click on the link I end up on the board that indicates it provides power to both:

This board includes a 3A SMPS. The 12v is from the Micro-C network can be use to power the PiCAN-M and the Raspberry Pi.

The URL that I end up on is below:

It does look like they’ve changed their links from the original article almost 3 years ago, but it redirects to that link above.

Looks like it’s just the second one – in the “Cost & Conclusion” section at the end.

I did speak with someone at Copperhill Tech and they sent a link to the SMPS that you can buy separately for not much more than the difference of the PiCAN-M and PiCAN-M-SMPS: Pololu - 5V, 3.2A Step-Down Voltage Regulator D36V28F5

Actually, it’s also the link on “I ordered one from Copperhill Technologies” at the top as well (under the “An easier way….” section). Maybe Copperhill changed it to the non-powered version and added the powered version separately…