RS422 Konverter für Clipper Windinstrumente

Vorab ein paar wichtige Hinweise die sie unbedingt beachten sollten.

Abb.: Clipper Windinstrument (Clipper)

Einige ältere Modelle der Clipper-Windinstrumente besitzen auf der Rückseite einen 5-polige DIN-Buchse für ein Tochterdisplay. Über diese DIN-Buchse werden auch die Winddaten als NMEA0183 ausgegeben. Leider entsprechen die Signale nicht dem RS422 Standard und man kann sie nicht sinnvoll weiter verwenden. Als Ausgangssignal werden 5V-TTL-Pegel verwendet mit sehr geringer Strombelastbarkeit. Diese Signale können nicht direkt von RS422 verarbeitet werden. Mit einer kleinen Schaltung als Pegelanpasser kann aus dem unipolaren 5V-TTL-Sende-Signal ein differenzielles Signal nach RS422-Standard erzeugt werden.

Abb.: RS422 Wandler für Clipper Wind V1.0 mit DIN-Buchsen

Abb.: Clipper Wind V1.0 mit DIN-Buchse (rechts unten) (Clipper)

Die Schaltung besteht aus einem Spannungswandler LM7805 (IC2) für eine 5V-Stromversorgung für IC1 und zwei Komperatoren die sich in einem LM358N (IC1) befinden. Die Versorgungsspannung der Schaltung wird vom NASA/Clipper-Windinstrument abgegriffen (Pin 2 und 4). Das 5V-TTL-Datensignal T+ von Pin 3 wird dem Komparator IC1A zugeführt und mit einem 1V-Referenz-Signal verglichen, dass über den Spannungsteiler R6 und R7 erzeugt wird. Signale von T+ die größer als 1V sind werden als ein High-Signal erkannt und es wird ein 5V-Signal an A+ ausgegeben, das ca. 20mA an Last treiben kann. Dieses verstärkte Signal wird dem zweiten Komparator IC1B zugeführt, der ein invertiertes Signal an A- ausgibt, das ebenfalls ca. 20mA an Last treiben kann. Damit werden die beiden differenziellen Signale A+ und A- für RS422 erzeugt.

Bei der neueren Variante V2.0 von Clipper Wind ist keine DIN-Buchse mehr verbaut und die Anschlussbelegung ist etwas anders. Die obere Schaltung kann aber auch für die neuere Variante verwendet werden.

Abb.: NMEA0183-Anschüsse für Clipper Wind V2.0 (Clipper)

Die Schaltung kann auf einer Lochrasterplatine aufgebaut und in einem kleinen Gehäuse untergebracht werden. Mit der Schaltung lassen sich sowohl das Hauptdisplay als auch das Tochterdisplay gleichzeitig betreiben und die ausgeleiteten Signale können z.B. in SignalK über einen RS422-USB-Wandler eingespeist werden.

Im Internet findet man auch eine etwas einfachere Schaltung für eine RS232-Schnittstelle. Je nach verwendeten RS232-USB-Wandler funktioniert die Schaltung oder auch nicht. Eine sichere Funktionsweise ist nicht immer gegeben und hängt vom verwendeten RS232-Chip ab, da einige Chips auch nicht RS232 konforme Signale verarbeiten können. Nachteil dieser einfachen Schaltung ist allerdings, dass ein Tocherdisplay nicht gleichzeitig betrieben werden kann, da der Ausgangstreiber in der Haupteinheit zu wenig Strom liefert.

Hier ist noch ein interessantes Projekt wo mit einem Wemos D1 mini die NMEA0183-Telegramme per WiFi benutzt werden können:

https://hackaday.io/project/12986-nasa-wind-decoder

 

Wetterfax mit Weltempfänger

Jürgen hat im Segeln-Forum einen Wetterfaxempfänger vorgestellt den ich hier gerne vorstellen möchte. Zum Empfang von Wetterfaxen wird ein einfacher Weltempfänger und die Wetterfax-App HF WEATHER FAX verwendet. Empfehlenswert sind folgende zwei Weltempfänger von Sony, die sich bewährt haben:

  • ICF-2001D
  • ICF-SW7600

Abb.: ICF-2001D

Je nach Fahrtgebiet wird die entsprechende Kurzwellen-Sendefrequenz im Weltempfänger eingestellt. Mit der App wird über das Mikrofon die digital kodierte Aussendung empfangen und entsprechend als Bild dargestellt. Die codierte Aussendung ist ein niederfrequentes Signal (NF-Signal) im Frequenzbereich des menschlichen Gehörs, das an die alten analogen Modem-Zeiten erinnert. Hier ein Beispiel wie sich das anhört:

Wetterfax Audiobeispiel

Abb.: Wetterfax-App

Die kostenpflichtige Android Wetterfax-App HF WEATHER FAX kümmert sich dabei um folgende Dinge:

  • Manueller oder Automodus
  • Spectrum Analyzer für einfache Frequenzabstimmung und Empfang
  • Automatische Start- und Endton-Erkennung (im Automodus)
  • Synchronisation zum Beginn der Aussendung (im Automodus)
  • Automatisches Speichern der Wetterbilder auf SD-Card (im Automodus)
  • Automatische Korrekturfunktionen bei Störungen
  • Auto Scroll Mode
  • Bild Zoomfunktion
  • Schwarz/Weiß-Bild mit Schwellwerteinstellung
  • Speicherung historischer Wetterfaxe
  • Timerfunktion für automatische Aufnahme

Im Grunde genommen nimmt die App wichtige Funktionen der Empfangseinstellungen ab und vereinfacht damit die Bedienung. Die Wetterfaxe werden je nach Region über verschiedene Frequenzen und zu festen Zeiten ausgesendet. Nachfolgend eine weltweite Übersicht:

Frequenz- und Sendeplan für Wetterfaxe

DWD Wetterfax Sendeplan

 

Ultraschall Tanksensor mit SensESP

Abb.: Ultraschall Füllstandssensor

https://www.segeln-forum.de/thread/76476-ber%C3%BChrungsloses-messen-von-tankinhalten/?postID=2301715#post2301715

 

Fred hat eine weitere Implementierung eines Ultraschall-Tanksensors mit SensESP  und einem Wemos D1 mini vorgenommen. Der Ultraschall-Sensor DS1603L erfasst Flüssigkeitsstände in einem Tank und gibt die entsprechenden Messwerte über SensESP per WiFi an SignalK. SensESP ist ein Softwareframework für die Arduino-IDE mit der recht einfach verschiedene Sensoren in SignalK eingebunden werden. Das Besondere an SensESP ist, dass sich Sensoren ohne Netzwerkkonfiguration in SignalK andocken lassen. Ein SignalK-Server wird automatisch von SensESP erkannt und selbständig die Netzwerkonfiguration für eine Datenübertragung per WiFi vorgenommen. In SignalK kann der Füllstand visualisiert werden.

Aufgrund der Eigenschaften des Sensors muss kein Loch in den Tank gebohrt werden, daher bietet sich dieser Sensor als Nachrüstlösung bei bestehenden Tanks ohne Höhenstandsanzeige an. Durch die WLAN-Anbindung müssen keine weiteren Datenkabel verlegt werde, eine 12V Versorgung in der Nähe des Tanks, an die der Mikrocontroller angeschlossen werden kann, ist ausreichend. Das Modul Wemos D1 mini pro ist ein Mikrocontroller auf Basis des ESP 8266 mit eingebautem WLAN-Modul. An dem Mikrocontroller wird der Ultraschallsensor  angeschlossen. Der Ultraschallsensor wird außen an den Tankboden angeklebt. Damit kann dann der Flüssigkeitsspiegel im Tank erfasst werden.

