Schlagwort-Archive: DIY

MQTT- Kapazitiver Regensensor

Kapazitiver Regensensor MQTT
Kapazitiver Regensensor MQTT
Kapazitiver_Regensensor_MQTT.zip
2.9 MiB
55 Downloads
Details

Der Source Code für dieses Projekt kann in unserem Web Shop erworben werden.

Allgemeines

Anfang 2021, wurde von uns eine IoT-Wetterstation für eine Projekt in Südtirol entwickelt. Ein Teil der Aufgabenstellung bestand darin, einen kapazitiv arbeitenden Regensensor zu integrieren.
Nach Abschluss der Entwicklung, blieben aus dem Prototyping noch einige der Sensor Platinen übrig, daras entstand dann dieses Projekt.
Um dem interessierten Kunden das Funktionsprinzip näher zu bringen und eine Anleitung für den grundlegenden Aufbau eines kapazitiven Regensensors anzubieten, wurde der folgenden Artikel auf unserem Blog dazu veröffentlicht: Kapazitiver Regensensor.

Da die Anfragen für einen solchen Sensor sehr groß waren, haben wir uns entschlossen ein kleine Auswerte Platine zu entwickeln, die mit einem ESP8266 (WEMOS D1 mini) ausgestattet ist und die Sensordaten per Webserver und MQTT zur Verfügung stellt.
Zusätzlich befindet sich auf der Auswerte Platine ein potentialfreier Relais Schaltkontakt, der es erlaubt bei einer Regenerkennung auch direkt einen externen Schaltvorgang auszulösen. Um z.B. eine Markise ein zu fahren.

Aufbau Hardware

Das Regensensor Modul besteh aus drei Einzel Komponenten

  • Kapazitive Sensorplatine
    Die Funktionsweise der Sensorplatine wird bereits im Beitrag Kapazitiver Regensensor ausführlich beschrieben, weshalb wir hier nicht mehr näher darauf eingehen werden.
  • Auswerteeinheit
    Die Platine der Auswerteeinheit bildet das Gegenstück zur Sensorplatine. Die beiden Platinen besitzen dieselben Abmessungen, was bei der Befestigung z.B. in einem geeigneten Gehäuse wie einer Verteilerdose von großem Vorteil ist. Die Bohrlöcher für die Befestigung der Auswerteeinheit werden somit komplett von der aufgeklebten Sensorplatine überdeckt und bietet so einen perfekten Korrosionsschutz.
    Auf der Platine befindet sich ein DS18B20 Temperatursensor, der durch seine Position die Gehäuseinnentemperatur und gleichzeitig die Temperatur kurz unterhalb der Sensorplatine erfasst. Auf diese Weise kann in den Wintermonaten verhindert werden, dass sich Forst auf dem Sensor bilden kann. Bei einem Regenereignis wird die Sensorheizung ebenfalls automatisch aktiviert, um ein schnelleres Abtrocknen der Sensoroberfläche und somit eine schnellere Reaktionszeit des Sensors nach einem Regenereignisses sicher zu stellen. Die Maximale Sensor Temperatur wird über den Temperatursensor geregelt, das spart Energie und erhöht die Lebensdauer des Regensensors.
    Befindet sich kein Feuchtigkeit, Eis oder Kondensat auf der Sensoroberfläche, das durch die Erwärmung verdampfen kann, kommt es auch nicht zu einer Abkühlung durch Verdunstung und der Sensor würde sich immer mehr aufheizen.
    Diese Regelung arbeitet mittels PWM (Pulsweitenmodulation), mit einer Frequenz von ca. 100Hz. Wurde Regen detektiert, findet im Temperaturbereich von 35 – 50°C eine stetige Regelung statt.
    Unterschreitet die Temperatur 4 °C, wird die Sensor Heizung ebenfalls aktiviert um Frostbildung auf der Sensoroberfläche zu verhindern. Hierbei wird ebenfalls die Leistung der Sensorheizung in Abhängig der gemessenen Temperatur geregelt. Der Regelbereich liegt hier bei zwischen 4°C und -6°C, was dann einer Heizleistung von 100 % entspricht.
    Um eine Betauung der Sensoroberfläche zu verhindern, .z.B. bei Morgentau oder Nebelbildung, wird die die kompensierte Sensorkapazität als Messgröße herangezogen. Überschreitet diese einen Wert von 5 pF, wird die Sensorheizung mit einer Leistung von 20 % betrieben, um diesen Effekt zu eliminieren. Die Maximale Sensorheizleistung kann über MQTT oder das Webfrondend in einem Bereich von 1 – 100% eingestellt und somit begrenz werden. Die Spannungsversorgung der Sensorheizung wird über eine 500mA selbstrückstellende Sicherung geschützt. Der WMOS D1 mini besitzt eine eigene selbstrückstellende Sicherung. Die Spannungsversorgung erfolgt nicht über die Micro USB-Buchse, sondern über die zwei auf der Platine herausgeführten Lötpunkte *5V und GND. Nähere Informationen hierzu erhalten Sie in der Dokumentation, die sie oben im Beitrag kostenlos herunterladen können.

