About OpenSkipper

Welcome to the OpenSkipper project, which provides Open Source C# code for Windows for integrating and displaying NMEA 0183, NMEA 2000 and AIS data from nautical instruments, GPS units and internet data sources. OpenSkipper can be run on a laptop aboard your boat to show electronic instruments displaying speed, heading, etc. Open Skipper can also receive and transmit data over multiple connections, including a serial port (for NMEA 0183), an ActiSense NGT-1-USB NMEA-2000-to-USB converter to read NMEA 2000 (N2K) data, and wired and wireless network connections (including TCP and UDP). It also contains a built-in webserver, so you can run OpenSkipper on a laptop and use this to display data on an iPad or Android phone or tablet.

OpenSkipper was initially developed by Dr Andrew Mason in the Yacht Research Unit and Dept of Engineering Science at the University of Auckland, New Zealand, with fantastic assistance from student Jason Drake. OpenSkipper was updated in 2014 by Timo Lappalainen and Kave Oy from Finland.

If you are interested in the NMEA 2000 standard, then Open Skipper provides both code and definition files for interpreting NMEA 2000 messages. This work uses the definition files developed by as part of his excellent CanBoat project.

NMEA 2000 messages can be received using the Actisense (www.actisense.com) NGT-1-USB NMEA-to-USB converter (a product that we recommend). We have not signed any non disclosure agreements with Actisense, but instead written our own low level COM-port driver. Our accessing of an NGT-1 in this way is not officially supported by Actisense. It works for us, but we take no responsibility in any way for any consequences.

Open Skipper contains XML definition files used to describe how an NMEA 2000, AIS and NMEA 0183 message should be decoded. These definition files are a beta release, have not been tested and contain errors, so please do not rely on any output from open skipper for your navigation. These definitions are unofficial, and are not supported by NMEA (www.nmea.org) or any other body in any way. We welcome community feedback on improvements to these.

Open Skipper is beta software designed to serve only as an aid for navigators. It in no way replaces the need to follow good nautical practices.

