Die mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

 

Beschreibung

Ziel dieses Projektes ist es, einen Batteriebetriebenen Temperatursensor zu bauen. 

 

Für das Projekt, müssen vorab folgende Schritte ausgeführt werden:

Für die Anforderung wird folgende Hardware benötigt:

Wenn alle Schritte durchgeführt wurden, können wir hier jetzt weitermachen.

Schaltplan

Die Widerstände** R2 und R3 werden als Spannungsteiler verwendet, um über den Analogen Eingang die aktuelle Batteriespannung zu ermitteln. Die Größe der Widerstände** ist sehr hoch gewählt, um den Strom sehr niedrig zu halten. Dadurch werden die Batterien kaum belastet.

 

Am Temperatursensor DS18B20** wurde in der GND Leitung ein Jumper** verbaut, um diesen bei Bedarf abzutrennen. Dadurch habe Ihr erst die Möglichkeit den Deep Sleep zu verzögern.  

 

Die gelbe Leitung ist für den Deep-Sleep.

Gehäuse

 

Für das Gehäuse des Temperatursensors, habe ich aus dem 3D Drucker ein zweiteiliges Gehäuse gedruckt. Am oberen Ende des Gehäuses ist eine kleine Aussparung, in welche der Temperatursensor genau hinein passt.

Download
Gehäuse
Temperatur_4xAA_Gehäuse.stl
Text Dokument 19.3 KB
Download
Deckel
Temperatur_4xAA_Decke.stl
Text Dokument 7.7 KB

Montage

Die Montage besteht aus mehreren Schritten. Zuerst, bereiten wir das Herz des Temperatursensor vor. Auf einer Lochrasterplatine, verbauen und verlöten wir alle benötigten Bauteile.

 

Im ersten Schritt, schneiden wir uns eine Lochrasterplatine zurecht. Von den Abmessungen  her, sollte die Lochrasterplatine 5 Loch hoch und 22 Loch breit sein. So passt sie zum Schluss optimal in das Gehäuse.

 

 

Damit der Temperatursensor auf der Platine keinen Kurzschluss verursacht, entfernen wir in dem rot markierten Bereich die Lötpunkte. Hierfür könnt Ihr ein Cuttermesser verwenden.

 

 

Jetzt, können wir den Temperatursensor DS18B20** eingebaut und direkt verlöten.

 

Jetzt, die restlichen Bauteile einbauen und direkt verlöten. Die Drähte der Bauteile habe ich entsprechend verwendet um die Leiterbahnen zu verbinden. Leider ist mir erst aufgefallen, dass ich den Jumper vergessen habe einzubauen, nachdem ich mit allem fertig war. Daher habe ich Euch diesen auf dem Bild (Roter Kasten mit J) entsprechend eingezeichnet.

 

Fertig verlötet, sieht die Unterseite dann so aus.

 

Hier, habe ich Euch die Leiterbahnen noch mal mit einer roten Linie markiert. Zusätzlich habe ich Euch noch den fehlenden Jumper  (Roter Kasten mit J) eingezeichnet.

 

Jetzt können wir die Kabel an das ESP-12F** Modul löten. Hier, habe ich die gleichen Farben wie auf dem Schaltplan verwendet. 

 

Bei dem schwarzen Kabel, habe ich die beiden unteren Punkt direkt verbunden. Somit kann man sich ein Kabel sparen.

An den jeweiligen Punkten, müssen die Kabel durchgeführt und verlötet werde.

  1. Grüne Leitung - ESP rechte Seite Pin GPIO 4
  2. Rote Leitung - ESP rechte Seite Pin GPIO 5
  3. Grüne Leitung - ESP linke Seite Pin ADC
  4. Rote Leitung - ESP linke Seite Pin VCC
  5. Rote Leitung - ESP linke Seite Pin EN
  6. Schwarze Leitung - ESP linke Seite Pin GND & GPIO 15
  7. Rote Leitung - Batterie Plus
  8. Schwarze Leitung - Batterie GND

 

Das fertige Ergebnis, sollte da ungefähr so aussehen. Hier ist jetzt auch der Jumper, direkt neben dem Widerstand zu sehen.

 

Fertig verlötet, sieht die Unterseite dann so aus.

 

Hier, habe ich Euch die Leiterbahnen noch mal mit einer roten Linie markiert.

 

