Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Garcia - Diseno e Implementacion de Un Sistema IoT Mediante La Plataforma ESP32 para La Automatiz...
Garcia - Diseno e Implementacion de Un Sistema IoT Mediante La Plataforma ESP32 para La Automatiz...
Se programará una placa de desarrollo basada en ESP32 para realizar la lectura de los
diferentes sensores y la puesta en marcha de medidas correctivas que mantengan el
proceso en condiciones óptimas para los microorganismos que compostan la materia
orgánica.
Los datos recogidos por los diferentes sensores se envían mediante WiFi a un servidor
local alojado en una Raspberry Pi, donde se almacenan en una base de datos SQL. El
usuario puede conectarse al servidor desde el navegador web de cualquier equipo
conectado a la red local para consultar los datos del proceso o descargarlos en otro
dispositivo. Conociendo el valor de variables como la temperatura y humedad del
compost, es posible saber en qué punto del proceso se encuentra o si se está
desarrollando de manera adecuada.
ABSTRACT
This project covers the design and construction of a prototype to monitor and control the
variables that determine the efficacy of the domestic organic waste aerobic composting
process. The system uses Internet of Things (IoT) technologies and is focused on its
implementation in a small scale for home use.
A development board based on ESP32 will be programmed to read the different sensors
and perform corrective measures to maintain the conditions of the process in optimum
conditions for the composting microorganisms to digest the organic residues.
Data collected form the sensors will be sent using WiFi to a local server held on a
Raspberry Pi, where it will be stored in an SQL Database. The user can connect to this
server from any web browser inside the local network to check the state of the project or
download data to a different device. Knowing the different values of variables such as
the compost temperature and humidity, users can interpretate the state of the process
and whether it is evolving correctly or not.
AGRADECIMIENTOS
Gracias.
Documento I. MEMORIA Y ANEXOS
Contenido de la memoria
1. INTRODUCCIÓN ......................................................................................................... 6
1.1. Objetivo ................................................................................................................. 6
1.2. Estado del arte: Internet de las cosas y hardware libre ........................................ 7
1.2.1. Internet de las cosas.............................................................................................. 7
1.2.2. Plataformas de hardware libre .............................................................................. 8
1.3. Proceso de obtención de compost y variables a controlar ................................. 10
1.4. Alcance del proyecto ........................................................................................... 14
1.4.1. Requerimientos mínimos .................................................................................... 15
1.4.2. Otros requisitos ................................................................................................... 16
2. DISEÑO DEL SISTEMA .............................................................................................. 17
2.1. Diseño de la compostera inteligente................................................................... 17
2.1.1. Elección de la compostera................................................................................... 18
2.1.2. Sistema de aireación ........................................................................................... 19
2.1.3. Sistema de riego .................................................................................................. 20
2.1.4. Central de control................................................................................................ 21
2.2. Arquitectura del sistema de control .................................................................... 22
2.3. Diseño electrónico: Elección de componentes y funcionamiento ...................... 23
2.3.1. Plataforma ESP32: Wemos D1 R32 ..................................................................... 23
2.3.2. Raspberry Pi: Servidor local................................................................................. 25
2.3.3. Sensores y actuadores......................................................................................... 26
3. SISTEMA DE CONTROL ............................................................................................ 33
3.1. Funcionamiento del sistema de control .............................................................. 33
3.2. Diagrama de flujo ................................................................................................ 34
3.3. Software de control ............................................................................................. 36
3.3.1. Variables globales: Datos a enviar, marcadores y tiempos................................. 36
3.3.2. Temporizadores: Intervalos de medición, riego y aireación ............................... 37
3.3.3. Lectura de los datos del compost........................................................................ 39
3.3.4. Envío de datos al servidor ................................................................................... 41
3.4. Configuración del servidor LAMP y base de datos .............................................. 42
3.4.1. Instalación de la infraestructura LAMP ............................................................... 42
3.4.2. Creación de la base de datos MySQL .................................................................. 44
3.4.3. API Post-ESP-Data: Almacenamiento en base de datos ...................................... 46
3.4.4. API ESP Data: Visualización de los datos ............................................................. 47
2
4. IMPLEMENTACIÓN DEL SISTEMA ............................................................................ 49
4.1. Montaje de la compostera .................................................................................. 49
4.2. Diagrama eléctrico y de conexiones .................................................................... 52
4.3. Puesta en marcha ................................................................................................ 54
5. CONCLUSIÓN ........................................................................................................... 55
6. TRABAJOS FUTUROS ................................................................................................ 56
Bibliografía ...................................................................................................................... 57
ANEXOS A LA MEMORIA ................................................................................................. 59
Anexo I: Diagrama de flujo.......................................................................................... 59
Anexo II: Software del programa ................................................................................ 60
Anexo III: Código de la API Post ESP Data ................................................................... 66
Anexo IV: Código de la API ESP Data........................................................................... 68
Anexo V: Diagrama eléctrico y de conexiones............................................................ 70
3
Índice de figuras
Figura 1: Placa de desarrollo D1 R32, versión producida por AZ Delivery. Obtenida de
amazon.es ................................................................................................................. 9
Figura 2: Ejemplo de compostera con residuos en su interior. Imagen obtenida de
blog.oxfamintermon.org/como-hacer-compost-casero/ (2021) ............................ 11
Figura 3: Evolución de la temperatura a lo largo del tiempo. Gráfica obtenida de
“Sustainable Operation of Composting in Solid Waste Management” [8] ............. 13
Figura 4: Esquema de las partes que componen el sistema. Producido por el autor.... 17
Figura 5: Maceta de polietileno utilizada como compostera. Imagen obtenida de
amazon.es ............................................................................................................... 18
Figura 6: Bomba de aire para acuario Ireenuo Q7. Imagen obtenida de amazon.es .... 19
Figura 7: Gotero difusor durante el riego. Imagen obtenida de leroymerlin.es ............ 20
Figura 8: Caja de conexión estanca IP55. Imagen obtenida de leroymerlin.es ............. 21
Figura 9: Esquema de la arquitectura del sistema de control. Producido por el autor . 22
Figura 10: Pinout de la plaza ESP32 D1 R32. Imagen Obtenida de AZ Delivery. ............ 24
Figura 11: Raspberry Pi 4 model B. Obtenida de raspberrypi.org.................................. 25
Figura 12: Sensor DHT11 sobre módulo KY-015. Imagen obtenida de uelectronics.com
................................................................................................................................. 26
Figura 13: Sonda del sensor de temperatura DS18B20. Obtenido de aliexpress.com .. 27
Figura 14: Sonda YL-69 y tarjeta comparadora LM393. Imagen obtenida de amazon.es
................................................................................................................................. 29
Figura 15: Sensor de metano MQ4. Imagen obtenida de amazon.es ............................ 30
Figura 16: Módulo sensor de ultrasonidos HC-SR04. Imagen obtenida de amazon.es . 31
Figura 17: Módulo de relés dos canales 5V. Imagen obtenida de amazon.es ............... 32
Figura 18: Resumen del diagrama de flujo. Imagen producida por el autor. ................ 36
Figura 19: Fragmento del código donde se efectúan las comprobaciones de tiempo de
riego. Imagen producida por el autor ..................................................................... 38
Figura 20: Fragmento del código correspondiente a la función para medir el nivel del
depósito. Producida por el autor. ........................................................................... 40
Figura 21: Esquema de los componentes de un servidor LAMP. Imagen obtenida de
section.io ................................................................................................................. 43
4
Figura 22: Menú de creación de la base de datos. Imagen producida por el autor. ..... 44
Figura 23: Tabla preforma de la base de datos. Producida por el autor........................ 45
Figura 24: Formulario de creación de tabla SQL. Imagen producida por el autor. ........ 45
Figura 25: Fragmento del código que da forma a los datos a almacenar. Imagen
producido por el autor ............................................................................................ 46
Figura 26: Fragmento del script que muestra los datos de la tabla en el navegador.
Imagen producida por el autor. .............................................................................. 47
Figura 27: Datos del compost vistos desde navegador web. Imagen producida por el
autor. ....................................................................................................................... 48
Figura 28: Detalle de las conexiones entre bomba, depósito y tubería de riego
mediante conectores rápidos. Imagen producida por el autor. ............................. 50
Figura 29: Detalle de los difusores de piedra para la salida del aire y el gotero de riego.
Imagen producida por el autor. .............................................................................. 50
Figura 30: Sistema de compostaje desde diferentes perspectivas. Imagen producida
por el autor.............................................................................................................. 51
Figura 31: Conector roscado de 3 pines como los utilizados en el prototipo. Imagen
obtenida de dynamoelectronics.com ..................................................................... 52
Figura 32: Diagrama del circuito de activación del relé. Imagen obtenida de qastack.mx
................................................................................................................................. 53
Figura 33: Detalle de la estación de control ya montada. Imagen producida por el
autor. ....................................................................................................................... 53
5
1. INTRODUCCIÓN
1.1. Objetivo
6
1.2. Estado del arte: Internet de las cosas y hardware libre
Los avances en la tecnología IoT están causados por el desarrollo en cinco áreas clave.
Como ya se ha introducido anteriormente, la disponibilidad de sensores de bajo coste y
baja potencia permite recoger información de forma fiable sin grandes limitaciones. Las
nuevas tecnologías de comunicación y protocolos de red han permitido conectar a
internet una enorme cantidad de dispositivos de manera fácil, consiguiendo transmitir la
información eficientemente. La creación de plataformas informáticas en la nube ha
permitido a los sistemas IoT escalar desde aplicaciones pequeñas hasta ideas
altamente complejas. También es destacable la relación de simbiosis entre el Machine
Learning y el IoT, que permite analizar gran cantidad de datos de manera rápida
facilitando la toma de decisiones. Las tecnologías de Machine Learning se nutren a su
vez de la información recogida por los dispositivos IoT para desarrollarse. Por último, la
evolución del internet de las cosas va de la mano de los avances en inteligencia artificial.
Esta tecnología permite a los sistemas informáticos interpretar datos de su entorno de
forma autónoma y decidir qué acciones son necesarias para alcanzar con éxito los
objetivos o tareas marcadas. [2] [3]
La tecnología del internet de las cosas tiene multitud de aplicaciones prácticas tanto a
nivel industrial como doméstico. El IoT es parte clave de la industria 4.0, permitiendo
desarrollar procesos de fabricación inteligentes que utilizan datos a tiempo real para
adaptar los métodos de producción o prever fallos y roturas.
Tener un mayor control sobre el estado de los procesos industriales es de gran utilidad
para mejorar su eficiencia y hacerlos más resilientes. La logística o la agricultura
7
inteligente no podrían existir sin la tecnología IoT. El internet de las cosas tiene también
aplicaciones en el campo de la medicina, permitiendo a los médicos monitorizar el
estado del paciente de forma más eficiente y realizar diagnósticos más eficaces que
lleven a tratamientos más específicos para cada enfermo.
A nivel doméstico, son muchos los dispositivos interconectados que podemos encontrar
en nuestro día a día. Los asistentes virtuales se basan en esencia en el internet de las
cosas, acercando la domótica al gran público. Los relojes inteligentes, hornos,
frigoríficos y en general casi cualquier objeto de nuestro día a día puede conectarse a
internet para mejorar la interacción con el usuario y funcionar de manera más eficiente.
Las plataformas de hardware libre son todos aquellos dispositivos creados mediante
diseños públicos y accesibles para sus consumidores. Esto permite a los usuarios
estudiar, modificar, reutilizar, adaptar o incluso redistribuir los dispositivos de forma
independiente. Su aparición es una evolución del software libre, adaptando los principios
de este a los dispositivos físicos. El desarrollo de hardware libre se ha visto potenciado
en las últimas dos décadas por el abaratamiento de los componentes electrónicos y el
auge de la filosofía del do it yourself, o hazlo tú mismo.
La ambición por reparar, adaptar o mejorar todo tipo de utensilios es una de las bases
de la filosofía del “hazlo tú mismo”. La comunidad de aficionados a esta idea se agrupa
tanto a través de internet como en asociaciones locales de Makers, donde comparten
información y consejos desarrollando todo tipo de productos propios. Los Makers utilizan
hardware libre para construir sus propias creaciones, utilizando métodos de fabricación
tradicionales, pero también nuevas técnicas como la impresión 3D. [4]
Un potenciador clave del hardware libre son las plataformas electrónicas Arduino.
Arduino es un proyecto que desarrolla plataformas de creación electrónica de hardware
y software libre. Las placas Arduino tienen todos los elementos para programar y utilizar
de forma sencilla microcontroladores de la familia ATMEL. A través de una IDE propia y
con un lenguaje de programación simple basado en C, cualquier usuario puede conectar
sensores y actuadores a las entradas y salidas de las placas Arduino. [5]
8
El ecosistema creado alrededor del proyecto Arduino ha propiciado la aparición de
nuevas placas de desarrollo utilizando distintos microcontroladores. Es el caso, entre
otros, de WeMos D1 R32, la placa de control utilizada en este proyecto y que se basa
en un circuito integrado de la familia ESP. Esta placa de desarrollo añade conectividad
WiFi y bluetooth a las funcionalidades típicas de este tipo de microcontroladores. Cuenta
además con un potente procesador que la hace versátil para todo tipo de proyectos. La
Wemos D1 R32 es totalmente compatible con la IDE y librerías de Arduino. En sucesivos
puntos de esta memoria se profundizará en su funcionamiento.
Las plataformas de hardware y software libre también han llevado el internet de las
cosas a manos de miles de aficionados a la electrónica y la programación alrededor del
mundo. Las opciones de conectividad que ofrece la tecnología IoT permite llevar
proyectos caseros a un nuevo nivel.
9
1.3. Proceso de obtención de compost y variables a
controlar
La preocupación por el medio ambiente y por formas de vida más sostenibles lleva a
cada vez más personas a producir su propio compost, reduciendo así su generación de
residuos. Tal es la necesidad de una gestión más racional de los desechos domésticos,
que El Ministerio de Medio Ambiente y Medio Rural y Marino publicó en 2009 el Manual
de Compostaje [7]. El manual es base fundamental de este trabajo final de máster ya
que en él se explica de forma clara y sencilla cómo llevar el proceso de compostaje a
los hogares.
Para que el compost generado sea de calidad, hay que alternar capas de materia
orgánica con distinta velocidad de descomposición. De esta forma conseguimos un
abono consistente y rico en nutrientes para nuestras plantas. El material que se añada
a la pila de compost tendrá que estar en trozos lo más pequeños posibles y con una
relación 2/1 entre materia húmeda y seca.
10
Si bien el compost puede producirse en una simple pila de residuos sobre el suelo, a
nivel doméstico resulta más práctico utilizar un contenedor al que llamaremos
compostera. La compostera es un recipiente con tapa generalmente de madera o
plástico que mantiene los restos orgánicos juntos durante el proceso de compostaje.
Introducir los residuos en una compostera ayuda a conservar la temperatura de la
materia orgánica constante y evita que se inunde cuando llueve.
11
La descomposición de la materia orgánica creando compost es idealmente un proceso
de oxidación en el que intervienen distintos microorganismos presentes en el ambiente.
Esto implica que durante la degradación de los residuos es esencial la presencia de
oxígeno. De esta forma, los microorganismos llevarán a cabo una fermentación aeróbica
de la materia orgánica, aportando nitratos y fosfatos al compost. La falta de aire provoca
que el proceso se vuelva anaeróbico o de putrefacción, obteniendo un abono de peor
calidad. [8]
1) Fase de latencia y crecimiento: Esta fase dura entre dos y siete días, si bien
en sistemas domésticos puede alargarse. En ella los microorganismos presentes
en la materia orgánica y el aire se asientan en su nuevo medio, comenzando a
degradar los compuestos más simples. La pila de materia orgánica comienza a
calentarse por la acción de las bacterias mesófilas que habitan el compost,
llegando al final de esta fase hasta unos 45ºC.
3) Fase de maduración: Esta última etapa es la más lenta y puede durar hasta
tres meses. La fermentación continúa descomponiendo la materia orgánica más
resistente. La temperatura va disminuyendo poco a poco y con ella la presencia
de organismos termófilos. Estos microorganismos ceden terreno a otro tipo de
hongos y bacterias que degradarán la parte más dura. En ocasiones es
beneficioso añadir lombrices y escarabajos al compost para acelerar la
maduración. Esta fase termina cuando la temperatura del compost es cercana a
la temperatura ambiente.
12
Conociendo ya el proceso de compostaje, es momento de analizar las distintas variables
que deberá controlar el sistema de automatización a crear. Al tratarse de un proceso
natural, existirán variables que no se podrán hacer evolucionar artificialmente y por tanto
su control se limitará a la monitorización de su estado. De otra parte, podremos actuar
sobre otras garantizando unas condiciones óptimas para los microorganismos que crean
el compost y evitando la colonización de la materia orgánica por parte de insectos o
bacterias nocivas.
13
Humedad: Se trata de un factor fundamental para los microorganismos que
habitan en el compost. Un exceso de agua podría provocar falta de oxígeno,
alejando el proceso de las condiciones aeróbicas. La falta de humedad, por su
parte, dificulta la proliferación de microorganismos y ralentiza significativamente
el compostaje. Para crear unas condiciones idóneas, es necesario mantener una
humedad de entre el 40 y 60%.
La construcción del prototipo deberá ser lo más simple posible, pudiendo reproducirse
por cualquiera que desee hacerlo. El proyecto se lleva a cabo sin ningún fin comercial,
por lo que se obviarán los requisitos necesarios para escalar y producir en masa el
sistema. A continuación, se detallan los requisitos que debe cumplir el prototipo.
14
1.4.1. Requerimientos mínimos
Para considerar el proyecto como concluido, el prototipo deberá cumplir una serie
de requisitos concretos para controlar el proceso a la vez que permita al usuario hacer
un seguimiento del compostaje. Además, se añaden otras condiciones que acotan el
proyecto y facilitan la construcción del prototipo. Los requisitos mínimos se listan a
continuación:
4) El sistema deberá almacenar los datos en una base de datos desde la que
poder descargarlos para analizarlos si se desea.
Cumpliendo estos requisitos, se podrán considerar alcanzados los objetivos que marca
este trabajo final de máster.
15
1.4.2. Otros requisitos
Naturalmente, los requisitos anteriores no son los únicos que marcan el desarrollo
del proyecto. Existen otras condiciones autoimpuestas que también ayudan a acotar el
diseño, si bien su cumplimiento es más flexible.
Para crear el prototipo, se utilizarán componentes de bajo coste. Esto se aplica a la parte
electrónica del proyecto, pero también al resto de elementos de la compostera. Así, se
pretende que el producto final resulte asequible y reproducible por cualquiera sin
implicar grandes desembolsos.
Por último, al no tener finalidad comercial, el prototipo creado será libre de ser
reproducido, modificado o mejorado por cualquier persona que lo desee. Esto se aplica
tanto al conjunto como a los componentes y códigos de programa. Se sigue así en la
línea marcada por la filosofía del software y hardware libre utilizados en este proyecto.
16
2. DISEÑO DEL SISTEMA
En este punto se detallará el proceso seguido para diseñar el sistema de
compostaje automático. Se explicará el diseño de la compostera y sus partes, la
arquitectura del sistema de control y el proceso de selección de los componentes
electrónicos.
Teniendo en cuenta que el sistema está orientado a un uso doméstico, las dimensiones
de este tienen que ser comedidas, pudiéndose instalar en una terraza o jardín. Esto
delimitará el tamaño de la compostera, así como el del depósito de agua cuya selección
se detallan a continuación. Para tener una idea más completa sobre los elementos que
forman el sistema, se puede consultar el esquema de la figura 4.
Figura 4: Esquema de las partes que componen el sistema. Producido por el autor.
17
2.1.1. Elección de la compostera
El manual de compostaje del Ministerio de Medio Ambiente [7] da diversas ideas sobre
cómo construir composteras en casa. La principal condición que menciona la guía es
que el recipiente a utilizar permita el paso de aire al interior de la compostera para
garantizar un proceso aeróbico y lo mantenga separado del suelo.
Para cumplir con los requisitos de tamaño compacto y coste bajo, se utilizará en el
prototipo otra de las posibilidades que ofrece la guía: Una maceta de grandes
dimensiones. En concreto la compostera empleada en este prototipo será una maceta
de polietileno de 30L con asas de orificios en su base y laterales.
18
2.1.2. Sistema de aireación
Al estudiar esta solución, se dudó de la eficacia que pudiera tener usando únicamente
ventiladores y sin utilizar un compresor. Además, los conductos de aire se podían
atascar fácilmente y la humedad podría condensarse en su interior. Buscando un
compresor de pequeño tamaño, se llegó a la solución final.
Para el sistema de aireación se utilizará una bomba de aire para acuario. En concreto,
por su precio moderado y gran caudal se utilizará la Ireenuo Q7. Esta bomba tiene una
potencia de 3W y dos salidas con un caudal de 150L/h cada una. Además, utiliza como
difusor del aire dos piedras porosas que evitan problemas de atascos.
Utilizar una bomba para acuario comercial en lugar de un sistema más complejo también
aporta flexibilidad al prototipo, pudiéndose cambiar por cualquier otro modelo de forma
simple.
19
2.1.3. Sistema de riego
El depósito utilizado será un cubo de polipropileno de 30L. Se escoge por su bajo coste
y por tener una capacidad suficiente como para dar autonomía en el riego durante varios
días. En la tapa del cubo se colocará un sensor que permita al sistema comprobar si el
nivel de agua es suficiente como para regar. Cerca de la base se hará un agujero donde
se colocará un racor para conectar la entrada de la bomba.
Se utilizarán un único gotero regulable de hasta 60L/h con capacidad de difusión para
humedecer toda la superficie de la pila de compost por igual. El caudal máximo del
gotero determina la elección de la bomba, que deberá ser capaz de aportar como
mínimo 60L/h. Teniendo esto en cuenta, se elige una bomba sin escobillas con caudal
de 500L/h y presión de 2,5m. La bomba trabaja a 12V DC y se puede conectar a un
enchufe de 22V de alterna utilizando una fuente de alimentación.
20
2.1.4. Central de control
21
2.2. Arquitectura del sistema de control
El sistema de control está formado por una placa de desarrollo conectada a una
serie de sensores y actuadores y un servidor local donde se almacena la información en
una base de datos. La placa de desarrollo utilizada es una Wemos D1 R32, mientras
que una Raspberry Pi actuará de servidor local y alojará la base de datos. Se entrará en
detalle sobre los distintos componentes en sucesivos puntos de la memoria.
La función de la placa de desarrollo será realizar lecturas de los parámetros que afectan
al proceso de compostaje. Estos son: Temperatura del compost, humedad y presencia
de metano. En caso de que la humedad sea baja, el Wemos D1 R32 encenderá el riego
por goteo. Si hay metano en el ambiente, activará la aireación.
22
2.3. Diseño electrónico: Elección de componentes y
funcionamiento
Uno de los a System on a Chip (SoC) más utilizados en proyectos IoT a nivel casero es
el ESP32 de modo que se elegirá utilizar una placa de desarrollo que incorpore este
módulo por la cantidad de recursos disponibles sobre el mismo. El ESP32 también
comienza a utilizarse en aplicaciones industriales, aunque su novedad lo hace aún poco
común. [10]
El ESP32 es un SoC con capacidad WiFi y Bluetooth diseñado por la compañía china
Espressif y fabricado por TSMC. Es una evolución del ESP8266, también de Espressif,
que añade nuevas funcionalidades y mejora el rendimiento general. Utiliza un
procesador Tesilica Xtensa de doble núcleo de 32bit a 160MHz con SRAM de 448KB y
memoria flash de 520KB. El módulo trabaja a 3,3V y tiene modos de ultra bajo consumo.
23
El ESP32 se monta en multitud de placas de desarrollo, la mayoría de ellas compatibles
con la IDE de Arduino, lo que facilita su programación permitiendo el uso de librerías y
funciones desarrolladas para Arduino. Muchas incluyen accesorios como pantallas
OLED, baterías etc. Sin embargo, para este proyecto se decidió elegir una placa de
desarrollo lo más parecida posible en su construcción a un Arduino clásico.
24
2.3.2. Raspberry Pi: Servidor local
Una de las formas más fáciles de crear un servidor web con una base de datos
donde poder almacenar información es utilizar la infraestructura LAMP. Estas siglas se
refieren al conjunto de herramientas de software necesarias para crear el servidor, todas
de código abierto. Linux como sistema operativo, Apache como el servidor HTTP,
MySQL o MariaDB como gestor de la base de datos y PHP como el lenguaje de
programación utilizado para desarrollo web.
Para instalar el servidor LAMP, es necesario por tanto un equipo con sistema operativo
Linux. El servidor deberá estar conectado durante todo el proceso de compostaje, para
poder así recibir los envíos del ESP32. Tener un ordenador convencional dedicado a
ejercer de servidor LAMP es posible, pero resulta caro y, generalmente, poco práctico.
Para solventar este problema, se decide utilizar una Raspberry Pi.
25
2.3.3. Sensores y actuadores
El módulo KY-015 sobre el que se monta el sensor, tiene 3 pines para alimentación,
tierra y envío de datos mediante un protocolo de comunicación serie indeterminado.
Funciona tanto a 3,3V como a 5V. Mide temperaturas de entre 0ºC y 50ºC con un error
de ±2ºC y resolución de 1ºC y humedad relativa con un rango que va del 20% al 90%
con un error de ±5%. [12]
26
2.3.3.2.Sensor de temperatura del compost: Sonda DS18B20
Para medir la temperatura del compost es necesario un sensor que cuente con un
encapsulado que lo haga resistente a la humedad, al agua y a la suciedad presentes en
la compostera. Uno de los sensores más utilizados en este tipo de aplicaciones es el
DS18B20 por su precio reducido y su facilidad de uso. [13]
La sonda tiene tres cables, dos de ellos para alimentación y masa a entre 3,3V y 5V y
el tercero para el envío de las temperaturas medidas. Utiliza el protocolo One Wire para
el envío de datos, lo que permite utilizar varios sensores DS18B20 utilizando un único
cable y por tanto un único pin de comunicación en la placa de desarrollo. Se utilizará la
librería OneWire para gestionar la comunicación y la DallasTemperature para traducir
los datos del sensor a grados centígrados. El sensor viene calibrado y puede medir
temperaturas entre -55ºC y 125ºC con un error de ±0,5ºC en el rango de los -10 y 85ºC.
27
2.3.3.3. Sensor de humedad del compost: YL-69
Este sensor permite hacer lecturas tanto analógicas como digitales. Las digitales
cambian entre nivel alto y bajo según el nivel de humedad marcado mediante el ajuste
de un potenciómetro. Las analógicas varían el valor de la tensión según la humedad del
compost. El Wemos D1 R32 puede hacer lecturas analógicas desde la mayoría de sus
pines con una resolución de 12bits, lo que traduce las entradas a valores entre 0 y 4095.
La calibración de fábrica está hecha para dar valor de máxima conductividad cuando la
sonda está sumergida en agua y de mínima conductividad cuando la sonda está al aire.
Para obtener el porcentaje de humedad del suelo se suele mapear los valores de la
lectura analógica para hacer coincidir, en caso de tener una resolución de 12bits, el
100% con el valor 0 y el 0% con el valor 4095. Las pruebas realizadas con el sensor
indican un valor de lectura analógica de 4095 cuando el sensor está al aire y de 370
cuando la sonda estaba totalmente sumergida en agua. Se decidió mapear entre estos
dos valores para obtener la humedad del compost con mayor precisión.
Este método para obtener el porcentaje de humedad del compost suponiendo una
relación directamente proporcional entre la conductividad y la cantidad de agua resulta
bastante simplista. Obvias variables como la cantidad de sales en el terreno y agua,
provocando errores medición relativamente grandes. La literatura consultada no
asegura un valor concreto para esta aproximación lineal, si bien las estimaciones
realizadas indican que no debería supera en exceso el ±10% de error.
I Setoyowati propone en el artículo Preliminary design and soil moisture sensor YL-69
calibration for implementation of smart irrigation [14] un método de calibración utilizando
curvas polinómicas de orden 3 para interpretar las lecturas de conductividad. Con esto
se consigue un error de entre el 2,92 y el 5%.
28
Hay que tener en cuenta que el compost tiene que estar a una humedad de entre el 40%
y el 60%, como ya se ha explicado antes. Esto supone que incluso con el error máximo
de la aproximación tradicionalmente utilizada, el proceso se podría encontrar dentro de
los parámetros óptimos cuando se le marque mantener una humedad del 50%. Se fijará
este valor en la programación del microcontrolador para mantener la humedad de forma
segura y simplificar la programación asumiendo los posibles errores.
Figura 14: Sonda YL-69 y tarjeta comparadora LM393. Imagen obtenida de amazon.es
29
El sensor mide concentraciones de metano entre 300 y 10000 ppm. Durante las pruebas
del sensor, se observó que el led indicador que incorpora el módulo se encendía antes
de recibir señal analógica de variación de la conductividad apreciable. Es por eso que
se decidió ajustar mediante el potenciómetro el sensor a su máxima sensibilidad y
utilizar su salida digital en lugar de la analógica. De esta forma, también se simplifica el
código reaccionando ante la presencia de cualquier concentración de metano detectable
por el sensor.
30
2.3.3.5. Sensor ultrasonidos HC-SR04: Nivel del depósito
Uno de los sensores más utilizados para medir distancias es el sensor de ultrasonidos
HC-SR04. Este sensor permite medir distancias con agua y otros elementos no opacos.
Su funcionamiento se basa en el envío de pulsos de ultrasonidos (A frecuencia de
40KHz) en la dirección a medir y la recepción del eco producido al rebotar las ondas de
sonido con el objeto respecto al que se quiere conocer la distancia. Para calcular esta
distancia solo habrá que aplicar una pequeña fórmula multiplicando por la velocidad del
sonido el tiempo transcurrido entre el envío del pulso y su recepción.
El sensor HC-SR04 tiene un rango de medición entre 2cm y 400cm con una resolución
de 0.3cm. Su precisión depende en realidad de la distancia a medir junto con la
orientación de la superficie sobre la que rebota el sonido, entre otras cosas. El error que
se pueda cometer en esta aplicación es asumible puesto que se programará un nivel de
agua con suficiente margen como para no dañar la bomba evitando que absorba aire.
31
2.3.3.6. Actuadores: Módulo relé de 2 canales con optoacoplador.
El módulo de relés utilizado tiene dos canales que se activan mediante señales de 5V.
Las salidas digitales de la placa de desarrollo utilizada son de 3,3V de modo que será
necesario utilizar un pequeño circuito para, mediante un transistor, abrir o cerrar la señal
de 5V utilizando la salida digital de 3,3V del ESP32. Se tratará en mayor profundidad
más adelante cuando se explique el esquema electrónico del prototipo.
Figura 17: Módulo de relés dos canales 5V. Imagen obtenida de amazon.es
32
3. SISTEMA DE CONTROL
La placa de desarrollo Wemos D1 R32 está programada para realizar lecturas de los
diferentes sensores una vez cada 30 minutos. Se decidió utilizar este tiempo entre
mediciones porque, si bien el proceso de compostaje es lento, las condiciones del
entorno pueden hacer que parámetros como la humedad del compost se vean alterados
en poco tiempo situándose fuera de los niveles óptimos para el proceso. Este intervalo
también es útil para captar mejor la variación de los datos de temperatura y humedad
ambiente, así como para asegurar que el compost no pasa más de media hora fuera de
los parámetros establecidos en caso de que el sistema de riego o aireación no haya
actuado durante el tiempo suficiente.
33
da el formato adecuado a los datos para ser almacenados en la base de datos MySQL.
Una vez guardados, los datos podrán consultarse desde el navegador de cualquier
equipo conectado a la red WiFi local. De nuevo interviene en el proceso una api
programada en PHP que extrae la información de la base de datos y le da forma de
tabla para mostrarla al usuario cuando se recibe petición de visualización.
A la vez que se miden los valores que determinan el estado del proceso de compostaje,
el microcontrolador comprueba que la humedad y metano están a niveles correctos. Si
la humedad es baja, se encenderá el riego durante dos minutos. Si hay metano en el
ambiente se hará lo mismo con el compresor.
Lo primero que hace el programa es incluir las librerías necesarias para el uso de
funciones específicas y declarar las variables globales que intervienen a lo largo del
programa. A continuación, se inicializan los sensores y las variables que así lo requieran.
Acto seguido, se conectará el ESP32 a la red WiFi definida en el programa. Todas estas
tareas se llevan a cabo antes o dentro del setup del programa Arduino y se ejecutan una
única vez.
Justo después, el programa entra en el bucle de control o loop, que se ejecuta de forma
infinita una y otra vez. Se toma tiempo para actualizar el tiempo actual. Si es la primera
vez que se ejecuta el programa o si la última lectura se realizó hace más tiempo que el
marcado por el intervalo de medición programado, el microcontrolador leerá uno a uno
la señal de los diferentes sensores y actualizará el tiempo de última lectura.
34
Las variables a monitorizar que no influyen en el funcionamiento del programa se miden
y guardan para su envío. La humedad del compost, metano en la compostera y nivel del
depósito no solo se miden, sino que se comparan con los valores de consigna para
marcar la necesidad de riego y aireación o para marcar la imposibilidad de regar en caso
de que el nivel del depósito no sea adecuado.
35
3.3. Software de control
El diagrama de flujo del punto anterior resulta útil para estructurar el programa, pero
su lectura no es unívoca, pudiendo generar diversos códigos a partir del mismo. Para
explicar las funciones que no quedan suficientemente detalladas en el diagrama, se
dividirá el código en partes y se explicará en este punto. Además, es posible leer el
código completo consultando el Anexo II de la memoria.
Figura 18: Resumen del diagrama de flujo. Imagen producida por el autor.
Marcadores: Son variables de tipo Booleano. Esto es, que solo pueden
tener dos valores: true o false, uno o cero. Los marcadores nos servirán para
indicar la necesidad de riego o aireación, así como para señalizar si el nivel
del depósito es suficiente para regar y si el compresor o la bomba se
encuentran encendidos.
36
Datos a enviar: Son de tipo String, o cadena de caracteres. Contienen la
información que se enviará a la base de datos: Temperatura y humedad
ambiente, temperatura y humedad del compost, metano en el compost y
nivel del depósito. Estas dos últimas guardadas como OK o NOK según
estén dentro de parámetros o no. El uso de cadenas de caracteres para
almacenar también valores numéricos está justificado con la forma en la que
se construye la petición HTTP Post con la que se realizará el envío al
servidor. Se entrará en detalle en los siguientes puntos.
El registro de los tiempos es crucial para coordinar las distintas tareas que lleva a
cabo el programa. Los microcontroladores son susceptibles de verse atrapados cuando
se utilizan bucles for o while para repetir tareas que se prolongan en el tiempo. Del
mismo modo, usar en exceso las interrupciones o delays puede provocar un mal
funcionamiento del procesador, en especial cuando interfieren con la conexión Wifi, por
lo que en su lugar se utilizarán temporizadores.
37
Para repetir un proceso cada cierto tiempo, habrá que comprobar si el tiempo actual
menos el tiempo registrado la última vez que se realizó la tarea supera el intervalo
marcado. Este es el caso de la lectura de los sensores, que se repite cada media hora.
Dentro del bucle de control, se comprueba si el tiempo actual menos el tiempo en que
se midió por última vez las variables es mayor o igual al intervalo de 30min marcado. Al
comenzar las tareas de medir y enviar, se actualizará el tiempo de última medición para
así no volver a entrar en esa sección hasta que no pase media hora.
Para realizar tareas durante un periodo de tiempo determinado, habrá que seguir el
mismo principio, solo que con una pequeña variación. Al activar por primera vez la
bomba de riego o la de aire, se registrará el tiempo actual como el momento en que se
enciende y se seguirá con las tareas correspondientes: Activar el relé, comprobar que
hay suficiente agua en el depósito etc.
La siguiente vez que se ejecuta el código se comprobará que el tiempo actual menos el
tiempo de activación es menor que el intervalo definido para el riego o aire. Si es así, la
bomba seguirá activada y no se actualizará el tiempo de activación. En el momento en
que pase el periodo de riego o aireación, se desactivará el relé y se hará cesar la marca
que provocó el proceso. Además, se actualizará el tiempo de forma que la próxima vez
que se compruebe la necesidad de actuar la resta de tiempos cumpla la condición para
poder encender la bomba correspondiente.
El tiempo de riego y aireación es el mismo: 2 minutos. Esto se justifica con los caudales
de riego y aireación. El caudal de riego es el caudal del gotero utilizado: 60L/h. En dos
minutos equivale a 2L vertidos sobre el compost, cantidad suficiente para humedecerlo
sin mojarlo en exceso. Del mismo modo, la bomba de aire es capaz de introducir 300L/h
en la pila de compost, lo que equivale a 10L en los dos minutos de aireación. Se
considera suficiente como para inyectar oxígeno al compost y desplazar el metano.
Figura 19: Fragmento del código donde se efectúan las comprobaciones de tiempo de riego.
Imagen producida por el autor
38
3.3.3. Lectura de los datos del compost
Los datos del compost se miden de dos formas distintas. Por un lado, están los
medidos directamente mediante funciones específicas de librerías y que coinciden con
los datos a monitorizar, sobre los que no actúa el programa. De otra parte, están los
datos medidos utilizando funciones propias creadas para ello. Estas funciones sirven
para medir la humedad del compost, la presencia de metano y el nivel de agua en el
depósito. No solo registran los datos, sino que también los comparan con los parámetros
definidos como adecuados e indican la necesidad de actuar mediante los marcadores.
Los datos sobre los que no se puede actuar, pero necesarios para interpretar el proceso
son: la temperatura del compost, la humedad del compost y la temperatura y humedad
ambiente. Se leen cada media hora usando funciones de librerías y se guardan en
cadenas de caracteres para preparar posteriormente preparar el envío.
39
El caso de la medición del nivel del depósito es distinto, ya que esta función es de tipo
void y por tanto no devuelve ningún valor cuando se le llama. Si los dos casos anteriores
se programaban como funciones externas al loop para poder simplificar la lectura del
programa, en el caso de la lectura del nivel se añade una razón más: Evitar repetir
innecesariamente partes del código en diferentes secciones del programa. El nivel del
depósito no solo se comprueba cada media hora, sino que se mide durante el tiempo de
riego para desactivarlo si no hubiera agua suficiente evitando dañar la bomba.
Para obtener la distancia en centímetros con la lámina de agua, solo habrá que
multiplicar el tiempo medido en microsegundos por la velocidad del sonido en metros
por segundo y dividirlo entre dos. Se divide entre dos porque hay que tener en cuenta
que el eco recibido ha recorrido la distancia hasta la lámina de agua dos veces, una
durante el envío y otra tras rebotar. Se comprobará que la distancia obtenida es menor
de 25cm, marcando el nivel como NOK si fuera mayor. Al medir el nivel desde arriba,
hay que tener en cuenta que distancias menores implican más cantidad de agua en el
depósito. El límite de 25cm corresponde a la distancia entre el sensor y la lámina de
agua cuando esta está aproximadamente 2cm por encima de la toma de agua de la
bomba.
Figura 20: Fragmento del código correspondiente a la función para medir el nivel del
depósito. Producida por el autor.
40
3.3.4. Envío de datos al servidor
Los envíos se realizan mediante peticiones HTTP Post. Las peticiones en el protocolo
HTTP pueden realizarse de diversas formas según su semántica. Cada tipo de petición
tiene unas características distintivas que la hacen adecuada para un cierto tipo de acción
a realizar con un recurso determinado. Las peticiones de tipo Post son unas de las más
útiles para el envío de información a un servidor con el objetivo de crear o actualizar un
recurso contenido en él. Este tipo de peticiones se utilizan para enviar un recurso
específico al servidor provocando un cambio en su estado o en efectos secundarios del
mismo. Son de especial utilidad para el envío de información del compost al servidor
puesto que no existen limitaciones sobre la longitud de los datos a enviar. [15] [16]
Tras la lectura de los sensores partimos de los datos a enviar almacenados en variables
tipo string. Se llama a continuación a la función específica de envío de datos, de tipo
void y fuera del bucle de control únicamente para facilitar la lectura del programa. La
función comienza por configurar el ESP32 como cliente http y de iniciar la conexión en
modo cliente.
Por último, se realiza la petición HTTP Post enviando al servidor la cadena creada. La
respuesta del servidor se guardará para imprimirla como mensaje de depuración. A
continuación, se cerrará la conexión con el servidor terminando así el proceso de envío.
41
3.4. Configuración del servidor LAMP y base de datos
Se decide no abrir la consulta a dispositivos fuera de la red local doméstica para evitar
problemas de seguridad. La configuración de los distintos elementos sería igual solo
que con pequeñas variaciones y abriendo los puertos del router correspondientes.
El primer paso para crear el servidor LAMP es instalar en la Raspberry Pi todos los
elementos que lo forman. Se comenzará por actualizar el sistema operativo de la
Raspberry Pi para asegurarse de que tiene la última versión de todos sus paquetes. A
continuación, se instalarán los distintos programas en el siguiente orden:
42
2) PHP: PHP son las siglas de Hypertext Processor, un lenguaje de programación
utilizado para desarrollar aplicaciones web dinámicas. Con el se generarán los
recursos del servidor que guardarán o mostrarán información en la base de
datos.
Con los cuatro pasos anteriores ya está lista la Raspberry Pi para ejercer de servidor
LAMP y almacenar bases de datos MySQL. El paso siguiente será configurar la
infraestructura creada para la aplicación específica de almacenar y mostrar los datos
del proceso de compostaje.
43
3.4.2. Creación de la base de datos MySQL
Una vez dentro de la aplicación, habrá que iniciar sesión mediante las credenciales
proporcionadas durante la instalación de phpMyAdmin. Pulsando en el botón “Bases de
Datos” se rellenan los campos del formulario “crear base de datos” con el nombre de la
base de datos y el cotejamiento utilizado. En este caso, se llamará a la base de datos
esp_data y utilizará un cotejamiento de tipo utf8mb4_general_ci. Tras rellenar el
formulario, se pulsa el botón crear y la base de datos estará lista.
Figura 22: Menú de creación de la base de datos. Imagen producida por el autor.
Creada la base de datos, es necesario crear una tabla SQL que ordene y estructure la
información. Como paso previo, habrá que definir la información que debe almacenar la
base de datos y mostrar la tabla, así como el orden en que se muestra. Se puede ver
una preforma de la tabla en la siguiente figura, donde también se indican el tipo de datos
a guardar y tamaño. Se marcan en salmón los más relevantes para el seguimiento del
proceso por parte del usuario.
44
Ciclo Temp Hum Temp Hum CH4 Nivel Tiempo
Ambiente Ambiente Compost Compost Compost Deposito
Int Varchar Varchar Varchar Varchar Varchar Varchar Time
6 10 10 10 10 5 5 NA
Figura 23: Tabla preforma de la base de datos. Producida por el autor.
Para aquellos sin experiencia con el lenguaje SQL, la aplicación phpMyAdmin ofrece la
posibilidad de crear tablas mediante una interfaz gráfica. Decididos los datos que debe
contener, se crea la data CompostData. En el formulario de creación de tablas de
phpMyAdmin habrá que introducir el nombre de la tabla y sus columnas. Se puede ver
el formulario en la figura 23.
Una vez configurada, ya está creada la tabla y se puede observar desde phpMyAdmin
y exportar en distintos formatos. Naturalmente, la tabla aún se encuentra vacía por lo
que será necesario rellenarla. En el siguiente punto de esta memoria se explicará cómo.
Figura 24: Formulario de creación de tabla SQL. Imagen producida por el autor.
45
3.4.3. API Post-ESP-Data: Almacenamiento en base de datos
Una vez creada la base de datos y tabla, hay que insertar información en esta para
ser guardada. Para hacerlo, se crea una API que se encargará de recibir la información
del ESP32 y añadirla a la base de datos MySQL. Una API es una interfaz de
programación de aplicaciones. Algo así como un programa que ejerce de intermediario
ejecutando una serie de subrutinas que preparan la información antes de guardarla.
La API se creará como un script PHP, basándose en el script original de Rui Santos en
su artículo ESP32/ESP8266 Publish Data to Raspberry Pi LAMP Server [17]. El código
completo se encuentra en el Anexo III de la memoria. Para crear el script se utilizará el
editor Geany, instalado por defecto en la Raspberry. El archivo debe guardarse con
extensión .php en la carpeta /var/www/html donde se guardan los recursos del servidor.
El siguiente punto es el más importante del script. Comprueba que la petición que llega
al servidor es del tipo HTTP Post y que contiene la clave adecuada. A continuación,
sustituye los valores en la estructura previamente creada comprobando uno a uno su
etiqueta y valor. Se utiliza la función test_input para limpiar cada fragmento de la petición
post y darle el formato adecuado para almacenarse en la base de datos.
Definida la estructura, se crea la conexión con la base de datos MySQL. Una vez
conectado, se envía la información por orden a la base de datos mediante el comando
“INSERT INTO CompostData” seguido del nombre de las variables por orden y de los
valores almacenados en el mismo orden.
Figura 25: Fragmento del código que da forma a los datos a almacenar. Imagen
producido por el autor
46
3.4.4. API ESP Data: Visualización de los datos
Una vez introducidos los datos del compost en la base de datos, pueden ser
consultados y descargados desde phpMyAdmin. Esto resulta útil cuando se quieren
obtener estadísticas detalladas, pero no es práctico si se quiere revisar el estado del
compost de manera rápida. Para solucionarlo, se crea una nueva API en PHP que
muestre la información en forma de tabla cuando se consulta desde cualquier navegador
web de un dispositivo conectado a la red WiFi del servidor.
La API se llama ESP Data y de nuevo está basada en un script de Rui Santos
desarrollado para una aplicación similar [17]. Se puede consultar el código completo en
el Anexo IV de la memoria. Al igual que la API anterior, también hay que guardar el script
en la ruta /var/www/html de la Raspberry
Una vez configurados los parámetros anteriores, se creará la tabla que mostrará la API
en el navegador. Se separarán los valores de la tabla en columnas con el nombre de la
variable en el encabezado. Definida la tabla, se van insertando los datos en filas
manteniendo el orden definido anteriormente. Este proceso se lleva a cabo mediante en
el código de la siguiente figura.
Figura 26: Fragmento del script que muestra los datos de la tabla en el
navegador. Imagen producida por el autor.
47
Terminada la API se pueden consultar los datos del compost utilizando en el navegador
la ruta http://IPdeRaspberry/esp-data.php/. El resultado de la consulta será una tabla
similar a la que se muestra en la figura 25.
Figura 27: Datos del compost vistos desde navegador web. Imagen producida
por el autor.
48
4. IMPLEMENTACIÓN DEL SISTEMA
Este proyecto está orientado a la construcción de un prototipo funcional que
automatice el proceso de compostaje de residuos orgánicos domésticos. Hasta ahora,
se había tratado el tema de forma teórica, reservando el montaje y puesta en marcha
de los distintos elementos que forman el sistema para esta sección. A continuación, se
detalla el proceso seguido para la implementación práctica del diseño anteriormente
descrito.
El primer paso para la implementación del sistema es plantear los elementos que
forman la compostera: El contenedor para el compost, el depósito y los sistemas de
riego y aireación. La estación de control también se incluirá en este punto. Como se ha
explicado anteriormente, el montaje está pensado para alojarse en una terraza o jardín.
Es de fácil configuración y estructura simple.
El sistema de riego consta de un depósito para almacenar el agua, una bomba y los
tubos de goma y conectores necesarios para llevar el agua hasta la compostera. El
depósito es un cubo de polipropileno de 30L al que se hará un orificio cerca de la base
para colocar un racor que permita acoplar la manguera de entrada a la bomba. La bomba
deberá trabajar por impusión, de modo que se debe colocar a un nivel igual o inferior al
de la base del depósito. Además, para facilitar el proceso de riego, es recomendable
que el depósito esté ligeramente elevado respecto a la compostera. Para las conexiones
a la bomba se utilizarán conectores rápidos. De esta forma, se facilita el montaje y
desmontaje en caso de avería. El gotero se colocará centrado en la maceta para intentar
distribuir el agua por toda su superficie.
49
Figura 28: Detalle de las conexiones entre bomba, depósito y tubería de riego
mediante conectores rápidos. Imagen producida por el autor.
Figura 29: Detalle de los difusores de piedra para la salida del aire y el gotero de
riego. Imagen producida por el autor.
50
Por último, queda comentar el montaje de la estación de control. Como se ha explicado
anteriormente, esta estación aloja la electrónica del sistema de compostaje automático.
La estación es, en esencia, una caja de conexiones con protección IP55 para evitar que
entre agua cuando llueve. Va conectada a una toma de corriente doméstica, desde
donde se alimentará tanto la placa de desarrollo como los enchufes a los que conectar
las bombas de agua y aire. Estos enchufes irán sobre la tapa, por lo que hay que
taladrarla para poder instalarlos utilizando una corona del diámetro adecuado. Además,
para ir en consonancia con el grado de protección ante el agua que requiere la
aplicación, se utilizarán enchufes de exterior también con protección IP55. La caja
también tendrá conectores para los distintos sensores externos a la estación de control,
de modo que habrá que taladrar también los espacios para estos.
51
4.2. Diagrama eléctrico y de conexiones
Los sensores se conectan directamente a la placa siempre que sea posible. Para
hacerlo, se utilizan conectores de 3 pines, 4 en el caso del sensor de ultrasonidos. Estos
conectores llevarán los cables de la parte interior de la central, conectados a la placa de
desarrollo por su otro extremo. En su parte exterior se podrá conectar de forma rápida
el cable que comunique con cada sensor. Es importante etiquetar bien los cables para
no confundir las entradas de la placa. El uso de conectores facilita la sustitución de los
sensores en caso de rotura sin tener que desmontar la central de control.
Figura 31: Conector roscado de 3 pines como los utilizados en el prototipo. Imagen
obtenida de dynamoelectronics.com
52
Las conexiones que no se pueden realizar directamente con el microcontrolador, se
harán utilizando una placa protoboard. Solo se utilizará este método para el sensor de
gas metano MQ-4 y para los Relés.
En el caso del sensor de gas, se utilizará un divisor de tensiones para rebajar la tensión
que llegará al microcontrolador hasta los 3V. Los pines GPIO pueden soportar entradas
de 5V, pero la experiencia con este sensor fue conflictiva. Se utilizará un divisor por
seguridad.
Para el caso de los relés, el problema es el opuesto. La señal de activación del relé debe
ser de 5V, pero la salida del pin GPIO a nivel alto del microcontrolador es de 3.3V. Se
utilizará un sistema simple mediante transistores para solucionarlo. La función del
transistor será, conectar 5V al relé cuando le llegue señal de 3V por su colector.
Figura 32: Diagrama del circuito de activación del relé. Imagen obtenida de qastack.mx
53
4.3. Puesta en marcha
Para la puesta en marcha del prototipo, se deberán seguir por orden los siguientes
pasos:
3. Utilizar el código del anexo IV y V para crear las Api en la Raspberry Pi,
dentro de la carpeta /var/www/html y con la extensión adecuada.
54
5. CONCLUSIÓN
55
6. TRABAJOS FUTUROS
A pesar de que los objetivos marcados eran ambiciosos, siempre hay margen para
mejoras tanto a nivel constructivo como de funcionalidades que incluya el prototipo. Uno
de los más evidentes es el montaje del circuito electrónico sobre un soporte más
adecuado para su uso a largo plazo. En lugar de utilizar una protoboard para las
conexiones, sería recomendable utilizar una PCB u otro tipo de soporte que no esté
pensado para montar y desmontar los componentes con frecuencia.
A nivel de funcionalidad, sería interesante abrir el acceso a los datos de forma segura
desde cualquier parte del mundo. A pesar de que los niveles de humedad están
definidos, una buena función podría ser añadir la capacidad de configurar de forma
remota el nivel de consigna a mantener. De esta forma, podría adaptarse el nivel de
humedad al tipo de materia orgánica que se introduzca en la compostera. Siguiendo con
esta idea, la capacidad de configurar el tiempo de riego de forma remota resultaría muy
útil para adaptar la cantidad de agua que se vierte sobre el compost de forma que el
riego resulte lo más eficaz posible.
Por último, se podría mejorar la visualización de datos para hacerla más interactiva.
Podrían incluirse gráficos y estadísticas generadas automáticamente cuando el usuario
consulta los datos desde el navegador. De esta forma, resultaría más intuitiva la lectura
y se evitará tener que descargar los datos desde phpMyAdmin para analizarlos
manualmente.
56
Bibliografía
[1] F. Jariego, «La nueva revolución industrial: el internet de las cosas,» El Mundo,
30 junio 2014. [En línea]. Available:
https://www.elmundo.es/economia/2014/06/30/53b14869e2704e97368b4577.ht
ml.
[2] I. Wigmore, «Internet de las cosas (IoT),» searchdatacenter, [En línea].
Available: https://searchdatacenter.techtarget.com/es/definicion/Internet-de-las-
cosas-IoT.
57
[12] M. Peláez, «KY-015 Placa sensora basada en DHT11,» Fantasy Studios, [En
línea]. Available:
https://www.fantasystudios.es/arduino/pages/Componentes/placas/sensores/sen
sor_ky-015.html.
[13] M. Integrated, «DS18B20 Datasheet,» Maxim Integrated, [En línea]. Available:
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf.
58
ANEXOS A LA MEMORIA
Anexo I: Diagrama de flujo
INICIO
Inicializar sensores y
variables
NO NO Sí SÍ
SÍ
Tiempo de riego = Tiempo actual
Actualizar tiempo última Tiempo de riego = Tiempo Tiempo de riego = Tiempo
Relé Bomba ON
Lectura de los Actualizar marcadores
sensores y variables
NO ¿ESP32
Relé Bomba OFF
conectado a red
WiFi?
SÍ
¿Marca SÍ ¿Tiempo de NO ¿Marca NO
Preparar datos para envío aire = airear compresor Marca compresor = TRUE
TRUE? superado? = TRUE?
Guardar valores en
Enviar petición HTTP Post al servidor NO SÍ
base de datos
Tiempo de airear = Tiempo actual
Marca airear = FALSE
SÍ ¿Marca
bomba =
Proceso interno TRUE?
Relé Compresor ON
Marca compresor = FALSE
Decisión
Conector
59
Anexo II: Software del programa
/*
************** PROGRAMA AUTOMATIZACIÓN PROCESO COMPOSTAJE CON ESP32
************
************************** TRABAJO FINAL DE MÁSTER
******************************
MÁSTER UNIVERSITARIO EN INGENIERÍA MECATRÓNICA
UNIVERSIDAD POLITÉCNICA DE VALENCIA
AUTOR: Alberto García Martínez
TUTOR: Francisco José Gimeno Sales
CURSO: 2020-2021
FECHA: Septiembre 2021
*/
//PINES HIGRÓMETRO
#define HIGRO_pin 2
#define HIGRO_power 4
60
//PINES RELÉS BOMBA Y COMPRESOR
#define REL_water 1
#define REL_air 3
61
} //FINAL DEL SETUP
//Realizamos mediciones
if (currentMillis - previousMillis_Sensors >= interval_Sensors ||
previousMillis_Sensors == 0) { //Si ha pasado el intervalo o es la
primera vez que se ejecuta el programa
//ENVÍO DE DATOS
if (WiFi.status() == WL_CONNECTED) { //Comprobamos conexión
//Ejecutamos funcion de envío de datos
send_data();
}
62
//CICLO DE RIEGO
if (Flag_Water == true && currentMillis - previousMillis_Water <=
interval_WaterAir ) { //Comprobamos necesidad de riego y no haber
pasado el tiempo de riego
//CICLO DE AIREAR
if (Flag_Air == true && currentMillis - previousMillis_Air <=
interval_WaterAir) { //Si es necesario airear y no ha pasado el
intervalo
if (Flag_Comp == false) { //Si el compresor no está encendido aun
previousMillis_Air = millis(); //Guardamos tiempo de puesta en
marcha
}
digitalWrite(REL_air, HIGH); //Activa compresor
Flag_Comp = true; //Marca como activo el compresor
Serial.println("Aire activo");
}
else { //Si no es necesario airear o el tiempo ha pasado
digitalWrite(REL_air, LOW); //Desactivamos compresor
Serial.println("Aire desactivado");
Flag_Comp = false; //Marcamos compresor como desactivado
Flag_Air = false; //Marcamos airear como no necesario
previousMillis_Air = millis();
}
63
previousMillis_Air = millis(); //Ponemos el tiempo a cero para que
se cumpla la condición de poder empezar a airear
}//Final bloque aireador
64
else {
Flag_Level = true; //Marca nivel como OK
}
} //Final de la función Levelmeasure
//Terminamos la conexion
http.end();
} //Final función envío de datos al servidor
65
Anexo III: Código de la API Post ESP Data
<?php
/*
API PARA PROCESAR PETICIONES HTTP POST Y AÑADIR CONTENIDO A MySQL
Basado en el código de Rui Santos con modificaciones de Alberto Garcia
Rui Santos: Complete project details at
https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/
$servername = "localhost";
// Keep this API Key value to be compatible with the ESP32 code
provided in the project page.
// If you change this value, the ESP32 sketch needs to match
$api_key_value = "tPmAT5Ab3j7F9";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$api_key = test_input($_POST["api_key"]);
if($api_key == $api_key_value) {
$Ambient_Temp = test_input($_POST["Ambient_Temp"]);
$Ambient_Humid = test_input($_POST["Ambient_Humid"]);
$Compost_Temp= test_input($_POST["Compost_Temp"]);
$Compost_Moist= test_input($_POST["Compost_Moist"]);
$Compost_CH4= test_input($_POST["Compost_CH4"]);
$Deposit_Level= test_input($_POST["Deposit_Level"]);
// Create connection
$conn = new mysqli($servername, $username, $password,
$dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
66
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}
else {
echo "Wrong API Key provided.";
}
}
else {
echo "No data posted with HTTP POST.";
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
67
Anexo IV: Código de la API ESP Data
<!DOCTYPE html>
<html><body>
<?php
/*
API PARA MOSTRAR LOS DATOS ALMACENADOS EN LA BASE DE DATOS
Basado en el código de Rui Santos con modificaciones de Alberto Garcia
Rui Santos: Complete project details at
https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/
$servername = "localhost";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($result = $conn->query($sql)) {
while ($row = $result->fetch_assoc()) {
$row_Cycle = $row["Cycle"];
$row_Ambient_Temp = $row["Ambient_Temp"];
$row_Ambient_Humid = $row["Ambient_Humid"];
$row_Compost_Temp = $row["Compost_Temp"];
$row_Compost_Moist = $row["Compost_Moist"];
$row_Compost_CH4 = $row["Compost_CH4"];
$row_Deposit_Level = $row["Deposit_Level"];
$row_ReadingTime = $row["ReadingTime"];
68
echo '<tr>
<td>' . $row_Cycle . '</td>
<td>' . $row_Ambient_Temp . '</td>
<td>' . $row_Ambient_Humid . '</td>
<td>' . $row_Compost_Temp . '</td>
<td>' . $row_Compost_Moist . '</td>
<td>' . $row_Compost_CH4 . '</td>
<td>' . $row_Deposit_Level . '</td>
<td>' . $row_ReadingTime . '</td>
</tr>';
}
$result->free();
}
$conn->close();
?>
</table>
</body>
</html>
69
Anexo V: Diagrama eléctrico y de conexiones
70
71
Documento II: PLIEGO DE CONDICIONES
Objeto del pliego
Este pliego de condiciones presenta los requisitos exigibles al contratista para llevar
a cabo el proyecto “Diseño e implementación de un sistema IoT mediante la plataforma
ESP32 para la automatización del proceso de compostaje de residuos orgánicos
domésticos”
Condiciones técnicas
Desde el punto de vista legal y facultativo el documento capital será el presente pliego
de condiciones.
El presupuesto quedará en última posición en cuanto a jerarquía, siendo el único de no
obligado cumplimiento por suponer únicamente una orientación económica
cuantificativa de los costes del proyecto además de una medición de los materiales
necesarios para llevarlo a cabo.
Condiciones facultativas
Entregables
La siguiente tabla detalla los costes asociados a los materiales del proyecto:
PRECIO TOTAL
DESCRIPCIÓN UNIDADES
(€) (€)
SENSORES 14,26
ACTUADORES 37,21
Bomba de aire para acuario Ireenuo, 3W, 2x150 l/h 1 19,99 19,99
CONTROL 87,46
ALIMENTACIÓN 5,93
SOFTWARE 77,00
Arduino IDE - - -
Fritzing 1,00 8,00 8,00
Microsoft Office 1,00 69,00 69,00
El presupuesto de ejecución incluye las partidas anteriores, a las que se han de añadir
tanto los gastos generales de empresa como el beneficio industrial así como los gastos
de suministros y servicios y la amortización de activos.