0
0
Drone-programmingHow-ToBeginner · 4 min read

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

TechniqueDescriptionBenefit
Deep SleepPuts device into low power mode turning off WiFiGreatly reduces power use when idle
WiFi Power Save ModeEnables modem sleep during idle WiFiLowers WiFi radio power consumption
Optimize Transmission IntervalSend data less oftenReduces active WiFi time
Disconnect WiFi Before SleepTurns off WiFi radio cleanlyPrevents 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.