Monday, January 8, 2024

A 15" Touchscreen Chartplotter for around $500?

 First a belated Merry Christmas and Happy New Year everyone!

My boat came with a Garmin 4208 chartplotter.  Unfortunately, the prior owner(s) did quite a hack job installing it and, as a result, there was a rather large and unsightly open hole in the hull behind the unit.  This hole prevented me from ever removing the chartplotter from the helm as it was the rain shield.  Well, a chartplotter is an expensive umbrella, and after having spent many years acting as such, it began having some issues.  The case seal had failed and allowed moisture to enter. Best I can tell, this caused a light film of mold to start growing in the screen and was slowly making it unreadable.  It was time to find a solution.

The Old Garmin Plotter,
as installed by prior owner

I could have bought Garmin's current replacement unit for around $3000, and would have the same functionality that I had.  There were a couple problems with this.  Since my depth, wind, and autopilot are Raymarine, they did not like talking to the Garmin.  Being from the aviation world, I'm also not a big fan of Garmin (particularly after they charged me over $150 for a 32 MB data card while standard 1GB SD cards were selling for around $20).  While talking with the harbormaster at my new marina, he was telling me about Openplotter and how he and others had built their own chartplotters using a Raspberry Pi computer and a few other inexpensive electronic bits.

Who cuts a hole like this?

Fixed, with a mount and connectors
for the new touchscreen

I did some research and decided that it would be worth the effort to try and build my own chartplotter using Openplotter.  If successful, I would have a nice chartplotter that would be capable of integrating the information from the Garmin radar, Garmin sonar, Raymarine wind, Raymarine depth, and Raymarine autopilot without having to replace all of this equipment with items from the same maker.  I could also add a 15" touchscreen interface, AIS receive functionality and, the best part, this would cost me only a fraction of the cost of a complete solution from any of the big name marine electronic manufacturers (a 16" Garmin package would likely run over $7000 by the time all was said and done).

So, for this experiment, I purchased the following:

  • A Raspberry Pi 4 w/4GB memory, case, data card, fan, and card reader $125
  • 15" touchscreen display $120
  • Outdoor VESA mount for monitor $23
  • 3 64 GB micro SD cards for programming and backup $20
  • 12v powered USB hub (for connecting and powering peripherals $20
  • A USB GPS antenna that outputs NMEA sentences $20
  • A Berry IMU gyroscope/compass/acceloremeter chip $38
  • USB RS485/422 converter (for NMEA output) $18
  • RTL-SDR Radio (for AIS receive) $33
  • VHF whip antenna (for AIS receive) $10
  • Opticoupler (for SeaTalk input) $8
  • 2 128GB USB flash drives (for chart/data storage) $25
  • 12v to 5v USBC power supply $12
  • Various cables, connectors, fuses $80
Installing the OpenPlotter software package is pretty easy.  You download the Openplotter image for Raspberry Pi and use an imaging tool to copy it to the micro SD card.  You then insert the MicroSD card into the Pi, hook up the monitor and boot it up.  In order to program and modify things, I also used a Bluetooth keyboard that I was able to add once the Pi booted up.  Then the fun really started.

A touchscreen at the helm
(had to add an anti-glare screen protector)

I won't go into all the details on how to setup OpenPlotter as there is a fair amount of information out there already and it all depends on what sensors and equipment you are trying to connect.  I actually started work on this at home, and overall it took me several months worth of occasional tinkering plus the actual installation on the boat.  But, if you are considering taking on a project like this, I do have a one bit of advice.  Buy a couple spare memory cards for the Raspberry Pi.  You will want them to make backups.  I would suggest keeping two different backups, one for every major milestone and another for more often created backups.  This way you will have options for going back to two points without having to start over.  There were a couple times during my work where a bug was introduced but not noticed until several changes later.  If I didn't have the major milestone backup, I would have been unable to back up to the point before the bug was introduced.

Another thing I didn't realize was that the Raspberry Pi, at least at the time of writing this, does not support the equivalent of a "right click" for touchscreens (either a long-press or double tap).  Since OpenCPN is difficult to use without the right click, I had to find a solution.  I found there is a software driver called Twofing that converts a two fingered tap into a right click.  I installed and configured this driver and was able to right click on things by tapping two fingers on the screen on either side of the item I wanted to right-click on.

I setup the Raspberry Pi to automatically start OpenCPN on boot such that it takes up about 75% of the screen real-estate and another package called Kip to display the information I wanted and is typical of a chartplotter on the other 25%.  The Kip package is actually a configurable web page and can display basic numeric and text data, graphs and gauges, and has a nice compass rose that can display wind speed, direction, laylines, and direction to your next waypoint all on a single dial.  It can display any data that is collected by the system.

Plotter interface in Day mode

...and in night mode

I've still got a little work to do, but so far I am very happy with the results.  The Raspberry Pi gets position information from the USB GPS receiver, wind and depth information from the Raymarine Seatalk connection, AIS information from the RTL-SDR card.  An OpenCPN plugin supports the Garmin HD radar and utilizes free NOAA digital charts and even Explorer charts for the Bahamas (and other areas) from O-charts.  Routes are finally able to be output via NMEA 0183 to the Raymarine autopilot, and I even have pitch and heel information from the IMU. Using a GRIB file downloader, I can load and display weather forecast information overlayed on OpenCPN charts. I can also connect wirelessly to the Raspberry Pi and monitor the boat using my cell phone or a tablet.  And one more added bonus, with the 128GB memory stick, I not only have enough storage for charts, but can also use it as a media server/player...so much of my music collection can be streamed to my Bluetooth enabled stereo. 

The two items supported by the old Garmin that I don't have working are the XM radio and the Garmin sonar.  Although I haven't removed the XM unit, I've never used it and thus far I don't have any intention of using it.  I am unaware of any existing support for the sonar and when I have more time will look at writing a plugin or app to interface and decode the data sent from it (I do see the sonar data on the Pi, just don't know what to do with it yet).  I should be able to at least get depth information from it, if not a full sonar image with fish detection, etc.

The one thing I may change is the touchscreen I am using.  Since this was essentially an experiment, I didn't want to throw too much money into it without knowing how well it was going to work.  I thought the screen I chose would be bright enough to be daylight readable, but I didn't take into account all the reflected glare onto a shiny touchscreen.  The first time I tested it with the sun behind me, the shiny surface made a better mirror than display.  I added an anti-glare screen protector that has helped a lot, but would also like if the screen was brighter.  I know there are brighter screens out there, but they will increase the price of this project a bit.

I will say that, if you are not comfortable with computers and soldering and playing with electronic internals, this project may not be for you.  There is a lot of fiddling with hardware and configuring software involved.  There is nothing that is too complex (except for possibly the sonar, I didn't write any code beyond the script to automatically start the interface the way I wanted it), but there are a lot of individual pieces that need to be setup to work together.  If you are comfortable with these tasks, you can make yourself a very capable chartplotter using well developed and free open-source software.