agromaster
Desarrollo
Uno
Hardware

Placa solar y batería

Electroválvula

Arduino

LoRa

Sensores
Dos
Montaje
Información detallada
El esquema final del prototipo es el siguiente:
En cuanto al montaje del sistema de suministro eléctrico, se realizarán las siguientes conexiones:
– El puerto de conexión positivo se debe de conectar al borne positivo de controlador destinado a la carga.
– El puerto de conexión negativo se debe de conectar al borne negativo de controlador destinado a la carga.
– El puerto GND libre se debe de conectar a un punto de una de las líneas verticales de la protoboard para facilitar la conexión de otros elementos.
Tres
Desarrollo del sistema

Funcionamiento
El objetivo del proyecto será crear un sistema funcional que pueda ser desplegado en una explotación agrícola…

Metodología
El desarrollo del proyecto se realizará de manera muy secuencial ya que sin un prototipo que funcione no se podrá seguir.

Programación
Se han tenido que desarrollar dos programas, uno para controlar el Arduino, y otro para manejar las comunicaciones.
Testeo de los sensores
Se ha estudiado diferentes sensores que se podrían utilizar para monitorizar la humedad del terreno en una explotación.

Comunicación LoRa
La tecnología LoRa proporciona distintas maneras de operar entre el microcontrolador y la plataforma.

