Carolina Herrero nos propone un sistema de un sistema automatizado para riego que ademas no precisa de conexión a Internet porque todas las medidas se gestionan de forma interna y por tanto no precisan ningún servicio de IoT para su funcionamiento ( como por ejemplo Cayenne.com del que hemos hablado numerosas ocasiones en este blog)
La idea principal de Carolina era construir un sistema de riego automático, controlado por diferentes tipos de sensores, de forma que el sistema tomase decisiones de modo automático guiándose en función de las condiciones del ambiente y la necesidad de riego que tiene la tierra según el grado de humedad de modo que cuando las condiciones fuesen óptimas comenzase el riego(, siempre y cuando exista agua en el depósito)
Además su creadora también quería que los datos se almacenaran de forma periódica en una base de datos local mySQL , y a través de una aplicación Web, con sus credenciales poder acceder y ver un histórico gráfico de las mediciones de los sensores .
Para conseguir esto básicamente ha utilizado:
Varios Sensores
Una placa Microcontroladora
Un Servidor local
Sensores
El sistema utiliza diferentes tipos de sensores, porque se requiere controlar diversos valores como son :
Valores de la humedad de la tierra para lo que se usa un sensor conocido como YL-69, que consiste en dos picas que se encuentran enterradas en tierra de manera que controlando la resistencia de la tierra se puede conocer la humedad.Esta es una herramienta indispensable para un jardín conectado pues por si mismo nos puede recordar que debe regar las plantas de interior o para monitorear la humedad del suelo en su jardín . Se alimenta a: 3.3V-5V y el modo de módulo de salida dual, salida digital, salida analógica más precisa
Para recoger los valores de humedad y temperatura ambiente se utiliza un simple sensor DHT11 (si bien un DHT22 hubiese sido mas recomendable por su mayor precisión , aunque es cierto que su coste es algo mayor)
De la temperatura del suelo se encarga el DS18B20, un sensor sumergible y resistente a la humedad, que se usará para controlar la temperatura de la tierra.
Por seguridad, y para evitar que las bombas funcionen en vacío, y puedan dañarse, es imprescindible controlar el nivel de agua que hay en el depósito, y estos se consigue con un sensor de nivel .Estos sensores pueden medir humedad entre el 10% -90% sin condensación con un consumo de menos de 20mA y ofreciendo una salida analógica con un área de detección de 40mmx16mm
Por último controlar si hay luz o no, para evitar el riego de noches se ha usado un sensor de luz, también conocido como resistencia LDR.
Arduino
El encargado de recoger todos los valores procedentes de los sensores descritos y tomar las acciones necesarias es una placa sistema Arduino que ha sido programado para recoger datos, actuar en función de los valores de dichos datos, y en última instancia se encarga de mandarlos a un servidor ( una Raspberry Pi) para su seguimiento estadístico de modo que en principio si no nos interesa seguir esa traza perfectamente el proyecto quedaría únicamente con esta placa y sus sensores .
Aquí su autora comparte una parte del código encargado de recoger los datos, y enviarlos por el puerto serie.
//Función que se encarga de leer datos de todos los sensores
void leer_datos_sensores(){
valor_ha = dht.readHumidity();//Se lee la humedad en el ambiente
valor_ta = dht.readTemperature();//Se lee la temperatura en el ambiente
valor_ht1 = analogRead(hum_tierra1);//Se lee humedad en tierra en la zona1
valor_na = analogRead(nivel_agua);//Se mide el nivel de agua existente en el depósito
valor_luz = analogRead(luz_ldr);//Se lee la luz
DS18B20.requestTemperatures();//Prepara el sensor para la lectura
valor_tt1 = DS18B20.getTempCByIndex(0);//Se lee la temperatura en tierra en la zona 1
}
//Función para enviar valores de los sensores por el puerto serie
void enviar_datos(){
Serial.print(valor_ha);Serial.print(“,”);
Serial.print(valor_ta);Serial.print(“,”);
Serial.print(valor_ht1);Serial.print(“,”);
Serial.print(valor_na);Serial.print(“,”);
Serial.print(valor_luz);Serial.print(“,”);
Serial.print(valor_tt1);Serial.print(“,”);
}
Servidor web y BBDD
Como servidor no podía ser de otra manera que optar por una Raspberry PI conRaspbian, basada en Debian y que hace de servidor Base de Datos, y además también de de Servidor Web.
Como servidor web se usa el Servidor Web Apache funcionando junto con MySQL como servidor de BBDD.
Además para que Arduino y Raspberry se comuniquen entre sí, se requiere un script en Python, que se encarga de recibir los datos por el puerto Serie que Arduino está enviando de forma constante .
Básicamente este script recibe los datos de Arduino , se conecta con la BBDD MySql e inserta los datos.
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import MySQLdb
import serial
# Establecemos la conexión con la base de datos
bd = MySQLdb.connect(“host”,“user”,“pass”,“db”)
# Preparamos el cursor que nos va a ayudar a realizar las operaciones con la base de datos
cursor = bd.cursor()
#Inicia la comunicación con el puerto serie
PuertoSerie= serial.Serial(‘/dev/ttyACM0’,9600)
#Lectura de datos
sArduino = PuertoSerie.readline()
#Separa la cadena en valores, cada valor hasta la coma es almacenado en una variable
#Almacenamos los valores en tabla datos de la base de datos huerto
sql1=“INSERT INTO datos_huerto(hum_ambiente,temp_ambiente,hum_tierra,nivel_agua,luz,temp_tierra,id_zona) VALUES (%f,%f,%d,%d,%d,%f,%d)” % (ha,ta,ht1,na,luz,tt1,zona1)
try:
# Ejecutamos el comando
cursor.execute(sql1)
bd.commit()
except:
print“Error”
bd.rollback()
# Nos desconectamos de la base de datos
bd.close()
Para se hacer esto de forma periódica pero no constante, puede usarse la herramienta Cron integrada en Raspbian, de manera que cada “X” minutos se ejecute el script en Python.
Para la parte de visualización de los datos la autora opto por o una aplicación Web sencilla, programada n Php, junto con pequeñas funciones en Javascript para controlar y validar ciertos campos. En el aspecto visual uso el framework Bootstrap, asi como la librería HighCharts para la creación de gráficas y así conseguir visualización de los datos muy atractiva.
Es muy importante que si le damos salida a internet a La Rasberry PI nos cercioremos de que está segura. Para ello es interesante :
Modificar el archivo de configuración de Apache, para que ante un ataque muestre la mínima información posible sobre el servido
Encriptar el tráfico entre cliente y servidor mediante certificados SSL
Forzar para que el acceso siempre sea seguro vía peticiones del tipo HTTPS.
Finalmente esta es la lista de componentes utilizados para el sistema:
Recipientes para depósito de agua y electrónica x2
Tarjeta SD para Raspberry PI x1
Tubos de goteo x2
Plantasx 6
Fuente de alimentación 220V x1
Le damos nuestra mas sincera enhorabuena a Laura por su sistema que animamos a que siga perfeccionando así como compartiendo con la comunidad todos sus progresos
El Flower Power de Parrot es un novedoso dispositivo fabricando por la famosa firma francesa Parrot( especializada en el uso de tecnología Bluetooth), que se coloca junto a las plantas,( pues el radio de acción es de 10 centímetro) en forma de un pequeño tronco que es capaz de tomar lecturas de humedad,luz,ph y temperatura para ser consultados desde una aplicación en un smartphone.
Al simular otra planta cuenta con una “raíz” para medir la humedad y cantidad de fertilizante de la tierra mediante dos sensores de ph y humedad asi como la temperatura en el tronco, completando el conjunto una rama que alberga una pila, tipo AAA (que dura seis meses), y la otra rama el sensor de luz encargándose de informarnos qué tal van las cosas en nuestras plantas mediante la medición de temperatura, humedad, y condiciones de fertilizante avisandonos a nuestros smartphones si nuestra planta favorita está necesitada de un poco más de luz o agua, para que tomemos las medidas pertinentes.
Para empezar a usarlo es necesario instalarse la aplicación gratuita creada al efecto, de momento solo para iPhone e iPad, (pero insisten en que en pocas semanas también estará para algunos modelos de Android con bluetooth de bajo consumo). Después toca escoger entre 2.000 categorías, después el tipo concreto de cultivo entre 6.000 tipos de plantas árboles y vegetal. Vale tanto para unos geranios, como para cilantro, una mata de tomate o unas zanahorias. Parrot insiste en que el catálogo de plantas va a ir en aumento.
Cada 15 minutos la aplicacicon , comprueba el estado general del ser vivo y lo actualiza en el móvil o tableta. Las gráficas se pueden consultar en tiempo real. A partir de estos datos crea las estimaciones a largo plazo. Si todos los iconos están en verde, todo está bajo control. Si aparecen en rojo es necesario realizar una acción. En este caso, se acompaña de una alerta.La aplicación asimismo avisa con una notificación cuando algo falla o hay que regar
A medida que se usa, mejora. Poco a poco conoce mejor la evolución de la planta. Tanto es así que si se va de viaje hace una estimación de cuando habría que renovar el sustrato. Envía consejos y permite avisar a un contacto para que se encargue de su cuidado.
La aplicación hace seguimiento de tantos sensores como desee:ya sea una sola planta o toda una hilera con el mismo cultivo e incluso todo un huero , eso sí en caso de tener varias especies en el jardín, habría que comprar más unidades aunque todas se monitor izarían desde el mismo terminal.
Por ahora solo compatible con iPhone, pero prometen que la apliacion tambien llegara a Android. Se puede elegir entre verde, marrón o azul, para que no desentone demasiado con el resto de las plantas y costará unos 50€ ¿Interesante verdad?