Achtung: Der Sensor muss am Tankboden angebracht werden, er muss also von unten nach oben „pingen“ um den Flüssigkeitsspiegel zu erfassen. Von oben nach unten „pingen“ funktioniert nicht.

Die Software zum Füllstandssensor ist hier zu finden: https://github.com/frewie/UltrasonicTankSensor

Ein ähnliches Projekt ist bei uns unter DIY Ultraschall Füllstandsmessung zu finden. Es wird aber eine eigene Software verwendet, die NMEA0183 Datensätze per WiFi übertragen kann.

Abb.: Wasserdichtes Gehäuse für den Füllstandssensor

Elektronikmodule von Espressif

Für Bastler bietet die Welt der Elektronik interessante Mikrocontroller-Module mit denen man viele anspruchsvolle Projekte umsetzen kann. Dabei sind insbesondere Mikrocontroller interessant die sich einfach und unkompliziert programmieren lassen. Die Firma Atmel bietet eine Reihe von 8-Bit Mikrocontrollern an, in die viele Zusatzfunktionen integriert sind wie Programmspeicher, Datenspeicher, Zähler, pulsweitenmodulierte Ausgänge (PWM-Ausgänge), Analog-Digilal-Wandler (AD-Wandler),  Digital-Analogwandler (DA-Wandler), serielle Schnittstelle (RS232), verschiedene Bussysteme (I2C) und vieles mehr, so dass man ohne großen Zusatzaufwand eigene Elektronik-Projekte umsetzen kann. Oft werden solche Mikrocontroller in Verbindung mit Entwicklerboards angeboten, wo der Mikrocontroller auf einer Platine aufgelötet ist und eine Peripherieschaltung für die nötige Minimalansteuerung vorhanden ist. Über Stiftleisten können die Ein- und Ausgabe-Pins des Mikrocontrollers erreicht werden. Der Arduino Uno ist ein solches beliebtes Entwicklerboard, das nur mit einer USB-Verbindung an einem PC betrieben werden kann.

Abb: Arduino Uno R3 (Urtyp)

Der USB-Anschluss dient sowohl zur Betriebsspannungsbereitstellung als auch zur Programmierung und zum Debuggen von Programmen. Früher waren spezielle und teure Programmiergeräte zur Programmierung der Mikrocontroller nötig. Heute besitzen die meisten Mikrocontroller ein fest eingebautes Bootloader-Programm mit dem über eine serielle Datenverbindung der Programmiervorgang abläuft. Die serielle Schnittstelle ist meistens auf den Entwicklerboards mit einem USB-Seriell-Umsetzer ausgestattet, so dass man eine gewöhnliche USB-Verbindung am PC nutzen kann. Das Anwenderprogramm wird damit in den Programmspeicher geladen und anschließend ausgeführt. Das Programm verbleibt dauerhaft im Programmspeicher bis es durch ein anderes überschrieben wird und startet automatisch mit dem Einschalten der Betriebsspannung. Mit einer Programmierumgebung wie der Arduino IDE kann das Entwicklerboard in der Programmiersprache C oder C++ über die USB-Verbindung programmiert werden.

Abb: Arduino IDE

Die Arduino IDE enthält Bibliotheken verschiedenster Entwicklerboards über die man das verwendete Entwicklerboard auswählen kann. Die Bibliotheken stellt eine Vielzahl von Funktionen bereit, mit der die Hardware über ein Programm angesprochen werden kann und dem Programmierer viel Arbeit abnimmt, weil er sich nicht um die eigentliche Hardwareansteuerung kümmern muss. Mit einfachen Befehlen können selbst komplexe Abläufe wie z.B. die Kommunikation über eine serielle Schnittstelle oder das Auslesen einer Analogspannung über einen AD-Wandler ausgeführt werden. Früher musste man über detailliertes Hardwarewissen verfügen und sich die jeweiligen Funktionen zur Ansteuerung der Hardware selber programmieren. Dies nehmen in großen Teilen die Bibliotheken ab und macht es dem Anwender damit sehr einfach. Die Funktionen sind meistens auch für andere Mikrocontroller-Chips und Entwicklerboards übertragbar und können dort in gleicher Weise benutzt werden. Viele Entwicklerboards sind so aufgebaut, dass die IO-Pins einer standardisierten und festgelegten Anordnung folgen. Damit ist es möglich Hardware-Zusatzmodule auf die Entwicklerboards aufzustecken. Man kann damit den Funktionsumfang der Schaltung deutlich erweitern. Zu den Hardware-Zusatzmodulen werden meistens Bibliotheken angeboten, die die Ansteuerung der Hardware für den Programmierer ebenfalls vereinfachen.

Im Zeitalter von Internet of Thinks (IoT) nimmt die Bedeutung von vernetzten Geräten zu. Die Geräte kommunizieren über Netzwerke oder WiFi und können sogar mit dem Internet verbunden sein und ihre Daten mit entfernten Geräten austauschen. Die einfachen Entwicklerboards mit den 8-Bit-Mikrocontrollern stoßen an ihre Leistungsgrenzen, obwohl sie auch teilweise mit Zusatzmodulen IoT-fähig gemacht werden können.

Die Firma Espressif ist eine chinesische Firma und stellt kostengünstige 32-Bit-Mikrocontroller-Chips für IoT-Geräte (ESP8266, ESP32) her. Die Mikrocontroller-Chips verfügen über Netzwerkschnittstellen zu WiFi und Bluetooth. Zudem sind sie wesentlich leistungsfähiger als 8-Bit-Mikrocontroller und verfügen über mehr Zusatzfunktionen. Die Chips haben einen fest eingebauten Bootloader und besitzen ein Real Time Operating System (RTOS), um die Netzwerkfunktionalität und andere zeitkritische Programmabläufe realisieren zu können. Die IoT-Chips werden in Kombination mit einem Speicherchip zu kleinen IoT-Modulen in Briefmarken-Größe verbaut, die sich recht einfach in eigene Schaltungen integrieren lassen. Espressif bietet verschieden ausgestattete IoT-Module an. Die IoT-Module werden in selber Weise benutzt und programmiert wie der Arduino Uno. Es gibt eine Vielzahl von Entwicklerboards zum ESP8266 und ESP32. Auch die Arduino IDE lässt sich zur Programmierung benutzen.

In der nachfolgenden Tabelle werden die beiden Mikrocontroller-Chips ESP8266 und ESP32 gegenüber gestellt.

Eigenschaft ESP8266 ESP32
Mikrocontroller Single Core Dual Core
Registerbreite 32-Bit 32Bit
Prozessor Typ Xtensa LX106 Xtensa LX6
Betriebssystem RTOS RTOS
Max Frequenz 80…160 MHz 160…240 MHz
Flash 4 MB 4 MB
SRAM 160 KB 520 KB
GPIO 17 36
 Touch-Sensoren  10
 ADC Kanäle  1  16
 ADC Auflösung  10-Bit  12-Bit
 ADC Low-Noise Amplifier  Ja
DAC (Digital-to-Analog Converter) 1
WiFi 802.11 b/g/n 802.11 b/g/n
Bluetooth Bluetooth, BLE
 CAN 2.0  –  1
 I2C  1  2
 PWM Kanäle  8  16
 Temperatur-Sensor  –  Ja
 Hall-Sensor  –  Ja
 Stromverbrauch (Aktiv)  80 mA  260 mA
 Betriebsspannung  2,3 bis 3,6 V  2,3 bis 3,6 V
 Datenblatt  Link  Link

