ESP8266 / Wemos D1 mini solarbetriebener Temperatursensor

Update zum Temperatursensor: Ich hab den jetzt mal am Stück eine komplette Batterieladung (bestehend aus 2 Stck. AA Einweg-Batterien) leersaugen lassen und dank dem Deepsleep-Modus konnte damit die Dauer von ca. 24h auf stolze 16 Tage erweitert werden.

Allerdings habe ich dabei nicht ganz das obige SetUp mit dem ESP-01 board verwendet, sondern ich hatte mich nach einer etwas komfortableren Lösung umgesehen. Da gibts zum einen das NodeMCU-board, sehr nice zum entwickeln, aber noch relativ teuer. Als State of the art board kann man aber wohl mittlerweile das “Wemos D1 mini” ansehen.

Bei diesem (wie auch beim NodeMCU) benötigt man keinen FTDI-Adapter mehr, weil ein USB-Chip (ein CH340G, der gleiche wie auch beim Arduino) mit on board ist, man braucht also nur noch ein USB-Kabel. Beim NodeMCU sind zwei Taster für Reset und für Flash-Modus mit auf dem Board, aber beim Wemos D1 nur noch der Reset-Taster, irgendwie haben die das geschafft,d ass der Flash-modus automatisch erkannt und der entsprechende Pin gegen Masse gezogen wird – sehr komfortabel ! Und obendrein ist das Board auch noch etwas billiger, also schon ab etwa 3.50 EUR zu haben und somit nur noch rund 2,- EUR teurer als das ESP-01. Da ausserdem noch der GPIO16 nach aussen geführt wurde, kann man hier problemlos für Deepsleep eine Verbindung nach Reset anlegen und somit das anschliessende Wake-Up ermöglichen. Beim ESP-01 musste ich dafür ja extra noch eine Brücke an den winzigen Chip anlöten, was man sich hier ersparen kann. Da ich finde, dass das die 2,- EUR mehr wert ist, wäre dies jetzt das Board meiner Wahl … das ESP-01 würde ich nur noch für Anwendungen verwenden, wo ein Stromanschluss in der Nähe ist und die nicht auf Batteriebetrieb laufen sollen.

So sieht das Wemos D1 mini von unten aus, man erkennt den USB-Chip samt Anschluss.

So sieht das Wemos D1 mini von unten aus, man erkennt den USB-Chip samt Anschluss.

Und so sieht es von oben aus. Daneben noch ein dazu passendes DS18B20-shield.

Und so sieht es von oben aus. Daneben noch ein dazu passendes DS18B20-shield.

Daneben befindet sich noch ein passender shield mit einem DS18B20 Temperatur-Sensor. Eigentlich war das shield ein Fehlkauf weil ich da was falsch verstanden hatte, aber dadurch bin ich erst auf das Wemos-Board aufmerksam geworden und mir wurde klar, das das sogar noch ebsser ist als das NodeMCU.

photo_2018-04-05_20-55-01

Mit diesem Setup ist das Ganze jetzt wie gesagt unglaubliche 16 Tage am Stück durchgelaufen. Wobei es wichtig ist zu bedenken, dass nicht die volle Kapazität der AA-Batterien ausgeschöpft werden kann. Ursprünglich haben die zwei zusammen 3.2V, das geht dann runter bis auf 3.0 oder 2.8V, aber dann ist Schluss, weil die Spannung nicht mehr ausreichend ist für den ESP, der ja nominell 3.3V verlangt.

Genau das war auch der Grund, warum ich die effektive Dauer experimentell ermitteln wollte, weil ich nicht genau wusste, wie weit die Spanung runtergehen kann ehe Schluss ist.

Natürlich kann man anstatt der beiden AA Einweg-Batterien auch einen 18650 Li-Akku verwenden.

Anstatt der beiden AA NiMH Einweg-Batterien hier ein  18650 Li-Akku

Anstatt der beiden AA Einweg-Batterien hier ein 18650 Li-Akku

