We often anchor in Sweden and have been using an anchor alarm on our mobile phones. Unfortunately, this has a few drawbacks: the phone's battery drains quite quickly, and sometimes Android stops the app for some internal reason – especially if it's not in the foreground and the screen is off. Of course, we could also use the alarm integrated into the AIS or the chartplotter, but I find that inflexible and it drains a lot of power from our house batteries.
Deshalb habe ich letzten Winter als Alternative einen GPS basierten Standalone-Ankeralarm gebaut, der mit Akku funktioniert und keinerlei weitere Hardware oder Anschlüsse braucht. Er hat einen LiPo Akku integriert, und ein e-Paper Display. Gesteuert wird er von einer stromsparenden ESP32 Variante, dem Lolin Lite.
Und so sieht das Gerät aus, mit einer Detailansicht des Bildschirms im Betrieb:

Komponenten
- Lolin Lite ESP32: optimiert für Akkubetrieb und recht günstig. Im Deep Sleep hat dies Modul einen sehr geringen Stromverbrauch, so dass der Akku lange hält.
- e-Paper Display 1.54″ mit einer Auflösung von 200×200 Pixel. Ausreichend groß für diesen Einsatzzweck, gute Darstellung und sehr geringer Stromverbrauch. Im Deep Sleep wird der letzte Bildinhalt dauerhaft angezeigt.
- 1800 mAh LiPo Akku: ausreichend Betriebsstunden (bei 60 mA mittlerem Stromverbrauch)
- GPS Modul(Ublox NEO-6M, NEO-M8N oder ATGM336H)
- Optional: aktive GPS Antenne
- Rotary Encoder mit integriertem Druckknopf für die Einstellungen
- Platine: Ich habe hier kein gesondertes Board gemacht, sondern die Platine für den e-Paper Barograph genutzt, den ich früher gemacht hatte. Alle benötigten Pins sind verfügbar, allerdings nicht alle korrekt beschriftet.
- 3D gedrucktes Gehäuse aus PLA
Github Repository
Alle relevanten Daten zum Projekt, inklusive Quellcode, Platinendesign und Daten zum 3D Druck des Gehäuses, werden auf Github zur Verfügung gestellt:
Github Repository
Dort steht auch Information über die für dies Projekt genutzte Lizenz
Nutzung des Ankeralarms
Der erste Schritt ist das Einschalten mit dem Kippschalter an der Seite des Geräts (oder via USB Kabel Stromversorgung herstellen)
Das Gerät geht dann durch ein paar Selbsttests, inklusive Summer. Schließlich wird das Hauptmenü angezeigt. Durch Drehen des Knopfes geht man durch die Menüpunkte, Drücken zum selektieren, einstellen und wieder verlassen eines Menüpunktes.
Im Menü wird angezeigt:
- Programm Name und Version
- Aktuelle GPS Position in Dezimal-Notation
- Anchor Bearing – Einzustellende Richtung vom Boot zum Anker in Grad
- Anchor Distance – Distanz vom Boot zum Anker in Metern
- Alert Threshold – Numerischer Wert der festlegt, wie oft und wie weit das Boot außerhalb des „Sicherheitskreises“ sein muss, um Alarm auszulösen. Zum Alarmzähler werden bei Position 10% außerhalb des Kreises 1.0 addiert 1, 30% außerhalb addiert 3.0 und so weiter. Die Werte werden aufsummiert, und Alarm ausgelöst sobald der Wert des Alarmzählers größer ist als der hier eingestellte Wert für „Alert Threshold“.
Sobald das Boot wieder im Sicherheitskreis ist, wird der Alarmzähler auf null zurückgesetzt – so werden bei kleinen Driften aus dem Kreis heraus Fehlalarme verhindert.
Empfohlener Wert für „Alert Threshold“ ist 5, für sehr empfindliche Alarmierung sollte man auf 1 einstellen.
- Alert Distance – Radius des Sicherheitskreises um den Anker in Meter
- Sleeptime – Zeit in Sekunden die das Gerät zwischen Messungen schläft (Es sei denn es gibt einen Alarm, dann ist es dauerhaft aktiv)
- Detail Info – Bestimmt in 3 Stufen, wie viel Detailinformation auf dem Bildschirm angezeigt wird
- Graph Weight – Legt fest, wie dick Linien und Punkte gezeichnet werden
- Power Saving Mode – Legt fest, wie aggressiv Strom gespart wird. Der mittlere Wert „MID“ wird empfohlen
- Exit: Menü verlassen und Messung starten
Arbeitsbildschirm
Der Arbeitsbildschirm, also die Seite die während der Messung aktiv ist, zeigt im Zentrum die Position des Ankers als Kreuz. Der Sicherheitskreis wird durch einen Kreis um den Anker dargestellt, darin die Kompassrichtungen.
Die aktuelle Position des Bootes wird als „Zielscheibe“ angezeigt.
Abhängig davon welche Anzeigedetail – Tiefe ausgewählt ist, wird weitere Info angezeigt:
- Anker Position (oben) und Schiffsposition (unten). Frühere Positionen relativ zum Anker werden als Punkte gezeigt, deren Größe hängt von der Einstellung für „Graph Weight“ ab. So entsteht im Verlauf des Ankerns ein Profil das zeigt, wie sich das Schiff um den Anker bewegt hat
- Anzahl genutzter Satelliten und HDOP des GPS
- Aufsummierter aktueller Alarmzähler – wenn der größer wird als „Alert Threshold“ wird der Alarm ausgelöst
- Aktivitätszähler: wie oft ist das Gerät aufgewacht und hat eine Positionsbestimmung gemacht
- Akku Spannung und Füllgrad in %
- Abstand und Peilung von der Ankerposition zum Boot (wenn das Boot südwestlich der Ankerpostion ist, wird hier Peilung 235° angezeigt)
Alarmierung
Das Gerät gibt Alarm, wenn die Position des Bootes zu weit weg vom Anker ist, oder wenn der Akku leer wird, oder wenn keine gültige GPS Position mehr ermittelt werden kann.
Das heißt konkret; Ein Alarm wird ausgelöst, wenn mindestens eine der drei folgenden Bedingungen wahr ist:
- Die aktuelle Bootsposition ist zu weit entfernt von der Position des Ankers. Mathematisch:
(Alarmzähler) > (Alarmgrenzwert).
Der Alarmzähler wird über mehrere Messungen aufsummiert: 10% außerhalb des Sicherheitskreises addiert 1.0, 30% addiert 3 und so weiter. So führt ein geringfügiger Drift erst nach mehreren Messungen zum Alarm, ein starker Drift schnell. Die Empfindlichkeit (Alert Threshold) kann im Menü individuell eingestellt werden.
Immer wenn das Boot in den Sicherheitskreis zurückkehr, wird der Alarmzähler auf Null zurückgesetzt.
- Keine gültige GPS Position für mehr als 10 Sekunden. Dieser Zähler wird jedes mal zurückgesetzt, wenn wieder eine gültige GPS Position gefunden wurde.
- Batteriespannung fällt unter 3.6V oder Batterieladung fällt unter 10%. Auch bei zu geringer Spannung arbeitet das Gerät weiter, bis die Schutzschaltung die Batterie trennt.
Der Alarm kann durch Drücken auf den Knopf des Drehgebers stumm geschaltet werden, das Gerät geht dann in das Menü.
Stromspar-Modus
Das Gerät ist für Akkubetrieb ausgelegt. Um dessen beschränkte Kapazität optimal zu nutzen, sind drei Stromspar-Modi verfügbar. Die Einstellung des genutzten Modus erfolgt im Menü.
Abhängig vom genutzten GPS Modul werden verschiedene konkrete Maßnahmen durch die Software umgesetzt:
| Modus |
NEO-6M |
NEO-M8N |
ATGM336H |
| MIN |
80 MHz, NMEA Msg, Ped |
80 MHz, NMEA Msg, Ped |
|
| MID |
80 MHz, NMEA Msg, Ped, PSM |
80 MHz, NMEA Msg, Ped, PM2 |
|
| MAX |
80 MHz, NMEA Msg, Ped, PM2 |
80 MHz, NMEA Msg, Ped, HF Off |
|
* NMEA Msg: Abschalten aller nicht benötigten NMEA Messages des GPS. Nur RMC, GGA, GLL bleiben an (CFG-MSH)
* Ped: Schaltet das GPS Modul auf „pedestrian mode“, für bessere Präzision bei geringen Geschwindigkeiten (CFG-NAV5)
* PSM: Schaltet das GPS Modul auf PowerSavingMode (CFG-RXM)
* PM2: Konfiguriert extended Power Management auf längere updatePeriod (CFG-PM2)
* HF Off: Schaltet die HF Sektion des GPS Moduls ab (CFG-RST). Größte Einsparung, aber benötigt Zeit um die Satelliten wieder zu finden
Die Reduktion der Taktrate (80 MHz) reduziert den Stromverbrauch des ESP32 auf ca. 75 mA während er nicht im Deep Sleep ist
Der Stromverbrauch des NEO-M8N wird auf 45 mA im „MIN“ Mode und 28 mA in „MAX“ Mode reduziert
Die Präzision der Position ist im MIN Mode besser als im MAX Mode – abhängig von der Qualität der Satellitendaten
Sleep Modes und Stromverbrauch
Der Stromverbrauch des Gerätes wurde mit einem FNIRSI FN-058 USB Power Meter gemessen, und die theoretische Akkulaufzeit für einen 1800 mA LiPo Akku berechnet. Die Messwerte wurden für Sleeptime 20 s und 50 s bestimmt.
NEO-M8N
| Modus |
Stromverbrauch 20s |
Akkulaufzeit |
Stromverbrauch 50s |
Akkulaufzeit |
| MIN |
53.0 mA |
33.9 h |
49.2 mA |
36.6 h |
| MID |
39.5 mA |
45.6 h |
38.8 mA |
47.4 h |
| MAX |
43.5 mA |
41.4 h |
36.3 mA |
49.6 h |
Der Stromverbrauch des NEO-6M Moduls ist etwas höher, und noch höher für das ATGM336H – mit entsprechend geringeren Akkulaufzeiten.
Unabhängig vom verwendete GPS Modul werden in jedem Fall 24 Stunden Akkulaufzeit erreicht. Mit angeschlossenem USB Netzteil ist die Laufzeit unbegrenzt. Bitte beachten: Der Akku wird nur geladen, wenn das Gerät eingeschaltet ist.
Vergleich der drei genutzten GPS Module
NEO-M8N scheint für diesen Zweck das am besten geeignete der drei GPS Module zu sein: geringster Stromverbrauch der durch die vielfältigen Power Management Optionen weiter reduziert werden kann. Es nutzt die Satelliten der GPS, Beidou, Glonass and Galileo Konstellationen – was kürzere Fix-Zeiten und bessere Präzision der Position bedeutet. Es ist auch das teuerste und am schwierigsten zu bekommen.
Zu beachten: im MID Mode nutzt dieses Modul nur die GPS Satelliten, mit geringfügig reduzierter Positionsgenauigkeit. In MIN und MAX Modus nutzt es alle GPS Konstellationen.
NEO-6M nutzt einzig GPS Satelliten, und hat einen geringfügig höheren Stromverbrauch als das NEO-M8N. Es hat ebenfalls gute Power Management Optionen. Dies Modul ist deutlich günstiger als das NEO-M8N, überall zu bekommen und absolut ausreichend wenn die Empfangsbedingungen gut sind (also ohne Häuser oder Berge in der Umgebung, die einen großen Teil des Himmels verdecken).
ATGM336H nutzt die GPS, Beidou und Glonass Konstellationen. Allerdings war die Stabilität der Postion in meinen Tests deutlich schlechter als die des NEO-M8N. Power Management ist eingeschränkt: NMEA Messages können reduziert werden, und der „pedestrian“ Modus ist verwendbar. Die angeblich verfügbare „power saving“ Option hatte bei mir keinen Effekt. Deshalb hat dies Modul den höchsten Stromverbrauch aller drei getesteten GPS Module. Allerdings ist die Positioniergenauigkeit gut, wenn die Bedingungen gut sind, also freie Sicht zum Himmel, und eine gut aktive Antenne statt der mitgelieferten Mini-Antenne genutzt wird, die dem Modul meist beiliegt. Mit der Originalantenne können die Zeiten bis zum Fix viele Minuten betragen, und der Empfang ist auch mit Fix nicht gut. Preise und Verfügbarkeit sind vergleichbar mit dem MEO-6M.
Dies Modul sieht meist mehr Satelliten als das NEO-M8N, dennoch ist die Positioniergenauigkeit und die Stabilität der Position schlechter.
GPS Performance
Die folgenden Bilder zeigen die Performance des GPS der NEO-M8N und ATGM336H Module. Die Daten wurden in einem Park aufgenommen, mit einigen Bäumen. Zeit bis zum Fix waren in jedem Fall einige wenige Sekunden. Power Saving Modus „MIN wurde für die Bilder in der ersten Zeile genutzt, „MID“ für die zweite Zeile. Nach einigen Minuten Messung bin ich ca. 20 m weiter gegangen, um das Schiffsymbol von den Datenpunkten weg zu bekommen.
Das NEO-M8N limitiert sich selbst auf 12 Satelliten, das ATGM336H nutzt so viele Satelliten wie es bekommen kann. Für beide Module sind die Ergebnisse exzellent im Modus „MIN“, mit einer etwas größeren Verteilung für das ATGM336H. Die Verteilung ist im „MID“ Modus etwas breiter, aber immer noch recht gut.
Die Zahlen in der 3. Zeile von unten zeigen die Standardabweichung der Datenpunkte in X und Y Richtung.
Circuit diagram
Der Schaltplan liegt derzeit als Fritzing – Datei vor
Pinbelegung der Baugruppen
KY-040 Rotationsgeber
| VCC |
3.3V |
| GND |
GND |
| SW |
GPIO 26 |
| DT |
GPIO 27 |
| CLK |
GPI 22 |
Spannungsmessung
Die Spannungsmessung des Akkus erfolgt an GPIO 39 über eine Widerstandsbrücke mit zwei gleichen Widerständen von ca. 200 KOhm, die die gemessene Spannung auf die Hälfte herabsetzen.
ePaper Modul
| BUSY |
GPIO 04 [15] |
| RST |
GPIO 16 [RES, 2] |
| DC |
GPIO 17 [D/C] |
| CS |
GPIO 05 [SS, 4] |
| CLK |
GPIO 18 [SCK, SCL, 18] |
| DIN |
GPIO 23 [MOSI, SDA, Data/ 23] |
| GND |
GND |
| VCC |
3.3V |
Buzzer
Es wird ein aktiver Buzzer für die Alarmierung verwendet. Der Pluspol des Buzzers ist mit der Versorgungsspannung (3.3V) verbunden, der Minuspol wird durch einen Schalttransistor S8050 durchgeschaltet. Für das Einschalten des Buzzers wird GPIO2 des ESP32 verwendet, der über einen 2K Ohm Widerstand mit der Basis (Pins2) des Transistors verbunden ist. Pin 1 (C) des Transistors ist mit GND verbunden, Pin 2 (b) mit GPIO2 über den 2K Widerstand, Pin 3 (E) mit dem Minuspol des Buzzers.
| Transistor Basis |
via 2 K Ohm -> GPIO2 |
GPS Modul
Die Kommunikation mit dem GPS Modul erfolgt über eine serielle Schnittstelle. RX = GPIO15, TX = GPIO19. Auf der verwendeten Platine sind GPIO15 mit „SDA“ und GPIO19 mit „SCL“ beschriftet.
| RX |
GPIO15 (SDA) |
| TX |
GPIO19 (SCL) | |
| GND |
GND |
| 3.3 |
3.3 V |
circuit board
Ich habe für dies Gerät keine neue Platine designed, sondern ein Board wiederverwendet, das ich vorher für einen Barographen verwendet habe. Alle dafür benötigten GPIOs und Anschlüsse stehen zur Verfügung, allerdings nicht alle gruppiert und korrekt beschriftet.
- ePaper: verbunden wie vorgesehen
- Buzzer: verbunden wie vorgesehen über einen S8050 Transistor. Dessen Basis ist über einen 2K Widerstand mit GPIO2 verbunden
- NEO-6M GPS Module: die Pins die ursprünglich für I2C vorgesehen waren, werden genutzt (3.3V, GND, GPIO 15 (SDA) und GPIO19 (SCL)
- KY-040 Rotary Encoder: ist verbunden mit 3.3V und GND via OneWire Verbinder, und mit GPIOs 22,26 und 27 über die nicht beschrifteten Reserve – Pins auf der linken Seite des Lolin Lite Boards
casing
Das Gehäuse inklusive Drehknopf wird aus PLA 3D gedruckt. Das STL File dafür ist im Github-Repository enthalten. Bitte beachten: die Datei enthält mehrere Teile, die vor dem Drucken durch den Slicer separiert werden müssen.
Haftungsbeschränkung
Dies Projekt ist ein Hobbyprojekt, und wird für Demonstrations-, Erprobungs- und Schulungszwecke zur Verfügung gestellt. Alle Hardware Designs, Software, Firmware und Dokumentation werden so wie sie sind, ohne explizite oder implizierte Garantien oder konkrete Funktionszusagen, und ohne Zusagen zur Vermarktbarkeit und Freiheit von Rechten Dritter, zur Verfügung gestellt. Autoren und Mitarbeitende sind nicht haftbar für direkte oder indirekte Schäden, inklusive Beschädigung von Eigentum, Datenverlusten, Körperliche Verletzungen, Feuer, Elektrische Gefahren oder sonstige rechtliche Konsequenzen die sich aus der Nutzung, Missbrauch oder der Nicht-Nutzbarkeit dieses Projektes ergeben. Dies Projekt ist nicht gedacht für die Nutzung in sicherheitskritischen, medizinischen, mobilen, industriellen oder kommerziellen Umgebungen. Der Nutzer allein ist verantwortlich sicherzustellen, dass Korrektheit, Sicherheit und Anwendbarkeit dieses Projektes für seinen Anwendungsfall gegeben ist, und außerdem dafür, Übereinstimmung mit allen anwendbaren Gesetzen, Regularien und Standards zu sichern. Nutzung dieses Projektes erfolge auf eigenes Risiko.