How to Reduce WiFi Power Consumption for IoT Devices
To reduce WiFi power consumption for IoT devices, use
deep sleep modes to turn off WiFi when idle, optimize transmission intervals to send data less frequently, and configure WiFi power-saving features like 802.11 power save mode. These steps help extend battery life by minimizing active WiFi usage.Syntax
Here is the basic syntax to enable deep sleep and configure WiFi power saving on an ESP32 IoT device:
wifi_set_ps(WIFI_PS_MIN_MODEM);- Enables modem sleep to reduce power.esp_deep_sleep_start();- Puts the device into deep sleep mode.delay(ms);- Controls how often the device wakes to send data.
Each part controls power use by managing WiFi activity and device wake cycles.
c
wifi_set_ps(WIFI_PS_MIN_MODEM); delay(60000); // wait 60 seconds between transmissions esp_deep_sleep_start();
Example
This example shows an ESP32 device that wakes every 60 seconds, connects to WiFi, sends data, then goes back to deep sleep to save power.
cpp
#include <WiFi.h> #include <esp_wifi.h> #include <esp_sleep.h> const char* ssid = "yourSSID"; const char* password = "yourPassword"; void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Connected"); // Send data here (simulate) Serial.println("Sending data..."); // Enable WiFi power save mode wifi_set_ps(WIFI_PS_MIN_MODEM); // Go to deep sleep for 60 seconds esp_deep_sleep(60000000); } void loop() { // Not used because device sleeps }
Output
...
Connected
Sending data...
Common Pitfalls
Common mistakes include:
- Not using deep sleep, causing WiFi to stay active and drain battery.
- Waking too often, which wastes power on frequent connections.
- Ignoring WiFi power save modes, missing easy power savings.
- Forgetting to disconnect WiFi before sleep, which can keep the radio on.
Always disconnect WiFi and enable power save before sleeping.
cpp
/* Wrong way: No deep sleep, WiFi always on */ WiFi.begin(ssid, password); // Device stays awake and drains battery /* Right way: Disconnect and sleep */ WiFi.disconnect(true); wifi_set_ps(WIFI_PS_MIN_MODEM); esp_deep_sleep_start();
Quick Reference
| Technique | Description | Benefit |
|---|---|---|
| Deep Sleep | Puts device into low power mode turning off WiFi | Greatly reduces power use when idle |
| WiFi Power Save Mode | Enables modem sleep during idle WiFi | Lowers WiFi radio power consumption |
| Optimize Transmission Interval | Send data less often | Reduces active WiFi time |
| Disconnect WiFi Before Sleep | Turns off WiFi radio cleanly | Prevents unnecessary power drain |
Key Takeaways
Use deep sleep modes to turn off WiFi when the device is idle.
Enable WiFi power save modes like modem sleep to reduce radio power.
Send data less frequently to minimize WiFi active time.
Always disconnect WiFi before entering sleep to save power.
Balancing wake intervals and data needs is key to efficient power use.