Material requerido
Un módulo ESP32 |
Introducción al modo Deep Sleep o Sueño profundo
Si tenemos una fuente de alimentación permanente para nuestros proyectos, o sea, un enchufe, lo más seguro es que no vayamos a darle demasiadas vueltas al consumo de energía.
Sin embargo, si queremos que nuestro proyecto funcione con baterías, ya sean pilas, baterías LiPo, Power Banks, o cualquier otro método que se nos ocurra; el consumo será una de nuestras mayores preocupaciones. Aquí es donde entra en juego el modo Deep Sleep.
En modo Deep Sleep desactivamos las funciones que más potencia consumen, pero dejamos lo suficiente para despertar al ESP32 y salir de este modo cuando lo necesitemos.
El chip esp32
Dentro del chip del ESP32 podemos encontrar:
- Un procesador de dos núcleos.
- Las memorias RAM y ROM.
- Los módulos Wifi y Bluetooth.
- Un módulo de aceleración hardware para aplicaciones criptográficas.
- El módulo RTC.
Los núcleos de la CPU y los módulos de Bluetooth y Wifi necesitan un montón de intensidad para funcionar, así que, si queremos ahorrar energía tenemos que desactivarlos.
Esto es justo lo que hacemos al entrar en el modo Deep Sleep, que desactiva todo excepto el módulo RTC. En este módulo tenemos un coprocesador de 32 bits de bajo consumo (ULP o Ultra Low Power) y 8kbs de memoria RAM. Si lo pensamos durante un momento, aunque no parece demasiado, es 4 veces más memoria que el Arduino UNO.
Mientras estemos en el modo Deep Sleep podemos acceder a esta memoria, así que podemos escribir un programa en ella para el coprocesador ULP que nos permitirá despertar la CPU cuando lo necesitemos para atender a los eventos que nos interesen.
Al despertar, volveremos a ejecutar el sketch desde el principio, incluyendo el setup(), pero con la ventaja de que podemos contar con los datos que hemos guardado en las variables de la memoria del módulo RTC.
Si os lo estáis preguntando, el ESP32 necesita sólo 0.01mA de intensidad de corriente en este modo. Comparado con los 80mA promedio, pudiendo llegar a los 225mA, que consume normalmente, el ahorro es más que considerable.
Métodos para despertarlo
Vamos a ver 3 formas de sacar al ESP32 del modo Deep Sleep:
- Utilizando un timer o temporizador, utilizando periodos de tiempo predefinidos en nuestro programa.
- Utilizando los pines “táctiles” o Touch, o sea, tocando un cable conectado a uno de esos pines.
- Utilizando una señal en un pin, por ejemplo, mediante un pulsador. Podemos utilizar dos en el mismo programa.
En las siguientes sesiones veremos y probaremos los tres métodos, para que podáis elegir el o los que mejor se adapten a vuestras necesidades.