Cuatro
Puesta en marcha
Una vez finalizado el prototipo se ha procedido a las puesta en marcha en la Escuela Universitaria de Ingeniería Agrícola INEA.
Controlador de Carga Solar, 12V/24V
El controlador de carga solar se coloca entre el campo fotovoltaico y el campo de baterías y se encarga de controlar el flujo de energía que circula entre ambos equipos. El control del flujo se realiza mediante el control de los parámetros de Intensidad (I) y Voltaje (V). Depende del estado de flujo de carga de las baterías y de la energía generada por el campo fotovoltaico.
Placa Solar
La placa solar va conectada al controlador. Las características nominales de la placa son:
- DC 5V
- 3 A
No obstante, la tensión real que es capaz de suministrar la placa solar es de entre 12 y 18 V.
Batería
La batería de litio tiene una carga rápida, buena duración y mayor vida útil. Esta batería permite el almacenamiento de energía y la independencia de otras fuentes energéticas para el funcionamiento del sistema.
Características:
• Capacidad: 8 Ah
• Voltaje: 12 V
• Voltaje de carga: 14.5 V
• Máxima corriente de carga/descarga: 10 A
• Temperatura de carga: 0-55 ºC
• Temperatura de descarga: -20-55 ºC
CÁLCULOS DEL RENDIMIENTO DE LA PLACA SOLAR
Se han hecho los siguientes supuestos:
- La electroválvula consume: 12(V)·1.8(A)=21.6(W)
- El consumo de un ciclo (de encendido o apagado) solo se da durante 10ms. Se puede estimar en: 21.6(W)·0.01(s)·(1(h)/3600(s))=6e−5(Wh)
- Suponiendo que toda la batería, con una capacidad de 96 Wh, se dedicase solamente a abrir y cerrar la electroválvula, podríamos realizar: 96(Wh)/(2·6e−5(Wh))=8e5(ciclos de apagado y encendido)
Existen 2 ciclos de igual duración: encendido y apagado.
Para calcular el tiempo necesario para descargar completamente la batería si no hubiese carga solar y el único consumo de batería fuese por el cierre y apertura de la válvula (sin tener en cuenta el consumo de la placa de Arduino) y en función de la duración de cada ciclo de encendido y apagado (la mitad de ese tiempo estaría apagado y la otra mitad encendido) podemos obtener las siguientes ecuaciones:
En segundos de ciclo: (250/27)·X (segundos/ciclo)=Y(días hasta descarga de batería)
En minutos de ciclo: (5000/9)·X(minutos/ciclo)=Y(días hasta descarga de batería)
En horas de ciclo: (100000/3)·X(horas/ciclo)=Y(días hasta descarga de batería)
A modo de ejemplo, si realizamos un ciclo de apertura cada 20 segundos necesitaremos:
Para el caso del Arduino MKR WAN 1300:
A estas cifras hay que añadir el tema de la descarga de la batería por consumo de Arduino y de ahí la realización del ensayo en laboratorio para determinar el tiempo de la descarga completa que se intuye que debe de ser mucho menor. El consumo del Arduino MKR WAN 1300 se mide con la intensidad a la salida de la batería de 12V y, por tanto: 12(V)·0.149(A)=1.788(W)
Por lo tanto, el tiempo de uso de la batería viene dominado por el consumo del Arduino estimando: 96(Wh)/1.788(W)=53.69(h)= 2.23(días hasta descarga de batería)
Electroválvula Rain Bird X12105 Electroválvula de riego LFV, bajo caudal, 9V, 3/4″
Este tipo de electroválvula (DC) funciona permitiendo o cerrando el paso de agua a través de la electroválvula por medio de pulsos de corriente. El pulso que abre la electroválvula es de sentido opuesto al pulso que la cierra.
Arduino MKR WAN 1300 (conectividad LoRa®)
Este dispositivo es utilizado como microcontrolador para conectarse a otros dispositivos o interactuar con ellos. Incluye un módulo de radio LoRa imprescindible para las comunicaciones.
Junto al Arduino, se han necesitado realizar diversos ajustes para permitir utilizar distintos sensores y las electroválvulas por sus diversas características eléctricas e incompatibilidades.
Es por esto que el Arduino se colocó en una perfboard y se realizaron diversos circuitos de adaptación. Para los circuitos, se han necesitado los siguientes componentes:
- Regulador de tensión a 5V L78 [5]
- Driver doble L298 [6]
- Diodos Schottky
- Elementos pasivos (Resistencias y condensadores)
- Transistores 2N3906 y 2N3904
Kit de desarrollo LoRaWAN The Things Industries TTIG-868, frecuencia 868MHZ
Se utiliza como puerta de enlace o punto central de conexión entre los nodos y el servidor de red.
Para permitir las comunicaciones entre un PC y un dispositivo que envía señales a través de LoRa, se requiere de un Gateway que traduzca los paquetes LoRa a paquetes IP que pueda recibir. En este caso, se realiza a través del Indoor Gateway de The Things Industries adaptado a la frecuencia europea. En cuanto al PC, cualquier ordenador con que soporte Python debe ser capaz de usar este sistema.
Sensor de humedad (Capacitive Moisture Sensor (CorrosionResistant))
Este sensor de humedad del suelo está basado en cambios de capacitancia.
Se ha realizado una comparativa de este sensor capacitivo con un sensor resistivo.
Resistive Soil Moisture Sensor Icstation
Estos sensores miden la variación de la impedancia eléctrica de un medio.
Para comprobar la validez de los datos de medida de los sensores y seleccionar el que más se adapta a las necesidades del proyecto se realizaron una serie de pruebas con el sensor Teros 10.
En concreto, el Teros 10 se eligió para ser el sensor de referencia al venir calibrado de fábrica permitiendo luego comparar sus medidas con los demás.
Funcionamiento
El objetivo del proyecto será crear un sistema funcional que pueda ser desplegado en una explotación agrícola y nos permita recibir datos de manera periódica sobre el estado actual del terreno, y enviar a la zona un esquema de riego concreto según especificaciones del usuario. Se desarrollará una aplicación de escritorio que permita realizar estas acciones abstrayendo lo máximo posible al usuario de su funcionamiento.
El Arduino tendrá conectado un o varios sensores de humedad y una o varias válvulas. Es importante dimensionar una fuente de energía independiente de la red eléctrica debido a que en muchas zonas rurales, no llega el suministro eléctrico.
Es necesario utilizar una puerta de enlace o punto central de conexión entre los nodos y el servidor de red. En cuanto a estas comunicaciones entre el usuario y el sistema, nos apoyaremos en dos protocolos diferentes: LoRa, y MQTT. Las conexiones con LoRa permiten describir una especificación para comunicaciones de largo alcance y poca potencia, especializándose en su uso para dispositivos de bajo consumo y largo alcance y se realizarán a través de un gateway.
El funcionamiento una vez se conecte el Arduino a una fuente de energía a 12V, es empezará a buscar el Gateway para conectarse a la aplicación de la plataforma y comenzar con la sincronización con la aplicación. Mandará mensajes cada dos minutos hasta recibir algún mensaje de la aplicación. A partir de ese momento, pasará a enviar mensajes cada 7 minutos con el valor leído de la humedad y, si recibe algún paquete con el esquema a seguir del riego, empezará a llevarlo a cabo.
El Gateway se conecta a una red WIFI y será el que traduzca los mensajes LoRa a IP y viceversa. Desde el lado de la aplicación, esta debe estar abierta para recibir los datos y, desde esta, se controlará el riego y se visualizará el estado del terreno.
Metodología y plan de trabajo
El desarrollo del proyecto se realizará de manera muy secuencial ya que sin un prototipo que funcione no se podrá seguir. Para el desarrollo de la placa de Arduino y su interconexión con los componentes se utilizarán tanto herramientas físicas como de
simulación. De cara a la programación del Arduino, se utilizará la aplicación propia para el desarrollo. En cuanto a la conexión de componentes y su alimentación externa como es para
la electroválvula, se utilizarán programas de simulación como LTSpice que nos permitirán hacer un primer diseño antes de implementarlo y, tras esto, comprobar su funcionamiento en
el laboratorio con la ayuda de multímetros y osciloscopios. El esquema de conexión y diseño de PCB serán registrados a través de KiCad.
Para la parte del servidor, se desarrollará en Python utilizando diferentes librerías existentes.
Para la interfaz de usuario se utilizará la librería de PySimpleGUI, para la representación de datos de humedad de la placa se utilizará matplotlib, y en cuanto a la organización de horarios se utilizarán librerías de fechas como dateutil. En cuanto a la interconectividad con el Arduino, la placa se comunicará con un Gateway de TheThingsNetwork el cuál traducirá el mensaje a IP y lo enviará a la plataforma de TheThingsStack donde monitorizamos las comunicaciones. A partir de aquí, para comunicarnos con la aplicación que crearemos se utilizará la integración existente de MQTT con subscripciones a los distintos eventos que se
generarán tanto de envío de datos como recepciones.
Programación
A lo largo de este proyecto se han tenido que desarrollar dos programas, uno para controlar el Arduino, y otro para manejar las comunicaciones desde el ordenador. El programa de escritorio se ha desarrollado en Python, y para su desarrollo se ha utilizado el IDE de VSCode. Por otro lado, el desarrollo en Arduino se ha realizado en el propio IDE que proporcionan.
Otros programas que se han utilizado han sido KiCad para el diseño de circuitos y creación del esquema de conexiones, y la plataforma de TheThingsIndustries para monitorizar las comunicaciones y conectar la aplicación con el Arduino.
El bucle principal del programa consistirá en una serie de etapas por las que pasará con el fin de conectarse correctamente el arduino y poder entrar en el ciclo de envío y recepción. Se puede ver este ciclo de una manera muy simplificada en el siguiente diagrama:
Para la recepción de paquetes en las comunicaciones desde el PC al Arduino, se ha diseñado un paquete que contará con secciones para pasarle un esquema de riego, además de acciones instantáneas de apertura y cierre de las válvulas.
La aplicación de escritorio se ha pensado con el objetivo de que sea esta la que maneje los datos que se reciben periódicamente del Arduino, además de que contenga una interfaz gráfica para un manejo más simple de esta.
Se ha creado una interfaz gráfica con dos pestañas. La primera controla la muestra de datos y la segunda controla el envío de paquetes de Arduino.
Testeo de los sensores
Se ha estudiado diferentes sensores que se podrían utilizar para monitorizar la humedad del terreno en una explotación agrícola. Para esto, se han utilizado tres sensores distintos: el sensor de humedad Teros10 como referencia, un sensor capacitivo y uno resistivo.
En el caso del Teros10, mide la permitividad eléctrica del terreno. y
utiliza una frecuencia de 70MHz para realizar las lecturas lo que le permite minimizar lecturas erroneas. Es un sensor muy confiable de gran precisión cuya documentación nos proporciona ecuaciones que nos permiten obtener el contenido volumétrico de agua (VWC
en inglés) según el tipo de suelo en el que estemos colocando el sensor. Este sensor ha sido utilizado para calibrar y revisar las lecturas del sensor capacitivo y el resistivo.
Se han realizado diferentes medidas a diferentes niveles de humedad con el objetivo de realizarlas a la vez con los otros dos sensores y así poder construir una curva de calibración para cada uno que permita utilizarlos en vez del Teros 10 ya que estos sensores, permiten reducir los costes del producto final.
Analizando los resultados, el sensor capacitivo utilizado que en nuestro caso es el Grove capacitive Moisture Sensor, se ha mostrado útil para determinar la humedad dentro del rango entre 0 y 30 %. A partir de este valor, el sensor parece saturarse y no consigue diferenciar mayores concentraciones de agua en el sustrato.
Por otro lado, el sensor resistivo Octopus Moisture Sensor de Elecfreaks ha resultado ser bastante impredecible en las lecturas.
Comunicación LoRa
La tecnología LoRa proporciona distintas maneras de operar entre el microcontrolador y la plataforma. Dentro de la especificación, se describen tres clases de dispositivos: clase A, B y C. La principal diferencia entre ellos es cuándo el dispositivo atiende a recepción de paquetes. En el caso de la clase A, solo permite la recepción inmediatamente después de enviar este un paquete, haciéndolo óptimo para sistemas donde la inteligencia este en un nodo central y los dispositivos solo actúen como transmisores de datos de un sensor, por ejemplo. La clase B permite abrir la ventana de recepción periódicamente a través de pings regulares, lo que permite realizar más fácilmente pequeñas correcciones o acciones de control sobre los nodos externos de nuestra red. Por último, la clase C destaca por poder abrir su ventana de recepción de manera continua.
En este caso, se decidió utilizar el dispositivo en modo de clase B.
Otro elemento a tener en cuenta a la hora de desarrollar nuestro programa es el modo de conexión del microcontrolador con la plataforma de TheThingsStack. En el caso de LoRa, existen dos métodos; Over-the-air-activation (OTAA), y Activation By Personalization (ABP). En el caso de ABP, las direcciones utilizadas para conexión son escritas en el dispositivo, mientras que con OTAA las direcciones y claves son negociadas entre la red y el dispositivo aportando una mayor seguridad. Es por esto que por defecto se recomienda el
uso del modo OTAA.
Una vez teniendo claro cómo va a actuar nuestro módulo LoRa, para conectar el microcontrolador con la plataforma hay que registrarlo utilizando su DevEUI y obtener una APP-EUI y una APP-KEY.
Para configurar y operar el módem se utiliza la librería de MKRWAN que incluye todas las funciones que podamos necesitar.