Archiv der Kategorie: IoT & Embedded Innovation

MQTT- Kapazitiver Regensensor

Kapazitiver Regensensor Dokumentation
Kapazitiver Regensensor Dokumentation

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           >= 0.01 V

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/Port Webserver Port Read
INFO/RestartReason Beschreibung des letzten Neustart Ereignisses Read
INFO/Device ID Geräte ID 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/LightRain Schaltschwelle für die Textanzeige Light Rain (pF) Read / Write
SETTINGS/ModerateRain Schaltschwelle für die Textanzeige Moderate Rain (pF) Read / Write
SETTINGS/ModerateRain Schaltschwelle für die Textanzeige Normal Rain (pF) Read / Write
SETTINGS/ NormalRain 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
SensorState
(ab Version x.10)
Sensor Status
(ok/failure)
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.

Ansicht im Webbrowser:

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

Ab Firmware Version x.08 wurde aus Sicherheitsgründen eine Anmeldung am Webinterface eingeführt!

Die Standard Anmeldedaten für die Eingabeaufforderung lauten:

Benutzername: admin
Kennwort: Password

Hinweis:
Wird keine Sicherheitsabfrage für die Weboberfläche gewünscht, lassen Sie das Kennwortfeld einfach leer!

Montage Vorschlag:

Das Regensensor Modul sollte nach Westen ausgerichtet in einem Winkel von ca. 30° mountiert werden, damit der auftreffende Regen die Sensoroberfläche nur benetzt und abfließen kann.
Die Ausrichtung nach Westen schützt die Sensoroberfläche vor direkter Sonneneinstahlung, was die Lebensdauer der Lackschicht enorm  verlängert!

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.

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.00
    Integration einer LUX-Messung mit einem VEML7700 (I2C).

Released:

  • 09.10.2023 Version 1.13
    – HTML Code verbessert
  • 07.08.2023 Version 1.12
    – Fehlerhafte Windwerte größer 300 Km/h ausgeblendet.
  • 09.03.2023 Alle HW Versionen
    Firmware Version 1.11
    – Überwachung der Regensensor Funktion „SensorStatus“  verbessert. MQTT-Struktur neu angelegt, der führende „/“ wurde entfernt!.
    Wichtiger Hinweis:
    Bitte beachten, dass da durch ein neuer Eintrag im Broker erzeut wird!!!
  • 20.10.2022 Alle HW Versionen
    Firmware Version 1.10
    – Überwachung der Regensensor Funktion „SensorStatus“ hinzugefügt.
  • 23.08.2022 Alle HW Versionen
    Firmware Version 1.09
    – Fehler bei der Uptime behoben und Uptime Library eingebunden.
    – Webserver Port in MQTT/Info eingefügt.
    – Genauigkeit bei Chart und der Durchschnittlichen Regenmenge verbessert.
    – Anzeige der Core VDD im Web Frontend.
  • 29.07.2022 Alle HW Versionen
    Firmware Version 1.08
    Anzeige MQTT/Info/Port des Webservers.
    Wird das Webserver Kennwort leer gelassen, erscheint kein Anmeldedialog im Webbrowser.
    Fehlerbeseitigung Überlauf bei der Uptime Anzeige.
  • 15.07.2022 Alle HW Versionen
    Firmware Version 1.08
    Erweiterung der Parametrierung für die Textausgabe des Regenstatus.
    Erweiterung WIFI-Manager, um den Regensensor mit einem Port forwarding im Router auch aus dem Internet erreichen zu können, kann nun der Webserver Port frei konfiguriert werden.
    Zusätzlich wird nun ein Anmeldename und ein Kennwort beim Aufrufen der Webseite abgefragt, um die Sicherheit zu erhöhen.
  • 25.04.2022 Alle HW Versionen
    Firmware Version 1.07
    Aktualisierung der Arduino Librarys, neues Anmeldeportal.
  • 04.02.2022 Alle HW Versionen
    Firmware Version 1.06
    Optimierung bei der Übertragung der MQTT Daten. Updates bei der Genauigkeit der Messwerte verbessert.
  • 28.08.2021 Alle HW Versionen
    Firmware Version 1.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 Demo Version 24h.
    LWT / Alive – Last Will Testament Onlinestatus des Sensormoduls in MQTT integriert. Reduzierung des MQTT Datenverkehrs.
  • 29.07.2021 Alle HW Versionen
    Firmware Version 1.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, Heizleistung Sensorheizung auf 20%
  • 16.07.2021: Alle HW Versionen
    Firmware Version 1.03
    – Überarbeitung im Dialog Update, Reset und Restart im
    Web Frontend vorgenommen.
    – Regen Status als Klartextausgabe.
  • 03.07.2021: Alle HW Versionen
    Firmware Version 1.02
    – Anzeige im MQTT – Broker erweitert.
  • 04.06.2021: Alle HW Versionen
    Firmware Version 1.01
    – In dieser Version wurde eine Fehlerbeseitigung im
    Web Frontend vorgenommen, es betrifft die Umschaltung
    der Wirkrichtung des potentialfreien Relais Ausgangs.

IOT – Wetterstation

Allgemeines

Für die Erfassung und Verteilung aktueller lokaler Wetterdaten wurde im Zuge eines Kundenauftrags diese IoT-Wetterstation mit integrierter Ethernet Schnittstelle auf Basis eines ESP32 entwickelt.

Alternativ kann auch auf die Anbindung über die Ethernet Schnittstelle verzichtet werden und die Daten könnten stattdessen per WLAN Verbindung über den Mikrokontroller ESP32 versendet werden.

Sie erfasst die folgenden Wetterdaten und sendet diese zyklisch per UDP-Broadcast über den Port 8888 in das lokale Netzwerk. Auch hier wäre der Versand per MQTT an einen Broker denkbar.

Wetterdaten:
  • Aktuelle Windgeschwindigkeit
  • Aktuelle Windrichtung (0 – 360 °)
  • Windrichtungswert als Windrichtungsindex
  • Aktuelle Außen- und Modultemperatur
  • Aktuelle Daten vom Kapazitiven Regensensor
  • Aktuellen LUX Wert, RAW Index und den Weiß Wert.
  • Regen Bit der Regenerkennung
  • Dämmerungsbit der Dämmerungserkennung
  • Windmax Bit der Windmax. Erkennung

Hardwareaufbau

Die Platine der Wetterstation hat eine Abmessung von 80 x 120 mm.
Sie besitzt Schraubklemmen zum Verbinden der Eingangssignale und eine RJ45 Buchse zum Anschluss der Netzwerkverbindung über Ethernet, unten rechts im Bild.

IoT-Wetterstation Platine
IoT-Wetterstation Lux- und Kapazitiver Regensensor

Die Platine der verfügt über folgende Anschlüsse:

  • Einen Programmieranschluss für Firmware Updates
  • Einen RJ45 Netzwerkanschluss
  • Schraubanschlüsse für die Sensoren

