Hola a todos, me gustaría exponer mi proyecto y las dudas que me surgen en su desarrollo.
Llevo unos días leyendo el foro y es un proyecto típico (una sonda para controlar el riego) pero la mía tiene una serie de particularidades. En fin, lo que quiero hacer es una sonda con sensores de humedad, temperatura y caudal de agua, que haga lecturas cada 15 min. por ejemplo, las almacene en una SD y cuando me conecte por BLE envie los datos almacenados en la tarjeta.
En principio es bastante simple, aunque debe cumplir unos requisitos:
1.- Simple y barata: pues la quiero replicar para amigos y familiares.
2.- Gran autonomía: lo ideal sería que con una pequeña batt lipo funcionase 3 o 4 meses.
He visto Xiaomi Mi Plant y me parece un gadget muy chulo, pero no cumple con lo que necesito ya que me gustaría medir la humedad a tres niveles de profundidad y tampoco tiene caudalímetro. Si tuviese esas cosas no me metería en este proyecto, pues soy fan de Xiaomi, me parece una pasada las pulseras cuantificadores que tienen, tengo una y la batería le dura meses, con un simple acelerómetro y un vibrador hace maravillas. Con la pulsera he modificado la app para adaptarla a mis necesidades.
Soy informático de formación, así que en principio no tengo problemas con el código (aunque hace años que toco no C ni C++) pero con la electrónica ando bastante perdido, de ahí la idea de abrir este post, para intentar resolver las dudas que tengo.
Hasta ahora he estado investigando mis opciones y estás son las conclusiones que he sacado:
-
Voy a utilizar placas basadas en Arduino de 3.3V y 8Mhz, pues son las que están orientadas al bajo consumo. Por ejemplo, Adafruit, ESP32 (esta placa me la recomendaron en este foro y tiene muy buena pinta, en su datasheet explican los modos de energía y los patrones que se pueden aplicar para un consumo mínimo) o Pro Mini.
-
Me parece una solución muy elegante la placa de Adafruit o la Esp32, pues al llevar integrado el BLE solo necesito añadirle un datalogger y los sensores, para tenerlo todo.
-
El protocolo de comunicación elegido es el Bluetooth de baja energía BLE, pues es el que mas se adapta a mis requerimientos y cualquier smartphone moderno lo incorpora, por lo tanto cualquiera podría recoger los datos almacenados en el datalogger.
-
Se que añadirle una placa solar y un cargador, haría mi sonda autonoma, pero esa es la solución fácil, en mi intento de abaratar hardware quiero intentar prescindir de estos elementos en mi montaje.
-
Busco conseguir la máxima autonomía combinando una electrónica de bajo consumo, con librerías como LowPower o la específica de Adafruit.
Componentes de mi sonda:
1.- Placa compatible arduino de 3.3v 8Mhz con BLE (por ejemplo ESP32). Si fuese el Arduino Mini le tendría que añadir un modulo HC08 o HC10 BLE.
2.- Datalogger (SD + RTC) para almacenar los datos y el sello de tiempo, por ejemplo Adalogger y para despertar al arduino para que lea los sensores.
3.- Sensores de Humedad, Temperatura y Caudal de agua. Tres sensores de humedad que se situan a diferentes profundidades, un sensor de temperatura y uno de caudal.
4.-Sistema de alimentación basado en una batería Lipo, que no describo pues aquí tengo dudas.
Funcionamiento deseado:
1.- Una vez instalado y funcionando el arduino, leerá los valores de los sensores (varias veces y promediará los resultados leidos) y junto con otra información (temperatura del chip, nivel de batería....y por supuesto fecha y hora) los almacenará en la tarjeta SD.
2.- Se dormirá (a ver que modo sleep me permite y que patrón a aplicar) hasta que pasado el tiempo estipulado, se despierte para volver a repetir la operación de lectura/almacenado de datos.
3.- (Esta era la duda que expuse en mi primer post) Lo ideal sería que cuando reciba una conexión entrante BLE se despierte y envie los datos a través de dicha conexión. Ya he visto que el ESP32 tiene una funcion "stub" creo recordar que me permitiría hacer esto sin ni siquiera despertarse completamente.
4.- Una vez haya recogido los datos crudos, se vuelve a dormir.
Dudas que me surgen:
1.- En primer lugar la alimentación de la sonda. Se que lo mejor es probar cuando esté todo montado y funcionando, pero me gustaría que alguien me diera sugerencias siempre con esa meta de 3 o 4 meses de autonomía en mente. También podría espaciar las lecturas a 30 min o una hora, eso no sería problema. Un problema que me he encontrado con la electrónica de 3.3v es que el caudalimetro trabaja a partir de 4.5v, entonces no sé como alimentarlo. Aqui explica como sacar 5v de la placa Adafruit pero de manera puntual. Se podría poner una batt lipo de 7.4v y una fuente Step Down para alimentar la placa, pero ya estamos añadiendo hardware a la sonda.
2.- Otra cuestión que me preocupa es la lectura del caudalimetro, pues si riego durante una hora sería un gasto enorme de energía monitorizarlo durante tanto tiempo. He pensado que mediante una interrupción (Change) el chip se despierte y almacene el comienzo del riego y el caudal estimado, y se vuelva a despertar cuando el riego termine. Así puedo calcular cuanto se ha regado.
3.- Esto es lo que estoy probando, como despertar al arduino, bien con Interrupción del RTC, una alarma, interrución generada por BLE...sugerencias?
En fin, como veis va todo orientado al bajo consumo y bajo coste. A ver si me podéis brindar vuestra ayuda y aportar ideas.
Muchas gracias de antemano y perdonad el tocho.
Saludos,