ACHTUNG:
Auf der Platine ist kein Verpolungsschutz vorhanden! Ein falscher Anschluss der Spannungsversorgung führt zu einer Zerstörung der elektronischen Bauteile.
Das Netzteil benötigt eine stabilisierte Ausgangsspannung von 5V= und  mindestens 1A  Ausgangs Strom, um die Auswerteeinheit und die Sensor Heizung sicher zu betreiben.

  • Auf der Platine der Auswerteeinheit befindet sich auch noch der hochgenaue Langzeit Timer 7555, der hier als 3V Variante bestückt ist und die Kapazitätsfrequenzumsetzung durchführt. Als letztes Bauteil ist nun noch das Read Relais zu nennen, dass einen potentialfreien Ausgangskontakt zur Verfügung stellt und bei einem Regenereignis ein externes Schaltsignal zur Verfügung stellt.
    Der ungenutzte Raum der Platine wurde mit einem 2,54mm Lochraster versehen, das noch genügend Raum für eigenen Erweiterungen und Ideen bietet.
  • WEMOS D1 mini pro
    Das Schaltungsdesigne  des WEMOS D1 mini Board der Auswerteeinheit musste ebenfalls modifiziert werden (Nähere Informationen hierzu finden Sie in der Technischen Beschreibung).
    Es besitz 4 MB Flash, was ausreichend Platz für zukünftige Erweiterungen oder eigenen Ideeen bereithält. Das Modul wird mit der aktuellen Firmware ausgeliefert, kann aber jeder Zeit über ein Internetverbindung OTA auf die neueste Firmware Versionen upgedatet werden.
    Alle Anschlüsse des WEMOS sind nochmals separat auf dem Lochraster (Stiftleiste 2,54mm) herausgeführt.

Aufbau der Firmware

Um das Regensensormodul in das lokale Netzwerk zu integrieren, wird Anfangs ein eigener AP geöffnet. Verbindet man sich mit diesem AP und öffnet man anschließend im Webbrowser die IP-Adresse 192.168.4.1 gelangt man in das Konfigurationsportal des Regensensor Moduls.
Hier können dann alle notwendigen Einstellungen für das lokale Netzwerk (SSID, Kennwort) und die die Verbindung zum MQTT-Broker (Server IP, Benutzername, Kennwort und Port) vorgenommen werden.
Konnte anschließend mit den eingegebenen Informationen eine Verbindung zum lokalen Netzwerk hergestellt werden, sind alle Daten und Konfigurationen des Sensors wie Einschaltschwellen, die Schalthysterese usw. neben dem MQTT-Broker auch über das integriertes Web-Interface erreichbar.

Die Kapazität des Sensors steht als Rohwert vom Sensor zur Verfügung. Für die Auswertung der Schaltschwelle, wird der kompensierte (kalibrierte) Sensorwert herangezogen.
Um nicht mit dem absoluten Kapazitätswert des Sensors arbeiten zu müssen, kann der Sensorwert bei Trockenheit selbst definiert werden. Hierfür wird eine Kalibrierung durchgeführt. So dass der Kompensierte Sensorwert dann bei Trockenwetter null hat.
Wandert der Wert um 10 pF in den negativen Bereich führt das Sensormodul einen automatischen Nullabgleich durch.