Tab.: Vergleich ESP8266 vs. ESP32

Durch den Dual Core Prozessor mit höherer Taktfrequenz ist der ESP32 leistungsfähiger als der ESP8266, verbraucht allerdings auch mehr Leistung. Beide IoT-Chips sind in diversen IoT-Modulen verbaut. Die nachfolgende Tabelle listet einige Module auf.

Bild Typ Chip IO-Ports Spannungs-Versorgung Besonderheiten
ESP-01 ESP8266 6 3.3V kleinstes DIL-Modul
ESP-07 ESP8266 14 3.3V Ext. Antenne
ESP-12 ESP8266 14 3.3V weniger IO-Pins als ESP-12F
ESP-12F ESP8266 20 3.3V mehr IO-Pins als ESP-12
ESP32 Wroom ESP32 26 3.3V Dual Core, etwas größer als ESP-XX Module

Tab.: ESP-Module

Die ESP-Module sind in einer Reihe von Entwicklerboards verbaut. Die Entwicklerboards verfolgen unterschiedliche Ziele und unterscheiden sich in der verbauten Zusatzhardware.

Bild Typ Chip Programmier-Interface Spannungs-Versorgung Besonderheiten
Wemos D1 mini ESP8266 Micro-USB 5V USB Viele aufsteckbare Zusatzmodule verfügbar
NodeMCU ESP8266 Micro-USB 5V USB Weit verbreitet
NodeMCU32 ESP32 Micro-USB 5V USB Weit verbreitet
NodeMCU32S ESP32 Micro-USB 5V USB Mehr IO-Pins
TTGO OLED ESP32 USB-C 5V USB OLED 64×128 Pixels
TTGO TFT ESP32 USB-C 5V USB TFT 135 x 240 Pixel
Heltec WiFi LoRa 32 ESP32 Micro-USB 5V USB, LiPo LoRa (SX1276, 868MHz), OLED 64×128 Pixels
ESP32-CAM ESP32 Seriell, 3.3V TTL 5V 2 MPixel Kamera, SD-Card-Reader

Tab.: ESP-Entwicklerboards

Wer eine gute Einführung in die ESP32-Programmierung sucht, der sollte sich dieses Buch ansehen: Das offizielle ESP32-Handbuch Dort wird ausführlich beschrieben wie man Projekte mit dem EPS32 und der Arduino-IDE umsetzen kann. Beginnend mit einfachen Projekten wie “Blinkende LED” werden Stück für Stück alle wichtigen Hardwareeinheiten erklärt und mit Software-Beispielen auf einem Steckboard in Betrieb genommen.

WiFi Batteriemonitor

Vorab ein paar wichtige Hinweise die sie unbedingt beachten sollten.

Auf der Suche im Internet nach einem Batteriemonitor für Gleichspannungen bin ich auf den PZME-017 gestoßen. Die Firma Peacefair ist bekannt für diverse kostengünstige Batteriemonitore mit LCD-Anzeige wie den PZEM-015.

Abb: PZEM-017 (100A Version, mit Shunt und USB-RS485-Adapter)

Abb: PZEM-015 (300A Version als reine Display-Variante)

Der PZEM-017 hat folgende Merkmale:

  • Spannungsmessung 0…300V DC
  • Strommessung: 10A, 50A, 100A, 200A, 300A (ab 50A über externen Shunt)
  • Anzeige der aktuellen Leistung in Watt
  • Energieanzeige in kWh für aktuellen Tag, Vortag und Gesamtverbrauchsanzeige
  • Modbus RTU-Schnittstelle (RS485, 9600Bd, 8N2, Binär-Datenübertragung)
  • Unterstützte Modbus-Befehle:
    • 0x03 Lesen Speicher-Register
    • 0x04 Lesen Eingangs-Register
    • 0x06 Schreiben Einzelregister
    • 0x41 Kalibrierung
    • 0x42 Reset Energiemessung
  • 7 Geräte am Modbus benutzbar über einstellbare ID 1…7, ID 0 Broadcast
  • USB-RS485-Adapter (CH341)

Der PZEM-017 hat im Gegensatz zum PZEM-015 kein Display und überträgt die Messdaten über den Modbus. Das Modbusprotokoll ist offengelegt und es gibt einige Implementierungen mit einem Arduino. Beispielhaft sei hier die Webseite Solarduino genannt. Dort wird jedoch ein TTL-RS485-Adapter zur Anbindung an den Arduino verwendet. Im Bereich der Home-Automation gibt es Implementierungen mit einem Wemos D1 mini (ESP8266) mit Tasmota-Firmware und einer Daten-Anbindung über WiFi. Die ist jedoch als Batteriemonitor auf einem Boot nicht gut benutzbar, da man noch eine externe Spannungsversorgung von 5V für den Wemos D1 mini benötigt.

Die Tasmota-Firmware bringt schon alle wichtigen Schnittstellen mit, die man benötigt, um einen Boots-Batteriemonitor bauen zu können:

  • Unterstützt alle PZEM-Module mit Modbus-Schnittstelle über TTL-Signale mit ausgelöteten RS485-Chip (U5)
  • Unterstützt Temperatur 1-Wire-Module wie den DS18B20
  • Webkonfiguration
  • Anzeige der Messdaten über Webseite

Nach etwas Reengineering der Elektronik konnte ich die Schaltung so modifizieren, dass sie keine zusätzliche 5V-Versorgung benötigt und mit nur wenigen Bauelementen auskommt wie:

  • Wemos D1 mini mit Tasmota-Firmware
  • 1k Widerstand
  • 4K7 Widerstand
  • 7 Verbindungskabeln
  • DS18B20 Temperatursensor

und ein eigenständiger Boots-Batteriemonitor entstanden ist der folgendes kann:

  • Eingangsspannung 10…38V
  • Genauigkeit der Spannungsmessung: 0,01V
  • Strommessung: 10A, 50A, 100A, 200A, 300A (ab 50A über externen Shunt)
  • Genauigkeit der Strommessung: 50mA
  • Anzeige der aktuellen Leistung in Watt
  • Energieanzeige in kWh für aktuellen Tag, Vortag und Gesamtverbrauchsanzeige (nicht Power off resistent bei kompletter Abschaltung, Details siehe hier)
  • Rücksetzbare Energiezähler
  • Konfiguration und Anzeige der Messdaten über Webseite
  • Temperaturmessung: 1…3 DS18B20 für Batterie, Ladegerät und Wechselrichter (parallel betrieben am 1-Wire-Bus)
  • Eigenverbrauch: 16mA (ohne WiFi-Aktivität), 60mA (mit Wifi-Datenverkehr, wenn verbunden)
  • Reduzierter Stromverbrauch mit nur 1,0mA, wenn der Wemos D1 mini abgeschaltet wird (siehe hier)

Schaltungs-Modifikation

 IC U5 auslöten (MAX485)

Der IC U5 wird nicht benötigt, da wir nicht den Modbus benutzen und die seriellen TTL-Datensignale (3,3V) direkt mit dem Wemos D1 mini verbinden. Am einfachsten geht das Auslöten mit einer Heißluft-Entlötstation. Wer die nicht zur Verfügung hat, kann jeden Pin des IC einzeln mit dem Lötkolben erhitzen und mit einer Nadel vorsichtig nach oben biegen. Man muss aber darauf achten, dass der Pin nicht zu lange erhitzt wird, da sich sonst die darunter befindliche Leiterbahn von der Platine ablöst. Das muss unbedingt vermieden werden, da wir die Pads noch zum Anlöten der Kabel benötigen. Es ist auch wichtig sich zu merken wie U5 eingelötet war, da die Kabel nach den Pin-Nummern nach Tabelle 1 angelötet werden.

