Zum Inhalt

AvnNav und NMEA2000

AvNav kann von sich aus nicht direkt NMEA2000-Daten verarbeiten. Um mit NMEA2000-Systemen zusammen zu arbeiten, gibt es mehrere Möglichkeiten:

Variante Beschreibung System
Canboat AvNav kann NMEA2000-Daten über canboat empfangen. Senden ist nicht möglich. RaspberryPi, Linux, Windows
SignalK AvNav kann alle Daten von SignalK empfangen. Über SignalK können auch Daten, die von AvNav kommen (z.B. Wegepunkte) im NMEA2000-Format gesendet werden. RaspberryPi, Linux, Windows (wenn SignalK auf einem erreichbaren System läuft)
externe Umsetung Ein externer Umsetzer kann die NMEA2000-Daten auf NMEA0183 übersetzen (und meist auch zurück), er kann per TCP, UDP oder USB verbunden werden alle Systeme

Canboat

Mit canboat können an den Raspberry oder ein anderes Linux System angeschlossene CAN-Adapter (z.B. mit MCP2515 oder ein Waveshare RS485 CAN-HAT ) oder per USB angeschlossene Adapter (z.B. Actisene NGT-1) genutzt werden. Für die einfachen CAN-Adapter muss darauf geachtet werden, dass sie zwei Spannungsversorgungen haben (3,3V und 5V) - viele ganz einfache haben das nicht!

Canboat

Im Bild ist das prinzipielle Setup zu sehen, so wie es von den headless Images bereitgestellt wird.

Für einen per SPI angeschlossenen CAN-Adapter muss meist noch ein Overlay in der Datei /boot/config.txt eingeschaltet werden. Für den MCP2515 sind entsprechende Einträge bereits vorbereitet, diese müssen dann auskommentiert werden. Gegebenenfalls müssen die Taktfrequenz und der für den Interrupt genutzte GPIO Pin geändert werden.

Dieser CAN-Adapter erscheint dann als Netzwerk-Interface. U.U. muss er noch entsprechend konfiguriert werden - in den Images ist das bereits vorbereitet.

Das Interface sollte mit dem Befehl:

ip link show can0

sichtbar sein.

CanboatHandler

AvNav nutzt in den aktuellen Versionen canboat-rust. Dazu wird im Normalfall das entsprechende Paket installiert.

Falls noch mit dem legacy canboat n2kd gearbeitet werden soll bitte in der legacy Dokumentation nachlesen. Die Konfiguration muss jedoch wie hier beschrieben über den AVNCanboatHandler erfogen.

Die Verbindung zu canboat stellt der AVNCanboatHandler bereit. Er ist über die Seite

 ->

erreichbar.

Per default ist er zunächst disabled. Um ihn zu aktivieren editiert man den Handler.

Canboat Handler

Canboat Handler Konfiguration

Wichtig hierbei sind die Werte für canboatKind und canboatDevice. Diese definieren, welches Gerät mit welchem Protokoll angesprochen wird. Eine Beschreibung aller Parameter findet sich bei der Serverkonfiguration. Es können bei Bedarf auch direkt Parameter für das genutzte Kommando canboat server angegeben werden.

Wenn man als canboatKind actisense angibt wird man für canboatDevice ein serielles Device angeben. Typischerweise sollte man ein Device mittels /dev/serial/by-path/... angeben, damit es auch nach einem Restart sicher erkannt wird.

Falls es sich dabei um ein per USB angeschlossenes Gerät handelt, muss man dafür sorgen, das der AVNUSBSerialReader dieses Gerät nicht ebenfalls anspricht. Das einfachste Vorgehen dazu ist, die Seite

 ->

zu öffnen, den Eintrag für AVNUSBSerialReader zu beobachten und das Gerät anzuschliessen. Wenn der AVNUSBSerialReader das Gerät erkannt hat, beim Gerät auf klicken und den type auf ignore setzen. Damit wird der USBSerialReader das Gerät nicht mehr beachten.