Übertragung der Werte per MQTT

Wird der Regensensor neu gestartet, werden alle Topics der Settings subscribed und anschließend alle Topics einmalig published.
Danach wird die publishing Routine in der Firmware fix alle 10 Sekunden aufgerufen und dabei nur die Werte published, die eine Änderung seit dem letzten publishing Zyklus erfahren haben.
Dies geschieht um den Traffic möglichst gering zu halten.

Hier eine Übersicht der benötigten Werteänderung für eine erneute MQTT Übertragung:

  • curtemperature               >= 1.0 °C
  • curfrequency                    >= 50.0 Hz
  • curcapacity                        >= 3.0 pF
  • compcapacity                    >= 3.0 pF
  • calcapacity                         >=1.0 pF
  • precipitation                      >= 0.01 l/m2
  • windspeed                         >= 0.5 m/s
  • heatsinkpower                 >= 0.01
  • rain                                      true/false;
  • Uptime / Core Vcc           in jedem Zyklus

Die CurCapacity und damit auch Comp.Cap. schwankt natürlich auch ohne Regen immer ein wenig, abhängig von der Luftfeuchtigkeit, Nebel oder ähnlichem. Deshalb wurde für die Auswertung der Regenerkennung ein Schwellwert definiert.

Berechnung der Niederschlagsmenge

Eine neue, aber noch experimentelle Funktion ist eine Berechnung der Niederschlagsmenge anhand der Sensorkapazität und der Dauer des Regenereignisses. Hierfür wird der Wert der kalibrierten Sensorkapazität alle 30 Sekunden erfasst und in ein Array gespeichert. nach 15 Minuten, wird aus diesen Werten der Mittelwert gebildet. Die Summe der vier Viertelstundenwerten ergibt dann den Stundenwert, der nach der folgenden Funktion in eine Niederschlagsmenge (l/m2) umgerechnet wird und als 24 Stundenwerte ebenfalls in ein Array mit den Tageswerten geschrieben wird.

Diese Funktion berechnet sich nach der Formel:

float y = 3e-06 * sq(x) – 0.0004 * x + 0.0004;

Windgeschwindigkeitsmessung mit einem Anemometer

Ab Version 1.05 besteht die Möglichkeit ein Anemometer für die Ermittlung der Windgeschwindigkeit an die Auswerteeinheit anzuschließen. Der neue Sensor wird nach dem ersten Impuls automatisch von der Firmware erkannt, anschließend werden weitere Konfigurations- und Anzeigewerte per MQTT und im Web Frontend zur Verfügung gestellt.

Das Anemometer muss über einen potentialfreien Ausgangskontakt verfügen (Sensor mit Reed Ausgangskontakt). Die Erweiterung des Auswertemoduls um diese Funktion gestaltet sich recht einfach, es werden lediglich die folgenden Bauteile benötigt.

  • Ein Widerstand 10 KOhm 1/4 W, print
  • Ein Keramikkondensator 100 nF, print
  • Ggf. eine Schraubklemme 2-polig, Raster 5,08 mm für den Sensoranschluss.

Das folgende Bild zeigt die einfache Schaltung, die für den  Anschluss eines Anemometers an der Auswerteeinheit nachgerüstet werden muss. Die beiden Verbindungsleitungen des Anemometers werden einmal mit den 3.3V und dem GPIO 14 (D5) des WEMOS D1 mini verbunden. Am GPIO14 (D5) wird dann nur noch der Widerstand (10K) und der Keramikkondensator (100nF) gegen Masse angeschlossen.

Es werden viele verschieden Anemometer mit Reed Schaltkontakten im Handel angeboten. Diese unterscheiden sich nicht nur durch verschieden Bauformen (Diameter) sondern auch durch die Anzahl der Impulse pro Umdrehung.

