{"id":20822359,"url":"https://github.com/potier97/agroiot","last_synced_at":"2026-04-12T12:34:27.348Z","repository":{"id":169231773,"uuid":"286714574","full_name":"potier97/AgroIot","owner":"potier97","description":"Iot sensor network to survey, analyze and send data on environmental variables (temperature, humidity, light, thermal sensation) to the Firebase cloud services platform (FireStore and Storage), through a Gateway (Raspberry Pi), communicating through NRF24L01 transceivers and RF24Network protocol communication.","archived":false,"fork":false,"pushed_at":"2020-10-27T01:45:48.000Z","size":51655,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-18T16:50:12.316Z","etag":null,"topics":["arduino","firebase","gateway","iot","kriging","makefile","matplotlib","nrf24l01","pandas","raspberry-pi","rf24","rf24network","systemd"],"latest_commit_sha":null,"homepage":"https://telemetry-iot.herokuapp.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/potier97.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-11T10:27:13.000Z","updated_at":"2024-01-31T12:19:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8b4ad0e-5849-4188-99ae-f265bb2135ca","html_url":"https://github.com/potier97/AgroIot","commit_stats":null,"previous_names":["potier97/agroiot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potier97%2FAgroIot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potier97%2FAgroIot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potier97%2FAgroIot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/potier97%2FAgroIot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/potier97","download_url":"https://codeload.github.com/potier97/AgroIot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243169823,"owners_count":20247630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","firebase","gateway","iot","kriging","makefile","matplotlib","nrf24l01","pandas","raspberry-pi","rf24","rf24network","systemd"],"created_at":"2024-11-17T22:14:43.474Z","updated_at":"2025-12-24T12:54:13.230Z","avatar_url":"https://github.com/potier97.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"logo.png\"/\u003e\u003cbr/\u003e\n  \u003ca href=\"https://telemetry-iot.herokuapp.com/\"\u003eAgroIot\u003c/a\u003e\n\u003c/h1\u003e\n\n\nProyecto 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](https://firebase.google.com/), 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](https://telemetry-iot.herokuapp.com), este proyecto se encuentra en GitHub [TelemetryIot](https://github.com/potier97/TelemetryIot)\n\nEn 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.\n \n\n## Resumen: \n  - [Estructura](https://github.com/potier97/AgroIot#estructura)\n  - [Sensores](https://github.com/potier97/AgroIot#sensores)\n  - [Funcionamiento](https://github.com/potier97/AgroIot#funcionamiento)\n  - [Protocolo](https://github.com/potier97/AgroIot#protocolo)\n\n\nLa 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:\n\n#### Nodos\n1. Microcontrolador [ESP8266](https://www.espressif.com/en/products/socs/esp8266) de Espressif\n2. Transceptor [NRF24L01+](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) de Nordic Semiconductor\n3. Sensor de Temperatura y Humedad [DHT21](https://mikroshop.ch/pdf/DHT21.pdf)  (Temperatura Aire y Humedad Aire)\n4. Sensor de Temperatura [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf)  (Temperatura Tierra)\n5. Sensor DE Humedad del suelo [YL-69](https://saber.patagoniatec.com/2014/11/sensor-de-humedad-de-suelo-tierra-soil-moisture-arduino-yl-69-ptec/)   (Humedad Tierra)\n6. Sensor de Luz [BH1750](https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf)  (Luz Ambiente)\n\n#### Gateway\n1. Raspberry pi 3\n2. Transceptor [NRF24L01+](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) de Nordic Semiconductor\n \n\n## Estructura\n\nLa 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:\n\n\u003ch4 align=\"center\"\u003e\n  \u003cimg src=\"ubicacion.jpg\"/\u003e\u003cbr/\u003e\n  \u003ca \u003eUbicación de Nodos\u003c/a\u003e\n\u003c/h4\u003e\n\nLas coordenadas de cada nodo en el invernadero son:\n\n| Nodo | Coordenada |\n| ------ | ------ |\n| Nodo Uno | (5.8m, 2m) |\n| Nodo Dos | (0.1m, 1.4m) |\n| Nodo Tres | (3m, 2.3m) |\n| Nodo Cuatro | (5.1m, 5.1m) |\n| Nodo Cinco | (0.1m, 5.1m) | \n\nEl Gateway no se encuentra ubicado en el invernado, pero está ubicado aproximadamente 12 metros, respecto al invernadero.\n\n\u003ch4 align=\"center\"\u003e\n  \u003cimg src=\"Gateway.jpeg\"/\u003e\u003cbr/\u003e\n  \u003ca \u003eGateway\u003c/a\u003e\n\u003c/h4\u003e\n\nLos 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 \n\n\u003ch4 align=\"center\"\u003e\n  \u003cimg src=\"nodo.jpg\"/\u003e\u003cbr/\u003e\n  \u003ca \u003eInstalación de Nodos\u003c/a\u003e\n\u003c/h4\u003e\n\nCada 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.\n\n\n## Sensores\nComo se mencionó al principio, los sensores implementados en cada nodo son:  \n \n1. Sensor de Temperatura y Humedad [DHT21](https://mikroshop.ch/pdf/DHT21.pdf)  (Temperatura Aire y Humedad Aire)\n2. Sensor de Temperatura [DS18B20](https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf)  (Temperatura Tierra)\n3. Sensor DE Humedad del suelo [YL69](https://saber.patagoniatec.com/2014/11/sensor-de-humedad-de-suelo-tierra-soil-moisture-arduino-yl-69-ptec/)   (Humedad Tierra)\n4. Sensor de Luz [BH1750](https://www.mouser.com/datasheet/2/348/bh1750fvi-e-186247.pdf)  (Luz Ambiente)\n\n#### DHT21\nEste sensor, también es conocido como: AM2301, y cuenta con las siguientes características:\n\n| Característica | Valor |\n| ------ | ------ |\n| Alimentación | 3.3v - 5.5v |\n| Corriente | 1mA - 1.5mA |\n| Rango Medición | -40°C - 80°C |\n| Resolución | 16 Bits |\n| Precisión | ±0.5°C | \n\nLa biblioteca de DHT21 para ser programado en Arduino, se encuentra en:  [https://github.com/adafruit/DHT-sensor-library](https://github.com/adafruit/DHT-sensor-library)\n\n\n\n#### DS18B20\nEste sensor, de tipo sonda antifluido, cuenta con las siguientes características:\n\n| Característica | Valor |\n| ------ | ------ |\n| Alimentación | 3.3v - 5.5v |\n| Corriente | \u003c 60uA |\n| Rango Medición | -55°C - 125°C |\n| Resolución | 9 Bits - 12 Bits |\n| Precisión | ±0.5°C | \n\n\nLa biblioteca de DS18B20 para ser programado en Arduino, se encuentra en: [https://github.com/matmunk/DS18B20](https://github.com/matmunk/DS18B20)\n\n#### YL-69\nEste 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](https://www.youtube.com/watch?v=iWV42viyLtQ\u0026ab_channel=Electgpl). Este sensor cuenta con las siguientes características:\n\n| Característica | Valor |\n| ------ | ------ |\n| Alimentación | 3.3v - 5v |\n| Voltaje Salida | 0v - 4.2v |\n| Corriente | \u003c 35mA |\n| Salida de Medición | Análoga  y Digital| \n| Salida Digital | Ajustar el nivel de tensión  | \n \nEste módulo no necesita de una biblioteca para ser utilizado\n\n#### BH1750\nCuenta con las siguientes características:\n\n| Característica | Valor |\n| ------ | ------ |\n| Alimentación | 2.4v - 3.6v |\n| Corriente | 7mA |\n| Rango Medición | 0.11 Lux - 100000 Lux |\n| Resolución | 16 Bits |\n\nLa biblioteca de BH1750 para ser programado en Arduino, se encuentra en: [https://github.com/claws/BH1750](https://github.com/claws/BH1750)\n\n\n## Funcionamiento\n\nEl 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:\n\n- El código de los nodos se programó mediante el IDE de Arduino.\n- 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.\n- Los servicios generados se realizan mediante [Systemd](https://www.raspberrypi.org/documentation/linux/usage/systemd.md), los cuales siempre se están ejecutando y se inician si se reinicia o enciende la Raspberry\n- El servicio de la comunicación con la red de Telemetría se programó en C++\n- El servicio del análisis y envió de información a la nube se programó en Python\n\n\nAsí mismo, se explica la lógica de programación de cada servicio y nodo del proyecto\n1. [Scripts de Arduino - Thing](https://github.com/potier97/AgroIot/tree/master/arduino)\n2. [Servicio - Comunicación con la red de telemetría](https://github.com/potier97/AgroIot/tree/master/rf24)\n3. [Servicio - Envío de información a la nube](https://github.com/potier97/AgroIot/tree/master/service)\n \n\n## Protocolo\n\n\u003ch4 align=\"center\"\u003e\n  \u003cimg src=\"rf24.jpg\"/\u003e\u003cbr/\u003e\n  \u003ca\u003eTransceptor NRF24L01+\u003c/a\u003e\n\u003c/h4\u003e\n\n Este proyecto utiliza los Transceptores  [NRF24L01+](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) 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](https://github.com/nRF24/RF24Network) de  [TMRh20](https://github.com/TMRh20), para mayor información del funcionamiento básico del transceptor puede revisar en los siguiente enlaces:\n \n  - [How nRF24L01+ Wireless Module Works](https://lastminuteengineers.com/nrf24l01-arduino-wireless-communication/)\n  - [Newly Optimized RF24Network Layer 2020](http://tmrh20.github.io/RF24Network/)\n  - [Newly Optimized RF24Network Layer 2020](https://howtomechatronics.com/tutorials/arduino/how-to-build-an-arduino-wireless-network-with-multiple-nrf24l01-modules/)\n  - [COMUNICACIÓN INALÁMBRICA A 2.4GHZ CON ARDUINO Y NRF24L01](https://www.luisllamas.es/comunicacion-inalambrica-a-2-4ghz-con-arduino-y-nrf24l01/)\n  - [Tutorial básico NRF24L01 con  Arduino](https://naylampmechatronics.com/blog/16_Tutorial-b%C3%A1sico-NRF24L01-con-Arduino.html)\n\n\nLicense\n----\nAgroIot tiene la licencia [MIT](https://github.com/potier97/AgroIot/license)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotier97%2Fagroiot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpotier97%2Fagroiot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpotier97%2Fagroiot/lists"}