Forum: Mikrocontroller und Digitale Elektronik ESP2866 im Dauerbetrieb am Akku


von Hugo (Gast)


Lesenswert?

Hey Leute,

ich würde gerne einen ESP2866 an einigen (2 bis max 4) 18650 Akkus im 
Dauerbetrieb betreiben. Der Mikrocontroller soll eigentlich nur eins 
machen:

Wenn ein Kommando kommt, soll ein Relais geschaltet werden, 
wahrscheinlich über einen Treiber. Wahrscheinlich wird die Ansteuerung 
ca. 2-3 Mal die Woche passieren. Der ESP soll aber innerhalb von max. 5 
Sekunden nach dem Absetzen des Befehles schalten. Ich würde zur 
Befehlsgabe gerne mit MQTT arbeiten und nicht selbst etwas schreiben.

Jetzt wäre die Frage an euch, in wie weit man den ESP2866 zum Strom 
sparen bekommt, damit er die ganze Zeit im WLAN hängt und sich nicht am 
Broker ausbucht und zeitig auf Befehle reagiert.

Oder gibt es einen anderen Chip, der da besser geeignet wäre? Ich habe 
irgendwie das Gefühl, dass viele hier Zigbee verwenden. Dann bräuchte 
ich noch eine Zigbee2WiFi Lösung.

von Alex G. (dragongamer)


Lesenswert?

Puh, Wifi und stromsparen ist in der Tat eine Sackgasse wenn auch noch 
Reaktionszeit gefragt ist.
MQTT ist aber an sich perfekt für stromsparende Geräte und wird im 
bereich IoT auch häufiger eingesetzt. Kannst du nicht dein gesammtes 
Funksystem auf was anderes als WiFi umbauen?

EDIT: Alternative Lösung wäre eine Art Wifi 2 low-power-Bluetooth an 
festem Strom.
Eventuell einfacher einzurichten als Zigbee.

: Bearbeitet durch User
von Hugo (Gast)


Lesenswert?

Das Problem ist, dass ich vor Ort keinen festen Stromanschluss habe und 
auch nicht wirklich mit anderen Stromquellen wie Photovoltaik arbeiten 
kann. Ich habe dort allerdings ein Wifi Netz, sonnst wäre meine 
Alternative ein RPi mit LTE-Stick an zig Powerbanks.

Der ESP2866 wäre aber quasi die einfachste Möglichkeit für das Projekt.

von Olaf (Gast)


Lesenswert?

Also ich kenne MQTT nicht und wuerde es auch nicht einsetzen weil es mir 
generell etwas komplex erscheint. Allerdings ist das du willst kein 
grosses Problem. Du sorgst dafuer das dein ESP8266 immer im DeepSleep 
Modus ist und nur alle 5s aufwacht. Dann sendet er eine Nachricht an 
deinen Server und bekommt innerhalb von kurzer Zeit eine Antwort die ihm 
zum handeln veranlasst. Der Server koennte z.B ein immer laufender Raspi 
sein den man ja sowieso immer irgendwo im Netz hat.

Wichtig ist nur das dein ESP8266 nicht immer bereits sein muss um auf 
einen Befehl zu warten!

Olaf

von temp (Gast)


Lesenswert?

Olaf schrieb:
> Du sorgst dafuer das dein ESP8266 immer im DeepSleep
> Modus ist und nur alle 5s aufwacht.

5s helfen da nicht viel. Nach dem Aufwachen aus dem Tiefschlaf vergeht 
wenigstens 1s bis der eine Ethernetverbindung über WLAN aufgebaut und 
Daten ausgetauscht hat. Um wirklich lange Betriebszeiten am Akku zu 
kriegen wirst du wohl in den Minutenbereich müssen.

von 8051er (Gast)


Lesenswert?

Hugo schrieb:
> Das Problem ist, dass ich vor Ort keinen festen Stromanschluss habe und
> auch nicht wirklich mit anderen Stromquellen wie Photovoltaik arbeiten
> kann. Ich habe dort allerdings ein Wifi Netz, sonnst wäre meine
> Alternative ein RPi mit LTE-Stick an zig Powerbanks.
>
> Der ESP2866 wäre aber quasi die einfachste Möglichkeit für das Projekt.