Abb: Pin-Nummern

Abb: Position von U5 (unmodifizierte Platine)

1k Widerstand einlöten

Den 1k Widerstand muss man parallel zu R15 anlöten. R15 ist der Vorwiderstand zur Ansteuerung des Optokopplers U2 (CT817C Empfangsseite). Mit dem parallel gelöteten Widerstand wird R15 auf 320 Ohm reduziert, so dass man mit einem 3,3V-TTL-Signal die LED des Optokopplers vom Wemos D1 mini aus ansteuern kann.

Abb: 1k Widerstand

4K7 Widerstand und Brücke einlöten

Der 4k7 Widerstand dient als Pullup-Widerstand für den 1Wire-Bus. Er wird an die Pads des fehlenden Widerstandes R19 gelötet. Zusätzlich wird eine kleine Brücke von R19 zu R17 gelötet wie im Bild zu sehen ist. Damit wird der Widerstand mit 3,3V verbunden.

Abb: 4k7 Widerstand mit Brücke

3,3V Versorgungsspannung an die Modbus-Ausgangsschaltung anlöten

Da die Modbus-Ausgangsschaltung elektrisch isoliert über die Optokoppler von der Messschaltung betrieben wird, benötigt man in der Original-Schaltung eine externe Versorgungsspannung von 5V. Diese wird über die Modbus-Anschlüsse eingespeist. In unserem Fall benötigen wir aber keine elektrische Isolierung, da wir die Daten per WiFi übertragen und betreiben den Rest der Schaltung mit der gleichen 3,3V-Versorgungsspannung wie die Messschaltung. Zur Einspeisung benötigen wir ein schwarzes Kabel von Z2 zu U1 Pin 3 und ein rotes Kabel von Plus E1 nach C7.

Die Optokoppler machen eigentlich damit keinen Sinn mehr. Wir benötigen sie aber trotzdem, weil die Signale vom Mikrocontroller U3 invertiert sind und wir sie nicht direkt verwenden können.

Abb: Versorgungsleitungen

Wemos D1 mini einlöten

Die Anschlüsse des Wemos D1 mini werden an die freien Pads von U5 folgendermaßen angelötet:

Kabelfarbe Von Wemos D1 mini Nach Bedeutung
rot 3V3 U5 Pin 8 3,3V Versorgung
schwarz G U5 Pin 5 Masse
grün TX (GPIO 1) U5 Pin 1 Empfangen Modbus
grün RX (GPIO 3) U5 Pin 4 Senden Mosbus
gelb D1 (GPIO 5) R19 unteres Pad 1-Wire Datensignal

Tab.1: Kabelbelegungen

Abb: Pinbelegung Wemos D1 mini

Abb: Kabel am Wemos D1 mini

Abb: Belegung der Kabel an U5

Tasmota Firmware flashen

Bevor die Tsmota-Firmware geflasht wird, muss folgendes unbedingt beachtet werden:

Hinweis! Der Wemos D1 mini wird in unserer modifizierten Schaltung nicht mit der 5V-Versorgung betrieben, sondern mit 3,3V direkt aus der Messschaltung versorgt. Wenn der Wemos D1 mini über die USB-Verbindung mit 5V versorgt wird, dann muss der Batteriemonitor von der 12V-Versorgung und vom Shunt getrennt sein. Anderenfalls erfolgt eine doppelte Einspeisung und der Wemos D1 mini oder der PC können beschädigt werden. Es müssen also immer alle 4 Kabel von den Messanschlüssen getrennt sein, wenn man mit dem USB-Kabel arbeitet.

Die Tasmota Firmware kann in der aktuellen Version hier herunter geladen werden: http://ota.tasmota.com/tasmota/release/ Die Firmware gibt es in verschiedenen Sprachversionen. Das File tasmota.bin wäre eine gute Wahl für eine englischsprachige Firmware. Wer mehr über Tasmota wissen will, kann diese Webseite besuchen: https://www.tasmota.info Dort findet man ausführliche Informationen zu unterstützter Hardware und zum Flashen .

Das Flashen der Firmware erfolgt am einfachsten mit der Software Tasmotizer die es für verschiedene Betriebssysteme gibt. Am besten funktioniert das mit  der Windows-Variante.

Beim Flashen über das USB-Kabel dürfen wir nicht vergessen das Häkchen bei “Self-resetting device” zu setzen. So wird der Wemos D1 mini automatisch in den Programmiermodus versetzt und nach dem flashen automatisch resetet.

Abb: Einstellungen Tasmotizer

Tasmota-Konfiguration

Die Tasmota Firmware ist universell gehalten und unterstützt einen Vielzahl an Geräten. Mit der Konfiguration wird die Firmware an die spezielle Hardware angepasst. Nach dem flashen startet der Wemos D1 mini mit einem eigenen AccessPoint der unter der SSID tasmota_xxxxxx zu erreichen ist. Ein Passwort für den Login in das WiFi-Netzwerk wird nicht benötigt. Unter der IP-Adresse 192.168.4.1 kann mit einem Webbrowser die Startseite geöffnet werden. Unter Configuration werden die jeweiligen Einstellungen wie in den nachfolgenden Bildern vorgenommen.

Abb: Configure WiFi: SSID, Password und Hostname eintragen

Abb: Configure Tamplate: Based on Generic(18) auswählen, Name PZEM-017 vergeben und GPIOs zuweisen

Abb: Configure Module: Module type PZEM-017 (0) auswählen

Abb: Configure Other: Device Name Battery Monitor vergeben

Damit ist die Konfiguration abgeschlossen und wir sehen die Messwerte auf der Startseite des Batteriemonitors.

Abb: Startseite des Batteriemonitors

Sicherer Einbau in das Gehäuse

Der Wemos D1 mini kann im selben Gehäuse des Batteriemonitors untergebracht werden. Dazu habe ich den Wemos D1 mini in eine kleine Zip-Tüte gepackt. So können keine Kurzschlüsse mit der übrigen Schaltung entstehen und alles ist sicher verpackt. Man könnte die Isolierung natürlich auch mit Klebeband vornehmen. Mit der Zip-Tüte ist es aber komfortabler, da man den Wemos Di mini für spätere Softwareänderungen wieder entnehmen kann.

Abb: Isolation des Wemos D1 mini in einer Zip-Tüte

Abb: Geschlossenes Gehäuse

Anschluss des Temperatursensors

Der DS18B20 Temperatursensor kann an den Anschlüssen des RS485-Busses folgendermaßen angeschlossen werden:

Anschluss RS485 Port Neue Funktion DS18B20
5V 3,3V nicht belegt
B 3,3V rot
A 1-Wire gelb
GND GND schwarz

Tab: Anschlussbelegung Temperatursensor DS18B20

Abb: Testschaltung mit Shunt, Lastwiderstand und Temperatursensor äquivalent zum Schaltplan auf der Rückseite des Batteriemonitors

Abb: Schaltung

Weitergehende Informationen

Separater Micro-USB Port

