Sistema Arduino para control online de riego y más.
lunes, 16 de junio de 2014Os presento mi gran proyecto Arduino que he bautizado como CCCP, Control Patiota. Grande no tanto por su complejidad sino especialmente porque es una idea que llevaba mascullando ya algunos años, pero claro también por el tiempo que me ha llevado la instalación y puesta en marcha.
El proyecto básicamente consiste en una instalación de riego por goteo y micro-aspersores accesible desde internet y completada con algunos «extras» como un alimentador (mejorado) para los peces del patio y algunos sensores de temperatura y humedad con los que monitorizar el espacio. El siguiente vídeo podéis ver la instalación y como funciona.
Lógicamente la tarea más complicada de todo este tinglado ha sido todo lo referente a los componentes no-electrónicos: la instalación del sistema de riego y conexión a la red, la instalación de 20 mts de cable de red entre el router y la caja y los cientos de micro-goteros instalados, uno por maceta.
En cuanto a la electrónica no me calenté mucho la cabeza, he cogido los componentes y los he metido tal cual en una caja de plástico, incluida la propia placa de prototipado, los cables de conexión entre placas y los transformadores de corriente. Puesto que para la pruebas y la subida del código al Arduino las conexiones/desconexiones iban a ser frecuentes, la condición inexcusable era que la caja fuese fácil/rápida de desmontar y trasladable, y que alojase dentro todo la electrónica necesaria de manera que al desconectar los «periféricos» quede una caja de plástico con un enchufe. Con un par de regletas y un par de cables USB desmontarlo todo son apenas 15 segundos.
Elementos Arduino
La instalación es una placa Arduino UNO sobre la que acopla una Ethernet Shield de la que salen los habituales conexiones a sensores y controles.
La placa Ethernet se comporta como un servidor web conectándose al router de casa con una IP fija (192.168.1.205 en este caso), y es a través de la intranet desde el arduino informa desde estado de los sensores y espera la ejecución de órdenes.
Otro de los elementos fundamentales es la placa de relés. Estoy usando una placa de 8 reles de los cuales solo 4 están conectados y de estos solo 2 en uso. Los otros dos suministran corriente a 220V y son activados/desactivados por los relés 3 y 4. No tengo muy claro su uso, probablemente controlar alguna luz para cenar en el patio.
Dentro de la caja además se alojan un transformador de 6.5v (en el vídeo todavía estaba usando uno de 12v) y otro transformador de 220>24Va para las electroválvulas. Un viejo cable de conexión motherboard-USB que me ha venido de perlas para poder conectar/desconectar fácilmente el servo del alimentador de peces y el sensor de humedad de suelo.
Código Arduino
El código Arduino es muy elemental. Básicamente activa los dispositivos conectados, lee su estado (activo/inactivo) y escribe un par de líneas de texto con esta información. Cuando recibe una solicitud por la red lee la cadena de texto de esta solicitud y busca determinados patrones que le ordenen abrir o cerrar algún pin. Ejecuta la orden si la encuentra y termina emitiendo su estado, así si (por ejemplo) encuentra la cadena rele0on se activa inmediatamente el relé 0.
Para evitar conflictos y sobrecargas al activar algún relé se asigna true a la booleana sistemaocupado de tal manera que mientras algún relé esté activo no es posible activar otro relé o el servo. Al mismo tiempo que enciende el led rojo indicando que algún elemento está trabajando.
Asi para regar el patio activando el relé 0 bastaría con hacer en un terminal curl 'http://192.168.1.205/?rele0on'
La línea de texto se imprime en formato Javascript, de esta manera es mi propio ordenador el que construye la página web de gestión y se comunica via JSON con el Arduino. De esta manera se evita sobrecargar de trabajo al Arduino haciéndole servir muchas Kb de datos y sobretodo se pueden hacer todos los cambios que se deseen sin tener que manipular ó andar desconectando la placa.
Materiales
Todos los materiales de riegos (mangueras, goteros, difusores, electroválvulas) los compré en Torre-Pacheco en distribuidor agrícola. Los componentes Arduino y sensores en distribuidores chinos. Estos son los componentes que estoy usando:
– SainSmart UNO ATMEGA328P-PU ATMEGA8U2 Microcontroller For Arduino, 11$.
– Ethernet Shield W5100, 6€
– Relay shield 8 canales, 6.3€
– Sensor humedad y temperatura DHT11, 2€
– Sensor humedad de suelo, 1.4€
Salva
#1/ 17 de June/2014 a 23:44:14
Otros comentarios de «Salva»
Esto es una pasada y no tiene precio. Gracias por el trabajo.
Sergi
#2/ 26 de September/2014 a 22:00:46
Otros comentarios de «Sergi»
Así es, como dijo Salva, no tiene precio la información que nos has compartido. No he tocado nunca nada relacionado con Arduino ni con electrónica, pero leyéndote a ti diría que todo es posible.
Gracias!
Un saludo!
Sergi
Trebol-a
#3/ 28 de September/2014 a 23:04:16
Otros comentarios de «Trebol-a»
Gracias a vosotros Sergi y Salva.
Efectivamente, o dicho de otra manera, si lo he podido hacer yo lo puede hacer cualquiera. Y no es falsa modestia ni tonterias. Mis conocimientos de electrónica son uno ó ninguno y como aquel que dice apenas acabo de comprender la corriente alterna y continua, pero mira a base de "ensayo/error" se puede llegar a regar el patio de forma automática, e aquí la prueba!! :D
León santiago Sánchez
#4/ 05 de October/2014 a 20:31:46
Otros comentarios de «León santiago Sánchez»
Hola, estoy intentando hacer algo muy parecido a tu proyecto. con una arduino YUN, hasta ahora estoy iniciando en el mundo de arduino y la electronica y mi hola mundo fue activar cualquier dispositivo desde internet por medio de la Ip por ejemplo 192.168.100.6/1 activar relay, 192.168.100.6/0 apaga relay. ya con esto riego las matas de mi patio desde el trabajo pero pasa que por razones laborales tengo que salir a zonas muy apartadas donde no cuento conectividad y no puedo efectuar el riego. acabo de adquirir un sensor de humedad de suelo. pero no tengo ni idea de programarlo por decir algo cuando la humedad del suelo llegue a 10% se active el sistema de riego hasta que llegue de nuevo a un 70% por ejemplo. es para ver si me puedes compartir esa linea de codigo para poder adaptarlo.
gracias a grandes personas como Tú, es que muchos novatos iniciamos de forma autodidacta en este mundo de la electrónica el cual me apasiona y hasta ahora estoy dando mis primeros pasitos.
León santiago Sánchez
#5/ 05 de October/2014 a 20:34:44
Otros comentarios de «León santiago Sánchez»
Hola Carlos, estoy intentando hacer algo muy parecido a tu proyecto. con una arduino YUN, hasta ahora estoy iniciando en el mundo de arduino y la electronica y mi hola mundo fue activar cualquier dispositivo desde internet por medio de la Ip por ejemplo 192.168.100.6/1 activar relay, 192.168.100.6/0 apaga relay. ya con esto riego las matas de mi patio desde el trabajo pero pasa que por razones laborales tengo que salir a zonas muy apartadas donde no cuento conectividad y no puedo efectuar el riego. acabo de adquirir un sensor de humedad de suelo. pero no tengo ni idea de programarlo por decir algo cuando la humedad del suelo llegue a 10% se active el sistema de riego hasta que llegue de nuevo a un 70% por ejemplo. es para ver si me puedes compartir esa linea de codigo para poder adaptarlo.
gracias a grandes personas como Tú, es que muchos novatos iniciamos de forma autodidacta en este mundo de la electrónica el cual me apasiona y hasta ahora estoy dando mis primeros pasitos.
Trebol-a
#6/ 05 de October/2014 a 22:55:28
Otros comentarios de «Trebol-a»
Hola Leon,
ten en cuenta que los sensores de humedad no tienen un precisión alta y además esta varía mucho a lo largo de un solo día. Hay que tener en cuenta el tipo de suelo en que están puestos, su compactación, su profundidad, la calidad del agua y cantidad de sales (conductividad eléctrica), etc, etc.. Las mejores lecturas las vas a tener en un suelo compacto, arcilloso y un tiempo después de que el sensor se haya "consilidado" en el suelo.
La programacion es muy sencilla. La mayoría de los sensores son analógicos y haciendo
int humedad=analogRead(pinSensorHumedad)
te dará un valor entre 0 (conductividad nula = sequía absoluta), 1023 (máxima conductividad = suelo encharcado)
Con una regla de tres tienes el porcentaje de humedad del suelo
p=(humedad * 100)/1024
Pero, repito, creo que el mejor uso para esa lectura del sensor de humedad es para leer "tendencias": EL SUELO SE ESTÁ SECANDO, EL SUELO SE ESTÁ REGANDO, y para construir tus propias medidas: si después de regar el sensor de dice que HUMEDAD=90% y al meterlo en una maceta seca que HUMEDAD=12%.. pues ya tienes un "estimación personalizada y local".... que tendrás que rehacer cuando lo cambies de maceta!! :D
Saludos
tabare
#7/ 28 de December/2014 a 18:50:52
Otros comentarios de «tabare»
Hola, muy bueno tu trabajo y gracias por compartirlo. Tengo una duda, como conectas el arduino (pongamos que está dentro en la casa) y el sensor de humedad que estará en el jardín (pongamos que a 20 metros del arduino)?
saludos y sigue adelante!
Trebol-a
#8/ 28 de December/2014 a 19:33:02
Otros comentarios de «Trebol-a»
Hola Tabare,
no lo he intentado alejar tanto, en mi caso el sensor está pinchando en una maceta apenas a 1,20 mts del Arduino.
No soy ningún experto en electrónica pero me extrañaría mucho que con la baja intensidad con que corren estos aparatos admitan poner un sensor "cableado" a 20 mts del Arduino. Creo que si esa es tu situación o te ingenias un método de transmissión de datos innalámbrico o buscas la manera de acercarlo al jardín.... o usar algún tipo de "potenciador" de señal que te permita alejarlo tanto... Suerte.
tabare
#9/ 28 de December/2014 a 19:41:54
Otros comentarios de «tabare»
muchas gracias por tu respuesta!
un saludo!
Luis
#10/ 07 de March/2015 a 00:09:52
Otros comentarios de «Luis»
Lo primero Felicitarte por este pedazo de proyecto!!!
Estoy en proceso de fabricacion de tu sistema de dispensador de comida para peces jejejejjeje
Podrias mandarme tu email para hacerte unas cuantas preguntillas referente a la aplicacion del movil??
Te lo agreceria porque ando un poco atrancado
Un saludo!!!
Trebol-a
#11/ 07 de March/2015 a 10:45:59
Otros comentarios de «Trebol-a»
Hola Luís, puedes usar el area de contacto para escribirnos a cualquiera de los que por aquí escribimos.
Saludos.
Marcos Vega
#12/ 17 de April/2015 a 19:01:44
Otros comentarios de «Marcos Vega»
Hola Buen día quisiera que me den una gran mano si puede ser, ya que quiero utilizar esto para aplicarlo en una escuela rural y no tengo ni la mas remota idea de electrónica,quisera saber si hay un tutorial de como hacerlo y donde conseguir todo. Hasta el codigo porque tampoco se programar. Pero me encantaría que los niños trabajen con esto porque realmente les va a servir mucho.
desde ya muchísimas gracias
Trebol-a
#13/ 18 de April/2015 a 08:47:11
Otros comentarios de «Trebol-a»
Marcos, en la página de Arduino tienes los tutoriales básicos para aprender a construir circuitos de Arduino, desde encender un led hasta girar un servo: http://www.arduino.cc/en/Tutorial/HomePage
Yo tampoco tengo ni puñetera idea, lo único que hice fue unir el tutorial "encender un led" y "girar un servo" :D
Saludos.
Andrés
#14/ 14 de May/2015 a 11:12:41
Otros comentarios de «Andrés»
Gracias por tu aportación. intentare hacerlo en mi balcón. vivo en un cuarto piso y me da un poco de reparo conectar una electrovalvula directamente a la instalación de agua, son seguras?
Repito gracias por compartir tu sabiduria.
Saludos.
Trebol-a
#15/ 14 de May/2015 a 12:00:10
Otros comentarios de «Trebol-a»
Mi instalación tiene dos electroválvulas (linea de microaspersores y linea de riego ) y llevan funcionando 24h/día durante un año sin problemas.
De estas instalaciones la parte "peligrosa" es que en mitad del proceso de riego falle la luz, al perder corriente (y siempre usando los relés según el sistema que he descrito en el apunte) simplemente se cortaría el riego. Es decir lo más grave es que las plantas no se regarían! :D
En sí mismas, las electroválvulas son un grifo, independientemente de la parte eléctrica se pueden abrir y cerrar manualmente, con lo cual es de suponer que como el resto de los grifos tendrán fugas con los años y tocará reemplazarlas. A priori nada grave.
Andrés
#16/ 14 de May/2015 a 16:55:53
Otros comentarios de «Andrés»
Gracias por tu rapida respuesta, como son pocas macetas creo que colocare un bidon de 25 litros por seguridad, lo que veo mas complicado es el tema de comunicación con el ordenador y menos atraves del movil, pues no tengo pajolera idea,supongo que habra algún tutorial que lo explique.
Saludos.
Esteve
#17/ 18 de June/2015 a 20:29:48
Otros comentarios de «Esteve»
Buenas que placa me recomiendas para poner en lugar de ethernet, poner wifi?
Saludos,
Trebol-a
#18/ 18 de June/2015 a 20:33:25
Otros comentarios de «Trebol-a»
Hola Esteve,
estoy deseándolo pero no he probado todavía ninguna Wifi. Sorry
JAVIER B
#19/ 19 de June/2015 a 10:29:58
Otros comentarios de «JAVIER B»
Hola,
felicitarte en primer lugar por el post de control online de riego. Empiezo ahora en el mundo del arduino, Una vez consigues leer los datos de los diferentes sensores, ¿como enviarlos a internet y poder visualizarlo? ¿como has implementado la aplicación para telefono móvil? Gracias.
Trebol-a
#20/ 19 de June/2015 a 12:39:13
Otros comentarios de «Trebol-a»
Hola Javier B. y gracias,
la tarjeta ethernet de Arduino se conecta por cable al router de casa, desde ese router ya es accesible desde el exterior y está en condiciones de servir páginas web que le incluya en el código Arduino, ahora bien... la potencia del Arduino como servidor web es (no lo he probado) más bien tirando a ridícula, en cuanto hubiera 4-5 conexiones simultáneas el sistema probablemente se vendría abajo.
Así que lo que he hecho es programar el Arduino para que sirva los datos de los sensores en formato JAVASCRIPT (Json) y "escuche" las órdenes dadas desde otro ordenador conectado a la red, NO PARA QUE ATIENDA VISITAS.
Si desde mi ordenador me conecto al Arduino lo que obtengo es esto:
Con esos datos es mi propio ordenador el que se conecta al Arduino periódicamente, recopila los datos y le da las órdenes oportunas. De esta manera el trabajo del Arduino es mínimo y no hay sobrecalentamiento: lee sensores y emite los datos y el estado general del sistema en un formato muy ligera, sencillo fácilmente interpretable desde una página web. Todo lo demás: construir una web accesible desde el exterior, control de visitantes, firewall, archivos CSS y javascript, formato smartphone, cálculos de evaporación, cálculos de riego, control de tiempos de riego, alimentación de los peces, etc... todo esto lo hace mi ordenador que tiene funcionando un servidor Linux 24h/día.
Hideki
#21/ 07 de May/2016 a 03:48:12
Otros comentarios de «Hideki»
hola buena noche no me quedo muy claro como haces para comunicar el arduino con tu pc o con tu aplicación android agradezco mucho tu respuesta
Trebol-a
#22/ 07 de May/2016 a 10:07:49
Otros comentarios de «Trebol-a»
Hideki, aquí está explicado con detalle
http://www.trebol-a.com/2015/06/25/servir-datos-de-arduino-en-una-pagina-web-ejemplo-de-uso/
Hideki
#23/ 20 de May/2016 a 01:52:52
Otros comentarios de «Hideki»
Hola trebol muchas gracias por tu ayuda intente hacer la implementacion pero me encontré con un problema al instalar el sensor de humedad se recalentó con los 12V
de resto aun no logro hacer funcionar muchas cosas cabe aclarar que omití la parte del motor servo mi duda de hoy es cuantos miliamperios usaban tus transformadores de voltajes 12 y 5v agradezco tu atención ten buena noche saludos
Trebol-a
#24/ 20 de May/2016 a 10:31:33
Otros comentarios de «Trebol-a»
Hola de nuevo Hideki,
creo que 12V directamente al circuito es demasiado, así incluso puede freir el Arduino. Si va a alimentar el sistema directamente (como en el esquema de arriba) deberías limitarte a 5-6V. Yo lo estoy haciendo con 6V y 1000 Mha.
Si vas a meterle 12V metelos a través del jack de alimentación de Arduino que para que la tarjeta se encargue en reducirlos.
Saludos.
Hideki
#25/ 21 de May/2016 a 01:51:49
Otros comentarios de «Hideki»
Hola trébol perdona lo intenso he intentado activar los reles con el comando antes mencionado pero solo activa el led y no abre la electro válvula sabes como podría solucionarlo agradezco mucho tu ayuda
Trebol-a
#26/ 21 de May/2016 a 10:53:53
Otros comentarios de «Trebol-a»
Hola Hideki, no puedo ayudarte, ignoro que puede estar fallando.
Hideki
#27/ 31 de May/2016 a 22:43:40
Otros comentarios de «Hideki»
Hola trébol buena tarde he logrado hacer que funcione el relee pero envía el pulso y automáticamente lo cierra, tienes algún parámetro que haga que el pulso del relee dure mas tiempo agradezco tu atención
Trebol-a
#28/ 31 de May/2016 a 23:29:49
Otros comentarios de «Trebol-a»
Hola Hideki,
a ver, el relé se conecta a un puerto digital de Arduino. En la programación le dices algo como «puertoRele.write(HIGH)» para abrirlo o «puertoRele.write(LOW)» para cerrarlo, no hay "grados de apertura", o está abierto o está cerrado. No hay parámetros para abrirlo más tiempo, simplemente tienes que hacer:
puertoRele.write(HIGH)
sleep(1000)
puertoRele.write(LOW)
para abrirlo un segundo o:
puertoRele.write(HIGH)
sleep(300000)
puertoRele.write(LOW)
para abrirlo 5 minutos
Si "salta" y se cierra es posible: A) Que esté conectado como analógico B) que esté funcionando Arduino con poca potencia y al requerirla porque el relé cambia se resetee!!
antonio pulcast
#29/ 02 de September/2016 a 10:33:12
Otros comentarios de «antonio pulcast»
buenas ante todo felicitarte buen proyecto...estoy investigando y poder implementar un proyecto similar al tuyo .. mi consulta es como as echo la conexión de la placa Ethernet Shield W5100 y la web .. si podrias detallarme lo un poco mas atendible gracias de anttemano me ayudaria mucho ..de ser posible podrias enviarme infomacion a mi correo jose18_1_94@hotmail.com
Trebol-a
#30/ 02 de September/2016 a 11:23:23
Otros comentarios de «Trebol-a»
Hola Antonio,
la placa Ethernet va montada sobre el Arduino UNO y tiene un conector para cable ethernet. Solo hace falta conectar mediante este cable la placa al router de casa y ya es accesible desde el exterior.
Saludos.
Mauricio
#31/ 12 de September/2016 a 08:33:53
Otros comentarios de «Mauricio»
Excelente trabajo!
Gracias por compartir!
JOSE ANTONIO PULACHE CASTRO
#32/ 07 de October/2016 a 05:24:24
Otros comentarios de «JOSE ANTONIO PULACHE CASTRO»
miconsulta es que como interpreta en html ...sobre la comunicacion json ..o como envio una orden a arduino a traves json desde una pagina html en un servidor ...no se si me dejo entender pero me seria de mucha ayuda si me enviaras a mi correo como hacerlo ..de ante mano gracias
Javi
#33/ 16 de October/2016 a 11:24:54
Otros comentarios de «Javi»
¿Qué modelos de electroválvulas has empleado? Muchas gracias! Por cierto, excelente proyecto.
Trebol-a
#34/ 16 de October/2016 a 17:53:29
Otros comentarios de «Trebol-a»
Hola Javi, y gracias.
Dos electroválvulas de 1 pulgada, 24V, marca rainbird. Creo recordar que las compré en el LeroyMerlín a 30€ cada una.
Como esta: http://r.ebay.com/L7BENU
18 de December, 2024 @ 10:51