¿Alguna vez has querido programar el ESP8266 en modo de sueño profundo utilizando el Arduino IDE? ¡Estás en el lugar correcto! En este artículo te enseñaremos cómo configurar el NodeMCU para que entre en modo de bajo consumo mientras sigue funcionando de manera eficiente. ¡Sigue leyendo para descubrir todos los detalles!
Esta guía muestra cómo usar el modo de suspensión profunda con ESP8266 (NodeMCU) usando el IDE de Arduino. Cubrimos el sueño profundo con activación del temporizador y el sueño profundo con activación externa mediante el pin de reinicio (RST).
Para poner el ESP8266 en modo de suspensión profunda, use ESP.deepSleep(EE.UU.) y pasar como argumento el tiempo de sueño en microsegundos. GPIO 16 debe estar conectado al pin de reinicio (RST) para que se pueda reactivar el ESP8266.
Para poner el ESP8266 en modo de suspensión profunda por un período de tiempo indefinido, use ESP.sueñoprofundo(0). El ESP8266 se activa cuando el pin RST recibe una señal BAJA.
Mira el vídeotutorial
Esta guía está disponible en formato de video (ver más abajo) y en formato escrito (continúe leyendo esta página).
Ver también: ESP32 Deep Sleep con Arduino IDE y fuentes de activación
Presentamos el modo de suspensión profunda
Si ha creado un proyecto con una placa ESP8266 alimentada por batería o simplemente ha conectado su placa ESP8266 NodeMCU a un banco de energía, después de un tiempo notará que la batería no dura mucho, especialmente cuando usa WiFi.
Poner su ESP8266 en modo de suspensión profunda reducirá el consumo de energía y hará que sus baterías duren más.
Cuando el ESP8266 está en modo de suspensión profunda, las actividades que consumen más energía durante la operación (como Wi-Fi) se pausan, pero queda suficiente actividad para activar el procesador cuando sucede algo interesante.
tipos de sueño
Hay tres tipos diferentes de modos de suspensión: Hibernación del módem, sueño ligeroY Sueño profundo. La siguiente tabla muestra las diferencias entre cada modo (información de la hoja de datos de ESP8266).
Artículo | sueño módem | Sueño ligero | Sueño profundo |
Acceso inalámbrico a Internet | FUERA DE | FUERA DE | FUERA DE |
Reloj del sistema | EN | FUERA DE | FUERA DE |
Reloj en tiempo real | EN | EN | EN |
UPC | EN | Pendiente | FUERA DE |
Flujo de sustrato | 15mA | 0,4 mA | ~20 µA |
Corriente media (DTIM = 1) | 16,2 mA | 1,8 mA | – |
Corriente media (DTIM = 3) | 15,4 mA | 0,9 mA | – |
Corriente media (DTIM = 10) | 15,2 mA | 0,55 mA | – |
Nota: El consumo de energía en la tabla se refiere al ESP8266 como un chip independiente. Si utiliza una placa de desarrollo, contiene componentes pasivos que consumen más energía.
Todos tienen diferentes propósitos y deben usarse en diferentes aplicaciones.
En este artículo cubriremos el modo de suspensión profunda. Todo está siempre apagado excepto el reloj de tiempo real (RTC), que utiliza el ESP8266 para realizar un seguimiento del tiempo.
Esta es la opción con mayor eficiencia energética y el chip ESP solo consume alrededor de 20uA. Sin embargo, si utiliza una placa de desarrollo con todas las funciones con un programador incorporado, LED, etc., no podrá lograr un consumo de energía tan bajo.
Boceto de sueño profundo
Con el sueño profundo, una aplicación de ejemplo se ve así:
- El ESP8266 se conecta a WiFi
- El ESP8266 realiza una tarea (lee un sensor, publica un mensaje MQTT, etc.)
- Duerme durante un período de tiempo predefinido
- El ESP8266 se despierta
- El proceso se repite una y otra vez.
despertar fuentes
Después de poner el ESP8266 en modo de suspensión profunda, hay varias formas de reactivarlo:
- #1 Temporizador para despertar: el ESP8266 se despierta solo después de un período de tiempo predefinido
- #2 Despertador externo: el ESP8266 se activa cuando presiona el botón RST (el ESP8266 se reiniciará)
Para proyectos de bajo consumo de energía, podría considerar usar la placa ESP32, que ofrece modos de suspensión más profundos y fuentes de activación.
#1 ESP8266 Sueño profundo con función de alarma con temporizador
Para usar el temporizador de activación con ESP8266, debe conectar el pin RST a GPIO 16, que está etiquetado como D0, en uno Placa NodeMCUSimplemente siga el siguiente diagrama esquemático:
Solo conecte el pin RST a GPIO 16 después de cargar el código.
Si observa el pinout de NodeMCU, puede ver que GPIO 16 es un pin especial y tiene una función WAKE.
Recomendaciones de literatura: Guía de referencia de distribución de pines ESP8266
El pin RST del ESP8266 siempre está ALTO mientras el ESP8266 está funcionando. Sin embargo, cuando el pin RST recibe una señal BAJA, reinicia el microcontrolador.
Si configura un temporizador de suspensión profunda con el ESP8266, GPIO 16 enviará una señal BAJA después de que expire el temporizador. Esto significa que GPIO 16, cuando se conecta al pin RST, puede activar el ESP8266 después de un período de tiempo determinado.
Boceto de activación del temporizador ESP8266 NodeMCU
Después de instalar el complemento ESP8266 para Arduino IDE (cómo instalar la placa ESP8266 en Arduino IDE), vaya a Herramientas y seleccione “NodeMCU (módulo ESP-12E)“. Aquí está el código que necesitas cargar en tu ESP:
/*
* ESP8266 Deep sleep mode example
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
void setup() {
Serial.begin(115200);
Serial.setTimeout(2000);
// Wait for serial to initialize.
while(!Serial) { }
// Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin
Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
ESP.deepSleep(30e6);
// Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch)
//Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
//ESP.deepSleep(0);
}
void loop() {
}
En este ejemplo imprimimos un mensaje en el monitor serie:
Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
Luego, el ESP8266 entra en modo de suspensión durante 30 segundos.
ESP.deepSleep(30e6);
Para poner el ESP8266 en sueño profundo, use ESP.sueño profundo(EE.UU.) y pasar como argumento el tiempo de sueño en microsegundos.
En este caso, 30e6 es igual a 30000000 microsegundos, que son 30 segundos.
Después de cargar el código, presione el botón RST para comenzar a ejecutar el código y luego conecte RST a GPIO 16. El ESP8266 debe activarse cada 30 segundos y mostrar un mensaje en el monitor serie como se muestra a continuación.
Este ejemplo simplemente imprime un mensaje en el monitor serie, pero en una aplicación real estás realizando una tarea útil como por ejemplo: B. hacer una solicitud, publicar valores de sensores, etc.
Circuito de activación del temporizador ESP-01
Si desea realizar una configuración similar con una placa ESP-01, necesitará soldar un cable como se muestra a continuación. Este pequeño pin es GPIO 16 y debe conectarse al pin RST.
Sin embargo, los pines son tan pequeños que es realmente difícil soldar un cable de este tipo al GPIO 16 del ESP-01. Entonces, para este modo de activación debes usar la placa NodeMCU o un chip ESP12-E desnudo.
Recomendaciones de literatura: Referencia de distribución de pines ESP8266
#2 ESP8266 Sueño profundo con despertador externo
También puede activar el ESP8266 con un despertador externo, como presionar un botón o un interruptor de láminas. Solo necesita poner el ESP8266 en modo de suspensión profunda por un período de tiempo indefinido y luego configurar el pin RST en BAJO para reactivarlo.
Para probar esta configuración, conecte un botón a su placa ESP8266 como se muestra en el siguiente esquema. Cuando presiona el botón, el pin RST se establece en BAJO.
Si tienes un ESP-01En su lugar, siga el siguiente diagrama.
ESP8266 Bosquejo de activación externa
Luego cargue el siguiente código en su placa ESP8266.
/*
* ESP8266 Deep sleep mode example
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
void setup() {
Serial.begin(115200);
Serial.setTimeout(2000);
// Wait for serial to initialize.
while(!Serial) { }
// Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin
//Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
//ESP.deepSleep(30e6);
// Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch)
Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
ESP.deepSleep(0);
}
void loop() {
}
Este código pone el ESP8266 en modo de suspensión profunda por un período de tiempo indefinido. Para hacer esto solo necesitas pasar 0 como argumento. sueño profundo() Función:
ESP.deepSleep(0);
El ESP sólo se activa cuando se resetea la placa. En este caso, presionar un botón establece el pin RST en GND.
Cuando presiona el botón, el ESP8266 se despierta, realiza la tarea programada y vuelve a dormir hasta que se activa un nuevo evento de reinicio.
Medir corriente
Cuando la tarjeta esté en modo de suspensión profunda, mida el consumo de energía con un multímetro para ver cuánta energía consume.
Así es como debes colocar las sondas de tu multímetro.
Cuando el ESP-01 está en modo de suspensión profunda, solo consume 0,3 mA, que es aproximadamente 300 uA.
Tenga en cuenta que el ESP8266 puede consumir entre 50 mA y 170 mA durante el uso normal con WiFi.
Envolver
Ahora ya sabes cómo hacerlo. sueño profundo() característica, su proyecto alimentado por batería puede durar más.
También te pueden interesar otros proyectos ESP8266:
- Botón WiFi ESP8266: clon DIY del botón Amazon Dash
- ESP8266: Valores de temperatura y humedad DHT en la pantalla OLED
- Hackear un sensor de movimiento PIR con un ESP8266
- Cómo utilizar un multímetro – Guía para principiantes
Tenemos otras guías sobre el sueño profundo que podrían interesarte:
- MicroPython: ESP32 Fuentes de sueño profundo y despertar.
- MicroPython: ESP8266 Fuentes de sueño profundo y despertar.
- ESP32 Dormir profundamente con IDE de Arduino y despertar fuentes
Este es un extracto de mi libro electrónico “Automatización del hogar con ESP8266”. Si te gusta ESP8266 y quieres aprender más sobre él, te recomiendo descargar mi curso: “Home Automation con ESP8266”.
Espero que esta guía haya sido útil. ¡Gracias por leer!
Actualizado el 29 de julio de 2019
ESP8266 Sueño profundo con Arduino IDE (NodeMCU)
Este artículo describe cómo usar el modo de sueño profundo con ESP8266 (NodeMCU) utilizando Arduino IDE. Cubriremos el sueño profundo con despertar con temporizador y sueño profundo con despertar externo utilizando el pin de reinicio (RST).
Introducción al Modo de Sueño Profundo
Si has creado un proyecto con una placa ESP8266 que funciona con baterías, o si simplemente has conectado tu placa ESP8266 NodeMCU a un banco de energía, es posible que te hayas dado cuenta de que la batería no dura mucho, especialmente si estás usando Wi-Fi.
El modo de sueño profundo en el ESP8266 reduce el consumo de energía y hace que las baterías duren más tiempo. Al tener el ESP8266 en modo de sueño profundo, cortas las actividades que consumen más energía mientras operan (como Wi-Fi) pero dejas suficiente actividad para despertar el procesador cuando algo interesante sucede.
Tipos de Sueño
Existen tres tipos diferentes de modos de sueño: sueño de modem, sueño ligero y sueño profundo. Cada uno tiene un propósito diferente y debe utilizarse en diferentes aplicaciones.
En este artículo, nos centraremos en el modo de sueño profundo. Todo está apagado, excepto el Reloj en Tiempo Real (RTC), que es como el ESP8266 lleva el registro del tiempo.
Cómo Usar el Modo de Sueño Profundo con ESP8266
Para poner el ESP8266 en modo de sueño profundo, utiliza ESP.deepSleep(uS) y pasa como argumento el tiempo de sueño en microsegundos. GPIO 16 debe estar conectado al pin de reinicio (RST) para que el ESP8266 pueda despertar.
Frequently Asked Questions
- ¿Cómo puedo despertar el ESP8266 del modo de sueño profundo?
- ¿Cuál es la diferencia entre sueño de modem, sueño ligero y sueño profundo?
- ¿Cuál es el consumo de energía del ESP8266 durante el sueño profundo?
- ¿Qué tipos de despertar están disponibles para el ESP8266?
- ¿Cómo puedo medir el consumo de energía durante el sueño profundo?
Para más información detallada sobre cómo usar el modo de sueño profundo con ESP8266 NodeMCU, puedes ver el video tutorial o seguir leyendo el contenido escrito.
¡Me encantó este artículo! Realmente útil y bien explicado. Definitivamente voy a probarlo en mis proyectos con NodeMCU. ¡Gracias por la información!
¡Muy interesante! Nunca había pensado en usar el ESP8266 de esa manera. ¡Gracias por compartir!
Qué buena idea usar el ESP8266 en modo de sueño profundo, definitivamente voy a probarlo en mi próximo proyecto. ¡Gracias por la información!