Jetzt, können wir die fertige Platine und den Batteriehalter einbauen. Beide Bauteile werden mit Heißkleber fixiert, damit sie nicht mehr herausfallen können.

ESPEasy Device Konfiguration

Wie immer, basiert diese erweitere Konfiguration auf der bereits vorab getätigten Firmware Installation, mit anschließender Grundkonfiguration.

 

Zusätzlich zu der Grundkonfiguration, müsst Ihr noch folgendes anpassen:

Registerkarte "Hardware" auswählen

 

Im Bereich "I2C Interface" müssen die GPIOs für "SDA" und "SCI" auf "None" gesetzt werden, damit diese später bei dem Temperatursensor verwendet werden können.

 

Im Bereich "GPIO boot states" den "Pin mode GPIO-5 (D1)" auf "Output High" setzen, damit der Temperatursensor direkt beim Booten schon mit einer Spannung versorgt wird.

Jetzt könnt Ihr die erforderlichen Devices anlegen. Folgende Devices werden benötigt:

  • Analog input - internal
  • Environment - DS18b20
  • Generic - Dummy Device

 

  • Registerkarte "Device" auswählen
  • Über "Add" ein neues Device hinzufügen

Device - Analog input - internal

 

Nachdem wir das Device "Analog input - internal" ausgewählt haben, können wir die Konfiguration durchführen:

  1. Name = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "battery"
  2. Enabled = Haken setzen, damit der Sensor auch aktiv ist.
  3. Send to Controller = Haken setzen, damit der Sensor auch die gemessene Temperatur an den FHEM Server sendet.
  4. Interval = Auf "10 sec" setzen
  5. Value Name 1 = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "battery", da das der Standard Wert innerhalt von FHEM ist.
  6. Value Formula = Um die Batteriespannung zu berechnen, muss hier der Wert entsprechend berechnet werden. Durch den Gesamtwiderstand von 11MΩ muss hier folgendes einegtragen werden: "%value%/1000*11" (1)
  7. Speichern der Konfiguration mit "Submit"
  8. Beenden der Konfiguration mit "Close"

(1) Berechnung der Batteriespannung

Der Batteriewert wird im ESP als ganze Zahl dargestellt. Das bedeutet, wenn die Eingangsspannung am analogen Eingang 0,54 Volt beträgt, dann wird der Wert des Eingangs 545 angezeigt. Zusätzlich, müssen wir auch noch den eingesetzten Spannungsteiler betrachten. Durch diesen wird die eigentliche 1,5Volt * 4 Batterien = 6 Volt auch noch aufgeteilt. Dadurch, müssen wir das bei der Berechnung auch noch beachten. Daraus ergibt sich dann folgende Formel

  • %VALUE% = Der gemessene Wert (ganze Zahl z.B. 545 = 0,54 Volt)
  • \1000 = Hier wird der Wert entsprechend verkleinert (ganze Zahl 545\1000 = 0.545)
  • *11 = Faktor des Spannungsteilers (0.545 * 11 = 5,995 Volt Eingangsspannung)

Die Berechnung des Faktors könnt Ihr wie folgt berechnen:

  • Gesamt Widerstand R2 + R3 geteilt durch R3 (10MΩ+1MΩ\1MΩ = 11)

Wie Ihr sicherlich festgestellt habt, weicht die berechnete Spannung etwas von der eigentlichen 6 Volt Eingangsspannung ab. Das kommt daher, dass nur die ersten drei Nachkommastellen bei meiner Berechnung beachtet wurden. Zusätzlich, müsst Ihr eventuell noch beachten, dass die eingesetzten Widerstände eine gewisse Toleranz  haben.

Device - Environment - DS18b20

 

Nachdem wir das Device "Environment -DS18b20" ausgewählt haben, können wir die Konfiguration durchführen:

  1. Name = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "sensor"
  2. Enabled = Haken setzen, damit der Sensor auch aktiv ist.
  3. GPIO 1-Wire = Hier den "GPIO-2 (D4)" auswählen.
  4. Send to Controller = Haken setzen, damit der Sensor auch die gemessene Temperatur an den FHEM Server sendet.
  5. Interval = Auf "10 sec" setzen
  6. Value Name 1 = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "temperature", da das der Standard Wert innerhalt von FHEM ist.
  7. Speichern der Konfiguration mit "Submit"
  8. Beenden der Konfiguration mit "Close"

 

