ESP8266 + Batería + Placa Solar + Deep Sleep = Sensor inalámbrico «infinito»

esp8266

#1

Pues siguiendo con mi experimentos de domótica, estoy poniendo un par de sensores para controlar la temperatura y humedad de mi mini-huerto (los bonsáis se me mueren, pero tengo unas tomateras con una pinta impresionante).

Por ahora estoy probando, pero parece que va bien.

Le he conectado un DHT11 y un sensor de humedad de suelo a un Wemos D1.
Cuando inicia, se conecta al wifi, suministra corriente a ambos sensores, espera 2 segundos, realiza las lecturas y las envía por MQTT al Home Assistant.
Finalmente, vuelve a entrar en modo Deep Sleep durante 60 minutos.

Para alimentarlo, estoy usando una batería con circuito de carga que he encontrado por ahí y una placa solar de apenas 0.5W (y 0.5€), que si bien no da para mantener el ESP encendido durante la fase de lectura y envío, sí que permite cargar más lo que ha consumido en una hora.

Según mis cálculos, durante la fase de lectura (30 segundos en el peor de los casos) el consumo es de 200mA, y durante el resto del tiempo es de apenas 20uA (ojo, micro), me da una media de 1.7mA (tenéis una calculadora aquí ).

Y dado que la placa proporciona entorno a 50-70mA, da más que de sobra para recargar la batería.

De hecho, sin recargar, tendría más de 20 días de carga, así que será muy difícil que me quede sin batería aún teniendo varios días nublados y los días cortos de invierno.


#2

Buenas tardes, ese sensor a veces manda valores “null”. Has podido comprobar si los datos que registra tu Home Assistant son correctos por si mismos o tienes que aplicarles algun algoritmo corrector?


#3

Ahora mismo filtro los datos inválidos en el propio ESP. Realiza hasta 3 intentos para leer el dato. Si no lo consigue no envía nada, así que el HA nunca tiene que lidiar con datos inválidos.


#4

Bien pensado. Qué criterio usas para distinguir entre un dato inválido o válido? Me explico, ese sensor puede, a veces, saltar en más de 10 grados y al segundo siguiente vuelve a su lectura normal sin contar con los consabidos nan o null


#5

Todavía estoy probando, pero seguramente opte por hacer tres lecturas y deben dar valores parecidos, sino, los descarto.


#6

Si las variaciones son “suaves”, aplicad un filtro paso bajo. Si las variaciones son “abruptas”, aplicad un filtro paso alto. Y si no sois capaces de aplicar esos filtros porque los veis demasiado complejos, aplicad un filtro que mida la moda con varias muestras y listo


#7

Muy buenas,
me gustaria poder echarle un vistazo a tu codigo (la parte del Deep Sleep). Tengo entre manos algo que necesita de wifi y poco consumo, pero no consigo ‘Dormir’ al ESP. Con arduino si habia tenido más suerte…
Hice algo parecido hace unos meses con Arduino UNO, placa solar de un juguete y batería de un movil viejo, para un termómetro de máximos y mínimos que lleva desde principios de enero operativo y no ha dado problemas. Despierta cada minuto y toma una muestra. O bien despierta por interrupcion hardware (un pulsador) y muestra los datos en un display TM1637.
Si alguien esta interesado, podeis verlo aqui:

(Le hice unos pequeños cambios a la libreria que encontré para el TM1637 porque no se adaptaba a mis necesidades del todo y le corregí un par de bugs que hacian que el display se quedase congelado ante ciertas circunstancias. La libreria modificada esta tambien en el apartado del TM1637)

La version del termómetro que tengo actuamente en uso tambien muestra el estado de la bateria, pero esa se me olvidó subirla :frowning_face:
A ver si me acuerdo esta noche y la pongo.
Un saludo, y suerte con esos tomates


#8

El código es tal que así:

ESP.deepSleep(0xFFFFFFFFFF); //Dormir 71 minutos

Y físicamente tienes que unir el GPIO D0 con el Reset.

Básicamente, cuando despierta, reinicia el ESP y vuelve a ejecutar el código desde el principio.


#9

que solo se despierta por reset fisico… podia yo estar esperando…

gracias :slight_smile:


#10

El D0 envía un pulso cuando sale del Deep Sleep, así que se lo pasas al Reset y a empezar de nuevo.


#11

Yo iba a montar algo así con un esp de los baratos, para una especie de Botón Amazón opensource:

https://randomnerdtutorials.com/esp8266-wi-fi-button-diy-amazon-dash-button-clone/


#12

Yo también lo pensé, pero es que al final te sale más a cuenta pillar varios botones de amazon y tener una Pi que se ocupe de ejecutar el comando que quieras.

Son más baratos, están bien terminados… El único problema es que no tienes el LED de confirmación.


#13

Y que no son hackeables. Para usarlos en lo que quieras tienes que dejar la Pi rastreando sus conexiones en un bucle contínuo, y no me parece ‘elegante’