Magnetix – ein digitaler Kompass mit NMEA2000

Warum

Ich fand die Idee schon immer spannend, dass auf meinem Plotter nicht nur dann der Kurs angezeigt wird wenn sich das Boot in Bewegung setzt, sondern auch, wenn es ruhig vor sich hindümpelt.

Nach der Suche im I-Net bei unterschiedlichen Herstellern war schnell klar, dass ich bei aktuellen Preisen vielleicht doch keinen E-Kompass an Bord brauche. Durch die Corona-Einschränkungen und dem mehr an Freizeit, die zu Hause verbracht wurde, kam die Idee auf, den Kompass selber zu bauen.

Der Bau des elektronischen Kompasses mit einem Ausgang in das NMEA2000 Netzwerk wurde inspiriert durch einen Beitrag von Andreas in dem „segeln-forum.de“ Forum.
Durch viele Tipps in unterschiedlichen Foren ist es geglückt. Der Kompass ist fertig, aber noch (Stand:2022.01) nicht auf dem Boot getestet.

Beschreibung

Magnetix ist ein elektronischer Kompass, der seine Daten auf den MNEA2k-Bus überträgt. Als Basis dient ein CMPS14 als Sensor, ein ESP32 als Rechenknecht, ein Waveshare SN65HVD230 (nicht vergesse den Widerstand herauszubrechen) als Bindeglied zum Bus und ein LM2596 als Spannungswandler. Für die Anzeige im Gehäuse wird ein 0.91 Zoll OLED mit 132×32 Pixel verwendet.

Das Gehäuse für die Elektronik ist ein Bocube von „www.bopla.de“. Für den Sensor wurde sowohl die Halterung als auch das Gehäuse 3d-gedruckt. Die Halterungen für das OLED und die Touchsensoren (VA Schrauben) sind ebenfalls mit einem 3-Drucker erstellt worden.

Die Verbindung zwischen dem Kompass-Sensor und dem ESP erfolgt über ein KAT5 Netzwerkkabel, bei dem immer zwei Kabel zu einem Paar verbunden wurden. Obwohl das Protokoll zwischen dem CMPS und dem ESP ein Kurzstreckenprotokoll (I2C) ist, habe ich bei einer Kabellänge von ~70cm keine Probleme

Die Stromversorgung erfolgt über den NMEA – Bus und beträgt ~1LEN. Als Verbindung zum Netzwerk wird ein Einbaustecker der Firma Techno-Spark verwendet.

Der ESP bekommt die Daten über den I2C – Bus, wandelt das Ganze in einen NMEA2K Datensatz (127250) um und schickt es an das Netzwerk.

Der Kompass identifiziert sich am Bus als „Magnetix Alpha“ und kann auch unter diesem Namen in den Quellen des Netzwerks gefunden werden.

Variablen im Code

Kompletter Quellcode https://open-boat-projects.org/wp-content/uploads/2022/01/compass_NMEA2k_V05_01.zip
https://open-boat-projects.org/wp-content/uploads/2022/07/compass_NMEA2k_V05_02.zip
devitation []
ist ein Array mit 36 möglichen Einträgen. Darin kann eine Deviationstabelle hinterlegt werden, die bei den jeweiligen Kursen automatisch den ausgegebenen Kurs korrigiert.
CorrectionMountingAngle
Damit kann eine – horizontale – Korrektur für eine Abweichung der Kompasslinie zur Bootsachse eingestellt werden.

[-] Werte für eine Korrektur nach Backbord

[+] Werte für eine Korrektur nach Steuerbord

Bedienung

Die Bedienung beschränkt sich auf die zwei Touchflächen(Schrauben):

Touchfläche Funktion
1 Autokalibrierung an / aus
2 Autokalibrierung aus Durchgeführte Kalibrierung speichern
1 & 2 neue Kalibrierung anstoßen

Display

Das Display ist in drei Bereiche gegliedert:

Links (in 90° gedrehter Schrift)
Aktuelle Funktion des Sensors
„Calib“ der Sensor befindet sich gerade in der Kalibrierung, die durch Touch 1&2 angestoßen wurde.
„inacc“ wenn der Sensor nicht komplette kalibriert ist, (nicht alle Sensor Rückmeldungen 1 sind) erscheint „inaccurate“. Auf ein Ausschalten der HDM Daten wurde verzichtet, da es sehr oft zu Meldungen 0 kommt.

Evtl. muss dass nach Feldversuchen an Bord angepasst werden