Die ersten beiden Klemmanschlüsse dienen dem Anschluss der Versorgungsspannung, diese kann in einem Bereich von 7 – 27 V= liegen.

Der nächste Anschluss wurde für einen potentialfreien Eingangskontakt vorgesehen, an den z.B. ein Regenmengenmesser mit Read Kontakt angeschlossen werden könnte (optional).

Der nächste Klemmenblock stellen zwei stabilisierte Ausgangsspannung 3.3V und 5.0 V zur Verfügung. Hiermit können Beispielsweise externe Sensoren mit Spannung versorgt werden. Die nächsten beiden Klemmen GND und 1-Wire dienen zum Anschluss von externen 1-Wire Sensoren. In diesem Projekt wird hierrüber Außentemperatur mit einem 1-Wire Sensors vom Typ DS18B20 gemessen.

Die Letzten Klemmen sind Anschlussklemmen für zwei analogen Eingangskanäle. Diese könne je nach Bedarf wahlweise 0 – 10 V oder 0 – 20 mA Eingangssignale verarbeiten.

Am ersten Analogeingang U-in1 und GND kann z.B. der Sensor zur Messung der Windgeschwindigkeit und am zweiten Analogeingang U-in2 und GND der Sensor für die Windrichtung angeschlossen werden.

Eine Kalibration der Messbereiche für die beiden Analogeneingänge U-in / I-in, erfolgt für jeden Kanal getrennt, mit je zwei Spindelpotentiometer.

Hierbei wird zuerst der Spannungseingang abgeglichen und das entsprechende Spindelpotentiometer zunächst gegen den Uhrzeiger auf seine linke Endposition gestellt.

Nach dem Anlegen einer Spannung von 10.0 V wird das Spindelpotentiometer solange verstellt, bis am entsprechenden Ausgangspin, Kanal 1 = Pin1 und Kanal 2 = Pin 7, des LM358 eine Ausgangsspannung von 3.0 V gemessen wird.

Anschließend wird der Spannungseingang getrennt und derselbe Vorgang mit dem Stromeingang durchgeführt. So können beide Eingangskanäle auf ihren Endbereich kalibriert werden.

Kanal 1:

  1. I – Abgleich 3.0V = 20 mA, CH1 Pin1 am LM358M
  2. U – Abgleich 3.0V = 10 V, CH1 Pin1 am LM358M

Kanal 2:

  1. I – Abgleich 3.0V = 20 mA, CH2 Pin 7 am LM358M
  2. U – Abgleich 3.0V = 10 V, CH2 Pin 7 am LM358M

Alle Eingänge der Wetterstation sind gegen ESD geschützt, Die beiden Analogeingänge haben zusätzlich noch einen Verpolungsschutz und eine Einganswert Limitierung um bei einem zu hohen Spannungs- bzw. Stromwerts am Eingang den Mikrokontroller nicht zu zerstören.

Der Regensensor basiert auf einer Kapazitätsmessung.

Siehe hierzu:
Kapazitiver Regensensor mit einem ESP8266 / Arduino

Die ermittelte Kapazität wird über einen NE555 in ein digitales Frequenzsignal gewandelt und an den Mikrokontroller weitergeleitet, der dann die Berechnung und Auswertung übernimmt.

Es sind zwei Temperaturmessung vorhanden, die über den 1-Wire Bus erfasst und ausgewertet werden. Als Sensoren werden DS18B20 eingesetzt, der erste befindet sich direkt auf der Platine als TO-3 und dient zur Ermittlung der Gehäuseinnentemperatur, der zweite Sensor ist ein Wasserdichter Edelstahlsensor der in drei Leiter Technik über die Klemmen des 1-Wire Eingangs angeschlossen ist und die Außentemperatur misst.

Zur Erfassung des LUX, RAW und Weißwerts wurde eine VEML7700 des Hersteller Vishay verbaut. Dieser ist über eine I2C Schnittstelle an den Mikrokontroller angebunden und kann mit einer entsprechenden Parametrierung Lux Werte bis zu 150 Klx genau messen.

Das Herzstück der Schaltung ist ein ESP32 Mikrokontroller mit 4 MB Flashspeicher der Firma Espressif. Dieser Kontroller verfügt über ein WLAN und Bluetooth Radio, das jedoch in diesem Projekt nicht zum Einsatz kommt, da der Datenaustausch über Ethernet erfolgt.

Als Schnittstelle zum Ethernet ist ein USR-ES01 Modul mit W5500 Chipsatz vorhanden, die Anbindung an den Mikrokontroller erfolgt per SPI-Bus.

Die Spannungsversorgung für die Wetterstation könnte z.B. auch direkt über das Netzwerkkabel, per Power Over Ethernet kurz PoE erfolgen. Hierfür könnte ein PoE-Splitter, der eine stabilisierte Gleichspannung von 12V aus dem Signalkabel ausschleust, in das Gehäuse der Wetterstation eingebracht werden. Auf diese Weise könnte dann auch die Spannungsversorgung für den Wind- und Windrichtungssensor erfolgen.

Firmware Update

Um ein neues Firmware Update in den ESP32 Mikrokontroller zu laden, verfügt die Platine über einen zweireihigen, acht poligen Steckverbinder, an den der passende USB-Programmieradapter angesteckt werden kann, um eine neue Firmware in den Mikrokontroller der Wetterstation zu übertragen.

Bei einer Verbindung per WLAN, könnte ein Update aber auch per OTA (Over the air) erfolgen. Diese Option seht leider bei einer Anbindung per Ethernet nicht zur Verfügung.

Der USB-Programmieradapter muss dabei so aufgesteckt werden, dass er von der Grundplatine weg zeigt. Ein Vertauschen oder falsches aufstecken führt zur sofortigen Zerstörung der Wetterstation!

Das Herunterladen einer neuen Firmware darf deshalb nur von einer entsprechend eingewiesenen Person oder einem Fachmann durchgeführt werden!

Für den Programmiervorgang muss die Spannungsversorgung zur Wetterstation unterbrochen sein und die Netzwerkverbindung getrennt werden! Des Weiteren kann es beim Flashvorgang zu Problemen kommen, wenn an den analogen Eingangskanälen noch Sensoren angeklemmt sind. Deshalb wird auch hier empfohlen dies vor dem Flashvorgang zu entfernen!

Pressuresensor Druckmessung

Pressure Sensor Dokumentation
Pressure Sensor Dokumentation

Der fertige Busatz und der Source Code zu diesem Projekt kann in meinem Web Shop erworben werden.

Diese Druckmessplatine eignet sich hervorragend für die Messung verschiedener Medien und Duckmessbereiche,  durch ihre flexible Konfigurierbarkeit ist sie für die verschiedensten Aufgaben im Bereich der Druckmessung einsetzbar.
Für verschiedene Druckmessbereiche stehn eine ganze Reihe verschiedener Drucksensors zur Verfügung.