Dieses SetUp hat den Vorteil, dass der Akku wieder aufgeladen werden kann und mit 3100 mAH Kapazität dürfte der auch noch ein paar Tage weiter reichen als die AA Batterien. Im übrigen ist aber auch die Taktrate entscheidend, d.h. wie oft man den ESP aufweckt und die Daten versendet. Bei den meisten (zumindest für mich relevanten) Anwendungen, wie Messung einer Temperatur oder Überwachung einer Solarspeicher-Spannung würde es im Grunde völlig reichen, nur alle paar Minuten einen Wert zu senden. Im vorliegenden Falle hatte ich aber einmal pro Minute gesendet. Würde man diesen Wert auf 5 oder gar 15 Minuten erhöhen, dürfte man damit noch deutlich weiter kommen.

Um der Sache mal genau auf den Grund zu gehen habe ich heute versucht exakte Verbrauchswerte zu bestimmen und dabei ist folgendes rausgekommen:

1. Der Verbrauch während des Sendens ist rund 75 mA. Kein Wunder, dass da eine normale AA-Batterie ohne Deepsleep nach 24h leergelutscht ist. Bei einmal Senden wird diese Strommenge für die Dauer von 5 oder 6 Sekunden benötigt … genau konnte ich die Zeit nicht messen, aber so pi mal Daumen. Ich gehe bei meinen BErechnungen konservativ von 6 s aus.

2. Der Verbrauch während des Deepsleep ist 0.125 mA bzw. 125 uA. Ich schätze, dass die sich ungefähr so zusammensetzen, dass rund 40 uA für den ESP und ein bischen Peripherie draufgehen und etwa 80uA für den CH340G, also den USB chip, der leider auch während der Deepsleep-Phase einiges an Strom verbraucht. (Falls man dieses vermeiden möchte könnte man zB. den ESP-01 verwenden, der ja keinen USB-Chip hat, allerdings muss man dann für Deepsleep selbst das eine Kabel an GPIUO16 anlöten). Aber wie sich das nun genau zusammensetzt ist mir ja eigentlich fast egal, da ich eh künftig wahrscheinlich das Wemos board nutzen werde und dieses verbraucht für den ESP UND den CH340 und alles andere nun mal 0.125mA im Deepsleep-Modus.

So, jetzt geht die Rechnerei los ;) Ich hatte ja eine minütliche Taktung, d.h. während einer Minute bzw. 60 s wird einmal für 6 s mit 75mA gesendet und die restlichen 54s wurden im Deepsleep-Modus jeweils 0.125mA verbaucht. Damit komme ich rechnerisch auf eine durchschnittliche Dauerleistung von 7.11 mA. Tatsächlich gemessen habe ich aber nur 5.6 mA, was ich mir damit erkläre, dass ich diese besagten 6s halt nicht exakt messen konnte, also die Dauer der Sendephase. Ausserdem habe ich die Rechnung versehentlich mit 70 anstat 75 mA durchgeführt. Aber so ungefähr kommt das ja hin und es ist nie verkehrt, bei sowas etwas konservativer zu rechnen.

Interessant war nun die Frage, wie sehr eine etwas langsamere Taktung ins Gewicht fallen würde und ich musste feststellen, dass die Taktung sehr stark ins Gewicht fällt bzw. eine langsamere Taktung die Lebensdauer extrem verlängern kann. Ich fasse mal die (rechnerischen) Ergebnisse für Euch zu sammen:

Bei Taktung 1min: 7.11mA durchschnittlicher Verbrauch, sollte bei einem 3000mAh Akku für ca. 17 Tage (bzw. bei 5.6mA für 22 Tage) reichen.

Bei Taktung 5min: 1.52 mA, reicht für 82 Tage.

Bei Taktung 15min: 0.59 mA, reicht für 125 Tage.

nice :)

