Huerto e Invernadero automatizados con web de control remota

Buenos dias,

Me presento, me llamo David y soy nuevo en el mundo de Arduino. Soy ingeniero Informático y siempre ha gustado trastear con electrónica aunque siempre aprendo a base de prueba/error.
Me gustaría que me ayudarais con un proyecto que me ronda la cabeza, tengo un huerto en una finca cerrada que solo visito los fines de semana, actualmente se riega con unos temporizadores diarios, sin ningún otro control y me gustaría poder tener mayor control.

Mi idea es componer pequeñas estacas autonomas (Como las de La Luz de los jardines que venden en los chinos ) que contenga:

  • Sensor de humedad en la punta (Para poder enterrarlo)
  • Arduino micro (si es posible)
  • Sensor de humedad ambiente
  • Sensor de temperatura
  • Modulo transmisión de datos inhalambrico
  • Bateria y placa solar

El sistema debería comprobar los parámetros de humedad ambiente, temperatura, humedad del suelo cada media hora y enviarlo los datos al servidor.

Me gustaría poder hacerme una idea de lo que necesito y ver por cuanto dinero podría construir cada estaca de este tipo.
Si la idea de las estacas se va de presupuesto he pensado en conectar los sensores directamente al servidor por cable, pero no me gusta mucho la idea de tener todo lleno de cables…..

Por otro lado tendría que tener otro Arduino (Servidor) que reciba los datos de todas las estacas y se encargaría de:

  • Abrir la electrovalvula del sector de riego concreto
  • Mientras riega comprobar los datos de humedad cada 30 segundos
  • Controlar el nivel de en los depósitos,
  • Un control de las horas de luz que ha recibido al día
  • Un pluviómetro para saber cuando llueve y cuanto

Por otro lado tengo un invernadero que también tendría su control de riego, humedad y temperatura pero ademas tendría que tener un motor paso a paso de 12v para poder abrir y cerrar la ventana automáticamente cuando lo crea necesario, este se podría conectar por cable al servidor

Todo debería funcionar con energía solar, ya que no tengo enchufe.
Tengo que ver como puedo realizar un control remoto, primero para:

  • Enviar los datos a un servidor y almacenarlos
  • Generar gráficas con esos datos
  • Generar alertas antes determinados eventos (no para de regar durante mas de x tiempo, se esta quedando sin agua)
  • Poder controlar de forma manual el riego y la ventana del invernadero, para poder abrir o cerrar en caso de algún fallo

Supongo que necesitara algún modulo 4G para enviar los datos a un servidor web

Antes de comenzar con el proyecto me gustara poder hacerme una idea de la inversion que necesitaría hacer en hadware. El tema de los sensores se que no es caro pero me pierdo en las baterías y placas solares

Todo lo que sea posible me lo construiré con mis manos, por ejemplo las estacas o el pluviómetro, a no ser que el precio sea muy muy bajo.

Debería dimensional las baterias para que pueda funcionar un par de días sin sol.

Gracias a todos

Y has visto los al menso 10 ejemplos que hay en este foro de cosas parecidas a esta?
Donde? en proyectos, y solo hay que buscar.

Tambien hay en hardware y Software con preguntas relacionadas.

Si, si he leído mucho de los mensajes pero para alguien nuevo en este mundo no es fácil hacerse una imagen final de todo lo necesario. Hay muchos post que se meten con cosas especificas, sensores de humedad, comunicaciones, placas solares, etc, pero es un océano de información abrumadora.

Siguiendo con mi investigación creo que para cada estaca necesitaría lo siguiente:

  • Arduino micro +- 20E
  • Modulo inalámbrico (NRF24L01) +- 2E
  • Sensor temperatura y humedad ambiente DHT22 +- 3E
  • Sensor humedad suelo FC-28 +- 2E
  • Bateria 6000 mia 3m7v +- 6E
  • Placa solar 3w 5v +- 10E
  • Convertidor Lipo rider +- 12E

El calculo de la bateria y panel solar lo he realizado basándome en otros proyectos, no tengo nada y no puedo realizar pruebas para saber el consumo, por eso pedía ayuda.