Druckbereich: 5 psi, 15 psi, 30 psi, 60 psi, 100 psi, 150 psi und 200 psi.

Key Features:

  • Einsatz für Druckmessungen in verschiedenen Druckbereichen
  • Vielseitig einsetzbar
  • Weiter Eingangsspannungsbereich von 8 – 27V
  • Konfiguration aller Modulparameter direkt am Pressure Sensor Modul möglich
  • OLED-Display für die Anzeige der Messwerte und der Menüfunktionen
  • Bedienung über einen Drehwahlschalter oder einen Taster
  • Drei konfigurierbare potentialfreie Ausgangskontakte für das Über- und Unterschreiten einer einstellbaren Druckschwelle, sowie eines Sensorfehlers
  • Für jedes Relais kann die Ruhelage NO (normally open) oder NC (normally closed) separat festgelegt werden
  • Werte- und Fehleranzeige im Sensor Sensordisplay
  • Werte- und Fehleranzeige über die Blynk App und ein Web Interface zugänglich
  • Messwerte- und Statusmeldungen im Textformat über integrierte Micro USB-Schnittstelle (seriell Port)
  • Vielseitige auch für beliebige andere Druckmessaufgabe eingesetzt Messung
  • Zwei verschiedene Messmethoden, Messung des absoluten oder des relativen Drucks
  • Manuelle und automatische Kalibrierung bei der relativen Druckmessung
  • Spezielle Funktion für Druckschlauchmessungen, automatischen Differenzdruckabgleich
  • Teilbares System, dass aus einem wechselbaren Drucksensor, dem eigentlichen Auswertemodul
  • Menügeführte kundenspezifisch Sensoranpassung.
  • Aktualisierung der Firmware mittels OTA

Allgemeines

Die hier beschriebene Druckmessung entstand aus dem Projekt Timekeeper, dass auf Anfrage für eine Zeitmessung zu Trainingszwecke für eine Gleichmäßigkeitsprüfung durchgeführt wurde.

Als der Timekeeper beim Auftraggeber im Einsatz war, stellte sich heraus, dass das justieren der Lichtschranken gerade bei Sonnenschein eine mühselige Unterfangen darstellt.

Außerdem hängt die Genauigkeit der Erfassung hierbei auch immer von der Justierung der Lichtschranken ab. Da je nach Höhe und Winkel der Start- und Ziellichtschranke, diese bei verschieden Fahrzeugen unterschiedlich ausgelöst werden können. Diese Fehler bewegen sich zwar meist nur in Millisekunden Bereichen, können aber durchaus die Wertungsergebnisse beeinflussen.

So wurde die Idee geboren, einen alternative Messmethode zu testen. Es sollte eine Druckschlauchmessung aufgebaut werden, die quer über die Fahrbahn gelegt werden kann, umso eine Messmethode zu erhalten, die direkt an den Rädern des Fahrzeugs misst. Also Unabhängig von der Form und Bauart der Karosserie.

Es wurde ein PVC-Schlauch, der an einem Ende geschlossen war, an eine Handelsübliche Druckmessung angeschlossen und der Potentialfreie Ausgangskontakt mit dem entsprechenden Initiator Eingang des Timekeeper Moduls verbunden.

Die ersten Tests lieferten bereits sehr viel versprechend Ergebnisse und bewiesen, dass der grundsätzliche Testaufbau funktionierte.

Nach dem die ersten Erfahrungen mit verschiedene Schlauchmaterialien, Druckaufnehmer und den in der Praxis auftretenden Störeinflüssen gesammelt wurden. War schnell klar, dass eine handelsübliche Druckmessung die Anforderungen an diese Aufgabe nur bedingt erfüllen kann.

Der Nachteil eines solchen Messverfahrens ist eine vergleichsweise ungenaue Messung, da die Kunststoffschläuche ein gewisses Eigenleben haben, das zum Beispiel zu temperaturabhängigen Kriecheffekten und Offsetproblemen führt.

Es musste also eine speziell auf diese Art der Anwendung zuggeschnittene Lösung entwickelt werden.

Spezielle Funktion für die Schlauchdruckmessung

Das Hauptproblem stellt nicht die Messung an sich dar, sondern die Umgebungsbedingungen. Den der Druck im inneren des Schlauches ist natürlich in erster Linie abhängig von der Umgebungstemperatur.

Stellen wir uns folgendes vor, der Messaufbau wird am frühen Morgen installiert und getestet. Die Auslöseschwelle beim Überfahren des Schlauchs wird auf ein optimales Auslöseverhalten für die Art und Länge des Schlauchs programmiert.

Der Tag beginnt mit einem relativ kühlen Vormittag, entwickelt sich aber gegen die Mittagszeit zu einem sehr sonnigen Tag.
Am Nachmittag entstehen am Himmel größere vorbeiziehende Wolkenfelder.

So könnte ein normaler Sommer Tag aussehen … was passiert aber nun mit dem Druck im Sensorschlauch?

In der Früh wurde die Messung kalibriert und optimal eingestellt.
Am Vormittag steigt der Druck im Schlauchsensor jedoch stetig an. Im Extremfall sogar bis über die programmierte Auslöseschwelle.

Am Nachmittag wechselt der Druck im Schlauch im Verhältnis der vorbeiziehenden Wolkenfelder hin und her.
All dies hat Einfluss auf das Auslöseverhalten und die Genauigkeit der Messung und kann sogar zu Fehlauslösungen führen.

Genau für diesen Anwendungsfall wurde eine spezielle Zusatzfunktion in diese Druckmessung integriert.

Diese überwacht ständig den Druck im Sensorschlauch, steigt bzw. fällt der Druck (Delta P) über- oder unter einen programmierbaren Schwellwert und bleibt für eine definierbare Zeit (t) außerhalb der definierten Grenze, wird eine (AC) automatische Nullpunkt Kalibration des Relativdruckwertes durchgeführt.

Aufgabenstellung:

Es sollte eine Druckmessung mit einem weiten Eingangsspannungsbereich von 8 – 27V entwickelt werden.
Damit ein Betrieb mit einem Bleiakku (12V KFZ-Batterie), einem externen Netzteil oder eine direkte Versorgung aus dem Timekeeper Modul möglich ist. Dieser wird üblicherweise mit 24V gespeist.

Die Konfiguration der Modulparameter sollte direkt am Pressure Sensor Modul möglich sein. Für die Anzeige sollte ein kleines OLED-Display für die Anzeige der Messwerte und der Menüfunktionen vorhanden sein. Die Bedienung erfolgt dabei über einen Drehwahlschalter bzw. alternativ über einen Taster, der die Navigation und Auswahl der Menü Punkte erlaubt.

