Última modificación hace 3 años
El microcontrolador ESP8266 está muy bien preparado para aprovechar al máximo la energía, con modos de muy bajo consumo.
Para mucha gente estos modos de bajo consumo parecen temas místicos o de ocultismo, al alcance de muy pocas personas, unos pocos elegidos.
Aquí verás que con ESPEasy son muy fáciles de usar y que te permitirán enormes ahorros de energía.
¿Qué es el modo deep sleep?
El modo deep sleep (sueño profundo) del ESP8266 consiste en que el microcontrolador queda dormido profundamente, con prácticamente todo apagado, excepto una muy pequeña parte del microcontrolador que comprueba si sucede «algo» que debe provocar que el resto del ESP8266 despierte, saliendo de su letargo.
Un ESP8266 en modo deep sleep (dormido, y esperando a que suceda algo, para despertarse y hacerlo) puede consumir tan solo de 8 a 20µA (un 1 mA = 1000 µA) mientras que una placa NodeMCU con su ESP8266 en modo deep sleep consume del orden de 8-20mA. ¡Esto es entre 500 y 1000 veces más!
Si te interesa el tema de bajo consumo te recomiendo que cuando termines de leer este artículo, te leas este otro. Aquí encontrarás toda la base que necesitas saber para alcanzar el Olimpo bajo consumo con ESP8266:
¿Qué necesito para utilizar el modo deep sleep del ESP8266?
Necesitas dos cosas: un complejo hardware externo de precisión que permita al microcontrolador entrar en coma y una compleja programación, casi indescifrable, incluso para los mejores programadores del mundo.
El hardware para deep sleep
El hardware que necesitas es este:
Y la programación para deep sleep
La programación que necesitas es esta:
deepsleep,x
En este artículo te voy a decir cómo sacar partido a esta alta tecnología fácilmente.
ESPEasy y deep sleep
ESPEasy incluye soporte completo para poner el procesador en modo deep sleep y puedes utilizar desde tus reglas muy fácilmente.
Lo primero que tienes que saber es que el pin RST debe estar conectado a GPIO-16, esto es necesario para que el ESP8266 entre y salga de su estado comatoso. Este es el uso que le darás al cable que te he enseñado antes, hacer un puente desde RST a GPIO-16, tan simple como esto.
Para que el ESP8266 entre en ese estado comatoso, solamente tienes que llamar desde una regla (o un comando, por ejemplo):
deepsleep,x
Donde «x» es el tiempo, en microsegundos, que quieres que el ESP8266 esté en modo deep sleep.
Cuando haya transcurrido ese tiempo, el ESP8266 saldrá de su coma profundo y empezará la ejecución, exactamente igual que si acabáramos de encenderlo.
Aquí te explico los detalles sobre este modo.
Esto es lo que sucede cuando el ESP8266 se despierta de su siesta profunda y ESP Easy empieza a funcionar de nuevo:
- Intenta conectarse por wifi al SSID definido, y al SSID2 si está definido y SSID falla.
- Si no consigue conectarse y has habilitado la opción Sleep on connection failure, vuelve al estado de deep sleep inmediatamente (esto es bueno si tiene que hacer algo con wifi y no está disponible, ¿para qué esperar más, gastando energía?)
- Enviará todas las medidas de los sensores a la vez (ignorando los «delays» que se hayan definido).
- Se apagará y dormirá durante la cantidad de segundos que se establece en la configuración de Retraso de reposo. Deepsleep utiliza un contador interno de 32 bits en uSecs. Eso significa que está funcionando hasta 4294 segundos, los retrasos más largos no funcionarán. Es decir. el tiempo de sueño más largo es de aproximadamente 1 hora y 11 minutos.
Despertar el ESP8266 manualmente
Si especificas un deepsleep,0 el ESP8266 entrará en el modo de deep sleep sin un tiempo prefijado que le haga despertar.
Tendrás que despertar el dispositivo tú mismo conectando RST a GND, con un pulsador, por ejemplo, o un simple cablecillo.
Este es un modo muy útil si lo que queremos es hacer algo como un sensor de puerta o ventana con un sensor magnético (que conectaremos entre RST y GND) y que hará que el ESP8266 se despierte en el momento en que ese contacto se cierre, hayan pasado unos segundos o meses desde la última vez.
Saliendo de deep sleep
Cuando el modo deep sleep está activo, no puedes conectarte a la interfaz web. De hecho, el ESP8266 está apagado y solo hay un pequeño circuito temporizador encendido para despertar el núcleo principal del ESP8266 cuando llegue el momento.
Hay tres formas de salir del modo de deep sleep:
Arranque en frío
Apaga el ESP8266 y vuelve a conectar la alimentación. Tendrás 30 segundos para conectarte a la interfaz web y deshabilitar el modo deep sleep (obtendrás información en el puerto serie).
Desactivación temporal de deep sleep mediante un puente
Si 30 segundos es demasiado corto para ti, puedes usar este método.
Desconecta GPIO-16 de RST y conéctalo a GND. Vuelve a conectar el ESP8266.
Ahora el deep sleep estará desactivado y el ESP8266 funcionará normalmente, hasta que vuelvas a conectar GPIO-16 a RST.
Esto requiere una versión de ESPEasy v2.0.0-dev6 o más reciente.
Restablecimiento de fábrica
Si todo lo demás falla, simplemente realiza un restablecimiento de fábrica. ¡Perderás todas tus configuraciones!
El reinicio se hace conectando los pines RX y TX juntos mientras reinicias el ESP8266. Apaga el dispositivo. Luego, retira el conector entre los pines RX y TX. Reinicia e instala el firmware ESPEasy nuevamente.
Si esto no funciona, intenta cargar la imagen en blanco para que coincida con el tamaño de la memoria instalada en el dispositivo. Reinicia y espera 5 minutos. Luego carga el firmware que quieres usar. Reinicia y espera 5 minutos.
¿TE HA RESULTADO INTERESANTE?
¡NO TE PIERDAS FUTUROS ARTÍCULOS COMO ESTE!
SUSCRÍBETE A LA NEWSLETTER Y ENTRA EN EL GRUPO DE TELEGRAM Y NO TE PIERDAS NADA DE LO MEJOR.
Gracias Mario, estoy dándole vueltas al asunto, a ver si me aclaro primero con lo que quiero hacer. He leído también ese artículo, aunque sin pararme mucho, y he visto las pantallas, pero son más caras. Lo dicho, si encuentro tiempo e inspiración (en ese orden) probaré a hacer un medidor solo de bajo consumo, utilizando las magníficas ideas que expones en tus artículos.
Un saludo.
Estupendo, Jesús.
Ya nos irás contando tus avances.
Un saludo.
Hola Mario, otro buen artículo, gracias por la exposición.
Tengo una duda de principiante: ¿mientras el ESP8266 está en deep sleep, la pantalla OLED sigue encendida mostrando los últimos valores medidos? Supongo que sí, si no no habría ni tiempo para ver las mediciones, pero me gustaría que me lo confirmases.
Un saludo
Hola Jesús.
No he hecho pruebas con una pantalla OLED y deep sleep pero diría que sí, que la imagen se mantiene mientras el ESP8266 está en deep sleep.
De todas formas, hay que tener en cuenta que aunque las pantallas OLED consumen relativamente poco, siguen consumiendo (yo diría que entre 5 y 25mA, dependiendo de la luminosidad y de cuántos píxeles están encendidos) por lo que lo ideal, si se quiere conseguir gran autonomía, es mantener la pantalla OLED apagada y encenderla con un botón que despierte el ESP8266, encienda y actualice la pantalla y vuelva a apagarla y al estado de deep sleep pasados unos segundos para que de tiempo a leerla con comodidad.
Para conseguir largas autonomías lo mejor es utilizar una pantalla e-Ink, que tiene un consumo despreciable cuando no se está actualizando, como puedes ver en el artículo «Diseño de un medidor de CO2 de ultra bajo consumo» https://viejo.emariete.com/diseno-medidor-co2-ultra-bajo-consumo/