Skip to content

MartinDavidWaller/SeaTalkNMEA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SeaTalkNMEA

SeaTalk is a simple networking interface used by Raymarine to link their range of marine equipment together so that data can be shared across all devices. Technology wise it is best described in a document written by Thomas Knauf found here: SeaTalk Technical Reference.

Hardware

The project is designed to read SeaTalk data and convert it to standard NMEA 0183 data. Such devices are available commercially but can be very expensive. The one manufactured by Digital YACHT is sold for £150 whereas the solution here can built for £10 - £20.

It is based around the Arduino Pro Micro. This device was chosen as it provides two hardware serial ports. One port is accessed via the USB connection and the second is available on the board. The intention being to read the SeaTalk data via the on board serial port and make the NMEA data available via the USB.

SeaTalk uses a 12 volt signal line. To interface this to the Arduino it must be converted to TTL level, this can be done using the circuit published by Berreizeta:

This can easily be built on Veroboard and the whole device assembled as:

The GND is connected to the Arduino GND pin and the DATA is connected to the Arduino RXI pin.

Software

SeaTalk sends 9 data bits for each transmitted character, 11 including start and stop bits. This is impossible to process with the usual Arduino hardware serial support so use is made of a library supplied by Nick Gammon. There is a post on the Arduino forum Mods to HardwareSerial to handle 9-bit data that explains more. The most recent version of this HarwareSerial code can be found in the Source folder.

Installing this is not that straight forward. You need to search for HarwareSerial.h in your Arduino IDE installation. With the Arduino IDE 2.1.0 this will typically be something like:

C:\Users\marti\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\cores\arduino

In there you will find 3 files HardwareSerial.h. HarwareSerial.cpp, and HarwareSerial_private.h. Save these files and copy in the 3 equivalent files from the HardwareSerial9bit source folder.

With the older Arduino IDE 1.* the same files are typcally located here:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino

By default, the NMEA talker ID generated is "GP". This can be changed by talking to the device via a simple terminal emulator such as PuTTY, and sending it the Tcc command where the two characters cc represent the required talk ID. This is stored in EEPROM so it only has to be done once.

A debug mode is also supported. This can be turned on or off using the DT or DF command. If true proprietary NMEA sentences are generated that show the raw SeaTalk data that has been received.

Typical sentences generated, with debug enabled, look like:

 
 $PIMSST1,D,20,41,0,0*5e
 $GPVHW,,,,,0.0,N,0.0,K,*77
 $PIMSST1,D,0,42,64,0,0*41
 $GPDBT,0.0,f,0.0,M,0.0,F*06
 $GPDPT,0.0,0*49
 

References:

Releases

No releases published

Packages

No packages published