Buen dia a todos !!!
Este artículo trata principalmente sobre el popular módulo ESP8266 (ESP8285).
Recientemente, en uno de los foros me hicieron una pregunta sobre el protocolo ESP-NOW. Como resultado, decidí hablar sobre formas de reducir el consumo de sensores y actuadores que funcionan a través de WiFi, incluido el ESP8266, en particular, Sonoff.
Primero, se resuelve la esencia del problema.
En la solución clásica en WiFi, debe usar un enrutador especial o un teléfono inteligente o dispositivo en el modo de punto de acceso.
El procedimiento para conectar y transmitir datos sin bailes especiales con una pandereta en el ESP8266 es de 1 a 4 segundos. En este caso, el consumo de corriente es de al menos 70 mA.
Cuando se usa la batería, como un sensor de temperatura, se usa el modo de reposo profundo. El dispositivo se activa periódicamente, envía datos y se queda dormido.
Según mi experiencia, puedo decir que el tiempo de actividad de ESP8266 se puede reducir a 0.1-0.13 segundos.
Además, una parte importante de este tiempo es el tiempo de funcionamiento del gestor de arranque: de 0,08 segundos a 0,1 segundos, pero el wifi todavía no está activado en ese momento y, por lo tanto, el consumo de corriente es en promedio de 25 mA.
Utilizo este intervalo para verificar la carga de la batería.
Si no hay suficiente carga para la comunicación, envío el dispositivo a dormir nuevamente.
Aprovecho este tiempo para verificar las lecturas del sensor y compararlas con un rango de valores dado.
Si está en el pasillo, envíe el dispositivo a dormir nuevamente.
Por lo tanto, el envío de datos innecesarios se reduce significativamente.
Como regla general, en proyectos tales como un "hogar inteligente", una linterna o una unidad de cerveza, estaciones meteorológicas, es necesario medir la temperatura y encender y apagar la bombilla del relé, la bomba y el motor.
Para controlar dichos dispositivos y obtener datos de temperatura o presión en un teléfono inteligente u otro dispositivo, basta con unos pocos bytes.
En relación con el ESP8266 en Internet, hay varias formas de reducir el tiempo de actividad de los dispositivos en el modo de transferencia de datos a través de WiFi.
Opción 1: use TCP / IP y una dirección IP fija.
El primero para ESP8266 fue hecho por pvvx.
Desventajas: El uso de SDK hecho a sí mismo.
Tiempo de actividad desde 0,54 seg.
Opción 2: Fui el primero en utilizar este método durante mucho tiempo, pero hoy no lo encontré en Internet.
Usando el protocolo UDP, arreglando los parámetros de conexión en RAM RTC, deshabilitando DHCP.
Ventaja: SDK estándar sin muletas, longitud del paquete de hasta 64K.
Tiempo de actividad desde 0.25 seg.
Opción 3: protocolo ESP-NOW.
Desventaja: la dificultad de comprensión por parte de los aficionados, la necesidad de combinar con el protocolo wifi para intercambiar datos con un teléfono inteligente.
Ventaja: SDK estándar, sin muletas, longitud de paquete de hasta 512 bytes.
Tiempo de actividad: desde 0,13 segundos (cargador de arranque estándar); 0.1 (cargador de arranque especial)
Opción 4: solución CNLohr basada en SDK pvvx casero y uso de paquetes sin procesar.
La diferencia con la solución ESP-NOW es que el paquete transmitido es más pequeño, pero se usa el protocolo WiFi.
Desventaja: es muy difícil de dominar por aficionados, no se puede implementar en un entorno arduino, requiere cambios en el software del enrutador.
Tiempo de actividad: como en la opción 3.
Opción 5: Un método universal para redes privadas basadas en WiFi.
No hay muletas. Es fácil de implementar en arduino, el software es estándar.
Se puede usar no solo para ESP.
No requiere un enrutador.
Desventaja: longitud del paquete 4 bytes
Tiempo de actividad: como en las opciones 3 y 4.
Método:
En la red local, utilizamos direcciones MAC especiales.
El primer byte de la dirección, por ejemplo, 0x36.
El segundo byte de la dirección indica el número de dispositivo.
3,4,5,6 bytes contienen la información transmitida.
Como resultado, para recibir la información transmitida, solo es necesario completar la conexión.
El tiempo para transferir datos es cero, ya que obtenemos los datos en el momento de la conexión.
Aquí se puede
descartar una realización de este método para arduino.
En el ejemplo anterior, solo se implementa una variante de este método de transferencia de datos.
No tiene un modo de sueño profundo. Por lo tanto, el ahorro de energía solo se debe al tiempo cero para la transferencia de información. El transmisor solo funciona cuando está conectado y la corriente aumenta a 300 mA por solo 2-4 ms.
Para obtener el efecto de ahorro total mediante cualquiera de las opciones, es necesario implementar el modo de suspensión profunda de manera estándar.
Por lo tanto, en las opciones 3 a 5, el funcionamiento de la unidad WiFi no toma más de 0.04 segundos.
Fue en este momento que el consumo de corriente varió de 70 a 300 mA.
El resto del tiempo, el consumo de corriente del ESP8266 no es más de 20 mA.
Como resultado, en lugar de consumir energía para una sesión de 70 mA * s, obtenemos aproximadamente 3 mA * s.
Aquellos que lo deseen pueden calcular con mayor precisión los ahorros para dispositivos específicos.
Explicaré con más detalle la opción 2 .
Al salir de depp-sleep, hay tres opciones para conectarse a WiFi para enviar mensajes.
1) inicio de sesión y contraseña: nuevos valores.
El tiempo de conexión y transmisión del mensaje UDP es de 4 segundos.
2) inicio de sesión, contraseña e IP se almacenan en RTC.
El tiempo de conexión y transmisión del mensaje UDP es de 1.2 segundos.
3) inicio de sesión, contraseña, IP, guardar en RTC y deshabilitar dhcp.
El tiempo para conectarse y transmitir un mensaje UDP es de 0.25 segundos.
El tiempo se calcula teniendo en cuenta el tiempo de funcionamiento del gestor de arranque,
que es 0.12 segundos en un arranque estándar.
Si reescribimos el gestor de arranque, el tiempo puede reducirse aún más en 0.04-0.06 segundos adicionales.
Por lo tanto, si guardamos el inicio de sesión, la contraseña y la IP en RTC, la duración de la batería aumenta 3 veces más que sin guardar. Este método de ahorro es conocido en Internet y es utilizado por muchos.
Pero si deshabilita DHCP, la duración de la batería aumentará aproximadamente 13 veces.
Eso es exactamente lo que estoy haciendo, pero no he visto tal solución en Internet.
Todo el éxito en el ahorro de energía.