Ich seh das Ganze auch als Key-Technologie für andere Projekte, immerhin befasse ich mich ja schon seit einigen Jahren mit der Übertragung von Sensordaten. Anfangs noch mit Ethernet-Kabel und Stromanschluss ( = schlecht für Outdoor) und seitdem wünsche ich mir einen einfachen, billigen Sensor, den ich einfach nur irgendwohin plaziere, sei es drinnen oder draussen und der mit die Messdaten bequem an einen zentralen Raspi funkt, wo ich sie speichern und visualisieren kann. Das brauche ich für Temperatur-Messungen (Pilzkeller, Anzuchtgewächshaus, Testen meines Solar-Warmluft-Kollektors, und vieles mehr.

Laut meiner Praxis-Erfahrung ist der Knackpunkt bei der Sache *nicht* der, dass man damit ne schicke Wetterstation oder sowas bauen kann. Viel entscheidender ist, dass ich für das Development von Projekten wie Warmluftkollektor, Optimierung meiner Solarthermie-Anlage mit Heizungsunterstützung usw. eine fortlaufende exakte Mess-Protokollierung zwingend benötige, um das jeweilige Projekt auch nur halbwegs optimieren zu können. Normalerweise kann man den Effekt einer möglichen Verbesserung (zB. Haus besser isolieren um Wärmeverbrauch zu senken) erst nach mehreren Wochen, Monaten oder gar erst nach nem Jahr sehen. Während solcher Zeiträume ist es unpraktikabel bzw. schlicht unmöglich, da punktuelle Messungen regelmässig durchzuführen, man braucht einfach ein System, das dies alles automatisch macht, zuverlässig und über lange Zeiträume. Und ich brauche sehr viele solcher Sensoren, die dürfen also pro Stück nicht viel kosten.

und wie es aussieht, haben wir jetzt mittlerweile das Zeitalter erreicht, indem die passende Hardware dafür zu einem günstigen Preis erhältlich ist.

Die o.g. Ergebnisse sind schon recht vielversprechend, aber ich bin damit noch nicht ganz zufrieden. Zum einen ist mir eine Dauer von 125 immer noch zu kurz, optimal wäre für mich mindestens 365 Tage. Und zum anderen ist mir eine Taktung von 15 min auch noch zu langsam, bei Sachen wie Temperaturmessung usw. hat man es zwar mit eher trägen Systemen zu tun, aber wenn wir die Sache schon mal anpacken, dann auch richtig. D.h. eine minütliche Taktung sollte dabei schon möglich sein. Mit der Option, durch zwei oder fünf-minütige Taktung die Lebensdauer sogar auf 2 oder mehr Jahre zu verlängern, aber 1 minütig mit 1 Jahr Lebensdauer ist hier die Minmal Anforderung.

So, ich strebe nun also an, noch eins drauf zu setzen und denke, damit dann das optimale bzw. derzeit machbare da rauzuholen, darum ist der Arbeitstitel des Projektes auch ELWOMI-Sen oder “Eierlegender WollMilch-Sensor” :)

Das klingt zwar etwas vermessen, aber dieser Titel kommt nicht von ungefähr … soll heissen, er ist nicht nur verdient, weil halt das maximale (min. 1 Jahr bei 1-minütiger Taktung) erreicht wird, sondern, weil in der mir vorschwebenden Schaltung alle darunterliegenden Stufen, also etwa so, wie im obigen Verlauf beschrieben, ebenfalls mit integriert sind bzw. darauf konfiguriert werden können (also zB. Betrieb mit 2 AA Einweg-Batterien usw.). Weil unter bestimmten Bedingungen diese Sub-Varianten von entscheidendem Vorteil sein können, etwa wenn keine Sonne da ist (wie bei mir im Keller, da muss es per Batterie oder Stromanschluss gehen).

Ja, und damit habe ich auch schon verraten, WIE ich noch eins drauf setzen möchte … und gleichzeitig so ganz nebenbei und elegant die gesetzte Mindestanforderung erfülle, nämlich durch Solar-Betrieb.

Ich habe die Schaltung auch bereits fertig und sie läuft, d.h., genauer gesagt habe ich davon einen Prototp auf Lochrasterplatine gebaut:

IOT-Sensor mit Solar-Power und Puffer-Akku.

IOT-Sensor mit Solar-Power und Puffer-Akku.

Solaranschluss oben rechts, daran hängt man ein 6V Panel mit max. 1000 mA.

Solaranschluss oben rechts, daran hängt man ein 6V Panel mit max. 1000 mA.

Hier in voller Solar-Konfiguration, mit Li-Akku als Pufferspeicher. Bei einminütiger Taktung sollte der Akku-Inhalt für min. 22 Tage ausreichen, d.h., innerhalb dieses Zeitraumes muss das Teil auch im Winter genügend Sonne sehen, um sich einmal wieder komplett aufladen zu können, danach reicht es wieder für min. 22 Tage (oder vielleicht auch eher 30 Tage). Ich halte das für ziemlich realistisch, da der hier verbaute Laderegler mit bis zu 1000 mA laden kann, d.h. innerhalb der besagten 22 oder 30 Tage muss insgesamt 3h lang die Sonne scheinen.

