If you've ever stumbled across Panbo then you may have realised that there are many folks that want open access to environmental and navigation data. There are plenty of mobile navigation software programs that show a chart, but there aren't so many that show instrument or actually sensor data on mobile devices.
My own boat has a PC running Nobeltec and, since recently, Expedition navigation software with CMap charts as well as a Lowrance HDS chartplotter with Lowrance and Navionics charts. I also have the Navionics Mobile charts on my iPhone. That means that charts are very well covered, thank you.
What I did not have was:
- Remote control over heating. We have under floor heating, so switching this on a few hours before we actually leave for the boat is very welcome in winter.
- A way to control the power circuits from other locations than the central switchboard.
- A way to monitor the boat's systems from home or from my bunk.
So I built my own solution to cover this.
CANBoat is a software solution running on a 'standard' Linux system and consists of the following software:
- A cellular modem stack to provide as-reliable-as-possible data connection over cellular, as well as a SMS service interface.
- A NMEA 2000 'reader' interface that receives all NMEA system data. The data is logged to rrd database and provided to Ethernet clients.
- An interface to the PLC (made by Wago) to control power circuits and measure tank levels. The PLC is running software by me as well, which provides the same Ethernet interface as the NMEA and temperature subsystems.
- A temperature subsystem that uses the Maxim 1-Wire network to measure temperature in various locations in the boat. The data is logged and provided to Ethernet clients.
- A webpage that integrates the above live data in a format that is usable on the small screen of a mobile device.
NMEA 2000 data coming from various sources
Tank levels
Interior power circuits
As you can see I have some work to do still on improving the layout -- optimizing font sizes etc.
In the next part I'll show some details of the implementation.