La idea es que mida la temperatura. humedad, cada media hora y lo envié al Arduino master,
Mientras este el riego encendido el se medirá cada 30 segundo, para ello desde el master notificara a los esclavos que lean cada media hora.

He intentado buscar piezas de calidad y lo mas baratas posibles (AliExpress etc) y me sale un presupuesto de unos 55E cada estaca.

hay alguna alternativa al lipo rider mas económica?, mi idea es tener unas 12 estacas medidoras y con este presupuesto se me va de precio.

He visto alternativas al Arduino micro en AliExpress por 3 - 4 E, son fiables?, funcionan?

Por ultimo como veis la parte de bateria y panel, creéis que me puede funcionar 3 días sin sol?, siento no poder dar mas información sobre consumos ya que todo se basa en teoría.

Gracias y un saludo

Te aconsejo que leas mi trabajo "Control remoto de calefacción", que es el sistema que necesitas para controlar las unidades arduino, incluso también tendrías hecho los sensores de temperatura y humedad. Te faltaría el sensor de humedad del suelo y la alimentación mediante energía solar. Te faltaría en la lista poner un router 4G.

Espero que te sirva de ayuda, si necesitas alguna información mi correo es ayudadomotica@gmail.com. No me cuesta ayudarte ya que yo también quiero hacer algo parecido para un huerto que voy a montar.

Buenas,

Siguiendo mi búsqueda para minimizar costes he encontrado 2 opciones:

  • trabajar con modulos ESP8266 wifi, como hace @jscarr2, donde me quitaría 2 piezas, el Arduino micro y el transmisor, tendría la ventaja de ser wifi pero como desventaja el alto consumo.

  • trabaja con los modelos RFM69W, que van por radiofrecuencia, en este caso también me quitaría el Arduino y el modulo de transmisión, la ventaja es el mínimo consumo.

Entiendo que para lo que los necesito me pueden servir los 2, necesito que una red de ellos se conecten con el master y cuando sea necesario el master se conecte con ellos para recibir información.

Alguna idea para sustituir el Convertidor Lipo rider por algo mas económico?, es la único pieza que dispara un poco el presupuesto

Un saludo y gracias

Me apunto, estoy haciendo justo un proyecto muy similar.
Has mirado a usar node mcu, es muy similar a arduino y permite conexión wifi

mavicente:
Has mirado a usar node mcu, es muy similar a arduino y permite conexión wifi

Te respondo con esta respuesta del propio autor del hilo

  1. trabajar con modulos ESP8266 wifi, como hace @jscarr2, donde me quitaría 2 piezas, el Arduino micro y el transmisor, tendría la ventaja de ser wifi pero como desventaja el alto consumo.

O sea.. va a atrabajar con nodemcu.

Me quedo por aquí para ver cómo progresa el proyecto... estoy interesado en algo similar...

surbyte:
Te respondo con esta respuesta del propio autor del hilo

Perdón no lo había visto.

Buenas,

Efectivamente he descartado el uso de wifi por el alto consumo, quiero que el proyecto sea lo mas barato posible y una buena parte se va a ir en placas solares y baterías. Trabajare con modulo RFM69W

Para ir empezando me he centrado en lo que mas urgente me es, poder abrir y cerrar la ventana del invernadero dependiendo de la humedad y la temperatura. He comprado las siguientes piezas y estoy a la espera de que me lleguen:

  • Arduino uno
  • Motor paso a paso (Todavia no se cual elegir)
  • Sensor DHT22
  • L293D
  • Tornillo roscado de impresoras CNC
  • Potenciometro (Regular velocidad del motor)

Tengo una ventana abatible y mi idea es fijar el motor al marco superior, fijarle la varilla al eje del motor y en la parte de abajo realizar algún tipo de estructura fija que soporte la tuerca.

Cuando se quiera bajar la ventana accionare el motor y el giro de este ira enroscando la varilla dentro de la tuerca haciendo que la ventana se abra.

Cuando se quiera cerrar la ventana se realizara el proceso contrario. Dibujo muy mal pero sino se entiende podría intentar dibujarlo.

