En el mundo de la tecnología, la eficiencia energética es un aspecto fundamental a tener en cuenta. En el caso de los dispositivos ESP32, conocer los diferentes modos de suspensión y su impacto en el consumo de energía es crucial para optimizar su rendimiento y prolongar la vida útil de la batería. En este artículo, te proporcionaremos información detallada sobre los modos de suspensión del ESP32 y su consumo de energía, para que puedas sacar el máximo provecho de este potente microcontrolador. ¡Sigue leyendo para descubrir más!
El ESP32 es sin duda un digno competidor de muchos SoC WiFi/MCU, superándolos tanto en rendimiento como en precio. Sin embargo, dependiendo del modo en el que se encuentre, el ESP32 puede ser un dispositivo que consume relativamente mucha energía.
Si su proyecto de IoT funciona con un tomacorriente de pared, el consumo de energía no importa mucho. Sin embargo, si planeas alimentar tu proyecto con una batería, cada mA cuenta.
La solución es utilizar uno de los modos de suspensión del ESP32 para reducir el consumo de energía. Esta es una gran estrategia para extender significativamente la duración de la batería de un proyecto que no necesita estar constantemente activo.
¿Qué es exactamente el modo de suspensión ESP32?
El modo de suspensión ESP32 es un modo de ahorro de energía. Cuando no está en uso, el ESP32 puede ingresar a este modo y almacenar todos los datos en la RAM. En este punto, todos los periféricos innecesarios se desactivan mientras la RAM recibe suficiente energía para retener sus datos.
En el chip ESP32
Saber qué hay dentro del chip nos permite comprender mejor cómo el ESP32 gestiona el ahorro de energía. El diagrama de bloques del chip ESP32 se muestra a continuación.
El chip ESP32 contiene un microprocesador de doble núcleo de 32 bits, así como 448 KB de ROM, 520 KB de SRAM y 4 MB de memoria flash.
Además, el chip incluye un módulo WiFi, un módulo Bluetooth, un acelerador criptográfico (un coprocesador diseñado específicamente para realizar operaciones criptográficas), un módulo RTC y varios periféricos.
Modos de rendimiento ESP32
Gracias a la administración de energía avanzada del ESP32, ofrece cinco modos de energía configurables. Dependiendo de los requisitos de energía, el chip puede cambiar entre diferentes modos de rendimiento. Estos modos son:
- Modo activo
- Modo de suspensión del módem
- Modo de sueño ligero
- Modo de sueño profundo
- Estado de hibernación
Cada modo tiene diferentes funciones y funciones de ahorro de energía. Veámoslos uno por uno.
Modo activo ESP32
El modo normal también se llama modo activo. En este modo, todos los periféricos del chip permanecen activos.
Como en este modo todo está siempre activo (especialmente el módulo WLAN, el núcleo del procesador y el módulo Bluetooth), el chip consume alrededor de 240 mA de energía. También se observó que el chip consumía más de 790 mA en ocasiones, especialmente cuando se usaba WiFi y Bluetooth al mismo tiempo.
De acuerdo con la Hoja de datos ESP32El consumo de energía durante el funcionamiento de RF en modo activo es el siguiente:
modo | el consumo de energía |
Paquete de transmisión Wi-Fi 13 dBm ~ 21 dBm | 160~260mA |
Paquete Wi-Fi/BT-Tx 0 dBm | 120mA |
Wi-Fi/BT Rx y escucha | 80~90mA |
Este modo, sin duda, utiliza la mayor cantidad de energía y es el menos eficiente. Para ahorrar energía, debe desactivar las funciones no utilizadas cambiando a un modo de energía diferente.
Hibernación del módem ESP32
En el modo de suspensión del módem, todo está activo excepto WiFi, Bluetooth y radio. La CPU permanece activa y el reloj es configurable.
En este modo, el chip consume unos 3 mA a baja velocidad y unos 20 mA a alta velocidad.
Para mantener la conexión, el WiFi, el Bluetooth y la radio se activan a intervalos predefinidos. Esto se conoce como Patrones de sueño de asociación..
Durante este patrón de suspensión, ESP32 cambia entre el modo activo y el modo de suspensión del módem.
Para lograr esto, el ESP32 se conecta al enrutador en modo estación a través del mecanismo de baliza DTIM. El módulo Wi-Fi se desactiva entre dos intervalos de baliza DTIM y luego se activa automáticamente justo antes de que llegue la siguiente baliza. Esto conduce a un ahorro de energía.
El tiempo de suspensión está determinado por el tiempo de intervalo de la baliza DTIM del enrutador, que normalmente es de 100 ms a 1000 ms.
¿Qué es el mecanismo de baliza DTIM?
DTIM significa Mensaje de indicación de tráfico de entrega.
En este mecanismo, el punto de acceso (AP)/enrutador envía periódicamente tramas de baliza. Cada cuadro contiene información relacionada con la red. Se utiliza para anunciar la presencia de una red inalámbrica y sincronizar a todos los miembros conectados.
ESP32 Sueño ligero
El sueño ligero es similar al sueño moderno en que el chip sigue el patrón de sueño asociado. La única diferencia es que en el modo de suspensión ligera, la CPU, la mayor parte de la RAM y los periféricos digitales están sincronizados.
¿Qué es la activación del reloj?
La activación del reloj es una técnica popular de administración de energía para reducir la disipación dinámica de energía eliminando o ignorando la señal del reloj cuando el circuito no está en uso.
La activación del reloj reduce el consumo de energía al podar el árbol del reloj. Recortar el reloj desactiva partes del circuito, evitando que los flip-flops que contiene cambien de estado. Dado que los estados de conmutación consumen energía, el consumo de energía cae a cero en el estado no conmutado.
El modo de suspensión ligera detiene la CPU al desactivar su pulso de reloj. Sin embargo, el coprocesador RTC y ULP permanecen activos. Esto da como resultado un menor consumo de energía que el modo de suspensión del módem, que es de alrededor de 0,8 mA.
Antes de entrar en el modo de suspensión ligera, el ESP32 guarda su estado interno en la RAM y reanuda el funcionamiento tan pronto como se despierta del modo de suspensión. Esto se conoce como Conservación total de RAM.
ESP32 sueño profundo
En el modo de suspensión profunda, las CPU, la mayor parte de la RAM y todos los periféricos digitales están desactivados. Sólo las siguientes partes del chip siguen siendo funcionales:
- coprocesador ULP
- controlador RTC
- Periféricos RTC
- Memoria RTC rápida y lenta
En modo de suspensión profunda, el chip consume entre 0,15 mA (con el coprocesador ULP encendido) y 10 µA.
En el modo de suspensión profunda, la CPU principal se apaga mientras el coprocesador de energía ultrabaja (ULP) puede recopilar lecturas del sensor y reactivar la CPU cuando sea necesario. Este patrón de sueño se llama Patrón monitoreado por sensor ULP. Esto es útil para desarrollar aplicaciones que requieren que la CPU se active mediante un evento externo, un temporizador o una combinación de estos eventos mientras se mantiene el consumo de energía al mínimo.
Además de la CPU, también se desactiva la memoria principal del chip. Esto eliminará todo lo almacenado en ese almacenamiento y lo hará inaccesible.
Debido a que la memoria RTC permanece activa, su contenido se retiene incluso en estado de sueño profundo y se puede recuperar tan pronto como se despierta el chip. Por este motivo, el chip almacena los datos de conexión WiFi y Bluetooth en la memoria RTC antes de entrar en modo de sueño profundo.
Si desea utilizar los datos después de un reinicio, guárdelos en la memoria RTC definiendo una variable global con RTC_DATA_ATTR
Atributo. Por ejemplo, RTC_DATA_ATTR int myVar = 0;
Cuando el chip se despierta del sueño profundo, realiza un reinicio y comienza a ejecutar el programa desde el principio.
Al despertar del sueño profundo, el ESP32 puede Trozo de sueño-vigilia profundo. Esta es una sección de código que se ejecuta tan pronto como el chip se activa, antes de que se ejecute cualquier inicialización normal, cargador de arranque o código ESP-IDF. Después de ejecutar el resguardo, el chip puede volver a dormir o continuar arrancando ESP-IDF normalmente.
Si desea obtener más información sobre ESP32 Deep Sleep y sus fuentes de activación, visite nuestro tutorial detallado a continuación.
hibernación ESP32
La hibernación es muy similar al sueño profundo. La única diferencia es que cuando el chip está en modo de suspensión, desactiva el oscilador interno de 8MHz así como el coprocesador ULP, dejando solo un temporizador RTC (a velocidad lenta) y algunos GPIO RTC para reactivar el chip.
Dado que el almacenamiento de recuperación RTC también está desactivado, no podemos guardar datos en hibernación.
Esto reduce aún más el consumo de energía del chip; Cuando está inactivo, sólo consume alrededor de 2,5 μA.
Este modo es particularmente útil si estás trabajando en un proyecto que no necesita estar activo todo el tiempo.
Información sobre los modos de suspensión ESP32 y su consumo de energía
El ESP32 es sin duda un competidor digno para muchos SoCs de WiFi/MCU, superándolos tanto en rendimiento como en precio. Sin embargo, dependiendo del modo en el que se encuentre, el ESP32 puede ser un dispositivo relativamente ávido de energía.
Cuando tu proyecto de IoT está alimentado por un enchufe eléctrico, el consumo de energía es de poca preocupación; sin embargo, si planeas alimentar tu proyecto con una batería, cada mA cuenta.
La solución aquí es aprovechar uno de los modos de suspensión del ESP32 para reducir el consumo de energía. Esta es una excelente estrategia para aumentar significativamente la vida útil de la batería de un proyecto que no necesita estar activo todo el tiempo.
¿Qué es exactamente el Modo de Suspensión del ESP32?
El modo de suspensión del ESP32 es un modo de ahorro de energía. Cuando no está en uso, el ESP32 puede entrar en este modo, almacenando todos los datos en la RAM. En este punto, se desactivan todos los periféricos innecesarios mientras que la RAM recibe suficiente energía para retener sus datos.
Bloques dentro del chip ESP32
Conocer lo que hay dentro del chip nos ayudará a comprender mejor cómo el ESP32 gestiona el ahorro de energía. El diagrama de bloques del chip ESP32 se muestra a continuación:
- CPU de 32 bits de doble núcleo
- 448 KB de ROM
- 520 KB de SRAM
- 4 MB de memoria flash
Además, el chip contiene un módulo WiFi, un módulo Bluetooth, un acelerador criptográfico, un módulo RTC y una serie de periféricos.
Modos de Consumo de Energía del ESP32
Gracias a la gestión avanzada de energía del ESP32, ofrece cinco modos de energía configurables. Según el requerimiento de energía, el chip puede cambiar entre diferentes modos de energía. Estos modos son:
- Modo Activo
- Modo de Suspensión del Módem
- Modo de Suspensión Ligera
- Modo de Suspensión Profunda
- Modo de Hibernación
Modo Activo del ESP32
El modo normal también se denomina Modo Activo. En este modo, todos los periféricos del chip permanecen activos. Dado que todo está siempre activo en este modo (especialmente el módulo WiFi, el núcleo de procesamiento y el módulo Bluetooth), el chip consume aproximadamente 240 mA de energía.
Para ahorrar energía, debes desactivar las funciones que no estás utilizando cambiando a otro modo de energía.
¡Buenísima información! Siempre es útil entender cómo manejar el consumo de energía en nuestros dispositivos ESP32. ¡Gracias por compartir! ¡Muy educativo!
Interesante artículo, me encanta aprender más sobre cómo maximizar la eficiencia energética con ESP32. ¡Gracias por la útil información! 🚀
Pasando por aquí para aprender más sobre cómo optimizar el consumo de energía en mis proyectos con ESP32. ¡Gracias por compartir la información! ¡Excelente artículo!
¡Muy interesante! Siempre es bueno conocer cómo podemos ahorrar energía en nuestros proyectos con ESP32. ¡Gracias por la Info!