- Diferentes métodos para minimizar el consumo de energía
- Componentes requeridos
- Tipos de modos de suspensión en ESP8266
- Programación del modo de sueño profundo ESP8266
- Probando DeepSleep en el ESP8266
A medida que la revolución de IoT está en auge todos los días, la cantidad de dispositivos conectados aumenta muy rápidamente. En el futuro, la mayoría de los dispositivos estarán conectados entre sí y se comunicarán en tiempo real. Uno de los problemas que enfrentan estos dispositivos es el consumo de energía. Este factor de consumo de energía es uno de los factores críticos y decisivos para cualquier dispositivo y proyectos de IoT.
Como sabemos que ESP8266 es uno de los módulos más populares para construir cualquier proyecto de IoT, en este artículo aprendemos sobre cómo ahorrar energía mientras usamos ESP8266 en cualquier aplicación de IoT. Aquí cargamos los datos del sensor de temperatura LM35 a la nube ThingSpeak en un intervalo de 15 segundos y durante esos 15 segundos, ESP8266 permanece en modo DeepSleep para ahorrar energía.
Diferentes métodos para minimizar el consumo de energía
Hay varias formas de optimizar el consumo de energía en los dispositivos integrados y de IoT. La optimización se puede realizar en hardware y software. A veces no podemos optimizar los componentes de hardware para reducir el consumo de energía, pero seguramente podemos hacerlo del lado del software cambiando y optimizando las instrucciones y funciones del código. No solo esto, los desarrolladores también pueden modificar la frecuencia del reloj para reducir el consumo de energía del microcontrolador.Podemos escribir un firmware para hacer dormir el hardware cuando no hay intercambio de datos y realizar la tarea definida en un intervalo particular. En el modo de suspensión, el hardware conectado consume muy menos energía y, por lo tanto, la batería puede durar mucho tiempo. También puede leer Minimizar el consumo de energía en microcontroladores, si desea saber más sobre las técnicas de consumo de energía.
Los módulos ESP8266 son los módulos Wi-Fi más utilizados, vienen con muchas funciones en tamaño pequeño y tienen diferentes modos, incluido el modo de suspensión, y se puede acceder a estos modos mediante algunas modificaciones en el hardware y el software. Para obtener más información sobre ESP8266, puede consultar nuestros proyectos basados en IoT utilizando el módulo Wi-Fi ESP826, algunos de ellos se enumeran a continuación:
- Interfaz ESP8266 NodeMCU con microcontrolador Atmega16 para enviar un correo electrónico
- Envío de datos del sensor de temperatura y humedad a Firebase Real-Time Database usando NodeMCU ESP8266
- LED controlado por IoT con Google Firebase Console y ESP8266 NodeMCU
Aquí explicaremos los diferentes modos de suspensión disponibles en ESP8266 y los demostraremos enviando datos de temperatura al servidor de Thingspeak en un intervalo regular utilizando el modo de suspensión profunda.
Componentes requeridos
- Módulo Wi-Fi ESP8266
- Sensor de temperatura LM35
- Cables de puente
Tipos de modos de suspensión en ESP8266
El módulo Esp8266 opera en los siguientes modos:
- Modo activo: en este modo, todo el chip está encendido y el chip puede recibir y transmitir los datos. Obviamente, este es el modo que consume más energía.
- Modo de suspensión del módem: en este modo, la CPU está operativa y las radios Wi-Fi están desactivadas. Este modo se puede utilizar en las aplicaciones que requieren que la CPU esté funcionando, como en PWM. Hace que el circuito del módem Wi-Fi se apague mientras está conectado con el punto de acceso Wi-Fi (punto de acceso) sin transmisión de datos para optimizar el consumo de energía.
- Modo de suspensión ligera: en este modo, la CPU y todos los periféricos están en pausa. Cualquier activación, como interrupciones externas, activará el chip. Sin transmisión de datos, el circuito del módem Wi-Fi se puede apagar y la CPU se puede suspender para ahorrar energía.
- Modo de suspensión profunda: en este modo, solo el RTC es funcional y todos los demás componentes del chip están apagados. Este modo es útil cuando los datos se transmiten después de intervalos de tiempo prolongados.
Conecte el sensor de temperatura LM35 con el pin A0 de NodeMCU.
Cuando el módulo ESP tiene ALTO en el pin RST, está en estado de ejecución. Tan pronto como recibe la señal BAJA en el pin RST, el ESP se reinicia.
Configure el temporizador usando el modo de suspensión profunda, una vez que finaliza el temporizador, el pin D0 envía la señal BAJA al pin RST y el módulo se activará al reiniciarlo.
Ahora, el hardware está listo y bien configurado. Las lecturas de temperatura se enviarán al servidor de Thingspeak. Para ello, cree una cuenta en thingspeak.com y cree un canal siguiendo los pasos a continuación.
Ahora, copie la clave Write API. Que se utilizará en el código ESP.
Programación del modo de sueño profundo ESP8266
El IDE de Arduino fácilmente disponible se utilizará para programar el módulo ESP8266. Asegúrese de que todos los archivos de la placa ESP8266 estén instalados.
Empiece por incluir todas las bibliotecas importantes necesarias.
#incluir
Una vez que se hayan incluido todas las bibliotecas para acceder a las funciones, asigne la clave de escritura API, configure su nombre y contraseña de Wi-Fi. Luego declare todas las variables para su uso posterior donde se almacenarán los datos.
String apiWritekey = "*************"; // reemplace con su clave THINGSPEAK WRITEAPI aquí char ssid = "******"; // su wifi SSID nombre char password = "******"; // wifi contraseña
Ahora, cree una función para conectar el módulo con la red Wi-Fi usando la función wifi.begin () y luego verifique continuamente hasta que el módulo no esté conectado a Wi-Fi usando while loop.
void connect1 () { WiFi.disconnect (); retraso (10); WiFi.begin (ssid, contraseña); while (WiFi.status ()! = WL_CONNECTED) {
Haga otra función para enviar los datos al servidor de Thingspeak. Aquí, se enviará una cadena que contiene la clave de escritura de la API, el número de campo y los datos que deben enviarse. Luego envíe esta cadena usando la función client.print ().
void data () { if (client.connect (servidor, 80)) { String tsData = apiWritekey; tsData + = "& campo1 ="; tsData + = Cadena (tempF); tsData + = "\ r \ n \ r \ n"; client.print ("POST / actualización HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n");
Llame a la función connect1 que llamará a la función para conectar Wi-Fi, luego tomará las lecturas de la temperatura y la convertirá a grados Celsius.
configuración vacía () { Serial.begin (115200); Serial.println ("el dispositivo está en modo Wake up"); connect1 (); valor int = analogRead (A0); voltios flotantes = (valor / 1024.0) * 5.0; tempC = voltios * 100,0;
Ahora, llame a la función data () para cargar los datos en la nube de Thingspeak. Finalmente, la función importante a llamar es ESP.deepSleep (); esto hará que el módulo entre en reposo durante el intervalo de tiempo definido que es en microsegundos.
datos(); Serial.println ("sueño profundo durante 15 segundos"); ESP.deepSleep (15e6);
La función de bucle permanecerá vacía ya que toda la tarea debe realizarse una vez y luego reiniciar el módulo después del intervalo de tiempo definido.
El video de trabajo y el código completo se encuentran al final de este tutorial. Sube el código en el módulo ESP8266. Retire el cable conectado RST y D0 antes de cargar el programa; de lo contrario, dará un error.
Probando DeepSleep en el ESP8266
Después de cargar el programa, verá que las lecturas de temperatura se cargan en la nube ThingSpeak después de cada 15 segundos y luego el módulo entra en el modo de suspensión profunda.
Esto completa el tutorial sobre el uso de Deep Sleep en el módulo ESP8266. El sueño profundo es una característica muy importante y se ha incluido en la mayoría de los dispositivos. Puede consultar este tutorial y aplicar este método para diferentes proyectos. En caso de cualquier duda o sugerencia, escriba y comente a continuación. También puede acceder a nuestro foro.