He desarrollado una primera versión del código:

// Stepper - Version: 1.1.2
#include <Stepper.h>

// DHT - Version: Latest 
#include <DHT.h>

// Arduino Low Power - Version: 1.2.0
//#include <ArduinoLowPower.h>

#define STEPS 200
#define NUNVUELTAS 100
#define DHTTYPE DHT22

const int POT = A0;
const int DHTPin = 5;   
const float maxTemperature = 35 ;
const float maxHumidity = 70 ;
const int minRpm = 30 ;
const int maxRpm = 150 ;
const int openDirection = STEPS * NUNVUELTAS ;
const int closeDirection = STEPS * NUNVUELTAS * -1 ;
String stepperStatus = "" ;

DHT dht(DHTPin, DHTTYPE);
Stepper stepper(STEPS, 8, 9);

void setup() {
  Serial.begin(9600);
  Serial.println("Ventana");
  dht.begin();
}

void loop() {
// Apagamos 15 x 8 segundo, que es limite de tiempo
// for (int i = 0 ;  i  <  16 ; i++)
//   LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); 

  //Coprobamos la temperatura y humedad
  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();
  
  if (isnan(temperature) || isnan(humidity)) {
    //Failed to read from DHT sensor!
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  
  Serial.print("Humidity: ");
  Serial.print(humidity);
  Serial.println(" %\t");
  
  Serial.print("Temperature: ");
  Serial.print(temperature);
  Serial.println(" *C ");
  
  //Lectura potenciómetro
  int potenciometer = analogRead(POT); 
  //Establecemos la velocidad
  int velocity = map(potenciometer, 0, 1023, minRpm, maxRpm); 
  
  if (isnan(velocity)) {
    //Failed to read Potencimeter
    Serial.println("Failed to read Potencimeter!");
    return;
  }
  
  Serial.print("Velocity: ");
  Serial.print(velocity);
  Serial.println(" RPM ");


  Serial.print("Posicion: ");
  Serial.println(stepperStatus);
  
  if (temperature > maxTemperature || humidity > maxHumidity) {
    if(stepperStatus != "Open") {
      Serial.println("Open Window!");
      move(velocity, openDirection);
      stepperStatus = "Open";
      delay(6000);
    }
  } else {
    if(stepperStatus != "Close") {
      Serial.println("Close Window!");
      move(velocity, closeDirection);
      stepperStatus = "Close";
      delay(6000);
    }  
  }
  Serial.println("End");
  delay(60000);
}

void move(int velocity, int direction) {
  Serial.print("Move engine: ");
  Serial.print(direction);
  Serial.println(" Direction ");
  stepper.setSpeed(velocity);
  stepper.step(direction); 
  return;
}

que tal lo veis?

Segun me vayan llegando los componentes are avanzando.

PD: Sigo buscando una alternativa barata para el convertidor Lipo rider

Buenos dias:

Mientras espero que me vengan los componentes estoy intentando ajustar al máximo el presupuesto de las estacas, he descubierto que el modulo RFM69W necesita de un Arduino, ósea que ese gasto no lo quito.

tengo en mente lo siguiente:

  • Arduino Nano pro

  • Modulo

  • Panel solar 1w 6v

  • Bateria 6000 mah

  • convertidor: Convertidor Es valido para lo que necesito?

  • Sensor DHT22

  • Sensor humedad Suelo

He calculado que con ese panel solar y quitando un 20% la bateria se podría cargar en 4,5 horas de luz solar.
Como veis el dimensionamenito de la bateria, me quedo corto?

Gracias y un saludo

Has pensado usar un esp32 + LoRa??

Pues no lo he pensado por desconocimiento, la verdad que son novatillo en esto y no sabia que existían estos módulos, si he entendido bien el ESP32 es como un Arduino + comunicación Wifi + bajo consumo y que se puede programar igual que Arduino, cierto?

De esta forma puedo prescindir del Arduino y del modulo RFM69W con las ventajas de la comunicación Wifi, cierto?

Gracias

Si, se puede programar con el IDE de arduino, es muy fácil de configurar y hay muchos tutoriales. si buscas un poco por china ni llegan a 10€ y lo tienes todo ahi (los esp8266 son parecidos, son los predecesores).

Y si ves que el wifi te puede dar jaleo por alguna razón o vives a <10km monta LoRa y lo puedes ver directamente desde casa. Lo malo es que la trama de datos que puede mandar es mucho mas pequeña que la de Wifi, pero para mandar los datos de los sensores te sobra!

Pufff, que jaleo, con tanta información. El tema del wifi lo descarte por consumos, mi idea es ahorrar en la placa solar y la bateria.

Por otro lado no se que montar si un mesh network, si usar lora, si solo wifi, si comunicación bidirectional, cada vez lo veo mas complicado y con menos ejemplos en internet

Mi primera idea era:

  • 15 clientes y 1 servidor,
  • cada 15 minutos leen la temperatura y la enviar al servidor
  • cuando el servidor activa el riego comunica a los clientes que deben leer la humedad cada 10 segundos
  • cuando la humedad media alcanza la mínima detiene el riego
  • comunica a los clientes que vuelvan a enviar las lecturas cada 15 minutos

Esto me implica comunicación bidireccional, e implementar algún tipo de websocket para comunicar el servidor con los clientes.

Ahora estoy pensando esto:

  • 15 clientes y 1 servidor
  • cada 15 minutos leen la temperatura y la enviar al servidor
  • cada x tiempo pedirle al servidor la humedad mínima
  • Si la humedad esta por debajo de la mínima leer y enviar cada 10 segundos, aquí puedo devolver el estado del riego
  • cuando la humedad media alcanza la mínima detiene el riego
  • cuando el estado del riego paso a enviar cada 15 minutos

De esta forma me evito tener que implementar la comunicación del servidor con los clientes, pero tengo que implementar un nuevo endpoint para que lea la temperatura mínima.
También podría darse el caso de que este leyendo cada 10 segundo y el riego no este activo

El servidor y los sensores estarán a manos de 50 metros unos de otros.

que os parece?

Te voy a dar una idea, basada en un proyecto en el que estoy trabajando.

Conectas todos los clientes que quieras por wifi y los programas para que cada 15 min te manden un string con los datos que necesites. El resto del tiempo puedes programar que se duerman... el consumo medio es de 80mA, en procesamiento <150mA y dormido unos 2.5uA.

No se que batería le quieres poner pero con una de 2000mA te da para un día entero (sin contar la energía que produce el panel)

la idea es ponerle una bateria de 6000ma, osga que tenderia para 3 días mas lo que da el panel.

Pero necesito que cuando se active el riego la medición sea mas continua para poder cortar el riego cuando llegue a la humedad deseada, con ese planteamiento en el peor de los casos podría estar regando 15 minutos de mas y el agua que tengo es de depósitos, de ahí que quiera optimizarla al máximo

Gracias

Metele un if que condicione que si esta regando se haga una lectura cada 5min ( o menos, lo que consideres) y el resto del tiempo cada 15 min. y quizas otro if para q por la noche solo te tome una lectura cada hora o cada 2h para ver temperatura y poco mas, realmente no vas a regar por la noche.

El problema es que el que riega y que lee la temperatura y humedad no son el mismo Arduino, de ahí que necesite un mecanismo para que se comuniquen y sepa que se ha activado el riego.

Tendré unas 15 estacas leyendo la humedad de diferentes partes del huerto y el servidor central será el que tenga el control de las electrovalvulas para abir y cerrar el riego.

Por otro lado para saber si es de noche o necesito un reloj + pila o sensor de luz, cierto?

Gracias

Yo utilizara un modulo de relé, q cuestan 1-2€ para activar directamente la bomba d riego, estan tirados de precio, los tienes por apenas 1€ los optoacoplados y no llega a 3€ los SSR. ( envio desde España)

Relé Optoacoplado

Relé Estado Sólido

El tema del reloj te puedes complicar lo q tu quieras... yo para lo que es, pondría algo sencillo y barato, una LDR que en función de la luminosidad te diga "si es de noche" y listo. Así te quitas de tener que programarlo y sincronizarlo con la hora real.