Tutorial Battery Powered Devices
Battery-powered IOT devices with ESP
Unlike BLE, WiFi is not designed for battery powered devices. Nevertheless, with a few tricks it is possible to operate a measuring device (for example a weather station) with a battery pack for more than one year. This is, however, only possible if the ESP is sent to sleep most of the time (deep sleep mode).
The lifetime of the battery depends essentially on three factors: the switch-on time, the switch-on frequency and the quiescent current.
When the WiFi is switched on, the ESP requires approx. 80mA. This consumption can not be changed, but the on-time (before the ESO is going into the deep sleep mode (with 0.01mA)) can. Therefore, it is important to read the sensors as quickly as possible and to transmit the data to the server without delay. Expanding the transmission time of 1 second will result in a 10% reduction in the lifetime of the battery. Also, the choice of another transmission protocol (HTTP, MQTT) can save another second.
Switch on frequency
If the duty cycle can not be reduced, the distance between the measurements and the transmissions can be extended at least. Of course, it would be nice to push every minute new measured values to the server, but with an hourly update, the battery lives more than a factor of 30 longer. For the ESP, the maximum adjustable distance between two wake-ups is 4294 seconds (71 minutes). For larger (or more accurate) time intervals an external RTC is necessary.
The sleep current (deep sleep mode) of the pure ESP is approx. 0.01mA. Thus the self-discharge of the battery would be greater than the sleep current. However, when using a development board, there are the other components that 'eats' the current. Especially the linear voltage regulator from 5 to 3.3 volts is decisive for the lifetime. The controller on the NodeMCU boards has a quiescent current of approx. 2.5mA and that shortened the battery time by a factor of 10. The voltage regulator on the WeMos D1 mini 'consumes' only 0.15mA, which is a time factor of 1.6. Even if you feed the voltage directly at the 3V3-pin, the controllers pull a cross-current. For new developments or upgrades, the MCP1703-3302 is recommended with has a quiescent current of 0.002mA.
For most cases its no use to do anything when there is no wifi connection. Connecting to a controller without wifi connection also takes a long time.
To prevent this use the option 'Sleep on connection failure'. (Use ESPEasy v2.0.0-dev11 or higher)
This way ESPEasy will go back to sleep immediately when it cant connect.
Examples of Battery Life
Minimalist ESP (without voltage regulator) to lithium thionylchloride battery (3.6V 2600mAh); One measurement per hour -> lifetime 1.25 years
WeMos D1 mini to 3x AA battery (2500mAh); One measurement per hour -> lifetime 0.75 years
WeMos D1 mini to 3x AA battery (2500mAh); A measurement every 10 minutes -> lifetime 70 days
NodeMCU to 3x AA battery (2500mAh); One measurement per hour -> lifetime 35 days
Note: All examples with 10 seconds on-time and 80mA current consumption