Standalone-Betrieb mit 3.7V Li-Akku, aber ohne Solar

Standalone-Betrieb mit 3.7V Li-Akku, aber ohne Solar

Standalone-Betrieb mit zwei 1.6V AA Einweg-Batterien ohne Solar, über einen separaten 3.3V Eingang.

Standalone-Betrieb mit zwei 1.6V Einweg-Batterien ohne Solar, über einen separaten 3.3V Eingang.

Standalone-Betrieb nur an USB-Kabel

Standalone-Betrieb nur an USB-Kabel

Standalone-Betrieb ohne Solar, nur an USB-Kabel, wobei aber der Li-Akku gleichzeitig mit aufgeladen wird.

Standalone-Betrieb ohne Solar, nur an USB-Kabel, wobei aber der Li-Akku gleichzeitig mit aufgeladen wird.

Ausserdem hab ich noch ein anderes nettes Gimmick mit eingebaut: Der ESP hat auch einen einzigen ADC-pin onboard und da hab ich einen Spannungsteiler vorgeschaltet und mit Batterie+ verbunden so dass ich ausser dem Temperatur-Messwert auch noch die aktuelle Batteriespannung mit übertragen kann. Somit hat man aus der Ferne quasi auch die Betreibssicherheit in bezug auf den Batteriestrom mit im Auge bzw. unter Kontrolle. Mittels Jumper kann dieses Feature auf Wunsch aber auch disabled werden.

Ein kleines Feature ist noch nicht realisiert, aber m.E. wichtig. Das ist eine Jumper, der gesteckt werden kann um das Teil in den Konfigurationsmodus zu versetzen. Damit hat es folgendes auf sich:
Fast alle Beispiele die man zu diesem Thema im Netz so findet, haben aus meiner Sicht einen gravierenden Nachteil: Die SSID und der Key fürs WLAN können nicht konfiguriert werden, sondern müssen händisch in den Quellcode eingetragen werden und dieser dann anschliessend auf das Board geflasht werden.

Dank dem Umstand, dass dieses heutzutage bobseidank inzwischen relativ easy mit dem Arduino-IDE geht, ist das für solche Maker-Nerds wie uns sicherlich kein grosses Ding.

Aber andererseits bedeutet es, dass das gute Stück *nicht* als reguläres Produkt etwa per eBay an Otto-Normal-Verbraucher verkauft werden kann, denn dieser ist damit höchstwahrscheinlich schlichtweg überfordert.

Aber auch für den Nerd ist es deutlich bequemer, wenn ers konfigurieren kann, sobald er viele soclehr Sensoren braucht. Ich hab mir früher immer mittels NodeMCU-Firmware und LUA gleich mehrere davon gemacht und mit unterschiedlichen statischen IP-Adressens versehen (und auf mein lokales WLAN konfiguriert) so dass diese sozusagen autonom funktionierten und beliebig an einen Arduino angestöpselt werden konnten, welcher seine Daten einfach über eine serielle TX/RX-Verbindung raushaute … der ESP-01 wiedrum stellte einfach alles was über die serielle TX/RX-Verbindung reinkam auf einer kleinen Webseite zum Abruf bereit
(siehe auch https://wiki.opensourceecology.de/Erg%C3%A4nzungs-Set_WLAN )

…. aber diese Zeiten sind ja nun zwecks Batteriebetrieb vorbei :) …. also *brauchen* wir die Konfigurierbarkeit.

Praktisch wird dies so aussehen, dass man den über nen Jumper in den Konfig-Modus schaltet und dann entweder über USB-Kabel und dem SerialMonitor der Arduino-IDE (oder einem beliebigen anderen Seriellen Terminalprogramm, wie zB. Minicom unter Linux) die Settings machen kann.

Oder aber, alternativ, wird der ESP für die Konfiguration in den AccessPoint-Modus versetzt und kann dann zB. mittels Handy konfiguriert werden.

Es gibt also noch einiges an Programmier-Arbeit zu tun, aber zumindest scheint die Hardware Schaltung soweit schonmal zu funktionieren.

Credits: Einige Anregungen bezügl. der Schaltung habe ich dem Projekt “Solar powered Wifi Weatherstation” von Deba168 auf Instructables entnommen.

case