Nach dem Speichern der Einstellungen startet der AVNCanboatHandler direkt den canboat server und überwacht, ob er läuft. Bei Problemen kann man über die Seite

 ->->

in der AvNav Log-Datei nach den Ausschriften vom canboat Kommando suchen.

Je nach gesetzter Konfiguration setzt der Handler eine Verbindung zum NMEA Port von canboat auf , um die NMEA0183 Daten von dort zu empfangen. das ist die Standard-Konfiguration und sollte in den meisten Fällen ausreichen.

Falls die NMEA0183 Daten nicht zu AvNav gelangen sollen oder keine Positions- oder Zeitdaten enthalten sind, kann man auch die direkte Dekodierung einiger NMEA2000 Daten aktivieren (readN2K). Wenn aktiviert, kann AvNav bei Bedarf auch RMC Datensätze erzeugen, falls in den in AvNav verfügbaren NMEA Daten kein RMC vorhanden ist.

Windows

Um canboat auch auf Windows zu nutzen, muss man es zunächst dort installieren. Dazu kann man von der GitHub-Release-Seite das passende Windows-Programm herunterladen (z.B. canboat-rust-windows-x86_64.exe). Nach dem Herunterladen muss man es in ein Verzeichnis kopieren, was im Suchpfad liegt und es in canboat.exe umbenennen.

Falls man den Suchpfad nicht kennt, kann man ihn z.B. erfahren, indem man ein Kommandozeilenfenster (cmd) öffnet und darin

echo %PATH%
eingibt.

Oder man sieht sich die Umgebungsvariablen unter Systemsteuerung/Systemumgebungsvariablen bearbeiten an (PATH).

Man kann natürlich auch ein neues Verzeichnis z.B. unter AppData\Local anlegen, es dort hineinkopieren und danach den Suchpfad anpassen. Nach einer solchen Anpassung muss der avnavservice einmal neu gestartet werden.

Unter Windows wird socketcan typischerweise nicht funktionieren - aber beispielsweise actisense. Als canboatDevice wird man dann so etwas wie COM5 eintragen - das kann man nach Anstecken des USB Sticks im Geräte-Manager herausfinden.

Zusammenwirken mit SignalK

Wenn die NMEA2000-Daten auch direkt (ausserhalb von AvNav) zu SignalK geleitet werden, sollte für den SocketWriter der für das Senden von NMEA0183 Daten zu SignalK genutzt wird (default auf Port 34568) eine Blacklist mit den Namen des AVNCanboatHandlers (default: canboat) eingetragen werden, damit die NMEA2000-Daten nicht auch noch einmal per NMEA0183 zu SignalK gesendet werden.

Ein Senden von Daten über NMEA2000 ist bisher nicht vorgesehen, das kann ggf. über SignalK konfiguriert werden.

SignalK

Die Linux- und Windowsversionen von AvNav können Daten auch von einem SignalK Server empfangen. Dieser kann auf dem gleichen System laufen oder auf einem anderen System, das per Netzwerk erreichbar ist. Für Details siehe die Beschreibung der SignalK Integration.

Externe Wandler

Es gibt verschiedene Produkte, mit denen NMEA2000-Daten in NMEA0183-Daten (und zurück) umgewandelt werden können. Je nach Produkt werden sie über das Wifi Netzwerk (per UDP oder TCP) oder über USB bzw. NMEA0183 seriell verbunden.

Neben kommerziellen Lösungen gibt es für diesen Zweck auch Open Source Projekte. Ein Beispiel ist der NMEA2000 Gateway auf ESP32. Mit diesem Projekt kann man mit einigen wenigen Komponenten ohne Lötarbeiten einen Umsetzer NMEA2000 <-> NMEA1083 zusammenstecken. Dieses System ist explizit mit AvNav getestet. Man kann den Umsetzer sowohl per Wifi mit AvNav verbinden, als auch z.B. per USB. Insbesondere für die AvNav Android App ist das eine einfache Lösung.