Dazu finde ich wenig hilfreiches im Netz, aber vielleicht hat damit
schon jemand Erfahrungen gesammelt.
Ich nutze die NodeMCU-Firmware auf einem ESP-12E und habe dadran einen
Si7021, als mobilen Sensor mit einer LiIon-Zelle. Das Ganze funktioniert
soweit auch hervorragend, auch schon mit DHT22 - der ist nur zu ungenau
und hat einen vergleichsweise hohen Ruhestrom.
Softwareseitig habe ich inzwischen alles auf Geschwindigkeit optimiert:
In LUA Strings zusammenbauen über einen table und table.concat;
Si7021-Modul compiliert, Hauptprogramm compiliert und als init.lua
abgespeichert.
Das Programm misst die Zeit vom Start bis zum Datenversand. Beim ersten
Start kommen da laut Programm 2,4-2,5s zusammen, nach DeepSleep immer
3,05-3,1s. Das war die erste Merkwürdigkeit, die sich nicht abstellen
ließ. Auch, wenn ich das Wifi-Setup nur einmal mache und mich auf
Auto-Reconnect verlasse, bleibt es bei der Geschwindigkeit.
Gucke ich nun mit 1Ohm und Scope drauf, wird das noch merkwürdiger. Der
ESP ist beim StartUp 9,6s wach, nach DeepSleep nur noch 9,2s. Was aber
beides deutlich von den vom Programm selbst gemessenen Werten abweicht.
Kennt ihr Möglichkeiten, die Wachzeit zu drücken? So komme ich auf einen
Durchschnittsverbrauch von 2,2mA, was mit der LiIon-Zelle theoretisch
für 17 Tage reicht. Aber das sollte doch besser gehen ...
Proogramm:
Ich antworte mir mal selber, dürfte auch für andere nützlich sein.
Der DeepSleep-Aufruf beim Disconnect ist schuld. In den
on:Receive-Handler gesetzt, geht der ESP nach 4s schlafen beim StartUp,
ebenso beim Aufwachen nach DeepSleep.
Ein bisschen optimieren wäre sicher schön, aber so bin ich schon mal
deutlich zufriedener.
Hallo,
meine Erfahrung: der ESP braucht ca. 300-500ms um aufzuwachen, zum AP zu
connecten, zum MQTT-Broker zu connecten, eine MQTT-Message mit den
Sensorwerten loszuwerden und wieder schlafen zu gehen.
Bedingung ist dabei auch eine feste IP um die DHCP-Abfrage zu sparen.
Meßzeiten der Sensoren kommen natürlich noch dazu, wenn es Sachen sind,
die etwas Zeit erfordern (mehrere Messungen für Mittelwert o.ä.) macht
es Sinn, den ESP aus dem Sleep erst ohne WLAN aufwachen zu lassen,
ESP.deepSleep(WAIT, RF_DISABLED);.
Das sind dann nur ca. 15mA Stromaufnahme des ESP. Die Messergebnisse im
EEPORM speichern, Sleep mit 1µs auslösen mit ESP.deepSleep(1,
RF_CAL);und da dann die Werte senden.
Reduziert je nach Sensoren und Messabstand die durchschnittliche
Stromaufnahme auf 1/3.
NodeLUA benutze ich allerdings nicht, ist eigene Software. Außer
Sensorren, ESP8266 und ein MCP1703 als Spannungsregler gibt es da auch
keine weitere Hardware.
Gruß aus Berlin
Michael
Statische IP habe ich ja vermeintlich vergeben. Habe aber durch den
Hinweis mal mit dem Holzhammer draufgehauen und nach meinem
"Einmal-Setup" des WLAN die Static IP-Zeile wiederholt. StartUp bleibt
bei 4s (naja, 3,6s, etwas besser), aber dann beim WakeUp nach DeepSleep
...
Der ESP selber misst jetzt 300-400ms, bis er vom Start an alle Werte
ausgelesen und übermittelt hat. Das Scope verrät hier mehr, es sind doch
1,2s. Kannst du bei dir ja auch mal gegenprüfen, ob die Zeiten bei dir
ähnlich länger sind in der Realität.
Danke für die Idee! :)