Homebuilt Integrated Chartplotter and Autopilot

I’m going to try something bigger next.

My plan is to build an integrated chart plotter with a microprocessor controlled autopilot using open sourced hardware and software. That means, in the end, I should spend less than $500, total, for a fully functional autopilot and chart plotter.

Chart plotter Parts List

  1. Raspberry Pi
  2. OpenCPN
  3. GPS Module
  4. 10″ Display (by far the most expensive item)
  5. LCD display
  6. Controls (buttons, etc)
  7. Case/mounting

Autopilot Parts List

  1. Arduino ATMega 328
  2. Relay board
  3. Ethernet board
  4. Digital Compass
  5. Ethernet crossover cable

As far as implementation is concerned, at this point I have only done some basic research and tests.

I have already hooked up the existing hydraulic pump directly to a 12v source, as you can see below:

The next steps include:

  1. Installing OpenCPN on a Raspberry Pi device and getting that to run. Once installed on the boat, just that will be a nice addition, since I currently use a small PC hooked up to the inverter to power OpenCPN on board.
  2. Build an install a relay shield on my Arduino, and code it to keep a compass heading (I already have a 3-axis compass breakout).
  3. Build and add an Ethernet shield to my Arduino, and get it to communicate with Raspberry Pi
  4. Add a rudder angle sensor to the Arduino module, and display the information on the LCD screen in the cockpit
  5. Extract the NMEA messages (crosstrack, etc) from OpenCPN, and set that as the heading to hold on the Arduino module
  6. Have a drink and let the boat drive itself

There are of course additional features I am planning:

  • Configurable alarm to remind the “helmsman” to do a safety sweep
  • Connect GPS output to VHF radio for DSC service
  • Engine sensors (RPM, temperature, etc)
  • Cameras
  • TBD

5 thoughts on “Homebuilt Integrated Chartplotter and Autopilot”

  1. I have been using on-board self-made chartplotters for a few years, starting with SeaClear on an old laptop and progressing to OpenCPN on RPi linked to my on-board GPS. I have recently upgraded my system using an improved HDMIPI screen and adding AIS from a proprietary AIS engine (before I knew about the cheap decoders) and SeaTalk translation for instruments. I have used KPLEX to filter signals down to lower frequency to avoid overloading the RPi

    I am a novice to comms protocols and even to linux and I am struggling with inputting data from a HMC5883L compass and BMP180 barometer. I have signals and have graphed output but I am currently working on how to get the i2c signals into kplex. I have tried writing to a text file and writing to a FIFO. The FIFO works because I can interogate it with some python code but I can’t get kplex to input it. Maybe it is to do with \r and \n at the end of line. Not sure how to implement that.

    Any pointers?

    1. I really need to write more blog updates on this. Work and Life just get in the way.

      I’ve changed my approach because of some of the same issues you’ve run into (namely protocols and communication between devices). I’ve abandoned the I2c approach, and have gone wireless with Xbee modules communicating straight NMEA sentences.

      The beauty of XBee is it is mesh network compatible, so you can broadast the message and all other nodes can receive them — so a simple arduino/Xbee device just needs power, and it can receive all NMEA sentances from the entire vessel, listening for only the ones it cares about

      Maybe that will help?

      1. Thanks for your prompt reply. I’ve just had a quick look at Xbee and it looks interesting. However, I will try to solve my current protocol problem first even if it takes time just so that I learn a bit. Next I’ll look into Xbee. Good luck with your project.


  2. I forgot to explain that everything I have done so far has been via serial-usb adaptors which is probably inefficient but that was because of my failure to get the serial GPIO to work. I even have a usb sound card to enable me to hear a loud alarm.

    I would be very interested to see how you implement the engine sensors.

Comments are closed.