Hola a todos,
desde hace varias semanas vengo desarrollando un proyecto para uso personal consistente en una red de sensores inalámbricos a través de los cuales quiero monitorizar las variables relevantes (humedad de suelo y temperatura de suelo) de mi cultivo. Para ello he construido una WSN consistente, de momento, en 2 nodos remotos que se comunican a través de Xbee entre ellos y con un coordinador, que a su vez está conectado a la red a través de Ethernet Shield. El coordinador va enviando los datos que le llegan de los nodos remotos directamente a una plataforma en la nube (Carriots) desde la que puedo trabajar con los datos, generar gráficas, alarmas, etc. y servirlo todo en mi web personal.
Cada nodo remoto tiene conectados 3 sensores de humedad de suelo y un sensor de temperatura de suelo.
Cada nodo es energéticamente autónomo, alimentado por una placa fotovoltaica y una bateria ion-Li de 3.7V.
Hasta aquí todo desarrollado y funcionando correctamente.
El problema que se me plantea ahora es, dado que, como he dicho el sistema es energéticamente autónomo, quiero hacerlo lo energéticamente más eficiente posible a través del modo sleep de Arduino, pero no tengo mucho conocimiento sobre esta técnica.
Lo que me gustaría hacer es tomar valores de los 3 sensores de humedad y del sensor de temperatura una vez cada hora y, una vez enviados al coordinador, que el Arduino vuelva a entrar en modo Sleep para que consuma lo mínimo posible hasta la siguiente hora. He descubierto la librería Snooze desarrollada por Victor Suarez (miembro de esta comunidad) y estoy implementándolo en el código pero, antes de plantear cuestiones sobre la funcionalidad de esta librería quería terminar de comentar mi proyecto.
Por otro lado, y esto es lo que me trae de cabeza, querría añadir a cada nodo un caudalímetro que mida el caudal que pasa por una tubería de riego. Quiero mantener el status de ahorro energético y me gustaría que el Arduino durmiese, a menos que sea la hora de hacer las lecturas de humedad y temperatura antes mencionadas, o cuando le llegue una señal digital del caudalímetro (es decir, cuando se esté regando), y se mantenga despierto y midiendo caudal hasta que este cese, momento en el que entraría de nuevo en modo sleep.
Llegado a este punto tengo el conflicto de utilizar la librería Snooze para dormir y despertar cada 60 min., e implementar también código para despertar la placa en base a un suceso externo, en este caso la entrada de una señal digital proveniente del caudalímetro.
Antes de meterme en cuestiones más técnicas quería preguntar que os parece el asunto, ¿alcanzable?, ¿imposible?, ¿algún consejo?.
Quedo a la espera de respuestas.
Gracias,
Un saludo!