Nimm einfach einen kleinen Atmega mit einem SIM7020E oder BC95-B20 LTE 
Modul. Der ESP8266 ist Unsinn, der RasPi mit Stick ebenfalls.
Alternative wären noch BLE und ZigBee, falls Du die Möglichkeit hast, 
die Gegenseite aufzubauen.

von Michael U. (amiga)


Lesenswert?

Hallo,

abgesehen von den Hinweisen zu Stromverbruach und WLAN:
Der ESP8266 braucht ca. 400ms bis er sich mit WLAN und MQTT-Broker 
verbunden hat, die Message geholt und bearbeitet hat.

MQTT-Message muß als Retained Messages geschickt werden damit der Client 
diese beim verbinden sofort vom Broker bekommt.
ESP8266 muß eine feste IP haben, kein DHCP.
Das Relais soll nur kurz anziehen oder ein- und irgendwann wieder 
ausgeschaltet werden?
Wenn es an bleiben soll also ein bi-stabiles Relais nehmen, damit es da 
keinen Dauerstromverbrauch gibt. Normalerweise ist es denen egal, wie 
oft sie auf Ein (oder Aus) gesetzt werden, wenn sie schon Ein (oder Aus) 
sind, der ESP bekommt die Retained Messages jedesmal beim Anmelden am 
Broker bis der eine andere bekommen hat.
Stromverbrauch: der ESP will beim verbinden usw. irgendwas zwischen 100 
und 150mA im Durchschnitt (mit Spitzen bis 350mA).
Der Sleeptimer ist relativ ungenau, bei z.B. alle 4s wecken könntest Du 
also als kompletten Durchschnitt mit ca. 120/4 30mAs rechnen, also rund 
120mAh/h Akkukapazität.
Ein 3000mAh Akku könnte also einen Tag überstehen wenn ich mich hier 
jetzt nicht irgendwo völlig verrechnet habe...

Erster Ansatz wäre also die Frage, ob man die zulässige Reaktionszeit 
verlängern könnte und ob Deine Photovoltaik es schafft, den Akku voll zu 
halten.
Als Akku würde ich ohnehin LiFePO4 nehmen, erspart den Spannungsregler 
für den ESP.
Relais hängt natürlich davon ab, welches Relais (Schaltleistung) da 
überhaupt in Frage kommt.

Gruß aus Berlin
Michael

von 8051er (Gast)


Lesenswert?

Michael U. schrieb:
> Erster Ansatz wäre also die Frage, ob man die zulässige Reaktionszeit
> verlängern könnte und ob Deine Photovoltaik es schafft, den Akku voll zu
> halten.


Was an "und auch nicht wirklich mit anderen Stromquellen wie 
Photovoltaik" ist Dir unklar?

von Niine (Gast)


Lesenswert?

Michael U. schrieb:
> Stromverbrauch: der ESP will beim verbinden usw. irgendwas zwischen 100
> und 150mA im Durchschnitt (mit Spitzen bis 350mA).

Das ist das Problem: 4sek Intervall.
Da fährst du besser ihn dauerhaft laufen zu lassen, weil er im Idle 
diesen hohen Einschalt/Verbindungsstrom nicht hat.

von Stefan F. (Gast)


Lesenswert?

Ich denke auch, dass du den ESP ständig durch laufen lassen solltest. 
Deep Sleep lohnt sich hier nicht und die anderen Sleep Modi sind 
problematisch.

Bei mir zuhause braucht der ESP8266 meistens 3 Sekunden, bis er im WLAN 
eingebucht ist. Sicher kann man das durch Vergabe statischer IP Adressen 
verkürzen und es hängt auch sehr stark von der Umgebung (AP und andere 
störende Funknetze) ab.

Für deinen Anwendungsfall ist WLAN die falsche Technologie.

von Stefan F. (Gast)


Lesenswert?

Michael U. schrieb:
> Der Sleeptimer ist relativ ungenau

