Proyecto de una red de telemetría para el censado de variables ambientales (temperatura Aire, humedad Aire, temperatura Tierra, Humedad Tierra y Luz) dentro de un invernadero, con el fin de realizar un análisis de dichos datos, para que posteriormente sean guardados en la plataforma de servicios de la nube de Firebase, implementado los servicios de FireStore (Base de Datos) y Storage (Almacenamiento de contenido Multimedia). Esta información es presentada en una Aplicación Web llamada: Telemetry Iot, este proyecto se encuentra en GitHub TelemetryIot
En este repositorio se explica cómo se estructura la red de Telemetría, los sensores utilizados, el funcionamiento básico de la red, el protocolo de comunicación implementado y los servicios creados.
La red de telemetría se encuentra ubicado en un Invernadero, del municipio de la Calera, Cundinamarca. Cuenta con cinco nodos y un Gateway, estos se componen principalmente de:
- Microcontrolador ESP8266 de Espressif
- Transceptor NRF24L01+ de Nordic Semiconductor
- Sensor de Temperatura y Humedad DHT21 (Temperatura Aire y Humedad Aire)
- Sensor de Temperatura DS18B20 (Temperatura Tierra)
- Sensor DE Humedad del suelo YL-69 (Humedad Tierra)
- Sensor de Luz BH1750 (Luz Ambiente)
- Raspberry pi 3
- Transceptor NRF24L01+ de Nordic Semiconductor
La dimensión del invernadero es de 6m x 5.6m, así que la distribución y ubicación de los nodos se realiza de acuerdo con la siguiente imagen:
Las coordenadas de cada nodo en el invernadero son:
Nodo | Coordenada |
---|---|
Nodo Uno | (5.8m, 2m) |
Nodo Dos | (0.1m, 1.4m) |
Nodo Tres | (3m, 2.3m) |
Nodo Cuatro | (5.1m, 5.1m) |
Nodo Cinco | (0.1m, 5.1m) |
El Gateway no se encuentra ubicado en el invernado, pero está ubicado aproximadamente 12 metros, respecto al invernadero.
Los nodos funcionan mediante la alimentación de baterías y/o de la red eléctrica. El despliegue de estos se realiza de acuerdo a las coordenadas dadas. La estructura de cada nodo es a partir de PVC y cajas IP 55, tienen una altura de aproximadamente 1.1m
Cada nodo se entierra a 35cm, esto con el fin de evitar que la estructura caiga, y los sensores del suelo puedan estar cubiertos, todos los censores del suelo (Temperatura Tierra, Humedad Tierra) están enterrados a 5 cm.
Como se mencionó al principio, los sensores implementados en cada nodo son:
- Sensor de Temperatura y Humedad DHT21 (Temperatura Aire y Humedad Aire)
- Sensor de Temperatura DS18B20 (Temperatura Tierra)
- Sensor DE Humedad del suelo YL69 (Humedad Tierra)
- Sensor de Luz BH1750 (Luz Ambiente)
Este sensor, también es conocido como: AM2301, y cuenta con las siguientes características:
Característica | Valor |
---|---|
Alimentación | 3.3v - 5.5v |
Corriente | 1mA - 1.5mA |
Rango Medición | -40°C - 80°C |
Resolución | 16 Bits |
Precisión | ±0.5°C |
La biblioteca de DHT21 para ser programado en Arduino, se encuentra en: https://github.com/adafruit/DHT-sensor-library
Este sensor, de tipo sonda antifluido, cuenta con las siguientes características:
Característica | Valor |
---|---|
Alimentación | 3.3v - 5.5v |
Corriente | < 60uA |
Rango Medición | -55°C - 125°C |
Resolución | 9 Bits - 12 Bits |
Precisión | ±0.5°C |
La biblioteca de DS18B20 para ser programado en Arduino, se encuentra en: https://github.com/matmunk/DS18B20
Este sensor es análogo para la medición de la humedad, por lo tanto, es necesaria su caracterización, para ello puede revisar el siguiente link. Este sensor cuenta con las siguientes características:
Característica | Valor |
---|---|
Alimentación | 3.3v - 5v |
Voltaje Salida | 0v - 4.2v |
Corriente | < 35mA |
Salida de Medición | Análoga y Digital |
Salida Digital | Ajustar el nivel de tensión |
Este módulo no necesita de una biblioteca para ser utilizado
Cuenta con las siguientes características:
Característica | Valor |
---|---|
Alimentación | 2.4v - 3.6v |
Corriente | 7mA |
Rango Medición | 0.11 Lux - 100000 Lux |
Resolución | 16 Bits |
La biblioteca de BH1750 para ser programado en Arduino, se encuentra en: https://github.com/claws/BH1750
El funcionamiento básico de la red de telemetría consiste en la ejecución repetitiva de dos servicios, el primer servicio trata que, en cada uno de los nodos se debe de realizar el censado de cada variable ambiental, empaquetarlo y enviarlo al Gateway quien recibe y guardar los datos, para luego dormir el nodo por 30 minutos y volver a iniciar el proceso; El segundo servicio se centra en el Gateway, este cada hora, valida si existen nuevos datos registrados, para luego, organizarlos, promediarlos, analizarlos creando mapas de calor según los datos de cada variable y enviarlos a la nube, en donde esta información se encontrará estructurada. De acuerdo con lo anterior, se debe resaltar que:
- El código de los nodos se programó mediante el IDE de Arduino.
- Siempre se ejecutan dos Scripts (Servicios) en el Gateway, estos corresponden a: recibir los paquetes de datos censados de los nodos, y de analizar y enviar la información a la nube.
- Los servicios generados se realizan mediante Systemd, los cuales siempre se están ejecutando y se inician si se reinicia o enciende la Raspberry
- El servicio de la comunicación con la red de Telemetría se programó en C++
- El servicio del análisis y envió de información a la nube se programó en Python
Así mismo, se explica la lógica de programación de cada servicio y nodo del proyecto
- Scripts de Arduino - Thing
- Servicio - Comunicación con la red de telemetría
- Servicio - Envío de información a la nube
Este proyecto utiliza los Transceptores NRF24L01+ de Nordic Semiconductor, y se trabaja con el protocolo de comunicación de dicho transceptor, para el desarrollo del proyecto se trabaja con la librería RF24Network de TMRh20, para mayor información del funcionamiento básico del transceptor puede revisar en los siguiente enlaces:
- How nRF24L01+ Wireless Module Works
- Newly Optimized RF24Network Layer 2020
- Newly Optimized RF24Network Layer 2020
- COMUNICACIÓN INALÁMBRICA A 2.4GHZ CON ARDUINO Y NRF24L01
- Tutorial básico NRF24L01 con Arduino
AgroIot tiene la licencia MIT