NMEA2000 und ESP32

NMEA2000 verdrängt zunehmend NMEA0183 als Standard. Leider ist NMEA2000 ein recht komplexes Protokoll und lange war es kaum möglich eigene Projekte zu realisieren. Das hat sich mit der NMEA2000 Library von Timo Lappalainen geändert (https://github.com/ttlappalainen/NMEA2000).

Die Library unterstützt unterschiedliche Microcontroller, darunter den ESP32. Der ESP32 von Espressiv ist sehr leistungsfähig und dank WLAN und CAN-Bus-Schnittstelle bestens für eigene Projekte geeignet.

Die hier beschriebenen Projekte nutzen die NMEA2000 Library und den ESP32 (ESP32 NODE MCU). Die Programmierung erfolgt sehr einfach in der Arduino Entwicklungsumgebung.

Die Projekte sind im Detail auf GitHub (inklusive Hard- und Software) dokumentiert: https://github.com/AK-Homberger.

Folgende Projekte sind bisher umgesetzt und können leicht nachgebaut oder modifiziert/erweitert werden:

  • NMEA2000 zu NMEA0183 WLAN-Gateway
  • NMEA2000 M5Stack Daten-Display
  • NMEA2000 Daten-Sender
  • NMEA2000 Daten-Recorder

Für die Messe wurden die wesentlichen Komponenten auf einem Demo-Board zusammengestellt. Damit lässt sich das Zusammenspiel der Komponenten anschaulich darstellen:

Die Seatalk-Autopilot-Fernbedienung ist ebenfalls auf dem Demo-Board enthalten, wird aber auf einer eigenen Seite erklärt (https://open-boat-projects.org/diy-fernbedienung-fur-autopilot-raymarine/).

Das Simulator-Board ist nur für die Messe und dient Demonstrationszwecken. Es empfängt simulierte Daten über USB-Seriell von einem PC, wandelt sie in NMEA2000 PGNs und sendet sie an den CAN-Bus. Der Simulator wurde mit dem ActisenseListenerSender von Timo Lappalainen realisiert. Das Wifi-Gateway empfängt die NMEA2000-Daten vom CAN-Bus und versorgt damit andere Exponate auf dem Messestand mit simulierten Daten.

NMEA2000 zu NMEA0183 WLAN-Gateway

  • Das WiFi-Gateway empfängt die Daten vom NMEA2000 CAN-Bus und wandelt sie zu NMEA0183.
  • Die NMEA0183-Daten werden per WLAN bereitgestellt (NMEA0183 über TCP, Port 2222).
  • Die Daten können von vielen Komponenten dargestellt/genutzt werden. Zum Beispiel: OpenCPN, AVnav, Tablet mit NMEA-Software, …).
  • Das Gateway liefert die Daten auch im JSON-Format. Die Daten können dann drahtlos mit dem M5Stack Daten-Display angezeigt werden.
  • Das Projekt auf GitHub enthält zusätzlich noch einen NMEA0183 Multiplexer (serieller Eingang für AIS Daten) und Spannungs-/Temperaturüberwachung. Diese Funktionen sind jedoch optional.

WiFi-Gateway Prototype:

M5Stack und AVnav auf 7“ Autoradio mit Daten vom WiFi-Gateway:

 

NMEA2000 M5Stack Daten-Display

  • Der M5Stack ist ein fertiges Produkt mit einem ESP32 und Gehäuse. Durch das integrierte Display, den eingebauten Akku und die Tasten eignet es sich besonders gut zur Anzeige von NMEA-Daten.
  • Die auf dem Demo-Board enthaltene Version des Daten-Displays (oben links) empfängt die Daten im JSON-Format drahtlos vom WiFi-Gateway.
  • Die Datentypen können leicht erweitert werden. Bisher werden folgende Daten angezeigt: LAT/LON, COG, SOG, Heading, STW, Ruderwinkel, Wassertiefe, Triplog, Sumlog sowie die Daten vom NMEA2000 Daten-Sender: Temperatur, Dieseltank und Motordrehzahl.
  • Auf GitHub ist auch eine Version des Displays verfügbar, das die Daten direkt vom NMEA2000 Bus liest und anzeigt. Optional fungiert das M5Stack-Modul auch als WiFi-Gateway. Damit ist ein NMEA2000 zu NMEA0183 WLAN-Gateway ohne Lötarbeiten zu realisieren.


NMEA2000 Daten-Sender

  • Der NMEA2000 Daten-Sender misst unterschiedliche Werte im Boot (hier Temperatur, Tanklevel, Motordrehzahl) und sendet sie als NMEA2000-Daten.
  • Diese NMEA2000-Daten können von nahezu allen modernen Multifunktionsdisplays empfangen und angezeigt werden.
  • Die Temperatur wird über einen DS18B20-Sensor gemessen (leicht durch weitere Sensoren erweiterbar).
  • Die Schaltung auf GitHub ist für einen Tankgeber TGT 200 von Philippi ausgelegt (Widerstand 5-180 Ohm).
  • Die Motordrehzahl wird an der Lichtmaschine gemessen (Klemme W).
  • Die Schaltung und das Programm können leicht für weitere Messdaten erweitert werden.
  • Für das Demo-Board wird der Tanklevel und die Motordrehzahl über Potentiometer simuliert.


NMEA2000 Daten-Recorder

  • Der NMEA2000 Daten-Recorder liest sämtliche Daten vom NMEA2000 Bus und speichert sie auf einer SD-Karte.
  • Die Daten können in unterschiedlichen Formaten gespeichert werden: NMEA0183, Seasmart, Actisense).
  • Neben dem ESP32 (hier Node MCU) wird nur eine SD-Karte und ein CAN-Bus-Transceiver benötigt.
  • Optional kann auch ein M5Stack-Modul eingesetzt werden. Dieses enthält bereits einen SD-Kartenleser.
  • Der Daten-Recorder ist nicht auf dem Demo-Board enthalten.