Hallo Michael,
sicher weißt du, dass ich Informationen zum ESP8266 sammle. Mit dem 
Sleeptimer habe ich nur wenig gearbeitet. Ich würde aber trotzdem gerne 
auf meiner Homepage auf diese Ungenauigkeit hinweisen. Kannst du das ein 
bisschen mehr konkretisieren?
Danke

von Michael U. (amiga)


Lesenswert?

Hallo,

im Datenblatt habe ich nur einen Satz gefunden:
When in sleep mode, only the calibrated real-time clock and watchdog 
remains active. The realtime clock can be programmed to wake up the 
ESP8266 at any required interval.

Kein Hinweis, was "calibrated real-time clock" ist usw.
Da laut Datenbaltt im Seep Sleep das Clocksystem abgeschaltet wird, 
dürfte es also ein interner RC-Oszillator sein, der mit der 
Quarzfrequenz korrigiert wird. Das passiert also bei mir wohl dann nur 
alle 5 Minuten wenn der ESP aktiv ist. Für meinen Einsatz hier (Sensor 
auf dem Balkon) ist das uninteressant, ich habe es auch nicht direkt 
geloggt...

Er kann ja ohne äußere Syncronisation nur eine momentane 
Frequenzabweichung erkennen und den RC-Oszillator korrigieren, einen 
bestehenden Fehler zur Realzeit kann er ja nicht erkennen. Zur 
Kurzzeitstabilität und Abweichung schweigt sich ja das Datenblatt aus. 
Ich habe gerade mal den mQTT.fx angeworfen und werden mal schauen, wie 
es sich über ein paar Stunden bemerkbar macht. Ist nur eine Tendenz weil 
ja connect-Zeiten usw. da reinspielen.
11:51:07
11:55:59
12:00:50
12:05:38
12:10:28
12:15:17
12:20:10
12:25:00
12:29:51
12:34:41
12:39:31
deutet zumindest darauf hin, das er hier vorgeht.

Nachtrag: gerade nochmal raufgeschaut:
13:28:54
geht also vor.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Sascha W. (sascha-w)


Lesenswert?

Stefanus F. schrieb:
> Ich denke auch, dass du den ESP ständig durch laufen lassen solltest.
> Deep Sleep lohnt sich hier nicht und die anderen Sleep Modi sind
> problematisch.
Also ich arbeite eigentlich immer mit Modem Sleep ohne Probleme und das 
spart schon allerhand. Hab ein  Modul mit Spannungsregler und kleinem 
OLED das läuft an einer 18650 ca. 2.5 Tage. Wenn 1x laden pro Woche kein 
Problem ist dann geht das mit 3 Zellen noch.
Aber für'n Dauerbetrieb wär mir das auch nichts.

Sascha

von Chr. M. (snowfly)


Lesenswert?

Wie und wie oft soll eigentlich der Akku geladen werden?

Eine Autobatterie oder ein grosser Modellbauakku hat schon einiges an 
Kapazität, vielleicht kommst du so auf einen Monat.

von Stromverstärker (Gast)


Lesenswert?

Wenn der esp nur auf Daten vom AP warte verbraucht er:
1
Power save mode DTIM 1       1.2        mA
2
Power save mode DTIM 3       0.86       mA

Oder hab ich da was falsch verstanden?

von Stefan F. (Gast)


Lesenswert?


von Stromverstärker (Gast)


Lesenswert?

Stefanus F. schrieb:
> Doku dazu:
> 
https://www.espressif.com/sites/default/files/9b-esp8266-low_power_solutions_en_0.pdf

Ah, Danke!

Bleib die Frage warum das Teil nicht für kurze Intervalle (10ms) tief 
schlafen kann..

von Master Of Security (Gast)


Lesenswert?

Bei einem ordentlichen WLAN-Router kann man das Beacon-Intervall und die 
DTIM-Periode konfigurieren.
Mit beiden bestimmt der ESP8266 die Sleep-Zeit, dadurch läßt sich also 
auch der Stromverbrauch mit steuern, indem man die Werte erhöht.

von Michael U. (amiga)


Lesenswert?

Hallo,

