Arrow Electronic Components Online

El consumo de energía del ESP32 se puede reducir con modos de suspensión.

Conectividad14 jun 2022
Se muestra una placa de desarrollo TTGO LORA32 en primer plano, destacando sus componentes electrónicos y conectores.
Ver todos los artículos

El ESP32 es un dispositivo increíble: es capaz de procesar información a cientos de megahercios, comunicarse vía WiFi y Bluetooth y realizar una amplia variedad de tareas utilizando sus pines GPIO. Sin embargo, se podría decir que con gran poder viene un gran… consumo de energía.

Para ser justos, el consumo de energía del ESP32 es bastante bajo en comparación con dispositivos similares de hace una década. Sin embargo, para aplicaciones IoT modernas, especialmente donde está involucrada una batería, puede ser un consumidor relativamente alto de energía, consumiendo cientos de miliamperios de corriente cuando está totalmente alimentado.
 
La buena noticia es que el ESP32 también cuenta con un sistema de modos de sueño e hibernación. Cuando se utilizan cuidadosamente, estos modos permiten que el apetito de energía del ESP se modere, o al menos se limite a ráfagas cortas de actividad.

Modos de suspensión

Los modos de suspensión profunda y otros modos de energía del ESP32 se describen en el cuadro a continuación, tomado de su hoja de datos:

Modo de energíaDescripciónConsumo de energía
Modem-sleepLa CPU está encendida.240 MHz (chip(s) de doble núcleo)30 mA ~ 68 mA
240 MHz (chip(s) de un solo núcleo)N/A
160 MHz (chip(s) de doble núcleo)27 mA ~ 44 mA
160 MHz (chip(s) de un solo núcleo)27 mA ~ 34 mA
Velocidad normal: 80 MHz (chip(s) de doble núcleo)20 mA ~ 31 mA
Velocidad normal: 80 MHz (chip(s) de un solo núcleo)20 mA ~ 25 mA
Light-sleep-0.8 mA
Deep-sleepEl coprocesador ULP está encendido.150 µA
Patrón monitoreado por sensor ULP100 µA @1% duty
Temporizador RTC + memoria RTC10 µA
HibernaciónSolo temporizador RTC5 µA
ApagadoCHIP_PU se establece en nivel bajo, el chip está apagado.1 µA

Captura de pantalla del datasheet

El ESP32 tiene cinco modos de bajo consumo: ESP32 modem-sleep, light-sleep, deep-sleep, hibernación y apagado. Modem-sleep y deep-sleep tienen varios submodos, con diferentes tasas de consumo de energía basadas en las capacidades de procesamiento activas. La hibernación detiene casi toda la funcionalidad del chip, excepto un RTC para despertarlo después de un tiempo establecido. El modo de apagado se activa en respuesta a que el pin CHIP_PU se establece en bajo y requiere interacción externa para comenzar a procesar nuevamente.
 
La conclusión de todo esto es que los modos de bajo consumo del ESP32 pueden consumir entre 68mA y 5µA, o .068A y .000005A respectivamente, sin contar el apagado. La desventaja es que cada modo limita la utilidad del ESP32, como se detalla a continuación:

  • Modem-sleep: Se corta la comunicación inalámbrica.
  • Light-sleep: Pausa la CPU pero conserva los estados de memoria.
  • Deep-sleep: Apaga la memoria principal del ESP32. Se retiene una cantidad limitada de memoria RTC (reloj en tiempo real) y puede usarse al despertar. El procesador ULP (ultra bajo consumo) está activo en dos de los tres submodos de deep-sleep, permitiendo la ejecución de tareas simples y el monitoreo de entradas.
  • Hibernación: Solo deja activas el RTC y un número limitado de pines GPIO para el despertador. No se retiene memoria.
  • Apagado: Debe encenderse externamente. El consumo de energía de 1µA es insignificante en la mayoría de las situaciones.

