Make a GPS Navigation System for a Boat with a Raspberry Pi

May 03, 2016 by Jens Christoffersen

If you are a boat owner, I'll guess you've seen some of the prices on the chart plotters and navigation tools. Some of them are pretty expensive. In this article I'll show you how I deal with that.

If you are a boat owner, I'll guess you've seen some of the prices on the chart plotters and navigation tools. Some of them are pretty expensive. In this article I'll show you how I deal with that.

For thousands of years, people have been using the sea as a source of food and a way to transport goods. One of the most important things they did was to keep track of where they were. If they got lost at sea, they never knew where they'd land. Fortunately, they started to make charts and tools to help navigate. The sextant is one of the tools that was made, but this article is not about the use of the sextant.

In modern times, we use GPS to navigate at sea. The fist GPS devices for marine use gave only latitude and longitude. To find your position, you had to write latitude/longitude on a sea map. Development has come a long way since then with GPS chart plotters. They work like the GPS navigation system in your car. You have a lot of different vendors with a lot of different models to choose from. The better the model, the higher the price. One of the biggest companies, Garmin, sells chart plotters in the price range of $199 USD to over $10,000 USD. The first one has a 4-inch screen, and the last one has a 24-inch full HD screen.


Screenshot from


Screenshot from


Other vendors are Lowrance and West Marine.

Some systems let you define what are considered to be shallow and dangerous waters. When you plan your trip, you can make two points in the map and tell it to calculate the route. It'll make the trip safe, so you don't get stranded on dry land.

I didn't feel like spending that kind of money on something that I might as well build and make myself. Looking around in my different piles, I found most of the parts I needed. I found the three most important things: a Raspberry Pi, a GPS module, and an LCD screen running on 19v DC. Besides that, I needed some power circuits.


You can connect several other devices to the setup, but I'm only using a GPS module. My GPS module is the EM-411. This is not a project about the use of OpenCPN, but merely how I've done my setup.


In a pile of monitors, I found one that runs on 19v DC. To power this monitor, I'm using a DC-DC step-up converter, that I found on eBay. I need to step up the voltage because the power on my boat is 12v DC. The step-up converter looks like this:



It was a good thing I bought two of those because one of them didn't work.

To power the Raspberry Pi, I'm using a homemade regulator based on the LM338K IC. The IC package is TO-3. The LM338K is a 5-Amp adjustable regulator, and the below schematic is based on the datasheet (PDF).



This is the schematic for the Raspberry Pis power regulator:



Here's the parts list:



My GPS module is connected to the Raspberry Pi with an RS-232 to USB converter. I found that on eBay as well:

Component side:

Back side:


Download Openplotter and install it, like you install Raspbian or Noobs.

To automate the startup process, I made a few changes to the default software settings. I made a script that starts the navigation automatically. First, make sure you log in automatically at boot-up.

Start the Raspberry Pi and log in with user "pi" and password "raspberry". Then start the GUI with the command startx. Then click on:

Menu → Preferences → Raspberry Pi Configuration

In the System folder, select the boot option "To Desktop", and check the auto login box "Login as user 'pi'".



When power is applied, the Raspberry Pi boots, automatically log in as user 'pi', and start the GUI. To auto start the navigation tool, open up a terminal, and navigate to the hidden folder .config/autostart.

cd .config/autostart

I'm an active user of the TAB-key. So I write

cd .co

and hit the TAB-key. The raspberry completes with config/. Then I press the a-key, and hit TAB again. So with only pressing the keyboard 9 times, I've written the command:

cd ./config/autstart/

Open nano in that folder with the command:

nano opencpn.desktop

Write these few lines:

[Desktop Entry]
Type = Application
Exec = opencpn

Press CTRL+X and answer yes to the questions. Now that we've made a script in the autostart folder of our 'pi' user, the next thing to do is to make the script executable. While in the .config/autostart/ folder, write the command:

sudo chmod +x opencpn.desktop

The actual navigation application is called OpenCPN. You can use a lot of different map sources.

Now, all I have to do is to make some nice enclosures to have the circuitry in.


The total cost for my navigation system:

  • 17" monitor, keyboard and mouse — from my pile of recycled stuff.
  • Raspberry Pi — $35 USD.
  • GPS module — $30 USD.
  • DC-DC Step-up converter — $6.
  • DC-DC Regulator — homemade.
  • RS-232 to USB — $2.
  • OpenCPN and maps — Open source.

So for under $100 USD, I've made myself an equally good navigation system in my boat.

One improvement that I will make is to get another monitor that does not eat Ampere for breakfast. I will also consider adding different measuring tools, like a motor temperature sensor and an oil pressure gauge.

Pictures and video

To ensure everything is running on 12v, I've connected two 12v 100Ah in parallel. Onboard my boat, I've got a generator on the engine. When the engine is running, the batteries are charged.


Give this project a try for yourself! Get the BOM.

  • C
    Clayton_M May 13, 2016

    Very good article.  It combines two of my hobbies, electronics and boats.  I could see turning this into an autopilot system if you really wanted to get crazy. 
    For those of us who are on the ocean, I see one key design challenge.  I have no idea how would one prepare this setup for a salt environment.  Most of the components you could build a sealed case for, but the keyboard and mouse I have no idea.  Thoughts?

    Like. Reply
  • P
    pfrost August 03, 2016

    I’m a sailor too, nice use of a Pi!

    The Pi already had an onboard serial port, and since that GPS module seems to have TTL level serial output already, you could just wire it directly to pins 8 and 10 and eliminate the need for the serial to USB adapter!

    Like. Reply