irgendwo am Anfang war eine Diskussion im Espressif-Forum über Deep 
Sleep, finde ich aber nicht mehr. Es ging ltztlich dahin, daß das 
verhalten im Deep Sleep eine Art Notlösung ist, weil durch einen 
Designfehler ein internes Wecken vom RTC nicht funktionierte und die 
GPIO16-Resetlösung dann übrigblieb.
Kurze Zeiten im Deep Sleep sind dann aber ohnehin sinnlos, weil er die 
schon zum Starten braucht und die Anwendung sowieso alles wieder 
initialisieren muß und sich auch darum kümmern muß, wie sie z.B. 
Variablenwerte über den Reset rettet.

Ich habe hier außer dem einen Sensor im Deep Sleep keine Anwendung z.b. 
für Modem Sleep usw. Bei netzbetriebenen ESPs würde ich dann wohl 1€ pro 
Jahr Energiekosten pro Stück sparen. Allerdings müßte ich dann den 
Netzteilwirkungsgrad noch einkalkulieren, der ist oft geringer bei 
kleinerer Ausgangslast, kann die Einsparung also durchaus wieder 
auffressen..

Ich habe nochmal nach meinen Sensorzeiten geschaut: der ist seit gestern 
Mittag von rund 00:05:00/00:10:00 auf rund 00:08:00/00:13:00 gewandert, 
ich müßte mal komplett loggen, so weiß ich nicht, ob es  +3 oder -2 
Minuten sind...
Ca. 2 Minuten / Tag passt aber zu dem, was in Foren mal so erwähnt 
wurde.
Stört hier in der konkreten Anwendung sowieso nicht, werde ich also kaum 
weiter verfolgen.

Ich habe gerade nochmal über das Diagramm geschaut: Der Sensor meldet 
alle 5 Minuten. Ist ESP8266-12, BME280 und BH1750 verbaut. Versorgung 
ist eine China-LiFePO4 mit (angeblich?) 600mAh. Laufzeit ist rund 3 
Wochen zwischen den Akkuwechseln. LiFePO4 als 18650 mit 1500mAh liegen 
hier rum, da passt aber kein Battriehalter in das Sensor-Gehäuse, muß 
ich erst Kontaktflächen reinbasteln...

Gruß aus Berlin
Michael

von Stefan F. (Gast)


Lesenswert?

Stromverstärker schrieb:
> Bleib die Frage warum das Teil nicht für kurze Intervalle (10ms) tief
> schlafen kann..

Es wird empfohlen, direkt nach dem Aufruf von ESP.deepSleep(µs) direkt 
einen delay(100) einzufügen, damit er zuverlässig einschläft.

Ich vermute da einen Zusammenhang. Vielleicht kann der Chip nicht so 
schnell in den Sleep Modus wechseln.

von Stefan F. (Gast)


Lesenswert?

Michael U. schrieb:
> Ich habe nochmal nach meinen Sensorzeiten geschaut

Dankeschön

von Michael U. (amiga)


Lesenswert?

Hallo,

Stefanus F. schrieb:
> Es wird empfohlen, direkt nach dem Aufruf von ESP.deepSleep(µs) direkt
> einen delay(100) einzufügen, damit er zuverlässig einschläft.
>
> Ich vermute da einen Zusammenhang. Vielleicht kann der Chip nicht so
> schnell in den Sleep Modus wechseln.

Irgendwas macht der ESP noch bis er schlafen geht. Das das auch 
Interruptgesteuerte Sachen sein können, soll so wohl nur verhindert 
werden, daß er nach ESP.deepSleep(µs) im eigenen Programm noch etwas 
weiterläuft und ungewolltes Chaos anrichtet. Man würde ja vermuten, daß 
er nach dem Ausführen von ESP.deepSleep(µs) eben sofort mit der 
Progarmmabarbeitung aufhört, ist aber wohl nicht unbedingt so.

Gruß aus Berlin
Michael

von G. H. (schufti)


Lesenswert?

mit normalem "deepsleep" fährt erden ip-stack noch korrekt herunter, mit 
"deepsleep force" macht er gleich dicht. Ein kurzes delay danach ist 
aber irgendwie immer notwendig, da die cpu im "leerlauf" sein muss um in 
deepsleep zu wechseln

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.