Das Modul sollte über drei konfigurierbare, potentialfreie Ausgangskontakte verfügen. Welche das Über- und Unterschreiten einer einstellbaren Druckschwelle, sowie einen Sensorfehler ausgeben können. Für jedes dieser drei Relais kann die Ruhelage NO (normally open) oder NC (normally closed) separat festgelegt werden.

Optional zur Werte- und Fehleranzeige am Sensor Modul, sollten diese Informationen auch über die Blynk App und ein Web Interface zugänglich sein.

Über die integrierte Micro USB-Schnittstelle sollen nach Aktivierung dieser Funktion im Menu, die Messwerte sowie die Statusmeldungen im Textformat ausgegeben werden. Damit diese für eine externe Weiterverarbeitung genutzt werden können.

Bei der Entwicklung der Messung sollte Wert daraufgelegt werden, dass diese sehr vielseitig, auch für beliebige andere Druckmessaufgabe eingesetzt werden kann.
Es sollen zwei verschiedene Messarten möglich sein, Messung des Absoluten Drucks sowie die Messung des Relativen Drucks.

Die Messung des Relativen Drucks sollte auch manuell Kalibriert werden können.

Für den Einsatz in Verbindung mit einer Druckschlauchmessung, muss eine spezielle Funktion implementiert werden, die bei Bedarf einen automatischen Differenzdruckabgleich durchführen kann. Dieser soll immer dann durchgeführt werden, wenn der Druck einen definierbaren Schwellwert (P) für eine definierbare Zeit (t) über- bzw. unterschreitet.

Das Pressure Sensor Modul sollte ein Teilbares System werden, das aus einem wechselbaren Drucksensor, dem eigentlichen Auswertemodul und einem schnell wechselbaren Schlauchsystem besteht.

Auf diese Weis ist es leicht möglich das Sensorsystem je nach Anforderung kundenspezifisch anzupassen.

In einem weiterer Entwicklungsschritt, soll die Firmware um eine eigenständige Zeitnahme Funktionalität erweitert werden.
Die Zeitmessung beginnt mit dem ersten Überfahren des Schlauchsensors und endet mit dem zweiten Überfahren.
Damit die Zeitmessung nicht sofort nach dem Überfahren mir den Hinterreifen wieder beendet wird, soll eine Verzögerungszeit zwischen der Start- und Endzeiterfassung eingegeben werden können, um dies zu verhindern.

Der Drucksensor:

Der verwendete Drucksensor ist ein analog arbeitender Sensor.
Er besitzt ein robustes Edelstahlgehäuse in dem sich ein präziser Druckkeramiksensor befindet. Die Vorverarbeitung des Messwerts übernimmt ein integrierter Mikrocontroller.
Der Sensor besitzt eine lange Lebensdauer bei einer geringen Langzeitdrift.

Die Verbindung zur Auswerteelektronik wird über eine dreipolige wasserdichte PACK-Steckverbindung hergestellt.
Die Versorgungsspannung des Sensors beträgt 5V ± 0,25V
Die Sensoren gibt es mit verschiedenen Druchmessbereichen, die jeweils im Menü des Pressure Sensors ausgewählt werden können.

Sensortypen: 5 psi, 15 psi, 30 psi, 60 psi, 100 psi, 150 psi, 200 psi

Weiter Infos zu den Sensoren finden Sie in der ZIP-Datei.

Der Analogausgang arbeitet in einem Spannungsbereich von 0,5V – 4,5V linear zum Skalendruck. Der Zerstörungsdruck liegt beim 3-fachen Skalendruck.
Da der Sensorwert über ein Analogsignal im Bereich von 0,5V – 4,5V übertragen wird, ist es leicht möglich, beim einem Über- bzw. Unterschreiten dieser Werte, eine Drahtbruch bzw. Kurzschluss Auswertung vorzunehmen.

Farbcode der Sensoranschlussdrähte:

  • Analogausgang 0,5-4,5V                   Grün
  • +5V (VDD)                                                 Schwarz
  • Masse (GND)                                            Rot

Anschlussbelegung Hardware

Anschlussbelegung V1.00

REL. MIN      Potentialfreier Kontakt für eine min. Druck
REL. MAX    Potentialfreier Kontakt für eine max. Druck
REL. ERR      Potentialfreier Kontakt für eine Sensorstörung
SENS.             Sensor analog Eingang max. 0-5V
GND               Ground (Minus)
+5V                 Spannungsversorgung 5V Sensor
+3,3V             Spannungsversorgung 3,3V Sensor
+8-27V-       Spannungsversorgung Pressure Sensor Modul

Versionsverlauf:

Intended:

  • Nichts in Planung

Released:

  • 03.05.2021: Version X.01 (für alle Hardware Versionen)
    – Ergebnisliste im Webserver
    – Ergebnistabelle im Webserver als CSV exportierbar
    – Anzeige der Ergebnisse in der Blynk App.
    – Konfiguration verschiedener Drucksensoren von 5 psi – 200 psi
  • 15.12.2020: Version 1.00
    – Druckmessung relativ / absolut
    – Autocalibration
    – Sensorfehlererkennung Relaisausgang NC/NO
    – Seriale Ausgabe der Werte über USB,
    – Min/Max Wert Relaisausgänge NC/NO
    – Webbrowser Darstellung
    – Blynk Applikation

Timekeeper, Zeitmessung mit Großdisplay und App

Technische Beschreibung Timekeeper alle Versionen
Technische Beschreibung Timekeeper alle Versionen