Direkt nachdem die Konfiguration geschlossen wurde, müssen wir diese noch mal öffnen um weitere Einstellungen vorzunehmen.

  1. Device Resolution (*) = 12 Bit (Standardwert = 9Bit und liefert dann nur Temperaturdifferenzen von 0,5 Grad). 
  2. Error State Value = NaN
  3. Speichern der Konfiguration mit "Submit"
  4. Beenden der Konfiguration mit "Close"

 

 

* Device Resulution (Temperaturauflösung)

9 Bit = 0,5°C / 93,75 ms

10 Bit = 0,25°C / 187,5 ms

11 Bit = 0,125°C / 375 ms

12 Bit = 0,00625°C / 750 ms

 

Die Ermittlung der Temperatur, benötigt je nach Temperaturauflösung entsprechend Zeit.

Device - Generic - Dummy Device

 

Nachdem wir das Device "Generic - Dummy Device" ausgewählt haben, können wir die Konfiguration durchführen:

  1. Name = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "dummy"
  2. Enabled = Haken setzen, damit der Sensor auch aktiv ist.
  3. Output Data Type = "Triple" auswählen
  4. Value Name 1 = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "temperature", da das der Standard Wert innerhalt von FHEM ist.
  5. Value Decimals 1 = "0" einstellen
  6. Value Name 2 = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "battery", da das der Standard Wert innerhalt von FHEM ist.
  7. Value Decimals 2 = "0" einstellen
  8. Value Name 3 = Kann frei vergeben werden. Muss allerdings später in den Rules beachtet werden. Ich verwende hier "wifi", da das der Standard Wert innerhalt von FHEM ist.
  9. Value Decimals 3 = "0" einstellen
  10. Speichern der Konfiguration mit "Submit"
  11. Beenden der Konfiguration mit "Close"

Device - Übersicht

 

Nach dem Beenden der Konfiguration, sollte die Geräteübersicht den Temperatursensor und die Spannung anzeigen. Ob der Temperatursensor richtig arbeitet erkennt man an der Portadresse und an der Temperatur.

ESPEasy Rules Konfiguration

Zum Abschluss müssen noch div. Rules angelegt werden, hierzu die Registerkarte "Rules" auswählen. Wenn die Registerkarte nicht vorhanden ist, könnt Ihr hier schauen wie diese aktiviert wird.

 

Registerkarte "Rules" auswählen

  1. Rules Skript (siehe weiter unten) hier einfügen
  2. Speichern des Rules Set mit "Save"

 

Bereich "on System#Boot do"

Hier werden die drei Werte des Dummy Devices "dummy" auf "0" gesetzt. Zusätzlich wird der "Timer1" aktiviert, damit dieser 60 Sekunden später aktiviert wird.

 

Bereich "on WiFi#Connected do"

Dieser Bereich wird aktiv, wenn sich das ESP-12F** Modul mit dem WLAN verbindet. Mit dem Befehl "TaskValueSet" wird der Wert "wifi" im Dummy Device "dummy" festgehalten. Direkt danach, prüft ihr, ob alle drei Werte des Dummy Devices "dummy" auf "1" stehen. Wenn dies zutrifft, wird das ESP-12F** Modul für 900 Sekunden in den Deep Sleep versetzt.

 

Bereich "on sensor#temperature do"

Dieser Bereich, wird immer aktiv, wenn der Temperatursensor eine Temperatur misst. Mit dem Befehl "TaskValueSet" wird der Wert "temperature" im Dummy Device "dummy" festgehalten. Direkt danach, prüft ihr, ob alle drei Werte des Dummy Devices "dummy" auf "1" stehen. Wenn dies zutrifft, wird das ESP-12F** Modul für 900 Sekunden in den Deep Sleep versetzt.

 

Bereich "on battery#battery do"

Dieser Bereich wird immer aktiv, wenn der analoge Eingang eine Spannung misst. Mit dem Befehl "TaskValueSet" wird der Wert "battery" im Dummy Device "dummy" festgehalten. Direkt danach, prüft ihr, ob alle drei Werte des Dummy Devices "dummy" auf "1" stehen. Wenn dies zutrifft, wird das ESP-12F** Modul für 900 Sekunden in den Deep Sleep versetzt.

 

Bereich "On Rules#Timer=1 do"

Dieser Bereich, wird aktiv, wenn einer der oberen drei Bereiche nicht aktiv wurde. Das kann z.B. passieren wenn das WLAN nicht verbunden werden konnte, oder wenn einer der Sensoren keine Werte liefert. Mit dem Timer, wird dann spätestens 60 Sekunden nach dem Boot des ESP-12F** Moduls der Deep Sleep wieder aktiviert.

  