Der separate Micro USB Port an der Seite des Batteriemonitors dient der Stromversorgung, wenn die Batteriespannung unter 7V sinken sollte. Dann kann mit einem separaten USB-Kabel einen Fremdeinspeisung erfolgen. Wie in der Dokumentation vermerkt, ist das aber sehr gefährlich, wenn Batteriespannung größer als 7V sein sollte. Dann kann nämlich über die Einspeisung von einem PC oder einer Powerbank die einspeisenden Geräte zerstört werden, weil die höhere Spannung dann an den einspeisenden Geräten mit maximalem Strom der Batterie anliegt. Daher ist es nicht ratsam diesen Micro-USB-Port zu benutzen. Es ist einfach zu gefährlich.

1-Wire Port

Am 1-Wire Port können bis zu 3 Temperatursensoren parallel angeschlossen werden. Die Sensoren können z.B. die Temperatur der Batterie, des Ladgerätes, des Solarreglers oder des Wechselrichters benutzt werden. Jede andere Anwendung wäre aber auch denkbar. Die Tasmota-Firmware erkennt die zusätzlichen Temperatursensoren automatisch und zeigt die Temperaturwerte unter den Werten des Batteriemontors an. Die Zuordnung der Sensoren zu den IDs muss durch testen der Sensoren herausgefunden werden.

Spannungsversorgung

Bei Battriespannungen kleiner 10V funktioniert der WemosD1 mini nicht mehr ordnungsgemäß. Speziell beim Anschalten mit Spannungen unter 10V bleibt der Wemos D1 mini hängen. Überspannungen oberhalb von 40V sind möglich, sollten jedoch nicht all zu lange anliegen, da die Spannungsversorgung sich deutlich aufheizt.

Strommessung

Die Strommessung beim PZEM-017 weist für einen 100A-Shunt einen Offset von 0,05A auf und verfälscht damit das Zählen der Energiemenge. Es können nur positive Messströme verarbeitet werden. Negative Ströme durch Ladegeräte sind erlaubt, werden jedoch nicht in der Energiemessung berücksichtigt.

Nachträgliche Änderung des Shunt-Wertes

Bei Auslieferung des PZEM-017 ist in der Firmware der korrekte Shunt-Wert eingetragen. Wer andere Shunt-Werte benutzen möchte kann dies vor dem Umbau der Schaltung mit Hilfe der Modbus-Befehle umprogrammieren. Es ist aber zu beachten, dass die Shunts für 75mV ausgelegt sein müssen und nur die Shunt-Werte für die Ströme 50A, 100A 200A und 300A unterstützt werden. Die Umschaltung auf andere Shunt-Werte erfolgt ausschließlich durch Software. Intern wird lediglich eine andere Umrechnung der am Shunt gemessenen Spannung vorgenommen. Damit ist die Messgenauigkeit abhängig vom verwendeten Shunt. Die Messwerte für Shunts für kleinere Ströme sind entsprechend genauer und für höhere Ströme ungenauer.

Shunt-Wert einstellen:

01 06 00 03 00 00 79 CA 100A
01 06 00 03 00 01 B8 0A 50A
01 06 00 03 00 02 F8 0B 200A
01 06 00 03 00 03 39 CB 300A
01 06 00 03 00 04 78 09 10A (interner Shunt)

01 – ID
06 – Parameter schreiben
00 03 – Register-Nr.
00 00 – Shunt Wert (00 00 – 100A)
79 CA – Checksumme

Antwort:

01 06 00 03 00 00 79 CA 100A
01 06 00 03 00 01 B8 0A 50A
01 06 00 03 00 02 F8 0B 200A
01 06 00 03 00 03 39 CB 300A
01 06 00 03 00 04 78 09 10A (interner Shunt)

01 – ID
06 – Parameter schreiben
00 03 – Register-Nr.
00 00 – Shunt Wert (00 00 – 100A)
79 CA – Checksumme

Energiemessung

Die Energiemessung ist eine Messung von Spannung und Strom über der Zeit. Es wird das Produkt aus Spannung, Strom und Zeitintervall gebildet und nachfolgende Werte aufaddiert. Ein Peukertfaktor wird bei der Messung nicht berücksichtigt. Es handelt sich um eine reine Energiemengenmessung.

Kalibrierung

Messungen am PZEM-017 mit einem 100A-Shunt zeigten, dass der Batteriemonitor präzise Messfunktionen aufweist. Lediglich ein Spannungsoffset von +0.01V und ein Stromoffset von +0,05A konnten als Fehler festgestellt werden. Für typische Anwendungen ist das völlig ausreichend. Bei Versionen mit 200A- und 300A-Shunt muss mit größeren Fehlern gerechnet werden, da die Messauflösung sinkt. Eine Kalibrierung direkt am Gerät über Potis kann nicht durchgeführt werden und muss extern mit einer speziellen Software von  Peacefair erfolgen. Zur Kalibrierung benötigt man eine stabile und präzise 30V Versorgung und eine sehr genaue 10A Stromquelle. Tests mit einer selbst durchgeführten Nachkalibrieung brachten keine besseren Ergebnisse als die Werkskalibrierung.

Messwertspeicherung

Alle ermittelten Messwerte gehen nach dem kompletten ausschalten der Versorgungsspannung verloren und die Werte der Energiemessung werden auf Null gesetzt. Wer das vermeiden möchte, der muss die Messschaltung weiterhin mit der Batteriespannung versorgen. Die reine Stromaufnahme der Messschaltung beträgt nur 1mA an 12V. Wer also weiterhin die Energiewerte erhalten möchte darf also nur den Wemos Di mini abschalten und muss die Messschaltung weiter versorgt lassen. Damit reduziert sich der Stromverbrauch von 70mA auf nur noch 1mA. Weiter Details siehe auch im Kapitel Stromverbrauch reduzieren.

Reset der Zählerwerte

Die Zählerwerte können nicht auf der Hauptseit des Batteriemonitors über einen Taste rückgesetzt werden. Dazu ist ein kleiner Umweg über die Console notwendig. Dazu wird der Befehl EnergyReset 0 in die Console eingegeben und mit Enter bestätigt.

Nachkommastellen für Spannungswerte anzeigen lassen

Standardmäßig zeigt die Tasmota-Firmware nur die Spannung ohne Nachkommastellen an. Bis zu zwei Nachkommastellen können angezeigt werden, wenn man in der Console folgenden Befehl eingibt:

VoltRes 2

Setzen der korrekten Systemzeit

Der Wemos D1 mini bezieht die aktuelle Urzeit aus dem Internet über einen NTP-Server. Die korrekte Uhrzeit für Deutschland kann über die Console mit Timezone 99 eingestellt werden. Jede andere Zeitzone kann mit Timezone -13…+13 stundenweise als Offset eingestellt werden. Für den Fall, dass der Battriemonitor nicht am Internet hängt aber eine aktuelle Urzeit von einem NTP-Server aus dem eigenen Netz beziehen möchte, ist es möglich mehrere NTP-Server neu zu definieren. Dazu werden folgende Befehle nacheinander benötigt:

NtpServer 0 (löscht die NTP-Einstellungen, auf Leerzeichen nach NtpServer achten!)

NtpServer1 ptbtime1.ptb.de (setzt NTP-Server 1)

NtpServer2 ptbtime3.ptb.de (setzt NTP-Server 2)

NtpServer2 ptbtime3.ptb.de (setzt NTP-Server 3)

Nähere Infos zu allen Tasmota-Kommandos kann man hier finden: https://tasmota.github.io/docs/Commands/

Messwerte in fremde Webseiten einbinden

Die Messwerte des Batteriemonitors können auch als formatierte Daten ausgeben werden. Dazu verbindet man sich per HTTP mit dem Batteriemonitor

http://192.168.4.1?m=1

und erhält dann folgende Antwort