Key Features

  • Weiter Eingangsspannungsbereich von 8 – 27V,  12V Batteriebetrieb möglich
  • Konfiguration aller Modulparameter direkt am Timekeeper möglich.
  • Großes 1024 Pixel LED DOT-Matrix Display für die Anzeige der gemessenen Zeiten
  • Konfiguration über Taster am Modul oder die Blynk APP
  • Konfigurierbare Ruhelagen NO (normally open), NC (normally closed) der angeschlossenen Sensoren
  • Zeitanzeige am Display, über die Blynk App oder das Web-Interface
  • Für viele verschieden Messverfahren einsetzbar (Lichtschranken, Druckschlauchmessung oder Potentialfreie Eingangskontakte
  • Viele verschieden Messmodis auswählbar (Einzelzeiten, Rundenzeiten, Zwischenzeit, EinzelInitiator Messung uvm.)
  • Unterdrückung von mehrfach Auslösungen beim Überfahren bei Schlauchmessverfahren.
  • OTA Firmware Update
  • Time Display Funktion für Alge Comet Zeitmessmodule (ab Version VX.04)
  • Einstellung der Display Helligkeit für Energieeinsparung z.B. bei Battereibetrieb (ab Version VX.05)
  • Zeitdifferenz korrekt (ab Hardware Version 2, Software Version 1.27)

Allgemeines

Die hier beschriebene Zeitmessung „Timekeeper“ entstand auf Anfrage für eine Zeitmessung zu Trainingszwecke für eine Gleichmäßigkeitsprüfung, wie sie bei Oldtimer Rennen zur Wertung durchgeführt wird.

Aufgabenstellung:

Beim Durch- bzw. Überfahren eines Startinitiators sollte eine neue Zeitmessung begonnen werden, diese sollte mit dem Durch- bzw. Überfahren des Zielinitiators enden.
Die Zeitnahme sollte in drei verschiedenen Modi erfolgen können, eine reine Zielzeiterfassung, eine Ziel- und Zwischenzeiterfassung (was einen weiteren Zeitmesseingange für die Zwischenzeit notwendig machte) und die Erfassung von zwei Rundenzeiten (LAP1 und LAP 2).

Die gemessenen Zeiten sollten durch eine große Anzeige, die gut aus dem Fahrzeug, nach Beendigung der Zeitnahme abzulesen wäre. Des Weiteren sollte die Möglichkeit bestehen, die gemessenen Zeiten zusätzlich in einer APP auf dem Smartphon angezeigt zu bekommen.

Eine Webserver Ansicht, die alternativ zur APP Ansicht benutzt werden könnte, wurde ebenfalls angestrebt.

Die Anforderungen wurden in diesem Projekt kurzbeschrieben wie folgt realisiert:
Die gesamte Zeitmessung erhielt ein robustes Aluminium Gehäuse mit einer verspiegelten Plexiglasscheibe, hinter der eine gut lesbare LED DOT Matrix Anzeige angebracht wurde.
Die Auflösung des Displays beträgt 1024 Led Bildpunkte.

Um die drei Initiatoren direkt per M12 Steckverbinder anzuschließen, wurden auf der Rückseite des Gehäuses drei Buchsen angebracht, die einen direkten Anschluss von Industrie Laserlichtschranken (z.B. der Firma Leutze) ermöglichen.
Aus diesem Grund wird das Modul mit einem =24V/2A Stecker Netzteil versorgt, dass sogleich die Versorgungsspannung für die angeschlossenen Initiatoren wie auch der internen Elektronik bereitstellt.

Die Zeiterfassung erfolgt Mikrocontroller gestützt, mit einem ESP8266.
Dieser Baustein bietet alle Voraussetzungen, die für die Realisierung des Projektes und eine Anbindung über ein WIFI Netzwerk notwendig sind.
Die dabei erzielte Messgenauigkeit beträgt +/-1 ms.

Eine Externe Antenne sorgt für eine optimale Reichweite des Moduls.

Um die ermittelten Zeiten direkt auf einem Smartphone anzuzeigen, wurde eine Anbindung an die BLYNK APP realisiert.
Da diese APP ist sowohl für Android als auch für IOS erhältlich ist. Sie überzeugte durch ihr offenes und flexibles Konzept und ist zudem eine sehr kostengünstige Lösung für den Endkunden.

Durch den Kauf von zusätzlicher Energie, kann die App leicht und flexibel um weitere Anzeigen und Funktionen erweitert werden.

Ist keine Internetverbindung möglich oder vorhanden, arbeitet das Timekeeper Modul somit nach der Initialisierung im Standalone Modus, die ermittelten Zeiten werden auf dem Display angezeigt.

Zusätzlich können die gemessenen Zeitinformation in diesem Betreibsmodus aber auch über ein integriertes Webinterface abgerufen und angezeigt werden. Hierfür wird ein interner Access Point geöffnet, mit dem man sein Smartphon verbinden kann, um auf die ermittelten Zeiten zuzugreifen.

Ist eine Anbindung an ein lokales WLAN und somit eine Internet Verbindung vorhanden, bietet das Modul weitere Optionen für die Bedienung und die Zeitanzeige.

Es ist dann z.B. möglich die neusten Firmware Updates vom Webserver des Herstellers direkt in das Modul zu laden und zu installieren.

Ein integrierter NTP-Zeitservice stellt dann die aktuelle Uhrzeit und das Datum zur Verfügung. Wird mit dem Modul länger als 90 Sekunden keine neue Zeitmessung mehr durchgeführt wird diese dann automatisch auf dem Display angezeigt.

Die Auswahl verschiedener Funktionen erfolgt über dem MODE-Taster auf der Rückseite des Moduls. Damit kann ein Menü aufgerufen werden, um die Funktionsweis des Moduls zu konfigurieren.

Die M12 Buchsenanschlüsse sind kompatible mit der von uns empfohlenen Leuze Laserlichtschranken von Typ PRKL 25 4.1 200-S12 und können somit direkt angeschlossen und betrieben werden.

Steckerbelegung Lichtschranken:

Draufsicht M12 Buchse:



Blynk Applikation:

Webansicht:

Kundenreferenzen des Auftraggebers:

Folgende Links wurden uns vom Kunden, der die Entwicklung des Timekeeprer bei uns beauftragt hat zur Verfügung gestellt.

Timekeeper auf YouTube

Versionsverlauf:


Intended:

  • Keine neuen Anforderungen

Released:

09.10.2023 HW Versionen 2, Firmware Version 1.29
 Korrekturwertfaktor für Abweichung der Millis() bei der Zeitnahme eingebaut. Integration des Korrekturwertfaktors der Millis() in das Webinterface
HTML Code überarbeitet und Fehlerbeseitigung beim Time Div
Überarbeitung Lokaler AP Fehlerbeseitigung

07.08.2023 HW Versionen 2, Firmware Version 1.28
Ab dieser Version wird der Hostname des Timkeepers dem Router mitgeteilt, so das dieser dort  im Klartext zu sehen ist!

27.06.2022 HW Versionen 2, Firmware Version 1.27
Alle Einstellungen, die ursprünglich über die BLYNK App vorgenommen werden konnten, wurden in dieser Version nun in die Weboberfläche integriert. Da der Anbieter der BLYNK App die  Unterstützung seines Dienstes bis Ende 2022 abgekündigt hat!
Desweiteren wurden die Settings um ein Eingabefeld zur  Zeitdifferenz korrekt erweitert, diese erlaubt einen Abgleich mit anderen Messsystemen.

Ältere Versionen:
Aufgrund einer Server Umstellung unseres Providers, können OTA-Updates nun nur noch ab Version 1.x6 durchgeführt werden!
Für eine Firmware Update Ihrer älteren Timekepper Version, muss Ihr Gerät zu uns eingeschkickt werden!
Wünschen Sie ein Update, fordern Sie bitte ein Angebot bei uns an.

  • 18.04.2021: Alle HW Versionen, Firmware Version 03
  • Einstellen der Display Helligkeit.

  • – Überarbeitung der Interrupt Routiene bei der Zeiterfassung für
    eine höhere Genauigkeit.
    – Neuen Menüpunkt zum abschalten der WIFI Verbindung (Zeiteinsparung beim Starten, wenn kein WIFI verfügbar).
    – Anzeige Fortschrittsanzeige während deines Firmwareupdates.
    – Verbesserung der Systemsabilität.
    – Geänderte Hardware bei den DOT Matrix Displays von Maxim, unterscheidung über die Hardware Version des Timekeeper Moduls bei OTA-Update

  • 15.12.2020: Version 1.02
    – Neue „Hold Ini“ Zeitnahmefunktion.
       Misst die Zeitdauer, die der Initiator aktiv war.
    – Eine Änderung der Zeitnahmemethode direkt am Timekeeper
       wird nun auch rückwärts in der Blynk App Blynk App
       aktualisiert.
    – Wenn kein NTP Zeitserver Server erreichbar ist, wird die
       Uhrzeit / Datum Anzeige am Timekeeper Modul abschalten.
    – Erweiterte Webdarstellung, Listenansicht mit bis zu zwanzig
       Einträge und einem CSV Export Funktion.
  • 08.05.2019: Version 1.01
    „Single Ini“ Zeitnahmefunktion mit nur einem Initiator, Trenddarstellung der Zeitdifferenz und Umgestaltung der Bedienelemente.
    Erweiterung der Blynk App um ein Eingabefeld für die Entfernung zwischen dem Start- und Ziel Initiator sowie die Integration einer Anzeige der daraus berechneten Geschwindigkeit.
  • 20.04.2019: Version 1.00
    Timekeeper finale Version 1.00, Firmware released.

Dash Button Bestellsystem

Dashbutton Server Software
Dashbutton Server Software

Was ist ein Dash Button?

In diesem Projekt entsteht eine Batterie betriebener WLAN Dash Button in robuster Ausführung.
Die Elektronik soll in einem Gehäuse aus Metall untergebracht werden und eine Schutzart von IP64 erfüllen (Schutz gegen Spritzwasser und Staub).

Ein Dash Button ist eine kleine Mikrocontroller gestützte Schaltung, die bei Anforderung mit einem lokalen WLAN Netzwerk eine Verbindung herstellen kann, um so Daten an einen beliebigen Server zu senden.

Um einen Dash Button in ein bestehendes WLAN Netzwerk zu integrieren, startet der Dash Button im AP-Modus, nach dem Verbinden z.B. mit einem Smartphone oder Laptop, wird automatisch ein Captive Portal auf dem Endgerät geöffnet.

Hier können anschließend folgende Credentials definiert werden:

  • SSID des lokalen WLAN Netzwerks
  • Passwort des lokalen WLAN Netzwerks
  • Hostname des Ziel-Servers
  • URL
  • Dash Token, ein ein-eindeutiger Schlüssel für die Aktion die der Dash Button auslösen soll

Aufbau der Hardware

Der Dash Button soll unabhängig von einer externen Energieversorgung arbeiten können. Das bedeutet, dass die Energieversorgung mit Batterien realisiert wird, die im Gehäuse untergebracht werden.

Prototyp Dash Button von oben

Prototyp Dash Button von unten

Prototyp eines DashButtons im Metallgehäuse, zum Testen der Feldstärke mit einer ext. Antenne.

Deep Sleep Modus

Softwaretechnisch wird hierfür die sogenannte Deepsleep Funktion des Mikrocontrollers verwendet. In diesem Modus hat die Schaltung eine Stromaufnahme <70uA, was eine lange Lebensdauer der Batterien im Standby garantiert.

Nach Herstellerangaben, liegt der Deepsleep Ruhestrom bei ca. 10uA. Gemessen wurde beim Dashbutton jedoch eine Ruhestromaufnahme von ca. 60 uA. Dies muss jedoch noch genauer untersucht werden, da hier eine Messfehlertoleranz des Multimeters anzunehmen ist.

Parameter Typische Stromaufnahme Einheit
Tx 802.11b, CCK 11Mbps, Pout=+17dBm 170 mA
Tx 802.11g, OFDM 54Mbps,, Pout=+15dBm 140 mA
Tx 802.11n, MCS7, Pout=+13dBm 120 mA
Rx 802.11b 1024 byte packet lenght, -80dBm 50 mA
Rx 802.11g 1024 byte packet lenght, -70dBm 56 mA
Rx 802.11n 1024 byte packet lenght, -65dBm 56 mA
Modem-Sleep 15 mA
Light-Sleep 0,5 mA
Power save mode DTIM 1 1,2 mA
Power save mode DTIM 3 0,9 mA
Deep-Sleep 10 uA
Power OFF 0.5 uA

Eine Standard ESP-07 enthält einen Flash RAM von 1M, für die Programmierung wird ein SPIFFS von 64 K voreingestellt.
Direkt auf dem Modul befinden sich zwei LED’s , die rote LED ist direkt mit der Versorgungsspannung verbunden. Diese LED verursacht auch im Deepsleep Modus einen schadhaften Ruhestrom von ca. 15 mA und muss deshalb entfernt werden.
Die blaue LED ist mit TxD verbunden und zeigt die Aktivität an diesem Pin an.

Änderung des Energieversorgungsskonzeptes

Bei den Tests mit verschiedenen Primärquellen hat sich gezeigt, das mit dem ersten Layoutentwurf immer nur ein relativ kleiner Teil der zu Verfügungstehenden Kapazitäten entnommen werden kann. Deshalb wird nun in einer überarabeitenen Hardware Revision ein StepUp Booster vom Typ   NCP1402SN33T1 eingesetzt.

Dieser Baustein hat eine sehr niedrige Anlaufspannung von ca. 0.8V. Werden zwei AA-Battereien in Reihe betrieben, kann jede Zelle bis zu einer Spannung von 0.4V entladen werden, was knapp 90% der Gesamtkapazität der Zellen entspricht.

Der Baustein hat einen sehr niedrige Standby Stromaufnahme von nur 10uA und er stellt am Ausgang einen konstante Spannung von 3.3V zur Verfügung.

Das Schaltungsdesigne wird auch dahingehend geändert, dass auf den Standbystrom des NCP1402SN33T1 und den Deep Sleep Modus des ESP6288 verzichtet werden kann, da die Summe der beiden Ruhestromaufnahmen dann doch einen beträchtlichen Anteil von ca. 70 uA aus mahen würden.

Zu Einsatz kommt ein Mos Fet Transistor, der gleich zwei Aufgaben erfüllt. Zum einen dient er dem Verpolungsschutz, wenn die Batteriene versehentlich falsch eingelegt wurden und schützt so die Schaltkreise vor der Zerstörung.
Und zum anderen, wird er als Schalter für die Sapannungsversorgung verwendet.

Mit dem Betätigen des Tasters wird der Mos Fet leitend und stellt die Versorgungsspannung des Schaltkreises zur Verfügung. Ms nach dem starten des ESP 8266 steuert dieser dann übereinen Ausgang den Mos Fet an und verhindert so das sie Versorungsspannung nach dem loslassen des Taster wieder abgeschaltet wird.

Sobald alle nötigen Programmaktionen abgearbeitet wurden, gibt der ESP 8266 den Schaltausgang des Mos Fet’s wieder frei und die Spannungsversorgung wird abgeschaltet.

Batterie Kapazität

Die Richtwerte für Alkalien Batterien schwanken lt. Herstellerangaben in folgenden Bereichen:

AAA 1000  - 1500  mAh
AA  2000  - 3000  mAh
D   12000 - 20000 mAh

Eine Duracell Plus soll lt. Herstellers Angaben bis zu 2.9 Ah haben, was einer Laufzeit im Deepsleep Modus von mehreren Jahren entspräche.

Für Batterietests bietet das Layout unter anderem auch die Möglichkeit den Dash Button mit einer Knopfzelle zu betreiben.
Es hat sich jedoch gezeigt, dass eine Standard LR2032 nicht in Frage kommt, da bei diesem Typ bei einer Pulsbelastung die Spannung kurzfristig auf 2,8V einbricht. Was deutlich außerhalb der Spezifizierten Parameter des ESP8266 liegen würde.

Deshalb wurde für den Test eine Lithium Ionen Zelle z.B. Typ LIR 2032 (35mAh) verwendet. Da diese Typen auch bei einer Pulsbelastung in der für den ESP8266 definierten Spezifikation bleibt.
Der Nachteil dieser kleinen Bauform liegt jedoch in der kurzen Standbyzeit,  die bei rund 60 uA Ruhestromaufnahme gerade mal für ca. 25 Tage reicht.

Bei der Verwendung von zwei in Reihe geschalteten AA-Zink Kohle Batterien ist der Arbeitsspannungsbereich für den Betrieb eines ESP8266 sehr eingeschränkt. Bei neuen Batterien liegt die Spannung bei ca. 3,2 V. Nach einer Entladung von ca. 5% liegt die Spannung nur noch bei 3,0V. Somit erscheint der Einsatz solcher Batterietypen als wenig sinnvoll.

Eine weitere denkbare Option wäre der Verwendung von drei in Reihe geschalteten AA-Zellen, um das Spannungsniveau  in einen besseren Auslastungsbereich zu bekommen. Hier bei müsste dann jedoch wieder ein Spannungsregler eingesetzt werden, der zusätzliche Verluste mit sich bringt, was die Lebensdauer aber bei der verhältnismäßig geringen Einschaltzeit kaum einschränken dürfte.

Typische Kennlienie einer Duracell AA Batterie. (Quelle Duracell Datenblatt)

So wird nun im dritten Anlauf für dieses Projekt angenommen, dass entweder zwei paralell geschaltete LiFEPO4 AA Akkus zum Einsatz kommen oder drei AA-Zellen die in Reihe geschaltet werden. Oder die Dritte Option ein LIPO Akku mit einer Ausgangsspannung von 3.7V.

Die Platine erhält einen 3,3 V low drop Spannungsregler der Firma Mikrochip, vom Typ MIC5219-3.3BM5 LG33 3.3V –40°C to +125°C SOT-23-5.

Dieser Baustein besitzt einen Enable Eingang, der es erlaubt die komplette Schaltung abzuschalten ohne das ein merklicher Ruhestrom fließt.

Durch den Einsatz dieses Reglers kann ein ein Eingangsspannungsbereiche zwischen 3 – 5v abgedeckt werden. Darurch sind alle drei Varianten der oben beschriebenen Spannungsversorgungen möglich.

LiFEPO4 AA Akkus liefern eine Spannung von 3,4 V / 700 mA, was einer Batteriekapazität von 100% entspräche.
Durch eine Parallelschaltung von zwei LiFePO4 Akkus kann somit die Kapazität auf 1400 mAh erhöht werden.

Hierbei läge die Ausnützung der Batteriekapazität bei etwa 60% (800 mAh), im Vergleich zu drei Zink-Kohle Batteriene. Deren Entladeschlussspannung bei 1v liegt, was bei drei in reihe geschaltenenen Zellen ca. 3V entspricht  = minimale Eingangsspannung der EPS lt. Spec.

Es ergäbe sich rein rechnerisch eine Standbybetriebszeit von ca. 1,5 Jahren.

Ein großer Vorteil bei der Verwendung von LiFePO4 Zellen liegt darin, dass die Zellen wiederaufladbar sind und somit viele Male wieder verwendet werden können.
Ein gravierender Nachteil der Parallelschaltung von zwei Zellen liegt jedoch in einer Verpolung.
Wenn die Zellen von nicht fachkundigem Personal gewechselt werden sollen,  kann es durch die Parallelschaltung der beiden Zellen bei einem falschen Einlegen zu einem Kurzschluss kommen, der dann zur thermischen Zerstörung der Akkus und letztendlich des Dashbuttons führen würde.

Um eine lange Lebensdauer von Akkus zu gewährleisten, sind diese unbedingt vor einer Tiefentladung  zu schützen. Deshalb ist in der Firmware des DashButtons ein Schwellwert von 2,9 V programmiert, ab dem sich der Dash Button nicht mehr starten lässt. Die LED geht kurz an, blinkt für 1 Sekunde sehr schnell und geht dann sofort wieder aus!

Laut Herstellerangaben darf sich die Betriebsspannung eines ESP 8266 in einem Bereich von 3,0V – 3,6V bewegen (Typisch 3,3V).
Somit entspräche eine Batteriespannung von 3,0V gleich 0% Batteriekapazität, was einen sofortigen Batteriewechsel nötig machen würde!

Server Software

Die Server Software bietet die Möglichkeit, neben den Nutzinformation (Token) auch Informationen zur aktuellen Batteriespannung, Hard- und Software Version  und eine Statusinformation des DashButtons zu liefern.

Die Betriebsspannung wird mit dem Parameter &vbatt=x.xxx an den Server übergeben.
Er gibt die Batteriespannung in Volt an.

Beispielberechnung für die Batteriekapazität:

Bei Betrieb mit einer Li Fe PO4 Zelle , wird am Messeingang des Mikrocontrollers etwa eine  Betriebsspannung von 3,3V erreicht.
Was in diesem Fall einer prozentualen Batteriekapazität von 100 % entspräche.
Die minimale Betriebsspannung sollte 3,0V nicht unterschreiten, was somit die 0% der Batteriekapazität fest legt.

Im folgenden Beispiel wird angenommen, dass die Batterie noch eine Spannung von 3,15V (50%) liefert:

Y = Eingangsspannung 3,15V
Y0= 3,0 V
Y100= 3,3 V

X= Ergebnis in %
X0 = 0 %
X100 = 100%

X:= ((X100 – X0) * ( Y – Y0 )  /  (Y100 – Y0)) + X0;

        100 * 0.1
Y = ————-  + 0 = 50%
               0.2

Wird der Parameter nicht übergeben, wird der Wert im Server automatisch auf -1 gesetzt. Was soviel bedeutet, dass der Batteriestatus nicht ermittelt werden konnte bzw. nicht bekannt ist.

In der Server Software kann für jeden DashButton der verwendete Batterietyp ausgewählt werden. Somit kann die Berechnung der Batteriekapazität anhand einer hinterlegten Herstellerkennlinie erfolgen, was eine genauere Anzeige der tatsächlichen Kapazität ermöglicht.

Mit diesen Informationen kann in der Serverapplikation ein Mechanismus angestoßen werden, der den Admin rechtzeitig darüber informiert, wann ein Batteriewechsel erforderlich wird.

Das Layout bietet die Möglichkeit, verschieden Batterietypen in verschiedenen Leistungsklassen und Größen zu verwenden.

Externe Antenne

Um eine stabile Funkverbindung etablieren zu können, muss bei der Verwendung eines Metall- bzw. metallisierten Gehäuses eine externe Antenne verwendet werden!

Bei einem Standard ESP-07 Modulen ist bereits ein Anschluss für eine externe Antenne vorhanden. Wird der externe Antennenanschluss verwendet, muss die Verbindung zur internen (aufgelöteten) Antenne unterbrochen werden. Hierfür ist der Null Ohm Wiederstand neben dem Antennenanschluss zu entfernen.

Für die Verwendung einer externen Antenne muss der null Ohm Wiederstand (rotes Quadrat) entfernt werden. Wird das ESP07 Modul mit einer Batterie betrieben muss zusätzlich die Power LED (roter Kreis) entfernt werden, um ein unnötiges entladen der Batterie zu vermeiden.

 

Wurde die interne Antenne entfernt,ist zwingend darauf zu achten, dass das Modul nicht ohne eine angeschlossene externe Antenne betrieben wird. Da dies zur Zerstörung des ESP-Moduls führen kann.

Programmierung

Die Programmierung des Mikrocontrollers erfolgt über einen Programmieranschluss, der auf der Platine vorhanden ist.
Diese Schnittstelle ist notwendig, um erstmalig eine Firmware in den Mikrocontroller laden zu können.

Hierbei ist zu beachten, dass die Lötbrücke J1 die im Bild mit einem Stern gekennzeichnet ist, nicht geschlossen sein darf. Da im Auslieferungsstand der Pin GPIO16 auf low liegt und somit eine Dauer Reset anliegen würde.

Im Programm darf somit der GPIO16 nicht mit pinMode() konfiguriert werden.

Lötbrücke für ein optionales automatisches aktivieren des DashButton nach einer fest definierten Zeitspanne. Sie verbindet den Pin GPIO16 mit dem Eingang RESET.

Funktionsweise des Tasters und der LED

Das Layout bietet je nach Bestückung die Möglichkeit einen Taster und eine LED in SMD Technik oder aber auch bedrahteten Bauelemente zu verwenden. Somit ist es auch möglich andere Bedientasten z.B. mit Kabelanschlüssen ein zu löten.

Befindet sich das Modul im Deepsleep Modus, kann es durch einen Tastendruck aufgeweckt werden.

Je nachdem wie lange der Taster  gedrückt gehalten wir, werden unterschiedliche Funktionen aufgerufen:

  • Drücken bis eine Verbindung ausgebaut wurde  – Test Modus (Status 0).
  • Drücken über einen Zeitraum von 10 Sekunden – WIFI Setup (Status 1).
  • kurzes Drücken des Tasters – löst eine Bestellung aus (Status 2).

Anschließend versucht das Gerät eine Netzwerkverbindung zum lokalen AP zu etablieren, was durch ein langsames blinken der LED signalisiert wird.
Kann keine Verbindung hergestellt werden, beginnt die LED schnell zu blinken und man hat die Möglichkeit für 240 Sekunden eine Verbindung zu diesem Dash Button aufzubauen und die Konfiguration vor zu nehmen.
Erfolgt in dieser Zeit kein Login auf dem Dash Button, wird der Mikrocontroller wieder in den Deepsleep Modus versetzt, um die Batterie nicht unnötig zu strapazieren.

Ist der Verbindungsaufbau zum lokalen WLAN geglückt, wird die Nutzinformation (Dash Token) an den in den Credentials definierten Server verschickt.
Wurde der Empfang der Information vom Server bestätigt, leuchtet die Status LED für drei Sekunden kontinuierlich.
Wird der Empfangs nicht vom Server bestätigt, wird dies durch schnelles Blinken der LED für drei Sekunden angezeigt.
Anschließend wechselt der Mikrocontroller wider in den Deepsleep Modus.

Je nachdem welches Ereignis am Dashbutton ausgelöst wurde, wird eine entsprechende Statusinformation im Parameter &status=x dem HTTP Put Request übergeben. Wird der Parameter nicht mit übergeben, wird der Wert im Server automatisch auf -1 gesetzt, was soviel bedeutet das der Status nicht bekannt ist.

Server Applikation für den DashButton

Die Serverapplikation kann auch direkt mit dem Webbrowser getestet werden. Hierfür wird in die Adresszeile der folgende Aufruf eingegeben:

http://HOST
/URL?&token=ef98c8246ef0409da5fb3a27afa4ec61
&vbatt=3.12&hv=1.00&sv=1.03&status=1

  • Host:
    Ist die IP-Adresse des Servers z.B. 192.168.1.123
  • URL:
    Ist eine Pfadangabe (optional für den augenblicklichen Stand) soll später der Einordnung der Einträge dienen, z.B. für die Standorte.
  • token:
    Ist ein 32 stelliger ein eindeutiger Schlüssel des betreffenden Dash Buttons.
  • vbatt:
    Gibt die Batteriespannung in Volt an.
  • hv:
    Gibt die aktuelle Hardware Revision des DashButton an.
  • sv:
    Gibt die aktuelle Firmware Version des DashButton an.
  • status:
    Information über den Auslöser des Ereignisses.
    0 – Test (Button wurde kürzer als drei Sekunden gedrückt)
    1 – Settings (Die Einstellungen wurden aufgerufen, durch langes drücken des Tasters)
    2 – Order (Ein Bestellauftrag wurde abgesetzt)
    3 – Für weitere Statusinformationen reserviert
Weitere Ideen:
  • Der Dash Token sollte im Prinzip ein 32 Byte Hashcode sein, der einen Prüfsumme oder einen CRC Check enthält, um die Authentizität des Tokens auf dem Server verifizieren zu können.
  • Es wäre denkbar, dass sich ein Dash Button der längere Zeit nicht betätigt wurde, automatisch aktiviert (z.B. alle 24h) und seinen Batteriestatus an den Server sendet.
    Der Parameter „status“ würde das Ereignis dann als Test identifizieren.
    Hierbei wäre zu bedenken, dass ein zyklisches Verbinden mit dem WLAN und das Senden dieser Statusinformationen die Batterielebensdauer zusätzlich verkürzen würde.