„ON“ Der Sensor befindet sich im „autocalibration“ Modus
„OFF“ Der „autocalibration“ Modus ist ausgeschaltet
Mitte
S Status des Sensorsystems gefolgt von zwei Zahlen
A ‚Status des Beschleunigungssensors
M Status des magnetischen Sensors
Die drei Angaben werden jeweils durch die folgenden Zahlen präzisiert:
00 nichts ist OK
11 alles OK
01 oder 10 teilweise OK
(was diese Zahlen genau bedeuten ist aus der Dokumentation des CMPS14 leider nicht eindeutig ersichtlich)
Rechts vom Strich
M Magnetischer Kurs  (nach dem Druck auf T2 erscheint für 2sec. „…stored…“ [v5.02])
R Roll des Sensors
P Pitch des Sensors

Auf- und Zusammenbau

Aufgebaut habe ich das ganze in einem Standard Gehäuse in dass ich eine Grundplatte als Träger für die Lochplatte und den Spannungswandler gebaut habe. Das einzige was beim Zusammenbau zu beachten ist, ist dass auf dem CAN.Modul (Waveshare SN65HVD230) der Abschlusswiderstand herausgebrochen werden muss. Sonst terminiert der Waveshare SN65HVD230 den kompletten NMEA Bus. Die Verkabelung kann in dem Schaltplan nachgesehen werden.

Leider habe ich in der ersten Version meine Halterungen für das Display und die Touchflächen bündig an die Oberkante des Gehäuses gesetzt. Da der Deckel sich aber komplett über das untere Gehäuse „stülpt“ ging er nicht mehr zu. 🙁

Updates

2022-03-01 Neue Halterung für das Gehäuse mit einer Wandhalterung um einen falschen horizontalen Einbau auszugleichen -> Thingiverse
2022-07-02 Nach einigen Tests ist mir aufgefallen, dass der Sensor nach einem Stromverlust (trotzdem er die Kalibrierung gespeichert hatte) wieder bei Null anfängt. Ich habe die Touchflächen jetzt so umgestellt dass T2 die vorher durchgeführte Kalibrierung abspeichert. Nach den ersten Proben mit einem Neustart von Magnetix scheint es jetzt zu funktionieren.  (V5.02)

Libraries

die verwendeten Libraries erscheinen im Kopf der INO Datei und werden hier nicht weiter behandelt.

Links und Materialien

Alle 3-D Druck Bauteile https://www.thingiverse.com/thing:5207953
ESP-32 Dev Kit C V4 https://www.az-delivery.de/products/esp-32-dev-kit-c-v4
CMPS14 Data Sheet
Waveshare SN65HVD230 https://www.amazon.de/gp/product/B00KM6XMXO/ref=ppx_yo_dt_b_asin_title_o01_s01?ie=UTF8&th=1

preiswerter bei:

https://www.robotshop.com/de/de/waveshare-can-board-sn65hvd230.html

0,91 Zoll OLED I2C Display 128 x 32 Pixel https://www.az-delivery.de/products/0-91-zoll-i2c-oled-display
LM2596S DC-DC Netzteil Adapter Step down Modul https://www.az-delivery.de/products/lm2596s-dc-dc-step-down-modul-1
PCB Board Set Lochrasterplatte Lochrasterplatine Leiterplatte https://www.az-delivery.de/products/pcb-board-set-lochrasterplatte-platine-leiterplatte-4×4-stuck
Gehäuse https://www.bopla.de/gehaeusetechnik/product/bocube/pc-ul-94-v0-glasklarer-deckel.html

meine Maße finde ich allerdings in der dortigen Liste nicht wieder!

PG – Durchführungen https://www.conrad.de/de/p/kvpg9gr-kabelverschraubung-verschraubbar-mit-zugentlastung-pg9-pg9-polyamid-grau-1-st-1521121.html

(an die Mutter denken)

Micro-C Einbaustecker https://technospark.de/nmea-2000-panel-mount-connector?number=SW1153
Grundlagen Diesjährige Winterbastelei: Ein NMEA Heading Sensor oder auch elektronischer Kompass Pitch und Roll Kompensiert

https://www.segeln-forum.de/thread/66453-diesj%C3%A4hrige-winterbastelei-ein-nmea-heading-sensor-oder-auch-elektronischer-komp/?pageNo=1

Touchfunktionen https://www.wiegleb.org/2018/09/22/esp32-ttgo-mit-touch-funktion/
NMEA Grundlagen AK-Homberger Workshop (ESP -> NMEA2k)

https://github.com/AK-Homberger/NMEA2000-Workshop

Beispiele I2C NMEA https://www.robot-electronics.co.uk/htm/arduino_examples.htm#CMPS12/11%20I2C

https://www.robot-electronics.co.uk/files/arduino_cmps12_i2c.ino

Gallerie