Deshalb stehen nach dem Anschluss eines Anemometers zwei weitere Eingabeparameter im MQTT-Broker und dem Web Frontend zur Verfügung, die eine individuelle Konfiguration des eingesetzten Anemometers zulassen. Der erste Parameter gibt die Anzahl der Impulse pro Umdrehung an. Wieviel Impulse pro Umdrehung der Sensor liefert, kann leicht mit einem einfachen Multimeter oder einem Durchgangsprüfer ermittelt werden, indem  man das Windrad einmal um seine eigene Achse dreht und das Schließen des Kontaktes abzählt.
Der zweite Parameter gibt die Windgeschwindigkeit in km/h, wenn sich das Windrad innerhalb einer Sekunde einmal um die eigene Achse dreht. Lesen Sie hierfür in den Angaben des Herstellers nach.

Verwendet werden kann z.B. ein Anemometer der Firma TOOGOO mit der Typenbezeichnung „WH-SP-WS01 Anemometer“.
Für dieses Anemometer sind die Konfigurationseinstellungen bereits in der Firmware eingetragen.

  • Pulse/Umdrehung = 1 Puls
  • Geschwindigkeit in km/h bei 1U/s = 2,4 km/h

Ansicht im IO-Broker:

Die Ansicht zeigt alle verfügbaren Parameter des Sensormoduls.

Beschreibung der Notes