{t}{s}Voltage{m}0.00 V{e}{s}Current{m}0.000 A{e}{s}Power{m}0 W{e}{s}Energy Today{m}0.000 kWh{e}{s}Energy Yesterday{m}0.000 kWh{e}{s}Energy Total{m}0.000 kWh{e

Wer diese Daten in fremden Webseiten abrufen möchte muss CORS (Cross Origin Resource Sharing) in der Tasmota-Firmware freigeben. Dies macht man mit folgendem Befehl über die Console:

CORS *

Damit können dann beliebige Webseiten die Daten fremd abrufen. Wer die Zugriffe etwas eingeschränkter benutzen möchte kann auch folgendes Kommando benutzen:

CORS http://my.webside.com

Ein kleines Beispiel ist hier zu finden: Demo_PZEM-017.zip

Abb: Einbindung in eigene HTML-Seiten

Messwerte in SignalK integrieren

Die Messwerte lassen sich auch in SignalK einbinden und können dann über das Instrumeneten Panel angezeigt werden. Wie die Konfiguration im Detail abläuft ist hier beschrieben:

https://open-boat-projects.org/de/wifi-batteriemonitor-in-signalk-integrieren/

Abb: Messdaten im Instrumenten Panel

Stromverbrauch reduzieren

Der Stromverbrauch des Batteriemonitors kann recht deutlich auf 1,0 mA an 12 V reduziert werden, wenn man den Wemos D1 mini über einen kleinen Schalter (rotes Kabel 3,3V) abschaltbar macht. Die originale Messschaltung läuft dann im abgeschalteten Zustand weiter und zählt den Stromverbrauch. Lediglich eine Datenübertragung und Anzeige der Messdaten ist dann nicht mehr möglich. Nach dem Zuschalten der Versorgungsspannung werden wieder alle Daten übertragen und korrekt angezeigt. Das ist ganz hilfreich bei Abwesenheit am Boot, um die Batterie nicht zu entladen.

[zurück]

Abb: Einbauposition für den Ein/Aus-Schalter

Messung der Verbrauchsdaten des Wechselstrom-Landanschlusses

Wer auch die Verbrauchsdaten des Wechselstrom-Landanschlusses messen möchte kann dies mit dem Sonoff Pow Power Monitoring Switch mit der Tasmopta-Firmware machen. Über das Modul kann auch der Landanschluss zu und abgeschaltet werden. Die neuere Variante ist der Sonoff Pow R2. Sie hat einen größeren Funktionsumfang und kann mehr Messwerte anzeigen sowie auf Grenzwerte reagieren. Bei diesen beiden Geräten ist bereits ein ESP8266 eingebaut der lediglich mit der Tasmota-Firmware betrieben wird. Eine Modifikation der elektronischen Schaltung ist nicht notwendig wie beim Batteriemonitor. Der Sonoff Pow R2 ist daher eine gute Ergänzung zum Batteriemonitor.

Abb: Sonoff Pow (R2)

Instrumentendisplay

Video https://youtu.be/0G_1A66hpyE

Video mit Verwendung als Spannungseingang mit Grenzwertalarm: https://youtu.be/XZPPG5St0Ko

https://www.segeln-forum.de/board194-boot-technik/board195-open-boat-projects-org/79394-instrumentendisplay-diy/#post2278234

Zur Anzeige diverser Messwerte auf Booten werden oft Standard-Einbauinstrumente mit einem Durchmesser von 52mm verwendet. Oft sind diese nur für ganz spezielle Aufgaben mit ganz speziellen Sensoren verwendbar. Leider unterscheidet sich das Displaylayout je Aufgabenstellung und ein konsistentes Aussehen ist nicht gegeben. Auf der Suche nach einem modifizierbaren Display bin ich auf ein Einbauinstrument für eine Öldruckanzeige 0…150 psi gestoßen. Dieses Display erfüllt eine Menge an Anforderungen für ein Universaldisplay:

  • Digitale Anzeige
  • Bargraf
  • Warnung bei Grenzwertüberschreitung
  • Hintergrundbeleuchtung
  • 12V-Betrieb
  • Analoger Signaleingang für Sensorik

Das Display hat folgende Eigenschaften:

  • 10…15V Stromversorgung
  • 1,2W Stromverbrauch
  • 3x 7-Segmentanzeigen ohne Dezimalpunkt
  • 2x Sondersymbole (Alarm, Peak)
  • 50 Bargraf-Elemente
  • Buzzer für Alarme
  • Sensoreingang 0…200 Ohm
  • Taster für Peak-Reset und zur Konfiguration

Das Display kann in verschiedenen Dingen parametriert werden:

  • Hintergrundfarbe
  • Helligkeit
  • Grenzwerte (Alarm, Peak)
  • Art der Peak-Anzeige (feststehend mit manuellem Reset, langsam nachlaufend nach 1s)
  • Art der Bargraf-Ansteuerung (Säule, Einzelelement, inverses Einzelelement)
  • Buzzer-Lautstärke
  • Startsequenz

Das Instrumentendisplay hat den Charme, dass man damit einige Dinge recht universell machen kann, wenn man es etwas modifiziert. Ohne Modifikation wäre folgendes möglich:

  • Öldruckanzeige (wer es benötigt)
  • Levelanzeige 0…100% (Tank, Wasser, Standardgeber 0…180 Ohm)

Und mit Modifikation:

  • Spannungsanzeige 0…15 V
  • Temperaturanzeige 0…150 °C
  • Speed 0…15 kn
  • Tiefe 0…150 m
  • Windrichtung (grafisch über Bargraf)
  • Drehzahl 0…3000 U/min (mit Multiplikator 20)
  • Kühlwasserdurchlauf 0…15 l/min

Ich habe das Teil mal zerlegt und nachgesehen was da verbaut ist. Dazu musste ich den schwarzen Alu-Frontrahmen von hinten aufbiegen und vom Displaygehäuse runter nehmen. Wer es vorsichtig macht, kann den Frontrahmen auch später wieder anbringen und weiter verwenden. Im Display selbst ist einfachste Mikrocontroller-Technik verbaut:

Der Mikrocontroller verarbeitet am Analogeingang AIN3 0…5V Spannungssignale wobei nur 0…2,5V als eigentliches Nutzsignal verwendet wird. Das entspricht dann 0…100% des Anzeigewertes (respektive 0…200 Ohm vom Sensor). Spannungen größer 4,6V werden als fehlerhaftes Sensorsignal erkannt und es erscheinen für die Zahlen “- – -“. Auf der Platine gibt es eine Stelle an der man ein eigenes Sensorsignal 0…2,5V bei einem nicht angeschlossenem Sensor einspeisen kann. Der Massebezug ist GND der Versorgungsspannung. Für eigene Anwendungen müsste man also ein Spannungssignal 0…2,5V erzeugen das sich proportional zur Messgröße verhält. Das Sensorsignal könnte man z.B. mit einem ESP8266 erfassen und entsprechend als Analogausgabewert dem Display übergeben. Mit etwas Geschick bekommt man das sogar noch in das gleiche Gehäuse. Denkbar wäre auch ein eigenes Gehäuse zu drucken das nach hinten etwas länger ist und die zusätzliche Elektronik aufnehmen könnte. Wenn man noch etwas weiter Spinnt, dann könnte man auch beliebige Messwerte von SignalK per WLAN auf das Display senden und zur Anzeige bringen. Mit einer entsprechenden Blende oder einem schwarzen Edding könnte man die nicht benötigten Elemente ausmaskieren so dass man sie nicht mehr sieht. Auf der Blende könnte man auch eine neue Beschriftung vorsehen. EasyESP wäre der ideale Kandidat für eine Softwareanbindung an SignalK, da es dafür schon fast fertige Software gibt.

Wenn man so ein Display kauft, muss man aber darauf achten das richtige zu kaufen. Das Display wird in verschiedenen Versionen angeboten. Bei anderen Versionen muss die Modifikation entsprechend anders aussehen. Derzeit habe ich folgende Varianten gesehen:

Öldruck 0…150 psi (verwendete Version)
Öldruck 0…100 psi
Spannung 8…18V
Tuboladedruck -30…+30 psi

Hinweise zur Modifikation

Der Analogeingang zum Messen der Sensorspannung ist der Pin 13 (AIN3) vom Mikrocontroller STM8. Das Eingangsspannungssignal kann am oberen Pad von JP5 abgegriffen werden. Am 3-poligen Sensorstecker ist der Pin 1 unbenutzt. Am danebenliegenden nicht eingebauten Widerstand RV12V kann am unteren Pad das Signal vom Pin 1 abgegriffen werden. Mit einem Kabel von RV12V zu J5 kann eine Eingangsspannung eines Sensorsignals (0…5V) an den Analogeingang (AIN3) vom Mikrocontroller eingespeist werden. Beim Anlöten des Kabels ist darauf zu achten keinen Kurzschluss der Pads mit Lötzinn zu verursachen.

Kabelbrücke zum Sensoreingang P2

Signaleinspeisung an JP5 oberes Pad

Das Sensorkabel kann weiter verwendet werden. Man braucht nur das rote Kabel auf den freien Pin legen. Dazu hebt man mit einer Nadel die kleine Plastik-Zunge an und kann das Kabel nach hinten raus ziehen. Im benachbarten Pin rastet das Kabel dann selbständig beim Reinschieben ein.

Sensorkabel vor dem Umbau

Anschlussbelegung

Sensoreingang P2 unmodifiziert (oben links)

Pin Farbe Bedeutung
1 unbenutzt
2 rot Sensorsignal (0…200 Ohm)
3 schwarz GND

Sensoreingang P2 modifiziert (oben links)

Pin Farbe Bedeutung
1 rot Sensorsignal (0…2,5V)
2 Sensorsignal (0…200 Ohm)
3 schwarz GND

Tastereingang P1 (oben rechtes)

Pin Farbe Bedeutung
1 schwarz GND
2 rot Taster

Stromversorgung P4 / P3 (unten links / rechts)

Pin Farbe Bedeutung
1 schwarz GND
2 gelb Beleuchtung
3 weiß Zündung
4 rot +12V

Inbetriebnahme

Zur Inbetriebnahme müssen das rote, gelbe und weiße Kabel mit +12V und das schwarze Kabel mit GND verbunden werden. P3 oder P4 kann gleichwertig benutzt werden. Mit einem beiliegenden Brückenkabel kann ein weiteres Display mit Strom versorgt werden. Alternativ können das rote und gelbe Kabel dauerhaft mit +12V verbunden werden und das schwarze mit GND. Wenn das weiße Kabel (Zündung) dann mit +12V verbunden wird, geht das Display an. Vorher ist es im Stand By und verbraucht ca. 10 mA. Alle vorgenommenen Einstellungen über den Taster gehen nach einer vollständigen Spannungsabschaltung nicht verloren.

Weitere Überlegungen

Da grundsätzlich Anzeige- und Verarbeitungseinheit getrennt sind, könnte man auch die grüne Platine mit dem STM8 durch eine eigene Platine mit einem ESP8266 ersetzen. Über den Steckverbinder JP1 können der Display-Chip HT1621B, die Beleuchtung und der Buzzer angesteuert werden. Einziges Problem ist, herauszufinden welche Segmente vom LCD-Display welchem Bit im HT1621B zugeordnet sind. Das sollte sich aber recht einfach mit einem Testprogramm machen  lassen, das nacheinander alle Segmente einzeln ansteuert. Der Vorteil einer eigenen Platine wäre, dass man es dann selbst in der Hand hat wie man das Display ansteuert und welche Werte man anzeigt.

Theoretisch könnte man sich auch ein LCD in China nach eigenen Anforderungen bauen lassen. Für ein reines LCD-Display werden für kleine Stückzahlen nicht mehr als 5…10 Euro aufgerufen. Im Grunde genommen ist das Display schon fast perfekt bis auf den fehlenden Dezimalpunkt und die Darstellung der Einheit. Theoretisch könnte man auch die fixen Zahlen und den unteren Namen im Display entfernen und durch helle Flächen ersetzen. Dann könnte man mit durchsichtigen laserbedruckten Kunststofffolien Blenden erzeugen, mit denen die hellen Bereiche wieder abgedeckt werden. So könnte man das Display sehr flexibel frei gestalten und damit neue Skalen und Beschriftungen erstellen. Dummer weise sind die Skala und die untere Beschriftung nicht einfach nur bedruckte Elemente des Displays. Dann hätte man die Beschriftungen recht einfach nachträglich entfernen können. Die Firma Bezel als Hersteller verwendet für ihre unterschiedlichen Instrumente verschiedene LCD-Gläser, die an die speziellen Aufgaben angepasst sind.

Weiter Bilder

Geöffnetes Instrumentendisplay

 

Elektronik-Stapel

Platine Displayansteuerung

Display mit Displayansteuerung

 

Steifenleiter zum Display

Mess- und Steuerplatine vorn

Mess- und Steuerplatine hinten

Eingänge für Messsignal 0…2,5V

Low Budged Energiemonitor

Stefan Kaufmann hat auf seiner Webseite https://obenschlaefer.com/ einen kostengünstigen Energiemonitor vorgestellt der auch für Bootsfreunde interessant ist. Ursprünglich hat er den Energiemonitor für seinen Camper gebaut, um die Energieversorgung überwachen zu können. Das System baut auf Komponenten von Victron auf. Das Herzstück ist ein Raspi mit der freien Venus OS-Firmware von Victron die ebenfalls in kommerzieller Hardware läuft, in diesem Fall aber auf einem kostengünstigen Raspi3B. Der Raspi ist dann die Steuer- und Visualisierungszentrale für den Energiemonitor. Die Bedienung erfolgt webbasiert über ein Handy, Tablett oder PC. In seiner Bauanleitung verwendet er ein 7″ Raspi-Display auf dessen Rückseite der Raspi angedockt ist. Die Victron-Komponenten werden über Bluetoth mit dem Raspi verbunden und tauschen darüber die Daten aus.

Grundsätzlich können damit folgende Dinge gemacht werden:

  • Anzeige der Energieflüsse zwischen Erzeugern (Generator, Solarzelle, Ladegerät), Speichern (Bleiakku, LiFePo4, etc.) und Verbrauchern
  • Ferndiagnose über Internet
  • Meldesystem bei Gerätestörungen
  • Unterstützte Geräte von Victron:
    • Victron Batteriecomputer BMV712
    • Victron MPPT Solarladeregler der Smart-Solar Reihe
    • Victron Wechselrichter der Phoenix Reihe
    • Victron 230V Ladegerät der Phoenix Reihe

Stefan hat sein Projekt sehr ausführlich auf seiner Homapage beschrieben. In mehrteiligen Videos beschreibt er genau wie das System aufgebaut wird und worauf geachtet werden muss. Da sollten kaum Fragen offen bleiben.

Venus OS von Victron

Eingebaute Komponenten

 

Ruuvi Sensor Tag in SignalK integrieren

Video: https://youtu.be/NCJYmDuf2Jg

Das Ruuvi Sensor Tag ist ein kleines smartes Sensor-Device. Damit können folgende Daten erfasst werden:

  • Temperatur
  • Luftfeuchte
  • Luftdruck
  • 3-Achs Beschleunigungssensor
  • wasserdichtes Gehäuse
  • Datenspeicherung in Handy App
  • Android- und IPhone-App verfügbar

Die Daten werden energiesparend per Bluetooth Low Energy in definierten Zeitabständen zu einem Datenendgerät gesendet. Das kann z.B. ein Handy sein wo man sich die Daten anschauen kann. Es gibt aber auch ein Gateway womit die Daten auch in andere Systeme übertragen werden können wie:

  • SignalK
  • Grafana
  • Io-Tool
  • Steamr
  • TTN-Netzwerk
  • Node Red
  • und viele weitere Dienste

Das Ruuvi Sensor Tag verfügt über einen großen 1000mAh-Akku in Form einer CR2477 Batterie. Damit lassen sich Datenaufzeichnungen von bis zu 3 Jahren je nach Aufzeichnungsrate realisieren, wobei die Datenspeicherung mit der aktuellen ausgelieferten Firmware 2.5.9 extern und nicht im Ruuvi Sensor Tag erfolgt. Dazu wird entweder das Handy oder ein Gateway zur Übertragung der Daten in andere Systeme benutzt. Ab der Beta-Firmware 3.29.3 funktioniert dann auch das interne Speichern der Daten. Das Gehäuse verfügt über 2 Tasten und zwei LEDs und misst 52mm im Durchmesser, ist 12,5 mm Dick und wiegt 25g. Eine genaue Spezifikation ist hier zu finden. Das Ruuvi Sensor Tag ist im Rahmen einer Couwdfunding-Aktion entstanden und verfolgt eine offene Strategie von OpenHardware und OpenSource. Ein großer Teil der Bauunterlagen ist frei verfügbar. Auf der Homepage des Herstellers können verschiedene Firmware-Versionen für unterschiedliche Anwendungen herunter geladen werden.

Die Integration des Sensor Tag in SignalK erfolgt über das signalk-ruuvitag-plugin. Über das Plugin kann der entsprechende Sensor Tag anhand seiner ID ausgewählt werden und recht einfach einem Sensor-Schema in SignalK zugeordnet werden. Die empfangenen Daten können dann live im Instrumenten Paneel angezeigt werden. Über die InfluxDB in SignalK lassen sich mit Grafana Langzeitauswertungen vornehmen.

Die gleichnamige finnische Firma Ruuvi bietet den Sensor Tag für 35 Euro in über 100 Ländern an.

Langzeitauswertung mit Grafana

Vorderseite Ruuvi Sensor Tag

Erweiterungsanschlüsse des Ruuvi Sensor Tag auf der Rückseite

Visualisierung mit Grafana

 

 

Datenanzeige in Handy App

Weiterführende Links

https://github.com/ruuvi

Wettervorschau mit AZ-Touch

Das AZ-Touch Mod ist ein kleines 2.4″-Touch-Farb-Display mit 320 x 240 Pixeln. Auf der Basis-Platine können als Steuereinheit ein ESP32C oder ein Wemos D1 mini aufgesteckt werden. Ein kleines Lochrasterfeld ermöglicht den Aufbau eigener Schaltungen zur Erweiterung des Displays.

Das AZ-Touch hat folgende Merkmale:

  • Wandgehäuse 120mm x 80mm x 35mm (W x H x D)
  • Resistiver Touchscreen 2,4 Zoll (6,14cm) Farb-TFT mit 320 x 240 Pixeln (ILI9341)
  • Für D1mini oder ESP32-Dev-Kit C V2/4
  • eingebauter Piezosummer
  • Integrierter 5V Spannungsregler (Eingangsspannung 9 – 35V DC)
  • Stromverbrauch ca. 0,7W

Auf der Webseite von Zihatec.de findet man die vollständige Beschreibung und den Schaltplan zum AZ-Touch sowie einige Software-Beispiele.

Die Wettervorschau gibt es in zwei Versionen. Einmal für den ESP32C und einmal für den Wemos D1 mini. Die Wetterdaten werden aus dem Internet geladen, indem sich das Display in ein internetfähiges WLAN einbucht.

Hier noch ein kleines Video dazu: https://youtu.be/BkN-VGN96Cg

SensESP

Vorab ein paar wichtige Hinweise die sie unbedingt beachten sollten.

SensESP ist eine Bibliothek, die die Integration von ESP8266 und ESP32 basierten Sensoren und Aktoren in ein signaK-Netzwerk erleichtert. Das Framework basiert auf PlatformIO und ist überwiegend in C++ geschrieben. Grundsätzlich werden wiederkehrende und wichtige Funktionen durch das Framework abgebildet, so dass die Programmierung und Anbindung eigener Sensoren an SignalK recht einfach ist. Aktuell gibt es mehrere gut dokumentierte Beispiel für verschiedene Sensoren wie:

  • Tanksensor (10…180 Ohm)
  • Temperatursensoren (DS18B20, SHT31)
  • Temperatursensoren mit einem Thermopile-Sensor für höhere Temperaturen bis 500°C
  • Spannungsmessung 0….15V
  • Umweltsensor BME280 (Temperatur, Luftdruck, Luftfeuchtigkeit)
  • Frequenzzähler (z.B. für Windspeed, Motordrehzahl, Wellendrehzahl)
  • Heading-Sensor (9DOF)
  • GPS-Koordinaten mit Speed und Richtung
  • Batteriemonitoring mit INA219
  • Helligkeitssensor
  • Drehzahlsensor
  • Relayansteuerung als Ausgang bei Grenzwertüberschreitung von Messwerten

Das Repository enthält auch eine universelle Platine für einen ESP8266 an die verschiedene Sensoren angeschlossen werden können.

custom-built ESP32 development board in a waterproof enclosure

Hier ein Software-Beispiel für einen Durchflußsensor:

#include <Arduino.h>
#include "sensesp_app.h"
#include "wiring_helpers.h"

ReactESP app([]() {
#ifndef SERIAL_DEBUG_DISABLED
SetupSerialDebug(115200);
#endif

// create an new application for flow meter
sensesp_app = new SensESPApp();

// setup the fuel flow meter on two pins
// ESP8266 pins are specified as DX
// ESP32 pins are specified as just the X in GPIOX
#ifdef ESP8266
uint8_t pinA = D5;
uint8_t pinB = D6;
#elif defined(ESP32)
uint8_t pinA = 4;
uint8_t pinB = 5;
#endif

// setup flow meter
setup_fuel_flow_meter(pinA, pinB);

// start application
sensesp_app->enable();
});

Beispielschaltplan (Fritzing)

Realisierung auf Lochrasterplatine

Realisierung als Platine (Gerber Files)

Hier eine etwas professionellere Platine mit ESP32 und Lochrasterfeld für eigene Schaltungen

Bestell-Shop für die Platine: https://hatlabs.fi/?v=3a52f3c22ed6

Weiterführende Informationen

Beispiele: https://github.com/SignalK/SensESP/tree/master/examples

Quellen: https://github.com/SignalK/SensESP

Thread im segeln-forum: https://www.segeln-forum.de/board194-boot-technik/board35-elektrik-und-elektronik/board195-open-boat-projects-org/78521-sensesp-a-signal-k-sensor-development-library-for-esp8266-and-esp32/

Hintergrundgeschichten: