Full text
Equation Chapter 1 Section 1 Trabajo Fin de Grado Ingeniería de las Tecnologías de Telecomunicación Sistemas Electrónicos Sistema electrónico para la supervisión remota de parámetros de un acuario Departamento de Ingeniería Electrónica Área de tecnología electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Autor: Julia León Jiménez Tutor: Juan de la Cruz García Ortega Sevilla, 2019
iii Trabajo Fin de Grado Ingeniería de las Tecnologías de Telecomunicación Sistema electrónico para la supervisión remota de parámetros de un acuario Autor: Julia León Jiménez Tutor: Juan de la Cruz García Ortega Profesor titular Departamento de Ingeniería Electrónica Área de tecnología electrónica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
v Trabajo Fin de Grado: Sistema electrónico para la supervisión remota de parámetros de un acuario Autor: Julia León Jiménez Tutor: Juan de la Cruz García Ortega El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2019 El Secretario del Tribunal
vii A todo el que se ha cruzado en mi camino durante estos años
ix Agradecimientos A mis profesores, por enseñarme todo lo que sé de esta bonita materia. En especial a Juan García, por su paciencia, constancia y enseñanza para que este proyecto salga adelante. A mi gran familia, por creer siempre en mi, por aguantar conmigo los momentos difíciles de esta carrera y por celebrar mis triunfos como propios. A mis abuelos, por enseñarme gran parte de los valores que tengo hoy. A mis referentes de vida, mis padres y mis hermanas María y Ángela, por enseñarme a ver siempre el lado positivo de las cosas y ser mi sostén. A Roscón, compañero fiel y silencioso de estudio. A mis amigos, los que siempre estarán y los que estuvieron de paso, que me han acompañado durante esta carrera de fondo. Gracias por compartir cada momento conmigo, se que sin vosotros no hubiera llegado hasta aquí.
ÍNDICE DE TABLAS Tabla 1: Rango de temperatura en función del tipo de agua 7 Tabla 2: Tipo de agua en función del nivel de pH 8 Tabla 3: Dureza del agua según la zona a la que pertenece 9 Tabla 4: Tipo de agua según dureza de ésta 9 Tabla 5: Características Arduino UNO 14 Tabla 6: Características Arduino PRO 15 Tabla 7: Características Arduino DUE 15 Tabla 8: Características Arduino MEGA 16 Tabla 9: Características Arduino YÚN 17 Tabla 10: Características Arduino MEGA ADK 17 Tabla 11: Características Arduino LILYPAD 18 Tabla 12: Características ESP-01 8266 19 Tabla 13: Características boya de nivel 20 Tabla 14: Características sensor de nivel 20 Tabla 15: Características sensor de ultrasonido 21 Tabla 16: Características LM35 21 Tabla 17: Características TMP36 22 Tabla 18: Características DHT22 22 Tabla 19: Características DS18B20 23 Tabla 20: Funciones librería SoftwareSerial 32 Tabla 21: Funciones librería DallasTemperature 33 Tabla 22: Funciones librería ESP8266 35 Tabla 23: Funciones librería SoftwareSerial 35 Tabla 24: Funciones librería PubSubClient 35 Tabla 25: Presupuesto sistema completo 43
xvii
ÍNDICE DE FIGURAS Figura 1: Acuario marino, año 1860 3 Figura 2: Acuario de agua dulce 4 Figura 3: Reef Angel Controller 4 Figura 4: Aquatronica Controller 5 Figura 5: Comparación ºC - ºF - ºK 8 Figura 6: Relación entre la Conductividad Eléctrica y el Total de Sólidos Disueltos 10 Figura 7: Esquema general del sistema de supervisión 12 Figura 8: Placa Arduino UNO 14 Figura 9: Placa Arduino PRO 14 Figura 10: Placa Arduino DUE 15 Figura 11: Placa Arduino MEGA 16 Figura 12: Placa Arduino YÚN 16 Figura 13: Placa Arduino MEGA ADK 17 Figura 14: Placa Arduino LILYPAD 18 Figura 15: Shield Wi-Fi ESP-01 8266 19 Figura 16: Boya de nivel 19 Figura 17: Sensor de nivel de agua 20 Figura 18: Sensor de ultrasonido 20 Figura 19: Sensor de temperatura LM35 21 Figura 20: Sensor de temperatura TMP36 22 Figura 21: Sensor de temperatura DHT22 22 Figura 22: Sensor de temperatura DS18B20 23 Figura 23: Relé de alimentación 220V 23 Figura 24: Pila 9V 24 Figura 25: Baterías recargables AA de 1.2 V 24 Figura 27: Batería recargable USB 24 Figura 27: Pantalla principal IDE Arduino 27 Figura 28: Barra de menú extendida IDE Arduino 28 Figura 29: Barra de menú acciones principales IDE Arduino 28 Figura 30: Topología protocolo MQTT 28 Figura 31: Topología del sistema 29 Figura 32: Página principal MyQttHub 30
xix Figura 33: Menú MyQttHub 30 Figura 34: Messages 1 MyQttHub 30 Figura 35: Messages 2 MyQttHub 31 Figura 36: Stashes MyQttHub 31 Figura 37: Filters MyQttHub 31 Figura 38: Dispositivos conectados MyQttHub 32 Figura 39: Variables, constantes e instancias sketch principal 33 Figura 40: Variables, constantes e instancias del sketch MQTT 36 Figura 41: Montaje final del prototipo 39 Figura 42: Prueba 1. Sensores de temperatura y nivel acuario 3 activados 40 Figura 43: Prueba 2. Sensores de temperatura acuarios 1 y 2 activados 40 Figura 44: Prueba 3. Sensores de nivel acuarios 1 y 3 activados 41 Figura 45: Prueba 4. Fallo en la red eléctrica 41
1 1 INTRODUCCIÓN n este primer capítulo se realizará un breve análisis sobre la motivación para llevar a cabo este proyecto así como el objetivo de éste. Por otro lado, se detallará la estructura del presente documento. 1.1 Motivación La presencia de Internet en nuestra rutina diaria nos ha llevado a controlar numerosas funciones a través de él, desde las luces o persianas de los hogares hasta las cuentas bancarias. Por ello, cada vez vemos más sencillo el uso de aplicaciones que nos faciliten y complementen el trabajo que tienen algunos sistemas, como por ejemplo el que vamos a realizar en este proyecto. Este se encargará de la supervisión de parámetros de un acuario, función que podremos realizar gracias a las comunicaciones. Por otro lado, gran parte de los sistemas fabricados para la supervisión de acuarios tienen unas prestaciones avanzadas que generalmente no se pretenden controlar en un acuario que no pertenece a una piscifactoría, este tipo de sistemas presentan un coste muy elevado. Las razones anteriores han llevado a la realización de este proyecto, que permitirá la supervisión y futuro control remoto de los parámetros más importantes de estos ecosistemas. 1.2 Objetivo El objetivo fundamental del proyecto es la realización de un sistema que se encargue de la supervisión de parámetros de un acuario tales como la temperatura, el nivel de agua y el estado de la red eléctrica, con el fin de obtener una notificación vía SMS que permita saber si el sistema sufre alguna anomalía en alguno de estos parámetros. El alcanzar este objetivo pasa por una serie de fases que han de cumplirse previamente al objetivo fundamental, numeradas a continuación: ü Entender las condiciones normales a las que debe estar sometido un acuario para tener un perfecto ecosistema y establecer unos requerimientos a cumplir por el sistema de vigilancia. ü Comprender cómo se produce la interacción de Arduino con sensores externos, para la obtención de datos de los parámetros definidos. ü Realizar la elección correcta de los sensores necesarios para el sistema y realizar un estudio sobre su funcionamiento. ü Estudiar la conexión de Arduino con un servidor web a través de Wi-Fi. ü Programación del funcionamiento del sistema mediante el software IDE de Arduino. E No hay mejor práctica que una buena teoría. - Kurt Lewin -
Introducción 2 ü Construcción del prototipo del sistema. ü Realización de pruebas que confirmen el correcto funcionamiento del sistema diseñando, cumpliendo con los requerimientos establecidos en la primera fase. Una vez concluidos estos pasos, se habrá obtenido el sistema completo. 1.3 Estructura El presente proyecto constará de un total de 10 capítulos. El primero de ellos, como hemos visto, trata una breve introducción del sistema a diseñar, así como los objetivos que debemos cumplir para obtener el proyecto deseado. El segundo capítulo contemplará una breve historia sobre los acuarios y los parámetros que lo regulan. Por otro lado, se estudiará el estado del arte de los sistemas de supervisión, entendido como todos aquellos desarrollos realizados con el mismo fin que nuestro sistema, que son base teórica sobre la que se sustenta el presente proyecto. El tercer capítulo analizará los parámetros más importantes a medir en un acuario y las condiciones que deben cumplir estos para tener un sistema estable y equilibrado para la supervivencia de los peces. En el cuarto capítulo se abordará la filosofía que sigue un sistema de supervisión general y se describirá la solución elegida para realizar la supervisión de los acuarios de este proyecto, explicando el papel que jugará cada elemento dentro del sistema completo. En el quinto se seleccionarán los componentes necesarios para llevar a cabo el esquema mostrado en el apartado anterior. Se elegirá el microcontrolador, el módulo necesario para la conexión remota con el sistema y los sensores que se utilizarán para medir los parámetros del agua deseados. Para proceder a la selección del mejor candidato para el prototipo final, se analizarán las características de diferentes dispositivos que realicen la misma función. El sexto capítulo explicará el desarrollo software llevado a cabo para hacer posible la funcionalidad del sistema. En primer lugar, se explicará en detalle el software de programación utilizado, qué es un servidor web y cuál se ha usado en el proyecto. En segundo lugar, se presentarán mediante diagramas de flujo los sketch o programas que se han utilizado. En un séptimo capítulo se tendrán las pruebas realizadas al prototipo para comprobar su correcto funcionamiento. Se someterá el sistema a tres situaciones anómalas distintas y se corregirán para comprobar que se deja de enviar la alarma de detección de fallo. Para finalizar, en los dos últimos capítulos se expondrán las conclusiones del desarrollo de todo el proyecto, así como posibles mejoras para proyectos futuros.
3 2 ESTADO DEL ARTE n acuario es un pequeño o gran recipiente que contiene agua salada o dulce y permite mantener un ecosistema cerrado e independiente del entorno natural donde pueden vivir peces y otros animales acuáticos. 2.1 Historia El concepto de acuario nació en el siglo XVIII, cuando las personas más acomodadas de cada país comenzaron a coleccionar conchas, plantas y animales marinos para el disfrute propio y de los invitados. Además, había la necesidad de transportar estos animales y plantas desde su lugar de origen hasta el lugar donde iban a exponerse. En estos años, los acuarios eran recipientes pequeños metálicos donde se incrustaban los cristales, por lo que la visión de su interior era muy reducida. El paso a los acuarios modernos se produjo en el año 1838 por Nathaniel Bagshaw Ward, que añadió más agua que tierra en estos recipientes. Figura 1: Acuario marino, año 1860 A pesar de que los animales y plantas más demandados eran los marinos, este tipo de acuarios tardó más en desarrollarse, ya que se desconocían los medios marinos y no eran capaces de recrearlos y mantenerlos. Estos acuarios vivieron su gran avance después de la Segunda Guerra Mundial, con el desarrollo del buceo, forma por la cual se comenzaron a conocer los fondos marinos. 2.2 Clasificación Existen diversos tipos de acuarios según su finalidad: acuario de reproducción, acuario de biotopo, acuario comunitario... En el presente proyecto nos centraremos en este último, donde pueden convivir peces y plantas de distintas especies, ya que son los ecosistemas más demandados para uso doméstico. Por otro lado, a su vez, los acuarios se clasifican en función de la salinidad del agua que contiene, dividiéndose en tres grupos: • Acuario de agua dulce: Concentración salina <0.5%. • Acuario de agua salada: Concentración salina 5% - 18%. • Acuario de agua salobre: Concentración salina 0.5% - 5%. En este proyecto nos centraremos en los acuarios de agua dulce, ya que son los más comunes debido a su reducido tamaño y fácil mantenimiento. U
Estado del Arte 4 Figura 2: Acuario de agua dulce 2.3 Sistemas desarrollados Los acuarios están presentes en gran parte de los hogares del mundo, ya que existe el concepto de que los peces son animales independientes que no necesitan demasiada atención para su cuidado, pero la realidad es que necesitan unos parámetros bien regulados. A lo largo de los años, se han creado sistemas comerciales y sistemas de software libre para el control de parámetros de un acuario. En este proyecto vamos a destacar dos de estos sistemas: Reef Angel Aquarium Controller y Aquatronica. 2.3.1 Reef Angel Aquarium Controller Este sistema de control ha sido creado por la empresa irlandesa Reef Angel, asentada en Dublín. Consta de un controlador que monitoriza numerosos parámetros del acuario: pH, temperatura, luz, calcio... y nos permite controlarlos de manera remota. Este controlador puede complementarse con diferentes accesorios o expansiones, que permiten controlar otros parámetros como la salinidad, la humedad o el nivel de agua. Es un sistema muy avanzado y cómodo de utilizar, pero tiene un costo muy elevado, rondando los 500€ aquellos que poseen las funciones más simples y pudiendo alcanzar más de 1000€ aquellos sistemas que presten todos los avances logrados en el control de parámetros. Figura 3: Reef Angel Controller 2.3.2 Aquatronica Aquatronica es un sistema que garantiza automatización y seguridad en el control de acuarios. El poseedor del sistema puede controlar todos los dispositivos eléctricos y electrónicos conectados al acuario mediante un simple controlador. El sistema de control se compone de 4 unidades principales: unidad de control, unidad de potencia, interfaces/módulos y electrodos y otros.
5 Sistema electrónico para la supervisión remota de parámetros de un acuario Cada sistema de Aquatronica es capaz de controlar hasta 30 sensores diferentes, incluso en distintos acuarios, permitiendo también la conexión remota. Entre los sensores de medición cabe destacar los más importantes: • Electrodo PH: Mide el nivel de pH en el agua de manera continua. • Sensor de oxígeno disuelto: Mide el nivel de oxígeno disuelto de forma continua en el agua. • Sensor de nivel: Controla el nivel de agua del acuario, permitiendo rellenar el agua gracias al programa de controller. • Sensor de temperatura: Mide la temperatura del agua de manera continua. • Sensor de luz: Mide las condiciones de luz del acuario, teniendo dos valores: noche y día. Figura 4: Aquatronica Controller Como en el caso de Reef Angel, a pesar de ser un sistema completo con unas prestaciones fantásticas, su principal incoveniente es el precio, siendo 650€ para el kit más básico de control y 1009€ la versión deluxe.
Esquema General del Sistema de Supervisión 12 12 Figura 7: Esquema general del sistema de supervisión
13 Sistema electrónico para la supervisión remota de parámetros de un acuario 5 ESTRUCTURA HARDWARE El capítulo 5 se centrará en el análisis de la estructura hardware del sistema, es decir, el análisis de cada uno de los componentes elegidos para llevar acabo las funciones requeridas por el sistema. 5.1 Microcontrolador 5.1.1 ¿Qué es un microcontrolador? El componente principal e indispensable para que el sistema funcione es el microcontrolador, encargado de responder a las señales de entrada dada por los sensores, automatizar procedimientos y procesar información. Para ello, el microcontrolador está compuesto, como mínimo, por tres elementos principales: • Microprocesador: Encargado de ejecutar programas mediante instrucciones programadas en un lenguaje de bajo nivel. Está formado por: Ø ALU: Unidad Aritmeticológica, su función principal es realizar operaciones lógicas, aritméticas y miscelaneas. Ø Unidad de control: Conjunto de sistemas digitales secuenciales encargados de la distribución de la lógica de las señales. Ø Registros: Son las memorias principales de los procesadores. • Memoria: El microcontrolador consta de 3 tipos de memoria: FLASH, RAM y EEPROM. • Periféricos: Encargados de la comunicación con otros dispositivos, de leer sensores, habilitar o deshabilitar actuadores. Para este sistema se necesitará un microcontrolador que cumpla con los siguientes requisitos: • Entradas: Deberá contar con, al menos, 10 entradas. • Salidas: Deberá contar con, al menos, 3 salidas. • Convertidores Analógico/Digitales: Deberá contar con, al menos, 1 CAD. • Canales TX – RX: Deberá contar con, al menos, 3 canales TX – RX. Podemos encontrar una familia de microcontroladores que lidera el mercado gracias a su relación calidad/precio, estos son los microcontroladores Arduino. Por ello, se analizarán los distintos componentes que forman esta familia de microcontroladores para así poder elegir el que más se adecue al sistema a desarrollar. 5.1.2 Arduino Arduino es una plataforma tanto de software como de hardware libre que diseña placas de desarrollo hardware para su uso en proyectos que requieran controlar y supervisar objetos del mundo real. Se desarrolló como una herramienta didáctica en el Interaction Design Instistute Ivrea de Italia, en el año 2003. El objetivo principal del desarrollo de esta herramienta fue facilitar la creación de dispositivos por parte de estudiantes y reducir el coste de estos. En cuanto a software, Arduino cuenta con un entorno de desarrollo integrado (IDE) particular, formado por un editor de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI). Desde este IDE, que implementa el lenguaje de programación de Arduino, se pueden desarrollar aplicaciones que se ejecutarán en la placa hardware, ya que el programa incluye la opción de carga en la memoria flash de ésta. Existen múltiples placas de microcontroladores. A continuación, se analizarán algunos de ellos:
Estructura Hardware 14 14 • Arduino UNO: Es la placa más extendida de Arduino, al ser la primera en comercializarse. Se puede hablar de la placa básica de esta familia, ya que la mayoría de sus sucesoras implementan las características de esta. Figura 8: Placa Arduino UNO Tabla 5: Características Arduino UNO Microcontrolador ATmega328 Alimentación (V) 5 V Pines I/O Digitales 14 Pines Analógicos 6 Memorias FLASH / SRAM / EEPROM 32KB / 2KB / 1KB • Arduino PRO: Placa con el mismo microcontrolador que el Arduino UNO, con una alimentación menos exigente, pero, a su vez, con menos prestaciones en cuanto a memoria. Figura 9: Placa Arduino PRO
15 Sistema electrónico para la supervisión remota de parámetros de un acuario Tabla 6: Características Arduino PRO Microcontrolador ATmega328 Alimentación (V) 3.3 V Pines I/O Digitales 14 Pines Analógicos 6 Memorias FLASH / SRAM / EEPROM 16KB / 1KB / 512B • Arduino Due: Destaca frente al resto de placas de Arduino por su potente velocidad de trabajo (84 MHz), su memoria RAM (96 KB) y su memoria flash (512 KB), otorgando grandes prestaciones para proyectos de alto redimiento. Figura 10: Placa Arduino DUE Tabla 7: Características Arduino DUE Microcontrolador AT91SAM3X8E Alimentación (V) 3.3 V Pines I/O Digitales 54 Pines Analógicos 12 Memorias FLASH / SRAM 512 KB / 96 KB Velocidad del reloj 84 MHz • Arduino MEGA 2560: Es un modelo superior al Arduino UNO, cuenta con un mayor número de pines digitales y analógicos, además de presentar mayor memoria.
Estructura Hardware 16 16 Figura 11: Placa Arduino MEGA Tabla 8: Características Arduino MEGA Microcontrolador ATmega2560 Alimentación (V) 5 V Pines I/O Digitales 54 Pines Analógicos 16 Memorias FLASH / SRAM / EEPROM 256 KB / 8 KB / 4 KB Velocidad del reloj 16 MHz • Arduino YÚN: Es una placa similar al Arduino UNO, con la cualidad de incluir soporte WiFi, Ethernet y tarjeta microSD sin necesidad de shields. Figura 12: Placa Arduino YÚN
17 Sistema electrónico para la supervisión remota de parámetros de un acuario Tabla 9: Características Arduino YÚN Microcontrolador ATmega32u4 Alimentación (V) 5 V Pines I/O Digitales 20 Pines Analógicos 12 Memorias FLASH / SRAM / EEPROM 32 KB / 2.5 KB / 1KB Velocidad del reloj 16 MHz Ethernet / WiFi Sí • Arduino Mega ADK: Es una placa basada en el Arduino Mega 2560 visto anteriormente, que incorpora una interfaz preparada para conectarse a dispositivos Android a través de USB. Figura 13: Placa Arduino MEGA ADK Tabla 10: Características Arduino MEGA ADK Microcontrolador ATmega2560 Alimentación (V) 5 V Pines I/O Digitales 54 Pines Analógicos 16 Memorias FLASH / SRAM / EEPROM 256 KB / 8 KB / 4 KB Velocidad del reloj 16 MHz • Arduino LILYPAD: Placa de Arduino diseñada para su integración en prendas.
Estructura Hardware 18 18 Figura 14: Placa Arduino LILYPAD Tabla 11: Características Arduino LILYPAD Microcontrolador ATmega168V Alimentación (V) 2.7 – 5.5 V Pines I/O Digitales 14 Pines Analógicos 6 Memorias FLASH / SRAM / EEPROM 16 KB / 1 KB / 512 B Velocidad del reloj 8 MHz Una vez conocidas estas placas y sus características, y basándose en los requisitos que se analizan en el apartado 5.1, el microcontrolador Arduino seleccionado para el desarrollo del sistema de supervisión será el Arduino MEGA 2560. 5.2 Módulo Wi-Fi Para hacer posible la transmisión de datos, se requiere que el sistema cuente con la conocida conexión Wi-Fi (Wireless Fidelity). 5.2.1 ¿Qué es Wi-Fi? W-iFi es una red inalámbrica que permite la conexión entre dispositivos electrónicos. Nació en 1999 de la unión de varias empresas para formar la WECA (Wireless Compatibility Alliance), actualmente llamado Alianza Wi- Fi, cuyo objetivo principal es fomentar la tecnología inalámbrica y garantizar la compatibilidad de dispositivos. Esta compatibilidad e interoperabilidad entre equipos se forjó bajo la norma IEEE 802.11b en el año 2000. 5.2.2 Shields Wi-Fi para Arduino La función de envío de datos vía internet se realizará a través de un módulo Wi-Fi conectado al microcontrolador del sistema. En el mercado de Arduino podemos encontrar, principalmente, los siguientes módulos Wi-Fi: • Shield NodeMCU WiFi ESP8266: Circuito integrado que permite obtener conexión Wi-Fi y que
19 Sistema electrónico para la supervisión remota de parámetros de un acuario soporta el protocolo TCP/IP. Figura 15: Shield Wi-Fi ESP-01 8266 Tabla 12: Características ESP-01 8266 Voltaje de operación 3 – 3.6 V Temperatura de operación [-40, 125] ºC Tamaño del procesador 32 bits Memoria 512 kB – 1 MB Pines 10 GPIO, I2C, 1-WIRE Estándar Wi-Fi 802.11b/n/g Protocolos soportados IPv4, TCP / UDP / HTTP / FTP Se analiza sólo esta opción ya que es la más extendida en el mundo de Arduino, estando incluida dentro del microcontrolador Arduino UNO Wi-Fi. Su popularidad se debe a su bajo coste, bajo consumo y buenas prestaciones. 5.3 Sensores 5.3.1 Sensor de nivel de agua Los sensores de nivel de agua compatibles con Arduino que lideran el mercado son, principalmente, dos. Las diferencias entre ambos son notables y se analizan a continuación: • Boya de nivel: Actúan como un interruptor, proporcionando una entrada digital para Arduino. Figura 16: Boya de nivel
Estructura Hardware 20 20 Tabla 13: Características boya de nivel Tipo de sensor Digital Voltaje de alimentación 5 V Rango de temperatura de funcionamiento [-10,85] ºC Número de pines 2 • Sensor de nivel: Ofrece una señal analógica proporcional a la cantidad de agua que detecta, cuando se producen pequeñas modificaciones. Figura 17: Sensor de nivel de agua Tabla 14: Características sensor de nivel Tipo de sensor Analógico Voltaje de alimentación 3.3 – 5 V Corriente < 20 mA Rango de sensibilidad a la humedad 10% – 90% Número de pines 3 • Sensor de ultrasonido: Permite medir la distancia entre el sensor y el agua, con ello se puede saber si el acuario se ha llenado. Figura 18: Sensor de ultrasonido
21 Sistema electrónico para la supervisión remota de parámetros de un acuario Tabla 15: Características sensor de ultrasonido Tipo de sensor Digital Voltaje de alimentación 5 V Corriente < 2 mA Distancia de detección 2 – 400 cm Número de pines 5 Finalmente, se decide hacer uso de las boyas de nivel, ya que para los requisitos del sistema son los más económicos y sencillos, pudiendo detectar un aumento/disminución del sistema en el rango de temperaturas al que va a estar sometido el sistema completo en un instante. 5.3.2 Sensor de temperatura Para la medida de la temperatura del agua se utilizará un sensor de temperatura compatible con Arduino. A continuación, se analizarán los parámetros más importantes de los sensores más populares en el mercado de Arduino, con el fin de seleccionar el que mejor se adapte a los requerimientos del proyecto. • Sensor de temperatura LM35: Este sensor analógico está calibrado en grados centígrados, por lo que no es necesario el uso de un conversor. El principal problema de este sensor es que para medir temperaturas en el rango [-55, 2] ºC es necesario aplicar un voltaje negativo, lo que es imposible usando Arduino, por lo que se descarta su elección. Además de no ser sumergible. Figura 19: Sensor de temperatura LM35 Tabla 16: Características LM35 Tensión de alimentación 4 – 30 V Rango de valores [-55, 150] ºC Precisión ± 0.5 ºC Precio 0.70 € • Sensor de temperatura TMP36: Se diferencia del sensor anterior, principalmente, en dos aspectos: no es necesaria la administración de una alimentación negativa y la precisión de la medida es superior en ± 2 ºC. El principal problema de este sensor es su precisión y su precio, habiendo en el mercado sensores con
Estructura Software 28 28 relacionados con el sistema tales como librerías o tipo de módulo conectado, compilar un programa o verificar si el código desarrollado presenta errores de lenguaje. Figura 28: Barra de menú extendida IDE Arduino • Barra de menú de acciones principales: La aplicación presenta una barra de iconos que contiene las acciones principales más usadas a la hora de desarrollar un sketch. Estas acciones son, de izquierda a derecha de la imagen, verificar, subir sketch al módulo, nuevo sketch, abrir sketch, salvar sketch y, por último, a la derecha del todo, la apertura del monitor serie. Figura 29: Barra de menú acciones principales IDE Arduino 6.2 Servidor MQTT (Message Queue Telemetry Transport) 6.2.1 Protocolo MQTT El protocolo conocido como protocolo MQTT se utiliza para la comunicación M2M (Machine to Machine) en el IoT (Internet of Things) o internet de las cosas. Es uno de los protocolos más utilizados debido a que requiere de muy pocos recursos para realizar la comunicación, en nuestro caso, entre el Arduino y un servidor web. La estructucta o topología de este protocolo es en estrella. Cuenta con un nodo central, conocido como broker, que se encarga de la transmisión de paquetes entre los clientes y de la gestión de la red. Figura 30: Topología protocolo MQTT Para que la comunicación broker – cliente sea posible, es necesario hacer uso de un elemento del mensaje conocido como topic, al que tanto cliente como broker deben estar suscritos. Los topics cuentan con una arquitectura jerárquica en la que de uno de ellos pueden colgar otros, pudiendo suscribirse el cliente en el nivel que desee.
29 Sistema electrónico para la supervisión remota de parámetros de un acuario Figura 31: Topología del sistema Este protocolo contiene una serie de mensajes principiales necesarios para poner en funcionamiento un servidor MQTT: • CONNECT: Mensaje que se encarga de establecer una conexión entre el broker y el cliente. • CONNACK: Mensaje del protocolo MQTT que recibe el cliente una vez que la conexión se ha establecido. • SUBSCRIBE: Mensaje que envía el cliente al broker para indicar que quiere recibir los mensajes de uno o varios topics abiertos en el servidor. • SUBACK: Mensaje que recibe el cliente por parte del broker cuando ha aceptado una petición de suscripción. Una vez establecida la conexión cliente – broker y la suscripción a los diferentes topics se ha completado con éxito, el cliente también puede publicar en los topics que le corresponden con el mensaje PUBLISH. 6.2.2 Servidor web Para el almacenamiento y consulta de los datos recogidos por los sensores conectados al microcontrolador se ha decidido contar con un servidor MQTT. Un servidor web es un espacio en la nube en la que un cliente puede alojar los datos que considere y obtenerlos o visitarlos en cualquier momento en el que cuente con conexión a internet. En este caso, se ha hecho uso de un servidor web MQTT ya implementado, conocido como MyQttHub. Este servidor cuenta con múltiples opciones de configuración que se analizarán a continuación. 6.2.2.1 Servidor web MyQttHub En la página principal de la web se muestran los dispositivos del dominio que se tiene asociado al usuario/contraseña que se ha identificado, en este caso, al dominio SupervisionArdu se tienen asociados dos dispositivos o devices. El primero de ellos se creó con la intención de tener un dispositivo administrador que siempre estuviera asociado, el segundo de ellos es el dispositivo ESP8266 Client, utilizado en el presente proyecto para llevar a cabo toda la comunicación a través del protocol MQTT.
Estructura Software 30 30 Figura 32: Página principal MyQttHub En la esquina superior izquierda se despliega un menú a partir del cual se puede acceder a todas las prestaciones y configuraciones que ofrece el servidor. Figura 33: Menú MyQttHub • Messages: En este apartado se muestran los mensajes publicados en todos los topics del servidor. Permite mostrar las últimas 24 horas, los últimos 7 días y el registro completo, limpiar el registro y descargarlo. Figura 34: Messages 1 MyQttHub
31 Sistema electrónico para la supervisión remota de parámetros de un acuario Figura 35: Messages 2 MyQttHub • Stashes: Se muestran los mensajes publicados separados por topics, quedando en manos del usuario el topic que desea consultar. En este sistema, se cuenta con dos topics, uno referido a cambios anómalos en la temperatura de los acuarios y otro referido al nivel de agua de éstos. Figura 36: Stashes MyQttHub • Filters: Para que en el apartado anterior sea posible la clasificación de mensajes según el topic al que pertenezcan, es necesario aplicar filtros. A la hora de publicar un mensaje en el servidor, el cliente debe indicar la ruta en la que quiere publicarlo, por ejemplo, si el mensaje se debe a una temperatura no deseada, el cliente debe indicar que desea publicar el mensaje en la ruta temperatura/Temperatura Figura 37: Filters MyQttHub • My Subscriptions: Se muestran los topics a los que se encuentra suscrito el dispositivo. • Manage domains: Se muestran los dominios activos en el servidor web. En este caso, el dominio activo es hub-SupervisionArdu. • Manage devices: Se muestran los dispositivos vinculados al usuario. • Show connected devices: En este apartado se muestran los dispositivos conectados al servidor.
Estructura Software 32 32 Figura 38: Dispositivos conectados MyQttHub • Logout: Cierre de la sesión. 6.3 Programas de control En el caso del sistema desarrollado en este proyecto, se cuenta con dos módulos principales, el microcontrolador Arduino Mega y el módulo Wi-Fi nodeMCU ESP8266, cada uno de ellos se controlará con un sketch diferente. 6.3.1 Sketch de control Arduino Mega La recogida de datos de los sensores así como el envío de éstos al módulo WiFi se llevarán a cabo a través del microcontrolador Arduino Mega, el cual tiene cargado en su sistema un sketch que se analizará a continuación. 6.3.1.1 Librerías y declaración de variables, constantes e instancias Para el correcto funcionamiento del sketch, se hace uso de las siguientes librerías, de las cuales se usan las funciones especificadas en cada tabla. 6.3.1.1.1 Librerı+a-SoftwareSerial.h- Encargada de proporcionar las funciones necesarias para abrir el puerto de comunicación serie y escribir en él. Tabla 20: Funciones librería SoftwareSerial Función Utilidad begin Abrir el puerto serie println Escribir por párrafos en la salida del puerto serie Dado que los sensores de temperatura utilizados en el proyecto cuentan con la tecnología 1-wire, la cual permite colocar varios sensores en un mismo bus, utilizando un solo pin de datos, se necesitará la librería de este protocol así como la específica de este sensor. 6.3.1.1.2 Librerı+a-DallasTemperature.h- A través de las funciones implementadas en esta librería es posible realizar lecturas y configuraciones de los sensores de temperatura.
33 Sistema electrónico para la supervisión remota de parámetros de un acuario Tabla 21: Funciones librería DallasTemperature Función Utilidad requestTemperatures Leer las temperaturas de los sensores getTempCByIndex Obtener la temperatura en ºC del sensor x - 6.3.1.1.3 Librerı+a-OneWire- Librería en la que se encuentra implementado todo el protocolo 1-wire necesario para el funcionamiento de los sensores de temperatura. 6.3.1.1.4 Declaracio+ n-de-variables,-constantes-e-instancias- A continuación se muestran las variables, constantes e instancias declaradas en el programa principal. En primer lugar, se define el pin de datos al que van a estar conectados los sensores de temperatura (pinDatosDQ), al tratarse de sensores que utilizan el protocolo 1-wire, solo será necesario definer un pin de datos. En segundo lugar, se declaran los objetos necesarios para el desarrollo del programa, es decir, el bus 1-wire y el objeto DallasTemperature del tipo del sensor de temperatura de nuestro sistema. Por último, se definen las variables str (cadena de texto que va a ser enviada al puerto serie) y nivel0, nivel1 y nivel2, que son los pines donde están conectados los sensores de nivel de agua. Figura 39: Variables, constantes e instancias sketch principal 6.3.1.2 Diagrama de flujo del programa principal En primer lugar, se inicializan tanto la comunicación serie necesaria para enviar los datos recogidos al módulo Wi-Fi como la comunicación del protocolo 1-wire necesaria para la jerarquía maestro-esclavo de los sensores de temperatura. Por otro lado, se definen los pines donde están conectados los sensores de nivel como pines de entrada. En segundo lugar, en el bucle loop, se lleva a cabo la comprobación de los tres sensores de temperatura, si alguno de ellos no se encuentra dentro del rango de temperatura adecuado para el acuario, se enviará un mensaje de aviso al módulo Wi-Fi, escribiendo en el puerto serie el mensaje que se desea publicar en el servidor web. Tras esta comprobación, se realiza la de los tres sensores de nivel, si alguno de ellos se ha activado debido a un descenso del nivel de agua, se escribirá en el puerto serie el mensaje que se desea publicar en el servidor web.
Estructura Software 34 34 NO ¿T3<18 or T3>28? SI NO Escribir en los puertos serie “Temperatura acuario 3: - C” Inicio ¿T1<18 or T1>28? SI NO ¿T2<18 or T2>28? SI Escribir en los puertos serie “Temperatura acuario 1: - C” Escribir en los puertos serie “Temperatura acuario 2: - C” ¿N1 == LOW? SI NO ¿N2 == LOW? ¿N3 == LOW? NO Escribir en los puertos serie “Sensor de nivel acuario 2 activado” Escribir en los puertos serie “Sensor de nivel acuario 1 activado” Escribir en los puertos serie “Sensor de nivel acuario 3 activado” SI SI ¿Fallo en la red eléctrica? NO SI Escribir en los puertos serie “Fallo en la red eléctrica”
35 Sistema electrónico para la supervisión remota de parámetros de un acuario 6.3.2 Sketch de control nodeMCU ESP8266 Como se explicó en el punto 6.1, un sketch de Arduino contiene dos funciones principales, las cuales se van a analizar para el sketch de inicialización y control del modulo Wi-Fi. 6.3.2.1 Librerías y declaración de variables Para el funcionamiento del programa, se han necesitado funciones definidas en librerías independientes, las cuales se van a detallar a continuación. 6.3.2.1.1 Librerı+a-ESP8266.h- Librería necesaria para la conexión a internet a través del módulo Wi-Fi ESP8266. Tabla 22: Funciones librería ESP8266 Función Utilidad begin Establecer conexión con la red WiFi status Comprobar si la conexión de ha establecido con éxito - 6.3.2.1.2 Librerı+a-SoftwareSerial.h:- Encargada de proporcionar las funciones necesarias para abrir el puerto de comunicación serie y escribir en él. Tabla 23: Funciones librería SoftwareSerial Función Utilidad begin Abrir el puerto serie println Escribir por párrafos en la salida del puerto serie available Comprobar si el puerto está disponible read Leer por caracteres lo escrito en el puerto serie - 6.3.2.1.3 Librerı+a-PubSubClient.h:- Para poder hacer que el módulo WiFi funcione como un cliente MQTT, capaz de publicar y recibir mensajes de un topic que se encuentra en un servidor MQTT, se requiere esta librería. Tabla 24: Funciones librería PubSubClient Función Utilidad setServer Acceder a la URL y puerto donde se aloja el servidor MQTT
Estructura Software 36 36 setCallback Recibir mensajes de los diferentes topics connected Comprobar conexión al servidor connect Conexión al servidor MQTT (ID, user, password) loop Mantener activa la conexión del cliente MQTT a la web publish Publicar en un topic del servidor MQTT - 6.3.2.1.4 Declaracio+ n-de-variables,-constantes-e-instancias- Antes de nada, se definen las variables y constantes que van a ser utilizadas a lo largo del programa. En primer lugar, se definen las credenciales del Wi-Fi y las credenciales del servidor MQTT para poder establecer la conexión en el momento indicado en el código. • Credenciales Wi-Fi: o const char* wid: Nombre de la red Wi-Fi a la que se va a conectar el módulo. o const char* password: Contraseña de la red Wi-Fi a la que se va a conectar el módulo. • Credenciales servidor MQTT: o const char* MQTTServer: URL de la página web donde se encuentra el servidor. o const int MQTTPort: Puerto por el que se va a realizar la transmisión y recepción de datos. o const char* MQTTId: Identificador del servidor donde se va a realizar el intercambio de datos. o const char* MQTTUser: Usuario del servidor. o const char* MQTTPsswrd: Contraseña del servidor. En segundo lugar, se definen las variables mensaje e i, además de declarar los siguientes objetos: • ESPClient: Objeto tipo ESP8266 a través del cual se usan las funciones necesarias para establecer la conexión a internet. • client: Objeto tipo PubSubClient usado para la conexión al servidor web MQTT y para hacer posible la transmisión de datos entre Arduino y el servidor. Figura 40: Variables, constantes e instancias del sketch MQTT
37 Sistema electrónico para la supervisión remota de parámetros de un acuario 6.3.2.2 Diagrama de flujo del programa MQTT En primer lugar, se inicializan el puerto serie y la comunicación Wi-Fi. Se establecen la conexión tanto a la red Wi-Fi configurada como al servidor web MQTT. En segundo lugar, en el bucle loop, se realiza una lectura del puerto serie, guardando en la variable mensaje los caracteres recibidos hasta el siguiente caracter fin de línea (\n). A continuación, se diferencia entre los mensajes que comienzan por la letra T, pertenecientes a cambios en la temperatura, y los mensajes que comienzan por la letra S, pertenecientes a los cambios en el nivel de agua del acuario. Una vez identificado el tipo de mensaje, este se publica en el servidor web, dentro del topic (temperatura o nivel) que le corresponda. Para complementar este funcionamiento, se ha incluido una función callback, encargada de mostrar en el puerto serie los mensajes que se publican en los topics en los que el cliente está suscrito. Esta función no se utiliza en el presente sistema, ya que no se pretende tener los puertos de comunicación abiertos en modo lectura.
Conclusiones 44 44
45 Sistema electrónico para la supervisión remota de parámetros de un acuario 9 MEJORAS FUTURAS Sobretodo en la tecnología, los sistemas avanzan y se actualizan conforme cambian las necesidades de los usuarios del producto. Este sistema no iba a ser menos, hay mejoras que se pueden aplicar en futuras versiones del proyecto. En cuanto a hardware, relacionado con los sensores, se pueden añadir tantos como parámetros se quieran medir. Al ser el microcontrolador del sistema un Arduino MEGA que cuenta con las mejores prestaciones en cuanto a pines y memoria, en un futuro pueden añadirse los sensores e incluso actuadores que el usuario desee. En lo relacionado con software, el desarrollo de una aplicación propia en la que se registren los mensajes de alerta como lo hacen en el servidor web sería un punto positivo, tanto económicamente, ya que aumentaría el precio del sistema por tener más exclusividad, como tecnológicamente la empresa que lo desarrolle, al aprender nuevos lenguajes de programación en Android/iOS. Por otro lado, se podría añadir al sistema, el control de los parámetros que se supervisan, añadiendo actuadores.
Mejoras Futuras 46 46
47 Sistema electrónico para la supervisión remota de parámetros de un acuario 10 A NEXOS 10.1 Código Arduino de los programas utilizados 10.1.1 Programa principal
Anexos 48 48
49 Sistema electrónico para la supervisión remota de parámetros de un acuario 10.1.2 Programa MQTT
Anexos 50 50
51 Sistema electrónico para la supervisión remota de parámetros de un acuario REFERENCIAS [1] Unidades de la temperatura http://www.pce-iberica.es/medidor-detalles-tecnicos/unidades-temperatura.htm [2] Temperatura de un acuario http://www.mascotapedia.com/como-puedo-mantener-una-temperatura-adecuada-en-mi-acuario/ [3] pH https://es.wikipedia.org/wiki/Hidr%C3%B3geno http://www.elacuarista.com/secciones/quimica1_agua.htm [4] Conductividad eléctrica http://www.smart-fertilizer.com/es/articles/electrical-conductivity http://www.infoagro.com/instrumentos_medida/doc_conductividad_electrica.asp?k=53 [5] Microcontrolador https://hetpro-store.com/TUTORIALES/microcontrolador/ [6] Qué es Arduino http://arduino.cl/que-es-arduino/ [7] Arduino MEGA https://comohacer.eu/analisis-comparativo-placas-arduino-oficiales-compatibles/#Arduino_Mega [8] Tipos de Arduino https://hacedores.com/cuantos-tipos-diferentes-de-arduino-hay/ [9] Wi-Fi en Arduino https://aprendiendoarduino.wordpress.com/2016/11/12/wifi-en-arduino/ [10] Alimentación de Arduino https://www.luisllamas.es/alimentar-arduino-baterias/ [11] Programación de Arduino https://www.prometec.net/condicionales-botones/ http://manueldelgadocrespo.blogspot.com/p/description-text-strings-can-be.html [12] Aquatronica y Reef Angel Aquarium Controller https://www.aquatronica.com/resources/downloads/ita/ALTRO/CATALOGHI/CATALOGO%20GENERA L%20V02_ES.pdf http://www.reefangel.com [13] Qué es MQTT https://geekytheory.com/que-es-mqtt