Muchos proyectos con ESP32 mueren no por el código, sino por la batería: una placa que consume 50 mA sin hacer nada vacía una pila en pocos días. Si quieres construir una estación meteorológica que viva meses con una sola carga, el secreto no es un panel solar gigante, sino bajar el consumo del ESP32 casi a cero cuando no está midiendo. En esta guía vas a aprender tres palancas concretas para reducir el consumo de un ESP32 hasta en un 99,98 %: elegir bien la placa, usar los modos de bajo consumo del chip y espaciar las mediciones. Lo aplicaremos al caso real de una estación de temperatura y humedad con DHT22 alimentada por batería.
El problema: medir el consumo antes de optimizar
No se puede optimizar lo que no se mide. El montaje de referencia alimenta la placa con 5 V y mide la corriente que circula por el pin GND con un multímetro en serie. Con un script vacío y con el ejemplo de WiFi scanner se obtiene el consumo base de cada placa.

Con el script vacío, las placas ESP32 comunes consumen entre 39 mA y 55 mA. La FireBeetle ESP32 marca el mínimo con 39 mA. Cuando además encienden el WiFi para escanear redes, el consumo salta a la zona de 114 a 129 mA. Ese salto es la clave de todo: el WiFi es el gran devorador de energía.


Palanca 1: elegir una placa optimizada
Todas estas placas usan el mismo chip ESP32, pero consumen distinto. La diferencia está en dos componentes:
- El regulador de voltaje: convierte el voltaje de entrada a los 3,3 V que necesita el chip. Su corriente de reposo (quiescent current) es lo que gasta aunque no haga nada. La AMS1117 (en la DevKitC y la NodeMCU-32S) tiene una corriente de reposo altísima de 5 mA; la AP2112 de la HUZZAH32 baja a 80 µA; y la RT9080 de la FireBeetle llega a un ultra bajo 4 µA. Esa diferencia se paga sola en la duración de la batería.
- La generación del chip: el ESP32-S2 (segunda generación) trae un coprocesador basado en RISC-V mucho más eficiente que el CPU principal, y puede apagar el transceptor WiFi cuando no lo usa manteniendo la conexión. Para bajo consumo, es una ventaja real frente al ESP32 de primera generación.
La conclusión práctica: si tu proyecto va a batería, parte por una placa pensada para bajo consumo. Con el regulador correcto ahorras energía antes de escribir una sola línea de código.
Palanca 2: usar los modos de sueño del ESP32
El ESP32 tiene varios modos de energía. De menos a más ahorro:
- Modem Sleep: apaga el WiFi automáticamente entre transmisiones; el CPU sigue activo. Es automático, no hay función para forzarlo.
- Light Sleep: pausa el CPU y la RAM siguiendo un patrón de sueño; la conexión WiFi se mantiene. Se entra con
esp_light_sleep_start(). En este modo la FireBeetle baja a 1,94 mA (una reducción del 95 % frente a la referencia). - Deep Sleep: apaga por completo el núcleo del ESP32; solo quedan vivos el coprocesador ULP y el RTC. La configuración WiFi se guarda en la memoria del reloj de tiempo real, así que reconectar tras despertar es rapidísimo. Aquí la FireBeetle y la WiPy 3.0 consumen menos de 0,015 mA: más de 400 veces menos que las demás.
- Hibernación: el modo más extremo. Apaga incluso el ULP; un ESP32 en blanco consume apenas 5 µA. Solo un timer del RTC o ciertos GPIO pueden despertarlo.


Para una estación meteorológica, el modo estrella es deep sleep: el ESP32 despierta, mide, envía por WiFi y vuelve a dormir. Un sketch base se ve así (fíjate que todo el trabajo va en setup(), porque al despertar el chip reinicia desde ahí):
#define uS_TO_S_FACTOR 1000000ULL // factor microsegundos -> segundos
#define TIME_TO_SLEEP 600 // dormir 10 minutos entre lecturas
RTC_DATA_ATTR int bootCount = 0;
void setup() {
Serial.begin(115200);
delay(1000);
++bootCount;
Serial.println("Lectura numero " + String(bootCount));
// Aqui lees el DHT22 y envias los datos por WiFi...
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Entrando en deep-sleep");
Serial.flush();
esp_deep_sleep_start();
}
void loop() {
// Nunca se ejecuta: al despertar del deep-sleep el ESP32 reinicia en setup()
}
La función esp_sleep_enable_timer_wakeup() define cuánto duerme, y esp_deep_sleep_start() lo manda a dormir. Para pasar a hibernación, solo agregas antes una línea que desactiva los periféricos del RTC:
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
Palanca 3: espaciar las mediciones (y recordar entre sueños)
De las dos palancas anteriores sacamos una lección: conectarse al WiFi y transmitir es lo más caro. Entonces, la tercera palanca es medir menos seguido. Una estación que transmite temperatura cada 10 segundos gasta energía repitiendo datos casi idénticos; una que transmite cada 10 minutos dura muchísimo más.
Puedes ir un paso más allá: comparar la medición actual con la última enviada y transmitir por WiFi solo si el valor cambió. Para eso necesitas recordar variables entre sueños, y aquí aparece un detalle técnico útil: la memoria normal se borra en cada deep sleep, pero los 8 kB de memoria RTC sobreviven. Basta anteponer RTC_DATA_ATTR a la variable:
RTC_DATA_ATTR int temperature;
RTC_DATA_ATTR int humidity;
Esas variables conservan su valor cada vez que el ESP32 despierta, permitiéndote llevar la cuenta de lecturas o guardar el último dato enviado sin gastar el WiFi de más.
Variantes y mejoras
- Batería LiFePO4 en vez de LiPo: una celda LiFePO4 entrega ~3,2 V, muy cerca de los 3,3 V que necesita el ESP32, lo que reduce las pérdidas del regulador frente a una LiPo de 3,7 V. Además tolera miles de ciclos y temperaturas exteriores, ideal para una estación a la intemperie.
- Despertar por evento, no solo por timer: además del timer, el ESP32 puede despertar por un pin (por ejemplo, un sensor de lluvia o un reed switch) usando las fuentes de wake up del RTC.
- Registro local con microSD: si la estación queda sin cobertura WiFi, guarda las lecturas en una tarjeta microSD por SPI y sincronízalas cuando vuelva la señal.
Personalización para Chile
Para armar esta estación meteorológica de bajo consumo en Chile, en MechatronicStore encuentras:
- Placa FireBeetle ESP32. la recomendada por su regulador de ultra bajo consumo (ideal para batería). Cualquier ESP32 sirve para aprender, pero para batería la FireBeetle marca la diferencia.
- Sensor de temperatura y humedad DHT22. el sensor de la estación.
- Batería LiFePO4 3.2V. alimentación de larga duración a la intemperie.
- Protoboard 830 puntos y Jumpers macho hembra 20cm. para el prototipado.
Si un tutorial en inglés recomienda placas "Adafruit HUZZAH32" o "Sparkfun ESP32 Thing", son válidas, pero la FireBeetle ESP32 disponible localmente es de las más eficientes del mercado para proyectos a batería.
Recursos
- Tutorial original (inglés): Reduce the ESP32 Power Consumption in 3 Simple Steps
- Documentación de sleep modes: Espressif Sleep Modes
Versión chilena con componentes en stock local en MechatronicStore. Contenido inspirado en el tutorial original de DIYI0T y re angulado como estación meteorológica de bajo consumo.




