Sistema de riego sencillo

El objetivo es construir un sencillo sistema de riego, que monitoree la humedad de la tierra de una maceta y riegue la misma una o dos veces al día.

En una primera instancia vamos a construir la electrónica y escribir un sencillo programa para controlar el flujo de agua, el sensor de humedad solo va a reportar el valor y lo utilizaremos de referencia para junto con un monitoreo a ojo de la tierra poder calibrar y saber los valores necesarios.

El circuito es sencillo, tenemos:

  • Un NodeMCU como cerebro de la operación.
  • Un sensor capacitivo de suelo.
  • Un relay para controla la bomba de agua.
  • Para la alimentación utilizaremos una fuente de 12v , y un modulo step down para bajar el voltaje a 5v; mas que suficiente para el NodeMcu y la bomba de agua.
Un diagrama básico de como va conectado todo.

Respecto del software, la forma de trabajar sera la siguiente:
– Los datos del sensor lo enviaremos a un servidor broker y a un canal de Thingspeak.
– El dispositivo se conectara a un servidor broker y estaría suscrito a un tema, al recibir el mensaje para activa la bomba, activa el relay durante un periodo de tiempo; este periodo se ira ajustando segundo lo que observemos que seria lo adecuado.

La idea de utilizar un relay se debe a que más adelante podríamos utilizar un válvula solenoide para manejar un mayor caudal de agua.

En el siguiente repositorio se encuentra la primera versión del programa:
https://github.com/gsampallo/IrrigationSystem

Dentro de la carpeta server, se encuentra el script para encender la bomba de agua.

Este es un proyecto en desarrollo por lo que en breve habrá mas noticias.

Leyendo datos de Thingspeak con MicroPython

Thingspeak es una de las plataformas más sencillas de utilizar cuando se incursiona en el mundo IoT, por un lado tenemos la potencia de Matlab que ayuda mucho si deseamos realizar algún análisis posterior a recabar los datos y por el otro su simpleza para utilizarla: solo basta registrarnos obtener un key e invocar a la librería adecuada.

En esta oportunidad nos interesa leer datos de Thingspeak desde MicroPython, tomaremos datos de un canal publico:

https://thingspeak.com/channels/548625/

Ofrece temperatura y humedad, datos sencillos, pero que nos sirven para testear el funcionamiento.

Thingspeak tiene la funcionalidad que ofrece la información de los canales públicos por medio de un JSON, desde donde podremos leer los datos, para acceder a los datos utilizaremos la url: https://api.thingspeak.com/channels/548625/feeds.json

(Simplemente luego del nro. del canal agregamos feeds.json)

Si la abrimos en el navegador, tendremos todos los datos publicados desde las ultimas horas, debemos tener en cuenta de ajustar la fecha y hora a la zona horaria correspondiente.

Si empleamos la web http://jsonviewer.stack.hu/ podremos ver el json en un formato que resulta mas fácil de interpretar, solo debemos presionar el botón «Load JSON Data» y copiar la url, debemos reemplazar https por http, puesto que jsonviewer no soporte https; luego tendremos un vista como la siguiente:

Como solo nos interesa la ultima medición emplearemos el argumento result para que nos devuelva solo un resultado:
https://api.thingspeak.com/channels/548625/feeds.json?results=1

Para leer los datos realizamos:


1
2
3
4
5
6
7
8
9
10
11
12
13
import json
import network
import urequests
import wlan

wlan.do_connect()

consulta = urequests.get("https://thingspeak.com/channels/548625/feeds.json?results=2")
data = consulta.json()

temp = data["feeds"][0]["field1"]

print("Temperatura: ",temp)