Note Name Beschreibung Lesen / Schreiben
INFO/Hostname Bezeichnung des Moduls Read
INFO/IPAdress Aktuelle IP-Adresse Read
INFO/Modul WLAN-Modul Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Version Aktuelle Firmware Version Read
SETTINGS/Calibrate Sensorkalibrierung (set true) Read / Write
SETTINGS/CheckUpdate Neustes Firmware Update laden (set true) Read / Write
SETTINGS/HeatsinkMaxPower
(ab Version x.04)
Maximale Sensor Heizleistung  (%) Read / Write
SETTINGS/HystCapacity Schalthysterese Kapazitätswert (pF) Read / Write
SETTINGS/RelaisDirection Wirkrichtung (direct / inverse) Read / Write
SETTINGS/TrshCapacity Schaltschwelle für die Regenerkennung (pF) Read / Write
SETTINGS/WSPulsNumber (optional)
Pulse/Umdrehung
P/U
Read / Write
SETTINGS/WSWindSpeed (optional) Geschwindigkeit in (km/h bei 1U/s) Read / Write
Alive
(ab Version x.05)
Online Status des Moduls (true/false) Read
CalCapacity Kapazitäts- Kompensationswert (pF) Read
CompCapacity Relativer (kompensierter Kapazitätswert (pF) Read
CurCapacity Aktuelle Sensor Kapazität (absolut Wert (pF) Read
CurFrequency Aktuelle Sensorfrequenz (Hz) Read
HeatiSinkPower
(ab Version x.04)
Aktuelle Leistung der Sensorheizung (%) Read
Precipitation
(ab Version x.05)
Niederschalgsmenge l/m2 (experimentell) Read
Rain Status der Regenerkennung (true/false) Read
RainState Status der Regenerkennung (Textform)
CompCapacity > TrshCapacity
= „dry“
CompCapacity < 150 = „light rain“
CompCapacity < 350 = „moderate rain “
CompCapacity < 700 = „normaly rain“
> 700= „heavy rain“
Read
Temperature DS18B20 Gehäuse/Sensor Temperatursensor Wert (°C) Read
Uptime Zeit seit dem letzten Neustart Read
Vcc Prozessor Core Spannung Read
WindSpeed
(optional)
Windgeschwindigkeit (m/s) Read

Einfaches Blockly Skript für den IO-Broker

In diesem Abschnitt soll Beispielhaft die Integration einer Markisen Ansteuerung mit einem Blockly Skript für den IO-Broker gezeigt werden.
Die Variable „Rain-Trigger“ ist eine User definierte boolesche Variable im Broker und dient hier als Trigger für das Umschalten zwischen den Zuständen der Regenerkennung und der Regenende Erkennung.

In diesem Skript wird bei einer Regenerkennung ein kurzer „Close“ Befehl an einen Shelly 2.5 Rollladenschalter gesendet, eine Bedienung durch den Nutzer bleibt somit jederzeit weiterhin möglich.

Shelly 2.5 Rollladenschalter bei Amazon

Ansicht im Webbrowser:

Analog zur Ansicht im Broker stehen alle Parameter auch im Webbrowser Interface zur Verfügung.

Montage Vorschlag:

Das Regensensor Modul sollte in einem Winkel von ca. 30° mountiert werden, damit der auftreffende Regen die Sensoroberfläche nur benetzt und abfließen kann.  Das Modul lässt sich leicht in eine Hensel Verteilerdose (ohne Klemmen) mit den Abmessungen 104 mm x 104 mm, vom Typ DK 0200 G / IP66 einbauen.

Abzweigdose DK 0200 G / IP66 bei Amazon

Hinweis:
Die oben genannte Abzweigdose besitzt keine Einführungen oder Würgenippel. Die Einführungsöffnungen sind mit einer Gummimembrane ausgestattet, die leicht durchstochen werden kann und das Kabel anschließend wieder Wasserdicht umschließt.

Im ersten Schritt werden die Befestigungslöcher für vier Distanzhülsen M3x8mm auf der Deckel Oberseite angezeichnet und mit einem 3,2mm Bohrer gebohrt.
Dann werden die Löcher mit einem Senker soweit angesenkt, dass die M3x4mm Senkkopfschrauben plan in den Senkungen verschwinden.

Anschließend wird mit einem Fräser oder einem Forstner Bohrer ein ca. 25 mm großes Loch für den Sensorstecker und den DS18B20 Sensor ausgemessen und gebohrt.

Nun werden die Distanzhülsen M3x6mm auf der Innenseite des Deckels befestigt und die Auswerteeinheit so montiert, dass die Buchsen Leiste und der Sensor im Sensorbohrloch platziert sind.

Danach kann der Sensor mit Silikon auf den Deckel aufgeklebt werden.

Achten sie beim Aufbringen des Sensors darauf, dass die Stiftleiste richtig in der zehn Poligen Buchsen Leiste steckt, so dass nach dem aufbringen der Sensorplatine auch alle vier Senkkopfschrauben verdeckt werden.

Versionsverlauf:

Intended:

  • Hard.Firmware Version 2.06
    Integration einer LUX-Messung mit einem VEML7700 (I2C).

Released:

  • 28.08.2021 Alle HW Versionen
    Firmware Version X.05
    Integration eines Anemometers zur ermittlung der Windgeschwindigkeit.
    Precipitation Wert (Experimentelle Niederschlagsmenge) Errechnung über viertelstunden Mittelwerte der Comp. Kapazität in l/m2, in MQTT und im Web Browser eingerichtet. Niederschlags Chart Demeoversion 24h.
    LWT / Alive – Last Will Testament Onlinestatus des Sensormoduls in MQTT integriert. Reduzierung des MQTT Datenverkehrs.
  • 29.07.2021 Alle HW Versionen
    Firmware Version 04
    – Sensor Temperatursteuerung, Regelung der Leistung per PWM
    und Option zur Begrenzung der maximalen Heizleistung.
    – Temperaturregelung der Sensorheizung für Frostschutz und
    Maximaltemperatur.
    – Betauungsschutzfunktion ab einer Kompensierten
    Sensorkapazität von 5 PF, Heitleistung Sensorheizung auf 20%
  • 16.07.2021: Alle HW Versionen
    Firmware Version 03
    – Überarbeitung im Dialog Update, Reset und Restart im
    Webfrontend vorgenommen.
    – Regen Status als Klartextausgabe.
  • 03.07.2021: Alle HW Versionen
    Firmware Version 02
    – Anzeige von Einheiten für den MQTT – Broker erweitert.
  • 04.06.2021: Alle HW Versionen
    Firmware Version 01
    – In dieser Version wurde eine Fehlerbeseitigung im
    Webfrontend vorgenommen, es betrifft die Umschaltung
    der Wirkrichtung des potentialfreien Relais Ausgangs.