Despreciando los efectos de voltaje, una pequeña batería recargable de 3.7V y 850mAh podría alimentar un ESP32 en modem-sleep durante aproximadamente 12.5 horas. Light-sleep podría funcionar por más de 1000 horas. La hibernación en deep sleep de nivel medio proporciona 8500 horas de funcionamiento, aproximadamente un año, mientras que un estado de hibernación podría mantenerse teóricamente durante casi 20 años. Por supuesto, el dispositivo necesitará despertarse intermitentemente para ser útil, pero con planificación cuidadosa, una configuración de ESP32 puede resultar en una vida útil extremadamente larga entre recargas de batería.

Diferencias de la placa de desarrollo ESP32 en modo de suspensión profunda

imagen de robótica para la página de todos los componentes

Captura de pantalla del manual de datos

Cuando se habla de consumo de energía, un chip o módulo ESP32 es solo una parte del panorama electrónico. Para la experimentación, probablemente utilizarás una placa de desarrollo. Para diseños electrónicos más desarrollados, se necesitará una disposición personalizada de partes asociadas para ejecutar un "objeto" IoT. Con una programación cuidadosa, usar un ESP32 puede ser muy eficiente en términos de energía, pero la electrónica circundante necesita una consideración cuidadosa.
 
Para ilustrar este punto, conecté una placa de desarrollo Adafruit HUZZAH32 ESP32 a una fuente de energía y equipo de medición de corriente, junto con una placa DFR0478 ESP32 de DFRobot. Ambas fueron presentadas en este post de reloj de video compuesto ESP32, y funcionaron de manera diferente en lo que podría considerarse un caso de uso bastante especializado. Quizás la eficiencia energética también resultaría ser una característica distintiva entre las dos.
 
Para probar esto, utilicé un ejemplo modificado de ESP32 Arduino "TimerWakeUp" que entra en modo de sueño profundo, se despierta, enciende la luz LED a bordo, y luego inicia el ciclo nuevamente al volver a dormir. Se suministraron 5.3V a cada placa para ser convertidos al nivel de voltaje de ~3.3 necesario para el ESP32. Los resultados del consumo fueron los siguientes:

HUZZAH32:      sueño = 6.6mA             despierto = 43.2mA despierto + LED = 44.6mA
DFR0478:          sueño = .02mA              despierto = 39.7mA despierto + LED = 40.0mA

Para ser justos, una mejor simulación del uso real de IoT podría haber sido medir la corriente a través del puerto de la batería. No obstante, parece que en este escenario, la placa DFR0478 FireBeetle es mucho más eficiente en modo de suspensión que su contraparte.
 
El HUZZAH32 consume 7000µA (7mA) durante el sueño profundo desde la alimentación de la batería, aproximadamente lo que medí en mi experimento. Un análisis de Andreas Spiess encontró que el DFR0478 consume un reporte de 53µA (.053mA) de corriente de la batería cuando está en sueño profundo. Esto es significativamente más de lo que medí en el DFR0478, sin embargo, su informe utiliza una entrada de energía diferente y una versión anterior de la placa (2.0 vs 4.0 que probé). Esta medición también está empujando los límites inferiores de lo que mi multímetro puede reportar, lo cual podría ser un factor en su precisión. Como advertencia final, el FireBeetle probado utiliza un módulo WROOM-32D ESP32, mientras que el HUZZAH32 utiliza un WROOM-32E.
 
Dicho todo esto, hay órdenes de magnitud de diferencia entre las dos placas probadas, lo cual es una buena ilustración de que el circuito que soporta un ESP32 puede tener un efecto dramático en el consumo de energía.

Consumo de energía del ESP32 controlado por modos de suspensión

El ESP32 es un dispositivo increíblemente potente que puede requerir una cantidad relativamente grande de energía para funcionar. Sin embargo, con una programación cuidadosa, es posible que uno de estos dispositivos funcione con batería durante semanas, meses o incluso más. La clave está en comprender los compromisos involucrados en el diseño de bajo consumo y qué se puede omitir mientras se sigue logrando un rendimiento aceptable.

Boletín informativo

¿Estás en la lista?

Regístrate para recibir ofertas exclusivas, anuncios de productos y las últimas noticias de la industria.

Etiquetas de artículo

Global
Potencia
Artículo
Internet de las cosas (IoT)

Contenido relacionado