on System#Boot do
   TaskValueSet 3,1,0
   TaskValueSet 3,2,0
   TaskValueSet 3,3,0
   timerSet,1,60
endon

on WiFi#Connected do
   TaskValueSet 3,3,1
   if [dummy#temperature]=1 and [dummy#battery]=1 and [dummy#wifi]=1
      deepsleep,900
   endon
endon

on sensor#temperature do
   TaskValueSet 3,1,1
   if [dummy#temperature]=1 and [dummy#battery]=1 and [dummy#wifi]=1
      deepsleep,900
   endon
endon

on battery#battery do
   TaskValueSet 3,2,1
   if [dummy#temperature]=1 and [dummy#battery]=1 and [dummy#wifi]=1
      deepsleep,900
   endon
endon

On Rules#Timer=1 do
   deepsleep,900
endon

ACHTUNG!! Die Rules werden direkt nach dem Speichern aktiv, und das ESP geht entsprechend in den Deep Sleep Modus.

Wenn Ihr später noch Änderungen vornehmen möchte, dann müsst Ihr den Jumper entfernen. Danach, noch kurz die Batterien vom Kontakt entfernen. Direkt danach, könnt Ihr den Sensor wieder unter Strom setzen. Da der Temperatursensor jetzt keine Werte mehr liefert, geht der ESP nicht mehr direkt in den Deep Sleep, sondern erst wieder wenn der Time aktiv wird. 

FHEM Integration

Sobald der Temperatursensor die ersten Werte liefert, solle das Device automatisch in FHEM erscheinen.

Damit hier nicht für jeden Sensor ein eigenes FHEM Gerät angezeigt wird, könnt Ihr das ESP Bridge Modul anpassen. Hier müsst Ihr am Attribut "combineDevices" das entsprechende ESP Modul hinzufügen. Ich verwende hier immer die entsprechende IP-Adresse.

Direkt nach dem Speichern des Attributes taucht dann ein weiteres ESP-Device auf

Das Device "ESPEasy_HNMWESP11_battery" und "ESPEasy_HNMWESP11_sensor" kann jetzt gelöscht werden.

 

Nach ein paar weiteren Anpassungen und ein paar Tagen Laufzeit, sah das Ganze bei mir dann so aus:

Strombedarf

Zum Feststellen des Strombedarfs verwende ich folgendes Messgerät:

 

Um den Strombedarf zu ermitteln, muss das Messgerät zwischen die Plus Leitung geschalten werden. 

 

Das Messegerät verfügt über eine USB Schnittstelle. Damit kann der Strombedarf am PC aufgezeichnet werden. Über diese Aufzeichnung ist es dann möglich, für den Betrieb und für die Deep Sleep Phase den Strombedarf zu ermitteln.

 

Hier habe ich eine Darstellung[2], über den Strombedarf während der Temperaturmessung.

 

Wenn ich alle markierten Werte[1] zusammenzähle, und diese dann durch die Anzahl der markierten Zeilen berechne, dann komme ich auf einen Durchschnittsverbrauch von ca. 58,85 mA

 

Bereinigt durch die Zeile mit dem kleinsten Wert, komme ich auf einen Durchschnittsverbrauch von ca. 72,11 mA. Die Gesamtdauer des Betriebs wäre hier ca. 3-4 Sekunden.

 

In dieser Darstellung[1], seht Ihr den Strombedarf während der Deep Sleep Phase.

 

Hier macht eine Durchschnittsberechnung[2] keinen Sinn, da die Werte sich wirklich nur um ca. 0,1 µA bis 0,5 µA verändern. 

 

Als Durchschnittsverbrauch würde ich hier ca. 46 µA bis 47 µA annehmen.

Mit diesen Werten, könnt Ihr dann die maximal erreichbare Batterielebensdauer errechnen. Die entsprechende Informationen und Exceltabelle findet Ihr hier:

ESP Easy Deep Sleep 

Änderungsprotokoll

Datum Beschreibung
15.06.2021
  • Erste Version

**

Kommentare: 0
Die mit ** gekennzeichnete Links auf dieser Seite sind Affiliatelinks. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

Danke, dass Du bis hierher gelesen hast! Über eine kleine Spende würde ich mich freuen.
**