By using this software, you agree to the terms of the GNU Public License v3 (http://www.gnu.org/licenses/gpl.html), and in particular that:

There is no warranty for the program, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide the program “as is” without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program is with you. Should the program prove defective, you assume the cost of all necessary servicing, repair or correction.

In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who modifies and/or conveys the program as permitted above, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use the program (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the program to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.

All trademarked terms are the property of their respective owners.

62 comments to About OpenSkipper

  • Timo Lappalainen

    Hi all,

    So I have ready libraries for Arduino to replace Actisense NGT1 interface. You need only Arduino due board and e.g. MCP2562 bus tranceiver to make full system. The library has been published on https://github.com/ttlappalainen.

    My own system has uses also Arduino other serial lines for reading NMEA0183 data and sending them to N2k bus. So it works as NMEA0183 combiner, NMEA0183->Nk2 converter and N2k->PC interface so replacing 3 devices with single Arduino. It needs only three extra 3 RS4222 line tranceivers for NMEA0183 connection.

  • René

    Hey all,

    Very interest stuff going on here… my compliments!

    Just a little comment. I’m also investigating this plugging to the N2K bus. The Arduino Due and it´s CAN bus is definitely a viable option. But I also found another alternative: Beaglebone Black. It´s quite a bit more powerful, also has a CAN controller and goes as far as including a couple of programmable microcontrollers with real time capabilities… pretty powerful stuff for 55$. Mind you that you would need to get into the Eclipse, Linux, ARM cross compiling, etc… No such thing as a free lunch.

    I’m trying to put together a tilt compensated compass with noise reduction capable hard iron and deviation compensation. Why? Because I can! (that and I don’t want to pay 4k for a B&G) :)

    Cheers!

    René

  • Timo Lappalainen

    René, very interesting. I choosed Arduino Due, because it is rather low power and I found ready CAN library solutions for it. So I needed write only N2k extension. My N2k needs a bit development to make it platform independent. Currently it can be used with different CAN controllers by inheriting base class.

    About the compass. I have GPS compass and like its good accuracy in all situations. One can get e.g. Seapilot Vector GPS compass for 850 €. Can you beat GPS compass with any magnetic one? If yes, I am interested.

  • Timo Lappalainen

    Hi all,

    There is fixed beta on http://www.kave.fi/Apps/index.html. LatitudeDDMM and LongitudeDDDMM formats did not work on south and west side. Now you can also customise them.

    Timo

  • Bill Corlett

    Hi, Re your conversation with Rene.

    I have a an existing commercial Marine AP (Lowrance / Simrad WP30 with NMEA0183). The WP30 has an in built compass, but this also accepts and prioritizes an external magnetic feed if required. I’m undertaking a project to provide a low cost back up for the WP30. In doing so I’m trying to incrementally migrate / move away from propriety based systems to a more simple open based systems approach….based on the Arduino

    I would appreciate your views on using a ‘GPS Compass’ as opposed to a ’tilt compensated electronic compass’ as a feed for an Arduino based marine autopilot. My concerns with this are complexity, accurate & consistent calibration.

    The main area of concern around the use of GPS ‘compass data strings’ seems to be if GPS derived ‘Compass’ data is being received (cycled) at a fast enough rate to enable the autopilot software to track, respond & react to the vessels short term position ‘fluctuations’? ?

    Looking at the NMEA feed from various GPS / ChartPlotter’s the message string seems to cycle every 1 – 3secs.

    In your opinion is this sufficiently quick?
    Are there any other issues that would stop one using a GPS Compass feed?

    Regards

  • Timo Lappalainen

    Hi Bill,

    Sorry fo delay – I do not get alarm from this site.

    I did not completely understood your question. I have Raymarine STX10 and run it with GPS compass with 10 Hz heading output. Anyway I think Raymarine uses in combination internal accelerometer data. This I realized, when I tried to simulate running with autopilot on ground, when boat is not moving – the pilot did not react right to heading changes. So I think that for accurate fast control you would need both heading data for slow term correction and accelerometer for true control. Anyway if you are thinking to use normal GPS 1 Hz feed, it may not be good enough. I would work fine up to some weather condition because movements are rather predictable. With heavier movements errors on normal GPS heading (COG) start to grow. Ofcoarce you you can filter it a lot, since accelerometer is required for control.

    Arduino based autopilot would be interesting. In basic it would be some PID control.

    Timo

  • Owen Mace

    Timo
    Thanks for your suggestions. I decided to use an ELM329 chip and am now reading battery voltages. No transmission to the N2k bus whatsoever. Next – expand the range of PGNs, change from serial to USB or bluetooth and then write an android app.
    Owen

  • Timo Lappalainen

    If you are using OpenSkipper for receiving data, you could just enable web-server on it and write web-pages four your data. Then you do not need to write any special android app. Instead you can use any web-browser. There are sample web-pages under www directory on OpenSkipper.zip

    Timo

  • Owen Mace

    Thanks, Timo, I will try that. Preliminary look at the data suggests some non-standard use of N2K, so OpenSkipper will be very useful to check. Ultimately, I want the system to SMS me when battery voltages drop below a preset values, AC is lost or bilge pumps operate when I am away from the boat.

  • Timo Lappalainen

    For offline monitoring I prefer some alarm system with some inputs and outputs or if you like to make your own, make it e.g. from Arduino based board and use sleeping to save batteries. I made anchor chain counter/display/control box with Arduino. It has average current about 10 mA. For othermonitoring I have Celotron Centro alarm system.

  • Anthony

    Timo – I looked at your schematic ArduinoDue_CAN_with_SN65HVD234.jpg. Can you explain the use of CAN0 and CAN1? I assume I just connect CAN0 to the NMEA2000 network and ignore CAN1. Please advise

    Thanks

  • admin

    Time replies:

    Hi Anthony,

    Just use CAN0 and ignore CAN1. So connect CAN0 to NMEA2000 network.

    Currently my NMEA2000 Arduino library does not support use of several CAN bus on same Arduino. I have done some preliminary tests, but it is not finished. This feature will be necessary only if you want to make NMEA2000-NMEA2000 bridge device, which is not so common on small yahcts.

    I’ll prefer to send Arduino NMEA2000 library questions on GitHub.

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>