PFC Victor Pablo Gozalo
PFC Victor Pablo Gozalo
PFC Victor Pablo Gozalo
TECNOLOGÍAS Y SERVICIOS DE
TELECOMUNICACIÓN
TRABAJO FIN DE GRADO
DISEÑO E IMPLEMENTACIÓN DE UN
SISTEMA PORTÁTIL DE MEDIDA DE
EMISIONES DE CO2
Vocal: D. …………..
Secretario: D. …………..
Suplente: D. ……………..
Los miembros del tribunal arriba nombrados acuerdan otorgar la calificación de:
………
Madrid, a de de 20…
UNIVERSIDAD POLITÉCNICA DE MADRID
ESCUELA TÉCNICA SUPERIOR
DE INGENIEROS DE TELECOMUNICACIÓN
GRADO EN INGENIERÍA DE
TECNOLOGÍAS Y SERVICIOS DE
TELECOMUNICACIÓN
TRABAJO FIN DE GRADO
DISEÑO E IMPLEMENTACIÓN DE UN
SISTEMA PORTÁTIL DE MEDIDA DE
EMISIONES DE CO2
PALABRAS CLAVE
CO2, GPS, Arduino, sensor MQ-135, concentración, cuantificación, calidad del aire, contaminación,
monitorización, tráfico.
SUMMARY
Global warming is a fact and a challenge for society during this century. In addition, world population
is increasingly numerous and urbanite, so the control of emissions (one of the main causes of global
warming) is fundamental, especially in urban settings. Air pollution increases the risk of respiratory
infections, heart diseases, strokes, and lung cancer. To address this problem, it becomes necessary to
monitor air quality, (that is to measure gases and pollutants concentrations in the atmosphere). This
monitory can help to take the necessary measures, in order to reduce emissions and to preserve the
health of the inhabitants.
In this project, a portable CO2 measuring device based on Arduino has been designed. It is intended to
be placed on different types of urban vehicles. While the vehicle is moving, it records the
measurements of their gas and noise pollution sensors, as well as, the place where these measurements
have been taken. Also, a static air quality quantification system has been designed for indoors of
buildings and industries. The element used to quantify air quality is an MQ-135 sensor, which detects
NH3, NOx, alcohol, benzene, smoke, and CO2 gases with similar sensitivity. The sensitivity curve of
the sensor has been estimated to obtain the approximate CO2 gas equation by minimum squares
adjustment. The element in charge of providing the GPS data is a SIM808 module that contains the
extra functionalities of connectivity with the GSM and GPRS networks. Other components that have
been implemented in the system are a microSD memory card to store the data, a KY038 sound
intensity sensor, a DHT11 temperature and humidity sensor, an LCD display and an ESP8266-01S
Wifi module. All of them are connected to a microcontroller of an Arduino Nano board, that has been
selected for their low economic cost and small dimensions.
As a result, the first developed design provides the qualities of data transmission and remote control
through the GSM networks by means of SMS sending commands, and the second offers different
alternatives for data visualization through an LCD, serial monitor or applying Wifi technologies for
the deployment of a Web server. With the development of these devices, a better interpretation of
urban air quality is achieved and, according to the recorded data, to propose urban traffic control
actions more selective than current actions, being able to close only those areas where the level of
environmental pollution is higher and less affecting the mobility of the city. The prototype can be
expanded by adding new sensors to measure other gases or by placing the portable system on drones
to take measurements at different heights.
KEYWORDS
CO2, GPS, Arduino, MQ-135 sensor, concentration, quantification, air quality, pollution, monitoring,
traffic.
ÍNDICE DEL CONTENIDO
1. INTRODUCCIÓN Y OBJETIVOS
1.1. INTRODUCCIÓN
El calentamiento global es un hecho y un reto para la sociedad durante este siglo. Desde el año 1990
ha habido un aumento del 43% en el efecto de calentamiento sobre el clima de los gases de efecto
invernadero de larga duración. La principal causa del calentamiento global se debe al CO 2 que, desde
la revolución preindustrial, en 1750, se ha incrementado en un 147%, alcanzando las concentraciones
máximas de 417,1 partes por millón (ppm) en Mayo de 2020 [1]. La organización meteorológica
mundial (WMO) también registra concentraciones de otros gases conducentes al calentamiento
global, tales como el metano y los óxidos de nitrógeno (NO x) que se han incrementado en un 259% y
un 123% respectivamente desde el año 1750 [2].
Además, la población mundial cada vez es más numerosa y urbanita. Según un informe de las
Naciones Unidas la población mundial actual es de 7,7 billones de habitantes, esperándose un
aumento en 2 billones para 2050, y alcanzándose su punto máximo a finales del siglo actual en casi 11
billones de habitantes [3]. Este crecimiento es coincidente con la expansión de las áreas urbanas.
Según Naciones Unidas, en 2018 la población mundial residente en áreas urbanas era del 55% (4,2
billones de habitantes) proyectándose un incremento en 2,5 billones para 2050, pasando a ser del 68%
la población mundial residente en estas áreas. Este incremento corresponde, en un 90%, a países en
desarrollo de Asia y África [4]. Por estos motivos, el crecimiento de la población influye en un
incremento en el uso de vehículos, lo que lleva asociado un aumento del tráfico rodado y un aumento
de emisiones asociadas, empeorando a su vez, la calidad del aire. Solo en España, el número de
vehículos alcanzó los 29.795 millones de unidades, con un incremento del 8% respecto a los cinco
últimos años, y que se espera aumentar en los años venideros [5].
Por estas razones, el control de las emisiones es fundamental, sobre todo en entornos urbanos, a la que
se suma su relación con las medidas de desarrollo sostenible (ODS), reciclar la basura, uso de
electrodomésticos de bajo consumo y alta eficiencia energética, potenciar el uso del transporte
público, reducir las emisiones de carbono, etc. [6].
Para realizar una adecuada monitorización de las emisiones, debe conocerse las fuentes, la cantidad y
la distribución temporal de los contaminantes. Las principales fuentes de partículas contribuyentes a
la contaminación del aire en son el tráfico (25%), combustión y agricultura (22%), quema de
combustibles domésticos (20%), polvo natural y sal (18%) y actividad industrial (15%), variando
entre las diferentes regiones del mundo [7]. De hecho, el tráfico es la mayor fuente de contaminación
del aire no solo contribuyendo al incremento de los gases de efecto invernadero, tales como el CO 2,
sino que además produce gases tóxicos como el CO resultante de combustiones incompletas de
combustibles y NOx. Inhalar CO2 reduce la capacidad de la sangre para transportar oxígeno y es
causante de problemas respiratorios como asma, alergias y en ocasiones incluso la muerte. Según la
Organización Mundial de la Salud (OMS), en 2012 la contaminación del aire contribuyo al 6,7% de
muertes en todo el mundo. En particular, el 16% de las muertes por cáncer de pulmón, el 11% de las
muertes por enfermedad pulmonar obstructiva crónica y más del 20% de las cardiopatías isquémicas y
los accidentes cerebrovasculares se asocian con partículas del aire [7]. A esto se le debe sumar que, en
Europa en 2019, un 8% de la población urbana se encontraba ya expuesta a concentraciones de PM2.5
(se trata de partículas creadas particularmente por reacciones que envuelven emisiones de NOx)
superiores a los estándares de calidad del aire prescritos por las Directrices de calidad del aire
recomendadas por la OMS [8]. Todo ello implica una exigente necesidad de construir dispositivos
capaces de monitorizar de la forma más precisa posible la calidad del aire, concienciando a las
personas de tomar acciones de desarrollo sostenible para hacer frente a los niveles de contaminación
en tiempo real con el objetivo de acomodarse a las necesidades individuales de salud y reducción de
las emisiones.
En episodios de contaminación, la Comunidad de Madrid (CAM) establece una serie de protocolos de
actuación. Un día con superación del nivel de preaviso (un nivel de preaviso sucede cuando dos
estaciones cualesquiera de una misma zona superan, simultáneamente, 180 g/m3 durante dos horas
consecutivas, o tres estaciones cualesquiera de la red de vigilancia superan, simultáneamente, 180
2
g/m3 durante tres horas consecutivas) implica medidas informativas y de recomendación, medidas de
promoción de transporte público y reducción de la velocidad a 70 km/h en la M-30 y accesos.
Tras 2 días consecutivos con superación del nivel de preaviso o 1 día con superación del nivel de
aviso (un nivel de aviso sucede cuando dos estaciones cualesquiera de una misma zona superan,
simultáneamente, 200 g/m3 durante dos horas consecutivas, o tres estaciones cualesquiera de la red
de vigilancia superen, simultáneamente, 200 g/m3 durante tres horas consecutivas), implica añadir a
lo anterior, la prohibición de la circulación en el interior de la M-30 y por la M-30 a los vehículos a
motor, incluidos ciclomotores, que no tengan la clasificación ambiental de “CERO EMISIONES”,
“ECO”, “C” o “B” en el Registro de Vehículos de la Dirección General de Tráfico (DGT), y la
prohibición del estacionamiento en las plazas y horario del Servicio de Estacionamiento Regulado
(SER) a los vehículos a motor que no tengan la clasificación ambiental de “CERO EMISIONES” o
“ECO” en el Registro de Vehículos de la DGT.
Tras 3 días consecutivos con superación del nivel de preaviso o 2 días consecutivos con superación
del nivel de aviso, implica añadir a lo anterior la recomendación de la no circulación de taxis libres,
excepto Eurotaxis y vehículos que tengan la clasificación ambiental de “CERO EMISIONES” o
“ECO” en el Registro de vehículos de la DGT en todo el término municipal. Estos vehículos podrán
estacionar en las plazas del SER, además de en sus paradas habituales a la espera de viajeros, en los
términos que se establezcan en la Ordenanza de Movilidad Sostenible.
Tras 4 días consecutivos con superación del nivel de aviso implica cumplir con la normativa anterior.
1 día de nivel de alerta (un nivel de alerta sucede cuando tres estaciones cualesquiera de una misma
zona superan, simultáneamente, 400 g/m3 durante tres horas consecutivas), implica añadir a lo
anterior la prohibición de la circulación en todo el término municipal a los vehículos a motor,
incluidos ciclomotores, que no tengan la clasificación ambiental de “CERO EMISIONES” o “ECO”
en el Registro de Vehículos de la DGT, la prohibición del estacionamiento en las plazas y horario del
SER a los vehículos a motor que no tengan la clasificación ambiental de “CERO EMISIONES” en el
Registro de Vehículos de la DGT y la prohibición de la circulación de taxis libres, excepto Eurotaxis
y vehículos que tengan la clasificación ambiental de “CERO EMISIONES” o “ECO” en el Registro
de Vehículos de la DGT, en todo el término municipal [9].
Con la red de dispositivos diseñada en este proyecto, se puede hacer una mejor interpretación de la
calidad del aire urbana y proponer un sistema de cierre del tráfico selectivo en función de las medidas.
1.2. OBJETIVOS
El objetivo del presente Trabajo de Fin de Grado (TFG) es diseñar e implementar un sistema portátil
de medida de CO2 basado en Arduino para implementarlo en distintos tipos de vehículos urbanos, ya
sean de transporte público (autobuses urbanos, taxis, vehículos VTC o carsharing) o vehículos de
reparto de última milla. Este sistema dispondrá de un módulo GPS y una serie de sensores de CO2 que
permitirá registrar la posición y la medida de dicho gas, a medida que el vehículo se desplace por la
ciudad.
Estos datos registrados se almacenarán en forma de ficheros de texto, o se podrán enviar a una base de
datos (BB.DD.) para su posterior análisis mediante distintas herramientas, tales como MATLAB®,
R® o EXCEL®. Estas herramientas permitirán realizar un estudio de los niveles de contaminación
encontrados en la Comunidad de Madrid (CAM), y evaluar el número de dispositivos que deberían
desplegarse en distintos vehículos compartidos (tales coches, motos, bicicletas, patinetes eléctricos,
etc.) para monitorizar todo el entorno urbano. Adicionalmente, este sistema podrá medir otro tipo de
gases de efecto invernadero (GEI) o contaminantes, además del CO2, ya que los sensores incorporados
son sensibles a varios tipos de gases (tales como NH3, NOx, alcohol, benceno, humo).
Se van a realizar dos tipos de diseños: el primer diseño, descrito anteriormente, estará diseñado para
registrar medidas de emisiones en exteriores, a medida que los vehículos se desplacen por la ciudad,
mientras que el segundo diseño permitirá cuantificar la calidad del aire en edificios e industrias.
3
1.3. REQUISITOS
Para alcanzar los objetivos el sistema desarrollado tiene que medir las concentraciones de CO2 cada
10 segundos y almacenar su localización a través de un GPS, junto con una marca temporal
(timestamp) y la contaminación acústica del ambiente. Este dispositivo irá instalado en vehículos
compartidos (carsharing) y almacenarán la información de las lecturas en una tarjeta de memoria
microSD, notificando cualquier valor medido superior al umbral de referencia.
Para ello, se utilizarán unos sensores electroquímicos, cuya medida es recogida por un
microcontrolador y que, mediante interfaz por puerto serial, se comunicará con una tarjeta SD y un
módulo GPS, GSM, GPRS permitiendo almacenar las lecturas.
1.4. ESTRUCTURA
En el apartado 2, se desarrolla el estado del arte, describiéndose las diferentes tecnologías, sistemas y
lenguajes de programación actuales en relación con previas soluciones de sistemas de detección de
niveles de contaminación con Arduino o placas similares, destacándose sus ventajas y desventajas. En
el apartado 3 de esta memoria, se describe el desarrollo del sistema implementado, clasificándose en
varios subapartados. En el apartado 3.1, se describe el entorno de funcionamiento del IDE de Arduino
y las placas que se han utilizado. En el apartado 3.2, se presentan las tecnologías actuales de detección
de gases aplicadas en sensores, una clasificación de una familia de sensores electroquímicos
denominada serie MQ, destacándose el sensor MQ-135 implementado en el sistema. En el apartado
3.3, se define un conjunto de componentes utilizados junto al sensor en la elaboración del proyecto,
con el objeto de incrementar la funcionalidad de este por medio de la obtención de otros tipos de
lecturas y representación de los datos. En el apartado 3.4, se presentan los esquemas de los dos
sistemas implementados. Finalmente, en el apartado 3.5, se describe los sistemas diseñados, tanto su
código como funcionamiento.
En el apartado 4, se presentan los resultados obtenidos, describiéndose el procedimiento de
calibración del sensor MQ-135, las funcionalidades que se les puede dar a los sistemas desarrollados
extendiéndose a las conclusiones obtenidas en el apartado 2.1. Estado del Arte y las medidas de
prueba realizadas. En el apartado 5, se muestran las conclusiones y posibles desarrollos futuros del
sistema. Adicionalmente, en los anexos se contemplan los impactos en aspectos económicos, sociales
y éticos en los que este proyecto repercute, la elaboración del presupuesto económico del proyecto, y
los códigos con el funcionamiento de ambos sistemas y calibración del sensor utilizado.
4
En la referencia [11] se diseñó un sistema para monitorizar las emisiones de CO2 producidas por
vehículos dentro de un campus universitario donde existen badenes reductores de velocidad. El
estudio consistía en demostrar la suposición de que los vehículos emitían más combustión cerca de
estas áreas debido a la aceleración del vehículo para pasar por los reductores.
El sistema implementado consiste en una placa denominada Waspmote (Figura 1) que contiene el
microcontrolador ATmega1281 sobre el que se monta un sensor de gases Waspmote 2.0 (Figura 3)
diseñado para medir parámetros ambientales como temperatura, humedad, presión atmosférica y 14
tipos de gases. En este proyecto solo se utilizo el sensor de CO 2 que viene calibrado de fábrica y con
un rango de obtención de medidas de 350 a 10000 50 ppm. También, se monta un módulo XBee
(Figura 2) que tiene embebidos módulos de RF (Radio Frecuencia) con diferentes protocolos WIFI, y
que en este sistema hace uso de los protocolos de comunicación Zigbee para el envío de los datos
recibidos del sensor por parte del módulo Waspmote, una vez realizada la conversión de voltaje a
concentraciones ppm, hacía un módulo coordinador (XBee Pro), colocado en un ordenador, mediante
puerto serie para la lectura de los datos. Finalmente, para la adquisición y almacenamiento de los
datos se usa Matlab.
Figura 1: Vista Superior Placa Waspmote Figura 3: Sensor de gases Waspmote 2.0 Figura 2: Módulo XBee
Se desplegaron varios de estos sistemas a lo largo del campus, constituyendo una red de sensores
Wireless con un nodo central (XBee Pro), tomando medidas cada 500ms y almacenando los datos en
una matriz durante 10 minutos. Como resultado se obtuvo una herramienta con el fin de reducir la
contaminación ambiental alrededor del campus, reducir el tráfico al eliminar los badenes de velocidad
o restringir la circulación de vehículos en las horas pico en las que el sistema indica que los niveles de
contaminación son excesivos.
En este proyecto se destaca la utilización de los módulos XBee, y el uso de la tecnología ZibBee para
el envío y recibimiento de datos. Además, se hace uso de un firmware llamado DigiMesh que permite
la conexión en red, asegurando que los módulos se comuniquen incluso si alguno falla. Tiene el
inconveniente de funcionar con redes WIFI con un alcance de señal de 1,6km. Por ello, es adecuado
para estudiar las concentraciones de niveles de CO 2 de un campus universitario. Por ejemplo, en
España tenemos la redIRIS para la interconexión de universidades y centros de investigación. Con
este ejemplo, se quiere dar a conocer que se podrían tomar medidas de dos centros universitarios de la
UPM en distintas localizaciones, y recolectar los datos mediante el mismo nodo central, pero no
serviría para la monitorización de concentraciones a lo largo de la Comunidad de Madrid, ya que no
se dispondría de conexión a red, por lo que sería necesario emplear otro tipo de módulos como se
justificará más adelante.
Otras ventajas que tiene este sistema se deben a que el microcontrolador dispone de la placa
Waspmote, plataforma modular opensource que permite construir redes de sensores inalámbricas de
muy bajo consumo, soportando diferentes protocolos de comunicación, y la disponibilidad de
conectar un panel solar para recargar la batería. Además, el uso de la tecnología Zigbee permite a los
sensores entrar en modo sleep, permitiendo ahorrar batería y solo tomar datos cuando se necesita.
Como inconvenientes, el sensor Waspmote 2.0 usado en este proyecto, se encuentra desaprovechado,
ya que es capaz de tomar lecturas de 14 distintos tipos de gases, y solo se ha usado el sensor interno
correspondiente a mediciones de CO2.
6
En la referencia [12] se presenta una red de sensores Wireless fija, con topología conectada en forma
de estrella, que analiza el comportamiento del tráfico en función de la detección de niveles de CO2 y
contaminación acústica. Cada nodo sensor contiene una unidad de detección, constituida por un
sensor MG-811 con un rango de 350 a 100000 ppm de CO2 y un módulo Sparkfun Sound Detector. Un
Arduino NANO, cuyo microcontrolador procesa los datos medidos y los envía mediante
comunicación serial a un módulo XBee. Este ultimo módulo forma la red WIFI permitiendo la
comunicación mediante el uso de distintos protocolos de encaminamiento (céntrico, jerárquico,
basado en localización, QoS, etc.) con un nodo coordinador llamado “Sink”. Este sensor también
contiene un reloj que proporciona la información del tiempo exacto en el que se han tomado las
medidas, y una unidad de suministro de potencia (módulo Lipo Rider Pro), consistente en un módulo
que permite la conexión de una batería y una placa solar.
Este nodo coordinador recibe los datos enviados desde los nodos sensor a través de un módulo XBee a
un Arduino MEGA que se comunica mediante comunicaciones serie con una Raspberry Pi, que
presenta la aplicación Java NetBeans, que almacena los datos medidos, y los presenta en gráficos en
tiempo real. Además, la Raspberry Pi se encuentra situada en una red local, permitiendo, a los
desarrolladores del proyecto, acceso remoto para la monitorización de la red y observación de los
gráficos.
En la figura 4 se observa el diagrama de conexión de los componentes que constituyen uno de los
nodos de la red Wireless, y el nodo coordinador.
Figura 4: Diagrama de conexión de los componentes de uno de los nodos sensor de la red Wireless, y nodo coordinador [12]
En este proyecto se destaca lo bien implementada que esta la red de sensores Wifi mediante el uso de
módulos XBee y la tecnología Java NetBeans, que permite la presentación de los datos en gráficos en
tiempo real. Además de ofrecer la posibilidad de comparar datos de distintos días o meses con el
objetivo de conocer la variación de las concentraciones. Otras ventajas se encuentran en las unidades
de detección, cuando los niveles de CO2 son altos, provocados por la congestión del tráfico, resulta
importante la monitorización de los niveles de ruido como parte del análisis. En cuanto al sensor MG-
811, tiene la ventaja de su amplio rango de detección del gas CO2. Sin embargo, presenta el
inconveniente de no venir calibrado de fábrica, y que dependiendo del entorno donde se instale el
sensor, se tiene que configurar el rango de detección.
En [13] se ha usado un CanSat (aparato del tamaño de una lata de refresco que simula un satélite real,
donde los distintos componentes son montados en el interior de la estructura para ser lanzado hacia el
cielo) para medir las concentraciones de los gases CO 2 y CO producidos por vehículos en distintas
ubicaciones (áreas escolares, industriales y espacios abiertos), considerando la hora de la medición, la
altura sobre el nivel del mar y garantizando la presencia de una calidad del aire variable por tomarse
como referencia una altitud de 100m. El CanSat estaba diseñado para realizar una medición de la
calidad del aire por cada caída de 20 metros, realizándose un total de cinco medidas en cada intento en
el que se lanzaba.
Los componentes que este sistema tiene montados en el interior de la estructura del CanSat son: un
Arduino Nano, cuyo microcontrolador se encarga de recibir las señales de los sensores MQ-135 y
MQ-9, y procesar y almacenar los datos en una tarjeta de memoria externa, una placa Ardusat que
7
En [14] se han colocado un conjunto de sensores rodeando una ciudad, para monitorizar la calidad del
aire midiéndose las concentraciones de CO y HCHO a una velocidad especificada. Para ello se ha
usado una plataforma en la nube, siendo el sistema de monitorización capaz de notificar a los
usuarios, por medio de mensajes de texto junto con correos electrónicos, cuándo se alcanza el umbral
de estos gases, al combinar datos de localización de los usuarios y la información de la calidad del
aire urbana proporcionada por la red de estaciones de monitorización.
El sistema desarrollado en esta referencia consiste en una placa Marvell 88MW302 a la que se
conectan una serie de sensores (luminosidad, gas, CO2, HCHO y temperatura). El microcontrolador de
la placa procesa los datos medidos y los transmite a través de una red GSM tanto a un servidor como a
la plataforma AWS Cloud utilizada, asegurando la integridad, seguridad y disponibilidad de los datos.
Para el acceso a los datos se proporciona a los usuarios un ID y contraseña, pudiendo ser visualizados
mediante cualquier dispositivo móvil o ordenador.
En este proyecto se destaca el tema Internet of Things (IoT) que ha permitido desarrollar plataformas
de detección de calidad del aire en tiempo real y proporcionar el acceso a los datos medidos en
cualquier lugar del mundo. Otra ventaja se encuentra en la placa usada “Marvel 88MW302” que
realiza dos funciones principales: la primera actúa como interfaz de comunicación procesando las
lecturas de los sensores por comunicación serie, y la segunda permite la transmisión de los datos a la
plataforma en la nube, debido a su disponibilidad de redes GSM y conectividad con Internet. Por otro
lado, el único inconveniente observado es que no se indica los modelos de sensores utilizados, por lo
que no se podrá comparar con los componentes elegidos para el sistema montado que se justifica en
esta memoria.
En [15] se tomaron mediciones cada cuatro minutos de los gases CO, SO2, CO2, N2O y compuestos
orgánicos presentes en el interior y exterior (fachadas) de las oficinas, a distintas alturas de un edificio
en el centro de una ciudad con ventilación natural, para evaluar el efecto que tienen las emisiones
emitidas por los vehículos en el interior de la viviendas, la efectividad de la fachada del edificio para
8
A modo de resumen, en la Tabla 1 se hace una clasificación de las distintas, tecnologías, módulos y
sensores que se han utilizado en los trabajos previos, con referencias a sus hojas de características
para facilitar su consulta.
Tabla 1: Tecnologías, módulos y sensores implementados en la detección de agentes contaminantes del aire
Waspmote [16]
Arduino NANO [17]
PLACAS Arduino MEGA [18]
Raspberry Pi [19]
Marvell 88MW302 [20]
Zigbee
Matlab
AWS Cloud
Internet of Things
9
Tras analizar algunas de las diferentes soluciones existentes y realizar las comparaciones pertinentes
con aquellas que se asemejan más a nuestra propuesta, se han encontrado distintas tecnologías
utilizadas en sensores para detectar los distintos gases. De entre los presentes en la clasificación, todos
los sensores son electroquímicos (ver apartado 3.2.1.) a excepción del monitor multifugas de Brüel y
Kjaer, que está basado en detección por infrarrojos fotoacústicos, y que debido a su elevado coste es
directamente descartado.
El objetivo del proyecto es principalmente poder tomar lecturas de concentraciones de CO 2, por tanto,
se descarta la placa de sensores Waspmote 2.0, capaz de medir 14 tipos de gases, ya que se estaría
desaprovechando, aunque su uso nos facilitaría un estudio mucho más prometedor y la ventaja de que
los sensores ya vienen calibrados de fábrica. Finalmente, existen dos posibles elecciones de sensores
para realizar las medidas: los sensores MG-811 y MQ-135, cuyo proceso de calibración será necesario
realizarse en ambos dispositivos. Se ha decidido usar el sensor MQ-135 por dos razones: la primera su
precio es 16 veces menor comparado con el sensor MG-811, y la segunda es sensible en similar
proporción a los gases NH3, NOx, alcohol, benceno, humo y CO2. Por otro lado, si comparamos sus
rangos de detección, el sensor MQ-135 dispone de un rango de 0 a 10000 ppm, pero su relación con el
gas CO2 es solo de 0 a 200 ppm, mientras que el sensor MG-811 tiene un rango que oscila entre 350 y
100000 ppm. La diferencia es apreciable, pero es un inconveniente a tener en cuenta cuando la
prioridad es diseñar un sistema de pequeño coste económico. A razón del conflicto entre usar uno u
otro sensor, se podría recurrir a un segundo estudio, en el que se dispusiese de ambos sensores con el
objetivo de compararles, y así, poder determinar la fiabilidad de las lecturas que realiza el sensor MQ-
135.
En cuanto al microcontrolador, núcleo de cualquier sistema, se ha concluido que la opción más
adecuada es la placa Arduino NANO, que a pesar de tener especificaciones más simples en relación a
número de pines, memoria, etc., su precio, tamaño, peso, interacción con otros componentes
desarrollados por terceros, y su prototipado sobre una placa Protoboard, la convierten en una de las
mejores opciones hoy en día para el desarrollo de proyectos de código no demasiado extenso.
En varias soluciones se ha montado una red de nodos inalámbricos que se comunican con un
coordinador para transmitirle las lecturas medidas por los sensores. Para ello, se han utilizado unos
módulos llamados XBee Pro que funcionan por WIFI y mediante la tecnología Zigbee. Como ya se ha
comentado, estos módulos no servirían para monitorizar las concentraciones a lo largo de una gran
ciudad como es Madrid porque no se dispondría de conexión a red al funcionar por redes WIFI. Por
este motivo, se ha decido que el módulo más adecuado para implementar en nuestro sistema es el
módulo SIM808, que funciona por medio de una tarjeta SIM y que, además de proporcionar las
coordenadas geográficas, fecha y hora en la que se han tomado los datos, ofrece las funcionalidades
de las redes GSM/GPRS, permitiendo por ejemplo controlar nuestro sistema autónomo mediante el
uso de SMS, llamadas o una aplicación con la que interaccione, y la conexión a Internet de la misma
forma que hacen los módulos XBee Pro para el envío y recepción de datos. De la misma manera, si se
hubiesen montado varios sistemas iguales, que no es nuestro caso, los módulos SIM808 podrían
actuar a modo de nodos transmitiéndose datos entre sí, y haciendo uso de las tecnologías IoT. Dado
que nuestro sistema es un primer prototipo y uno de nuestros objetivos principales es realizar un
estudio sobre los niveles de CO2 encontrados en la Comunidad de Madrid, se ha creído más
conveniente utilizar una tarjeta de memoria Micro SD para almacenar los datos, y usar las
herramientas Matlab y Excel para su análisis posterior. Por tanto, con el módulo SIM808 se pueden
descartar los módulos XBee Pro, GPS Blox, reloj de tiempo real RTC DS3231, CH340, y la placa
Marvell 88MW302.
En cuanto a la alimentación de nuestro sistema portátil, para un primer prototipo se ha decidido que es
más adecuado hacer uso de baterías de 9V recargables, que invertir en una placa solar y un módulo de
alimentación externo, como puede ser LiPo Rider Pro, para su conexión con el Arduino. Esta
conclusión tiene su justificación en la ubicación que va a tener el sistema en el vehículo, ya que si lo
dejamos al descubierto podría dañarse por el efecto de la lluvía, mientras que si lo colocamos en la
parte inferior del vehículo, no tendría radiación solar incidente, provocando el funcionamiento
incorrecto del sistema.
10
Por otro lado, en este proyecto también se ha diseñado un sistema estático, dirigido a la cuantificación
de la calidad del aire en edificios e industrias, utilizándose el mismo sensor MQ135 como detector de
concentraciones, pero en este caso pudiéndose obviar el proceso de calibración para la lectura de solo
un gas. Además, el sistema se ha acompañado de un sensor de temperatura y humedad para interiores,
conocido como sensor DHT11 (ver apartado 3.3.2) . Se podría pensar que, para este diseño, el uso de
tecnologías inalámbricas puede tener menos sentido en comparación con el uso previo ya comentado.
Llegados a este punto emplear un módulo WIFI se ha considerado la opción más adecuada para poder
transmitir los datos obtenidos a muchos usuarios. Para ello, se ha usado un módulo, denominado ESP-
01S, basado en ESP8266, y mediante comandos AT, se ha establecido un servidor web al que se
transmiten los datos de los sensores, para su visualización por los usuarios mediante una autenticación
previa. Sin embargo, el módulo XBee Pro usado en otras alternativas como medio para la creación de
nodos WIFI para envió y recibimiento de datos, no se ha tenido en cuenta por no disponer de la
funcionalidad de desplegar un servidor web. Otras alternativas empleadas en este sistema, y no
mencionadas en las soluciones comentadas, ha sido visualizar los datos a través de una pantalla LCD
y por monitor serie, cuando el sistema está conectado al PC.
11
3. DESARROLLO
3.1. ARDUINO
En los siguientes apartados se presenta una descripción breve de los sistemas Arduino, las diferentes
placas que forman su entorno, y el hardware y software que abarca, con el objetivo de explicar el
motivo de emplearlo en la realización de este proyecto.
En este subapartado, se detalla el proceso de instalación del software en el ordenador, necesario para
programar el sistema Arduino. Para ello será necesario acceder a la web oficial de Arduino
(https://www.arduino.cc/) y desde allí, acceder a la pestaña SOFTWARE DOWNLOADS, para
obtener la versión más reciente del IDE. En este proyecto se ha trabajado con la versión 1.8.33.
Se puede trabajar con el IDE de Arduino de dos formas: online IDE y desktop IDE. Con la versión
online no será necesario descargar ningún fichero adicional en el ordenador, y los ficheros generados
se guardarán en la nube de modo que estarán disponibles en cualquier dispositivo. La opción desktop
IDE, que instala un software en tu ordenador, está disponible para los siguientes sistemas operativos:
Windows, Mac OS X y Linux. Desde [39] se accede mediante un enlace a la pestaña downloads de la
web oficial para la descarga del IDE en el sistema operativo deseado.
Si se utiliza un sistema operativo Mac OS X, basta con ejecutar el fichero ejecutable descargado para
realizar la instalación del software y los drivers necesarios. En cuanto a Windows, una vez
completada la descarga del fichero, es necesario descomprimirlo en una carpeta y dentro de ésta se
encontrará el IDE de Arduino. Los drivers se instalarán en el ordenador al conectar la placa Arduino
por USB.
En este apartado se describe cómo utilizar el programa IDE de Arduino en Windows. Con la placa
conectada al ordenador por USB, se instalarán los drivers automáticamente. Será necesario conocer el
controlador especifico de la placa a utilizar. Para ello, desde Windows es necesario acceder a
Administrador de dispositivos, y se busca en Puertos (COM & LPT) la placa Arduino que se ha
conectado.
En la Figura 8 se muestra la interfaz gráfica del IDE de Arduino con un primer programa de prueba,
consistente en encender el LED interno de la placa conectado al pin digital 13 durante 1 segundo y
apagado durante 5 segundos, de forma cíclica, para comprobar el buen funcionamiento de todo el
sistema. Antes de cargar un programa en la placa, es necesario asignar al IDE el tipo de Arduino que
se ha conectado y a qué puerto está conectada. Los pasos a seguir, desde el IDE de Arduino, son los
siguientes:
1. Herramientas Placa Se selecciona la placa deseada.
2. Herramientas Puerto Serie Se selecciona el puerto adecuado. En los ordenadores
Windows, esté será “COM*”, siendo * el número de puerto serie.
13
En [40] se pueden ampliar los conocimientos sobre las opciones de las que dispone la interfaz gráfica
IDE de Arduino instalada.
3.1.4. LIBRERÍAS
Las librerías son una colección de código agrupadas por carpetas, con sus respectivos archivos con
extensión .cpp (fichero de C++) y .h (cabecera C++) y cuya finalidad es facilitar la conexión de
módulos externos, como por ejemplo, aportar funciones básicas de comunicación al hardware [41] y
[42].
En este proyecto será necesario utilizar librerías que no están disponibles en el IDE de Arduino y, por
ello, será necesario instalarlas. Para ello, debe hacerse clic en Programa Incluir Librería
Administrar Bibliotecas, y se abrirá una ventana con un buscador. Desde dicha ventana se busca la
librería deseada y una vez encontrada, se selecciona la opción Instalar.
En ciertos proyectos será necesario utilizar librerías propias, frecuentemente distribuidas en formato
comprimido zip. Para incorporarlas al IDE de Arduino es necesario realizar los siguientes pasos:
14
En la actualidad existen una gran variedad de modelos de placas Arduino (oficiales, no oficiales y
compatibles) como puede verse en [43].
En este documento se describirán únicamente tres modelos de placas oficiales: Arduino UNO,
Arduino NANO y Arduino MEGA 2560. Los dos primeros modelos serán utilizados en este proyecto,
dado su bajo precio y por cumplir con las características técnicas mínimas requeridas para el
desarrollo del mismo (número de pines analógicos y digitales, memoria flash y RAM, y tensión
disponible por la placa para alimentar dispositivos externos).
Arduino UNO fue la primera placa en salir al mercado y la más popular, utilizada para inicializarse en
la programación de electrónica.
Sus principales características, que se pueden encontrar en [44], son las siguientes:
• Microcontrolador ATmega328P de 8bits a 16 MHz. Para más información sobre el
microcontrolador ATmega328P, se aconseja consultar la referencia [45]. Este
microcontrolador contiene una memoria flash de 32 kB, de los cuales 0,5 kB son usados por
el gestor de arranque (bootloader), una memoria SRAM de 2 kB y una EEPROM de 1 kB.
• 14 pines digitales de entrada/salida (6 de los cuales pueden ser usados como salidas PWM).
• 6 pines de entrada analógicas.
• Conector de alimentación por USB y botón de reinicio. También dispone de alimentación por
fuente externa con una tensión de entrada recomendada entre 7-12V y con un límite mínimo
de 6V y máximo de 20V. La tensión de operación con la que se alimenta el microcontrolador
es de 5V.
• Corriente DC por Pin E/S de 20mA.
• Corriente DC para el Pin de 3,3V de 50mA.
• Dimensiones: Largo (68,6mm) x Ancho (53,4mm).
• Peso: 25g
En la Figura 9 se puede ver la placa Arduino UNO y las funciones de cada uno de los pines:
Arduino NANO es una placa de tamaño reducido, bajo coste y que posee las mismas características
que la placa Arduino UNO, incorporando adicionalmente dos entradas analógicas. Sus pines de
conexión son de tipo macho, a diferencia de la placa Arduino UNO que son de tipo hembra, lo que la
permite un rápido prototipado sobre una placa protoboard con el objetivo de reducir en tamaño los
proyectos implementados. Este dispositivo se alimenta mediante cable-mini USB no tan robusto como
el de la UNO, y no posee conector de alimentación externa.
Sus principales características, que pueden encontrarse en la referencia [17], son las siguientes:
• Microcontrolador ATmega328 de 8bits a 16 MHz. Contiene una memoria flash de 32 kB, de
los cuales 2 kB son usados por el bootloader, una SRAM de 2 kB y una EEPROM de 1 kB.
• 14 pines digitales de entrada/salida (6 de los cuales pueden utilizarse como salidas PWM).
• 8 pines de entrada analógicas.
• Conector de alimentación por cable mini-USB y con botón de reinicio.
• Conversor USB-TTL que permite conectar la placa al ordenador para obtener alimentación y
comunicación, para cargar programas y operar como monitor serie. Contiene en su interior un
regulador de tensión de 3,3V (50mA máximo).
• Tensión de entrada en el margen 7-12V.
• Corriente DC por Pin E/S de 40mA.
• Dimensiones: Largo (45mm) x Ancho (18mm).
• Peso: 7g
En la Figura 10, se presenta una placa Arduino NANO, con una descripción de cada uno de los pines:
Los pines de la placa Arduino NANO adquirida vienen sin soldar. En el Anexo C se muestra una
descripción del proceso de soldadura de los pines.
Hay dos modelos de placa Arduino Nano, o mejor dicho, dos tipos de conversor USB-TTL: FT232RL
y CH340G. Al instalar inicialmente el IDE de Arduino, esté no trae por defecto dichos drivers, los
16
cuales hay que instalarlos manualmente para que, cuando se conecte la placa al ordenador con el cable
mini USB, el ordenador reconozca esta placa. En la referencia [46] se presenta la dirección web desde
donde se puede instalar los controladores correspondientes al modelo de placa con circuito integrado
FT232RL, y en la referencia [47] se presenta la dirección web desde donde se pueden instalar los
correspondientes al modelo de placa con circuito integrado CH340G.
Los siguientes pasos para seguir, se han descrito previamente, en el apartado 3.1.3. IDE de Arduino.
Antes de conectar por USB la placa y el ordenador para poder descargar un programa en dicha placa,
es necesario que ésta tenga el bootloader (o gestor de arranque) configurado, que habitualmente no lo
está.
El bootloader es el programa que proporciona la compatibilidad con el IDE de Arduino para poder
usar la comunicación serie y de este modo transferir nuestros programas a la placa. Éste se ejecuta de
forma automática dentro del microcontrolador en cuanto éste se enciende, pero si el ordenador está
intentado programar la placa Arduino, graba el nuevo programa en memoria y reinicia el Arduino.
También se dispone de un botón de Reset en la placa con el que es posible volver a ejecutar un
programa no acabado desde el inicio. Ocupa una pequeña parte de la memoria flash del
microcontrolador (2kB de 32kB), diseñada para no poder ser reprogramada.
El proceso adecuado para cargar el código del gestor de arranque y quemar el bootloader, es el
siguiente [48]:
• Se necesitarán dos placas Arduino para reprogramar el bootloader. En nuestro caso se ha
utilizado una placa Arduino UNO que actuará como programador y que llamaremos máster, y
una placa Arduino NANO que llamaremos esclavo (slave).
• Se conecta la placa Arduino UNO por USB al ordenador, para configurarla como
programador. Para ello, se cargará el Sketch “Arduino as ISP” que se puede encontrar en la
siguiente ruta: File Examples 11. ArduinoISP ArduinoISP, y se modificará la línea
73, que tiene el pin digital 10 como RESET por el pin digital 6.
• Se desconecta la placa del ordenador.
• Se realiza el esquema de conexión entre ambas placas, máster y slave, mediante los pines del
bus SPI, como se muestra en la Tabla 2. En la Figura 11 se muestra dicha conexión:
Tabla 2: Configuración de los pines para quemar
el Bootloader de la placa Arduino NANO
• Se vuelve a conectar el Arduino UNO al ordenador a través del puerto serie, manteniendo la
conexión entre máster y slave.
• Se configura el IDE de Arduino estableciendo como puerto el del máster, como modelo de
placa el del slave y como programador, “Arduino ISP” siguiendo la ruta Herramientas
Programador:” Arduino as ISP” Arduino as ISP.
• Se selecciona la opción “Quemar Bootloader” desde la ruta Herramientas Quemar
Bootloader. Tras unos segundos, un mensaje nos informará si el bootloader se ha grabado
correctamente.
• Se desconectan ambas placas y se prueba a cargar un programa como se explicó previamente
en el apartado 2.1.3. IDE de Arduino.
Arduino MEGA es una versión ampliada de la placa Arduino UNO, que dispone de un mayor número
de entradas/salidas digitales y de entradas analógicas, y de un mayor espacio de memoria permitiendo
la realización de proyectos de mayor complejidad.
Sus principales características, se pueden encontrar en la referencia [18] y son las siguientes:
• Microprocesador ATmega2560 a 16MHz. Contiene una memoria flash de 256 kB de los
cuales 8 kB son usados por el bootloader, una SRAM de 8 kB y una EEPROM de 4 kB.Para
más información sobre el microcontrolador ATmega328P consulte la referencia [49].
• 54 pines digitales de entrada/salida (15 de los cuales pueden utilizarse como salidas PWM).
• 16 pines de entrada analógicas.
• Conector de alimentación por USB y con botón de reinicio. También dispone de alimentación
por fuente externa con una tensión recomendada de entrada entre 7 y 12V y unos valores
límites de 6V y 20V. La tensión de operación con la que se alimenta el microcontrolador es
de 5V.
• Corriente DC por Pin E/S de 20mA.
• Corriente DC para el Pin de 3,3V de 50mA.
• Dimensiones: Largo (101,52mm) x Ancho (53,3mm).
• Peso: 37g
En la Figura 12 se presenta la placa Arduino MEGA 2560 y la descripción de cada uno de los pines:
Microprocesador
ATmega 2560 ICSP
LED Interno
Serail0 (TTL)
HEADER
D13
Power LED
RX/TX LED
Serail1
Serail3
Serail2
USB D2 a D13
PWM
D44 a D46
D20 (SDA)
I2C D21 (SCL)
D50 (MISO)
D51 (MOSI)
SPI
Alimentación 52 (SCK)
6-9 DC 53 (SS)
En este apartado se describen las distintas tecnologías existentes actualmente en el mercado para
detectar diferentes tipos de gases. Se va a realizar una clasificación de los sensores de gas de una
familia denominada serie MQ con los que se va a trabajar en este proyecto y una conclusión de los
sensores seleccionados para la elaboración del sistema.
En la medición de gases se hace uso de distintos tipos de tecnologías en función del tipo de gas
detectado (inflamable o tóxico). Los principales tipos de sensores utilizados en la detección industrial
de gases son los siguientes [50]:
• Sensores electroquímicos: se trata de un micro-reactor que, con la presencia de gases
reactivos produce electrones. Consta de al menos dos electrodos que producen contacto
eléctrico de dos maneras diferentes, a partir de un medio eléctricamente conductivo llamado
electrolito y de un circuito de corriente eléctrica externo. La mayoría de los sensores
electroquímicos están equipados de tres electrodos, un electrodo de medida, un contra
electrodo y un electrodo de referencia.
Estos sensores son los más usados para la detección de gases tóxicos como amoniaco,
monóxido de carbono, cloro o óxidos de nitrógeno entre otros.
Los sensores de gas de la serie MQ [51] son un conjunto de sensores analógicos electroquímicos que
poseen internamente un calentador encargado de aumentar la temperatura interna, permitiendo al
sensor reaccionar con los gases, provocando un cambio en el valor de la resistencia. Presentan una
19
salida analógica con la que se obtiene la lectura de la resistencia del sensor para diferentes niveles de
gas y, a partir de ella, calcular la concentración del gas determinado, y una salida digital la cual,
internamente, trabaja con un comparador y un potenciómetro encargado de calibrar el umbral de la
resistencia, con objeto de indicar la presencia o ausencia de gas, permitiendo activar un sistema de
alarma.
Se ha decidido trabajar con esta familia de sensores por varias razones: debido a la gran diversidad de
tipos de gases que se pueden llegar a medir, que cada sensor es sensible a diferentes tipos de gases en
distinta medida, que son económicamente asequibles y que se encuentran en módulos, simplificando
las conexiones con el microcontrolador.
Estos sensores son adecuados para la detección de fugas de gas en casas, talleres, edificios
comerciales, sistemas de seguridad para detección contra incendios, monitorización de gases
contaminantes, etc. [52]. Todos ellos presentan las siguientes características:
- Alta sensibilidad, más sensibles a algunos gases que a otros.
- Respuesta rápida.
- Amplio rango de detección.
- Funcionamiento estable.
- Larga vida.
- Circuito de accionamiento simple.
En la Tabla 3 se detallan algunos de ellos, indicando para cada sensor, los gases a los que es sensible,
su rango de detección (ppm) y una Figura del módulo sobre el que se monta el sensor, con referencias
a las hojas de características técnicas, en caso de necesitar ampliar la información.
Tabla 3: Sensores de gas y rango de detección
Metano (CH4)
200-10000
LPG
Hidrógeno (H2)
MQ-4 [55]
Humo
No especificado
Alcohol Figura 15: Sensor MQ-4
Monóxido de carbono
20
LPG
Gas natural, butano, 200-100000
propano, gas ciudad
MQ-5 [56] Hidrógeno (H2)
Alcohol No especificado Figura 16: Sensor MQ-5
Monóxido de carbono
Monóxido de carbono
Monóxido de carbono 20-2000
LPG
MQ-9[24]
500-10000 Figura 20: Sensor MQ-9
Metano (CH4)
Alcohol 20-500
MQ-303 [60] Hidrógeno (H2)
No especificado
Monóxido de carbono Figura 21: Sensor MQ-303
Como el objetivo de este proyecto es obtener medidas de CO 2 a medida que los vehículos se
desplazan por la ciudad y, comprobando la clasificación de los distintos sensores de la serie MQ se
puede observar que el único sensor que es sensible al gas CO2 es el sensor MQ-135. Por lo tanto, se ha
seleccionado este sensor para incorporarse a nuestro sistema, el cual describiremos en detalle en los
próximos apartados.
Adicionalmente, al sistema que vamos a implementar es posible incluir más sensores de la serie MQ,
que permita medir otros gases de efecto invernadero, teniendo en cuenta que el hardware y software
desarrollado para un sensor es estándar y será válido para todos los demás, puesto que cada sensor
está implementado en un módulo con cuatro salidas/conexiones (VCC, GND, salida analógica y salida
digital).
Este sensor se utiliza en equipos de control de calidad del aire para edificios y oficinas, y como
detector de contaminación del aire industrial y detector portátil con un alcance de un metro de
distancia. Son adecuados para la detección de amoniaco (NH 3), NOx, alcohol, benceno, humo, CO2,
etc.
La puesta en funcionamiento de este sensor es muy sencilla: se alimenta con 5V, un calentador interno
aumenta la temperatura del sensor para que éste pueda reaccionar con los gases provocando un
cambio en el valor de la resistencia del sensor Rs (30 a 200 k), y con la ayuda de una resistencia de
carga RL (10 a 47 k) se cierra el circuito, haciéndose un divisor de tensión, y se conecta la salida a
una entrada analógica de la placa, que permite su lectura desde el microcontrolador. En la Figura 27
se presenta la estructura y configuración del sensor:
El tiempo de respuesta del sensor es lento, debido a que la cámara de calentamiento donde se
introduce y sale el gas, permite que el sensor siga detectando los residuos de gas que se quedan dentro
hasta que éstos desaparezcan.
Otras características que presenta el sensor MQ-135 son:
- Alta sensibilidad en similar proporción a los gases mencionados. Larga vida y bajo coste.
- Consumo de potencia menor a 900mW.
- Pueden detectar concentraciones en un rango de 10 a 10000 ppm.
- Resistencia del sensor: 2k a 20k (en 100ppm NH3).
- Sensibilidad: Rs (aire) / Rs (100ppm NH3)5
- Pendiente: 0.6 (R100ppm/R50ppm NH3)
- Tiempo de precalentamiento entre 12 y 48 horas.
Más adelante en el apartado resultados, se describirá el proceso de calibración del sensor para obtener
únicamente la medición de CO2. Dicha calibración se realizará en dos pasos. Primero, se va a calcular
la ecuación por regresión correspondiente a la curva de CO2 proporcionada por la hoja de
características [23], y segundo, se calcula el parámetro Ro.
El ecosistema Arduino es muy flexible y permite incluir fácilmente componentes desarrollados por
fuentes no oficiales o ajenas a la compañía, proporcionando funcionalidades extras a los proyectos a
implementar. Por esta razón, el sistema desarrollado en este proyecto cuya principal función es la
toma de concentraciones de dióxido de carbono para su posterior análisis, contiene una serie de
módulos adicionales que enriquecen el sistema implementado.
Este módulo basado en el chip SIMCOM SIM808 y funciona por medio de una tarjeta SIM de tamaño
estándar y dos antenas correspondientes al GPRS y GPS. Combina el envío y recepción de datos
GSM/GPRS con la tecnología Bluetooth y GPS para navegación por satélite, permitiendo enviar y
recibir llamadas y SMS, conexión a Internet y conocer las coordenadas y el horario UTC (Universal
Time Coordinated) en todo instante de tiempo [65]. Recordemos que:
- GSM (Global System for Global Communications), es un sistema radio móvil celular
coincidente con la segunda generación de telefonía móvil o 2G, desarrollado en Europa e
implantado como el sistema de comunicaciones móviles más utilizado con servicios de
transmisión de voz a 13 kbit/s y datos en modo circuito hasta 9600 bit/s [66].
- GPRS (General Packet Radio Service) es una extensión del Sistema GSM para soporte de
servicios de datos en modo paquete compartidos dinámicamente, que ofrece acceso más
rápido y eficiente a redes IP alcanzando velocidades de hasta 171 kbit/s [67].
- GPS (Global Positioning System), es un sistema que permite determinar la posición exacta de
un objeto, persona, vehículo, etc. en cualquier parte de la Tierra. Fue desarrollado por el
departamento de Defensa de Estados Unidos y para ello pusieron en órbita una red de
veinticuatro satélites para cubrir toda la superficie de la Tierra, de los cuales son al menos
necesarios cuatro visibles para determinar la posición del receptor a través de una técnica
denominada trilateración [68].
Las principales características del módulo SIM808 son [69]:
- Sistema cuatri-banda: 850/900/1800/1900MHz.
23
Antena GPS
Interruptor para
encender el
módulo Cascos
Micrófono
Bateria 9V con
conector en Clip
Pulsador de
Encendido SIM
LED de
encendido
Antena GSM
Bateria 9V con
conector en Clip
La comunicación con el módulo SIM808 se realiza mediante el uso de comandos AT [70]. En la tabla
4 se enumeran los comandos utilizados en la elaboración del proyecto implementado, y en el Anexo D
se muestra el código de un programa en el IDE de Arduino, que carga la comunicación serie entre el
módulo SIM808 y el Arduino UNO para probar los comandos AT de forma manual. Para ello se ha
creado una instancia llamada GSMSerial y se han seleccionado los pines de la placa Arduino UNO
que se usarán para comunicarnos. Además, en la función setup() se ha inicializado el puerto serie y la
instancia creada a la misma velocidad de comunicación 9600 bps. Por ultimo, para una correcta
visualización de los datos por el monitor serie se debe seleccionar “Ambos NL & CR”, de modo que
por cada comando AT introducido se salte a una nueva línea (NL) y se haga retorno de carro (CR).
24
COMANDO AT DESCRIPCIÓN
Código de verificación de comunicación con el módulo. Debe responder con un OK sino se
AT deben repasar que las conexiones, encendido y velocidad establecida estén correctas.
Introducción de Pin Tarjeta SIM. Debe responder con un OK indicando que el pin introducido
AT+CPIN=”XXXX” es correcto, y que esta lista para realizar llamadas y SMS.
En este proyecto se ha utilizado este módulo para conocer la ubicación del sistema implementado
mediante sus coordenadas de latitud y longitud. No obstante, cabe mencionarse alguna de sus
funcionalidades que podrían añadirse como encender y apagar cosas con llamadas, leer textos de
mensajes, identificar llamadas, no apagar un programa ya encendido, conectarse a Internet para
transmitir las lecturas de los sensores mediante peticiones HTTP a un servidor web, almacenamiento
de datos o monitorización, etc.
Este sensor presenta un encapsulado plástico con ranuras que permiten la circulación del aire a través
del mismo, donde se localizan dos sensores, uno de temperatura y otro de humedad. Tiene cuatro
pines: VCC, GND, DATA y NC. El sensor viene montando en un módulo con tres pines de conexión
(VCC, GND y DATA), una resistencia de pull-up de 5 k y un LED que permanece activo cuando el
módulo esta alimentado. El pin de datos es una salida digital, que se conecta a una entrada digital de
Arduino, por donde se transmite una trama de 40 bits, correspondiendo los 16 bits más significativos a
la información de humedad, los siguientes 16 bits a la temperatura y los 8 bits restantes son los bits de
paridad para evitar errores. Este pin de datos, a su vez, se conecta mediante una resistencia de pull-up
de 5,1k al positivo de tensión.
Sus principales características son [71]:
- Alimentación entre 3 y 5,5V.
- Suministro de corriente entre 0,5 y 2,5mA.
- Únicamente para uso interior.
- Señal de salida digital.
- Lectura de temperaturas en el rango de 0 a 50 ºC con un error de 2 ºC.
- Lectura de humedad relativa en el rango de 20 a 80 % con un error de 5 %.
- Una muestra por segundo. Equivalente a una muestra cada 1Hz.
Para la elaboración del código en el IDE de Arduino se hará uso de una serie de librerías específicas
para el sensor DHT11 que facilitarán su programación y que no vienen incluidas en el IDE por lo que
será necesario importarlas. En este proyecto se ha trabajado con la librería “DHT sensor library by
Adafruit”.
En la Figura 29 se muestra las conexiones de los pines del sensor DHT11 con la placa Arduino UNO.
3.3.3. LCD1602A
Este módulo dispone de una pantalla LCD de 16 columnas y 2 líneas para mostrar los datos de
temperatura, humedad y concentraciones de CO2 de forma directa desde Arduino. La designación de
las columnas y filas empieza por el índice 0, y será necesario tenerse en cuenta a la hora de subir el
código desde Arduino al módulo, en el que se podrán visualizar en el mismo instante como máximo
32 caracteres.
Sus principales características son [72]:
- Modos de pantalla: STN, BLUB.
- Formato de pantalla: 16 Caracteres x 2 Líneas.
- Datos de entrada: bus de 4 bits o 8 bits.
- Alimentación de 5V con variación de 10 %.
- Fuente de visualización: 5 x 8 puntos.
- Esquema de conducción: 1/16Duty, 1/5Bias.
El módulo LCD1602 contiene 16 terminales que se enumeran en la Tabla 5:
Tabla 5: Pines de conexión del módulo LCD1602A
En la Figura 30 se muestra la conexión de los terminales del módulo LCD 1602A con la placa
Arduino UNO.
220 Ω
V SS V DD VO RS RW E D0 D1 D2 D3 D4 D5 D6 D7 A K
10KΩ
Este módulo permite leer y escribir la información que Arduino grabe en la tarjeta de memoria
microSD mediante interfaz serie SPI. En este proyecto se utiliza para almacenar los datos de
temperatura y humedad, las concentraciones de CO2 medidas por el sensor MQ-135, y las
coordenadas de longitud y latitud, fecha y hora obtenidas por el módulo GPS SIM808.
Posteriormente, con los datos grabados, se puede extraer la tarjeta del módulo, y a través de un
adaptador, insertarse en un ordenador donde se pueden leer los datos y mediante herramientas como
MATLAB® o EXCEL® realizar un análisis de la información recolectada [29].
La tarjeta MicroSD para el funcionamiento correcto con Arduino debe tener un formato especifico de
almacenamiento extraíble “FAT” o “FAT32”. Para establecer el sistema de archivos adecuado, se
deben seguir los siguientes pasos: Insertar tarjeta MicroSD en el ordenador Botón derecho
Propiedades Formatear Seleccionar el Sistema de Archivos adecuado Pulsar Iniciar.
Este módulo funciona con una tensión de 3,3V, pero internamente dispone de un regulador de tensión
de 5 a 3,3V y un nivelador de señal también de 5 a 3,3V, para poderse alimentar directamente desde
Arduino.
El módulo lector Micro SD tiene seis terminales, dos de alimentación y cuatro correspondientes al
interfaz SPI, que se pasan a enumerar en la Tabla 6:
Tabla 6: Descripción de los terminales de conexión del módulo lector microSD
(Chip Select) o (Slave Select). Habilita al dispositivo esclavo (lector MicroSD) mediante una línea a nivel
CS
bajo.
(Serial Clock). Genera los pulsos de reloj para la sincronización de los datos entre maestro (Arduino) y
SCK
esclavo (Lector MicroSD).
(Master Out Slave In). Indica el sentido de circulación de datos desde el maestro (Arduino) hacia el esclavo
MOSI
(Lector MicroSD).
(Master In Slave Out). Indica el sentido de circulación de datos desde el esclavo (lector MicroSD) hacia el
MISO
maestro (Arduino).
VCC Se conecta directamente a 5V de alimentación de Arduino.
GND Se conecta a GND de Arduino.
Para el desarrollo del código, se utilizarán dos librerías que ya vienen incorporadas en el IDE de
Arduino: “SPI” para la comunicación por el bus de datos, y “SD” para el manejo de la tarjeta de
memoria.
En la Figura 32 se muestra la conexión de los terminales del módulo lector de memoria MicroSD con
la placa Arduino UNO.
Inserción tarjeta de Nivelador de señal
memoria MicroSD 5 a 3,3 V
CS
SCK
SPI
MOSI
MISO
VCC
GND
Regulador de tensión
5 a 3,3 V
Figura 31: Lector de memoria MicroSD y conexión con placa Arduino UNO.
28
En este proyecto, se ha utilizado la salida analógica del módulo para medir los niveles de ruido. Esta
salida proporciona una medida relativa (en bytes) por lo que será necesaria su conversión a un valor
de tensión y, finalmente, a su unidad de medida que son los decibelios (dB). Para obtener una relación
entre los datos digitales entregados por el circuito Arduino obtenidos del sensor KY-038 y los valores
de sonido ambiental (decibelios) se ha establecido una ecuación lineal [74]:
𝑉𝑎𝑙𝑜𝑟 𝑑𝑒 𝐼𝑛𝑡𝑒𝑛𝑠𝑖𝑑𝑎𝑑 𝑆𝑜𝑛𝑜𝑟𝑎(𝑑𝐵) = 3,0987 ∗ (𝐿𝑒𝑐𝑡𝑢𝑟𝑎 𝑑𝑒𝑙 𝑆𝑒𝑛𝑠𝑜𝑟) − 1540,3 (1)
Según la OMS (Organización Mundial de la Salud) se define como ruido, cualquier sonido superior a
65 dB (coincidente con un valor de 518 bytes según la ecuación indicada), oscilando en las ciudades
entre 50 y 120 dB en función del origen del mismo [75].
Este sensor se utilizará para enviar un SMS cada vez que capte un valor superior a 518 unidades.
Este módulo esta basado en el sistema en chip (SoC) ESP8266EX de Espressif [76] que integra los
protocolos TCP/IP necesarios para comunicación Wifi 802.11 b/g/n en los modos cliente (Station),
punto de acceso (AP) y dual (cliente + punto de acceso). Esta versión dispone de un procesador de
32bits a 80 MHz con una memoria de 1 MB. Dispone de 2 pines GPIO y un interfaz de comunicación
serie que permite configurarlo mediante comandos AT que vienen preinstalados de fábrica [77].
En este proyecto se va a utilizar para dar conectividad WIFI a la placa Arduino y, mediante comandos
AT, transmitir las lecturas medidas por los sensores a un servidor Web. No obstante, este módulo al
ser un microcontrolador en sí, se puede utilizar sin Arduino con el mismo conocimiento y entorno de
programación, para lo que será necesario usar un módulo adaptador USB TTL como el CH340 [78].
En la Figura 33 se muestran las conexiones del módulo ESP8266-01S con la placa Arduino UNO. La
alimentación del módulo debe estar conectada al regulador de tensión de 3,3V, cortocircuitando los
pines VCC y CH_PD. El terminal GND debe ser común tanto para Arduino como para el módulo. En
29
3. GPIO2
4. CHIP_EN/CH_PD
ESP8266
2. GPIO1/TXD 1. GND
Antena
WIFI
Figura 33: Módulo WIFI ESP8266-01S y conexión con placa Arduino UNO.
COMANDO AT DESCRIPCIÓN
En la Figura 34 observa algunas variaciones en las conexiones con respecto al esquema de la Figura
33. Se han conectado el pin Rx del ESP al pin Rx de Arduino, y el pin Tx del ESP al pin Tx de
Arduino. También se observa que se ha conectado el pin reset de Arduino a GND de Arduino con el
objetivo de ajustar el microcontrolador en modo reset. Con estas conexiones realizadas se conecta el
Arduino al ordenador y se abre un nuevo fichero vacío en el IDE de Arduino. A continuación, se
desconectan las conexiones comentadas, para que al subir el código vacío a la placa no se genere
ningún error. Una vez subido el código, se vuelven a realizar las conexiones, permaneciendo el
Arduino alimentado por el ordenador. Por ultimo, se abre el monitor serie y, ya es posible probar los
comandos AT del módulo WIFI ESP8266, para lo que será necesario ajustar adecuadamente la
velocidad de comunicación.
Este sistema dispone de un sensor MQ135 calibrado para obtener medidas de concentraciones de CO 2
en exteriores, un sensor KY038 (para obtener medidas de la contaminación acústica en el ambiente),
un módulo SIM808 GSM/GPRS + GPS (que nos permite tener constancia de los puntos geográficos
en los que se ha tomado cada una de las medidas del sensor, mediante sus coordenadas de latitud y
longitud, y de la misma manera, registrar la fecha y la hora del instante en el que se ha obtenido).
Finalmente, dispone de un lector de memoria MicroSD, donde se almacenarán las lecturas de los
módulos para su posterior análisis.
En las pruebas realizadas, este sistema se ha alimentado por medio de dos baterías de 9V 1000mA,
encargadas de alimentar el Arduino NANO mediante su entrada de fuentes externas y el módulo
SIM808. La razón de que el módulo SIM808 tenga su propia fuente de alimentación se debe a que
cuando está transmitiendo datos, consume demasiada energía y podría llegar a dañar el Arduino.
En la Figura 35 se muestra el esquema de conexión de los distintos componentes montados con el
Arduino NANO que implementan el sistema portátil de medida.
Este sistema dispone de un sensor MQ135 sensible, en igual proporción, a ciertos gases como NH 3,
NOx, alcohol, benceno, humo, CO2 que permiten detectar la calidad del aire, y un sensor DHT11, el
cual nos ofrece las condiciones ambientales de temperatura y humedad en las que se han medido las
lecturas de los gases. A su vez, dispone de una pantalla LCD para la visualización de los datos de
temperatura, humedad y concentraciones de los gases en ppm, y un lector de memoria MicroSD
donde se almacenarán las lecturas de los módulos para su posterior análisis.
Se ha decidido montar este sistema usando un Arduino NANO alimentado a través de su cable mini
USB, permitiendo disponer de todos los módulos sobre una sola placa protoboard, reduciendo espacio
y contribuyendo a la no movilidad de este sistema fijo. Adicionalmente, si el sistema está conectado
mediante el cable mini USB al ordenador, se visualizarán los datos medidos a través del monitor serie.
En la Figura 36 se muestra el esquema de conexión de los distintos componentes montados con el
Arduino NANO que implementan el sistema estático de cuantificación de la calidad del aire.
Figura 36: Esquema de un sistema de cuantificación de la calidad del aire en edificios e industrias.
El primer diseño implementado trata de un sistema portátil colocado sobre un vehículo móvil que
proporciona medidas de concentraciones de CO2 cada 10 segundos. En dicho intervalo el sistema ha
tomado cinco medidas a través de la salida analógica del sensor MQ135 y ha almacenado en un
fichero de texto distribuido por columnas el promedio de las cinco medidas junto a las coordenadas de
latitud y longitud, y fecha y hora en UTC (Universal Time Coordinated, Tiempo Universal
32
Coordinado) donde se tomaron las lecturas. Además, a las medidas tomadas por el sensor se le han
realizado las siguientes operaciones: conversión de la lectura en ppm (partes por millón) a un valor de
tensión, calculo de la resistencia medida por el sensor (Rs) y obtención de la concentración de dióxido
de carbono por medio de la ecuación estimada como se explicará más adelante en el apartado
Resultados. Estos tres parámetros también se han almacenado en el fichero .txt distribuido por
columnas.
Para conseguir que el sistema realice estas funciones se ha diseñado un programa con el IDE de
Arduino cuyo código comentado se recoge en el Anexo G y en la Figura 37 se muestra un flujograma
explicando cada una de las partes de código que se ejecutaría en Arduino para ayudar a su
comprensión.
Setup() loop()
La estructura del programa es la siguiente: en primer lugar, se han añadido las librerías necesarias
para interactuar con los módulos, SoftwareSerial, que permite crear una instancia del módulo SIM808
(se la ha denominado “GSMSerial”) para poder comunicarse con la placa, librería SPI (Serial
Peripheral Interface) que permite comunicar a los dispositivos por puerto serie con la placa Arduino
como master. En este caso permite la comunicación con una tarjeta de memoria microSD como
esclavo, asociando el pin digital 10 como slave select, y la librería SD para administrar archivos de
escritura y lectura. A continuación, se encuentran unas variables que pueden ser modificadas por el
usuario antes de cargar el programa en la placa. Dichas variables permiten cambiar la ruta de
almacenamiento de los ficheros, así como el número de líneas que desea que tenga el fichero de
almacenamiento. Después, se encuentran el resto de las variables correspondientes al sensor y a la
tarjeta de memoria.
Mediante la función setup() se han configurado a la misma velocidad de comunicación (9600 bps), la
instancia “GSMSerial” y la comunicación por el monitor serial para poder visualizar los datos durante
las pruebas. La velocidad de comunicación la impone el módulo SIM808 que en nuestro caso puede
ser diferente. Posteriormente, se han inicializado la tarjeta de memoria y el módulo SIM808. Si todo
ha ido bien, se accede a la función loop() donde se empiezan a grabar las lecturas en los ficheros
datosX.txt (“X” corresponde al número de fichero), dentro de la carpeta asignada. Dado que se
encuentra en un bucle infinito, la única forma de salir de él y, con ello finalizar el almacenamiento de
datos, es extrayendo la tarjeta de memoria microSD, perdiéndose las lecturas que se estaban grabando
en el fichero de almacenamiento justo en el instante de extracción de la tarjeta. Nuestra
recomendación es que el tiempo de grabación en cada fichero no sea superior a 10 minutos (60
lecturas) de modo que, en fallo del sistema, la pérdida de datos sea la menor posible. Para reanudar el
almacenamiento de los datos, se recomienda cambiar la ruta de la carpeta de almacenamiento, ya que,
al existir ficheros previos, los nuevos datos se copiarán a continuación, provocando un análisis
posterior erróneo de los datos.
Finalmente, para realizar un análisis de las medidas registradas, se necesita extraer la microSD del
módulo tarjeta de memoria e introducirla en el ordenador. Los pasos a seguir para la correcta
visualización de los datos con la herramienta Excel son los siguientes: [29]
33
Una vez abierto Excel en la barra de menús se accede a Archivo Abrir…y se localiza el archivo que
se desea importar. A continuación, se abre el asistente de importación, en el primer paso (Figura 38)
se escoge archivos delimitados.
Figura 38: Importación de fichero txt en Excel. Paso 1: Escoger archivos delimitados
Figura 39: Importación de fichero txt en Excel. Paso 2: Marcar coma como delimitador de contenido en los datos
En el tercer paso (Figura 40) se accede a Avanzadas… y se intercambia el separador decimal por
punto y el separador de miles por coma:
Figura 40: Importación de fichero txt en Excel. Paso 3: Establecer el separador decimal por punto y el separador de miles por coma
Después de dar en Aceptar y Finalizar se visualizan los datos en Excel. A modo de ejemplo, en la
Figura 41, se muestran los datos de un fichero con 15 lecturas, cuando el sensor ha estado expuesto a
los gases de un mechero.
34
Figura 41: Representación en Excel de las lecturas del sensor MQ135 junto a sus coordenadas de latitud, longitud, fecha y hora
En el programa comentado se habrá observado que no existe ninguna manera de controlarlo una vez
se ha cargado el código en la placa y tampoco es posible saber sí algún componente ha fallado. En los
casos en que la inicialización de la tarjeta falle por faltar el ingreso de la microSD o se produzca un
fallo de conexiones, un error en la configuración del módulo SIM808 (no detecta SIM, GPS,…) o un
error en apertura del archivo de escritura entre otros, el sistema hubiese finalizado su ejecución sin
habernos percatado de ello.
El módulo SIM808 ofrece las funcionalidades de las redes GSM/GPRS, además de proporcionarnos la
localización geográfica. En anteriores soluciones, se ha visto implementar redes de nodos
inalámbricos y uso de las tecnologías IoT como medio para la transmisión y recibimiento de datos,
pero en ninguna solución se ha usado mensajes SMS para esa misma funcionalidad. Por ese motivo se
ha empleado el módulo SIM808 para controlar nuestro sistema por medio de mensajes SMS, y en
función del código enviado, el sistema realizará una operación u otra.
Para conseguir que el sistema realice estas funciones, ha sido necesario emplear una placa Arduino
MEGA (apartado 3.1.5.3.) debido a que la extensión del código es superior en memoria al máximo
disponible con las placas Arduino NANO y UNO. Las conexiones con la placa serán en los mismos
pines. Además, se ha añadido un sensor KY038 (apartado 3.3.5) para medir la contaminación acústica
en el ambiente y enviar un SMS cada vez que se supere el valor de 65 dB.
El código es muy similar al anterior, exceptuando que, a la configuración inicial del módulo SIM808,
se le han añadido los comandos AT necesarios para establecer el envío y recepción de mensajes en
modo texto. Se ha añadido el código referente al módulo KY038 y el sistema solo graba lecturas en un
archivo, permitiendo el almacenamiento y detención múltiples veces y la función loop() ha pasado a
ser un conjunto de bucles while, for y condicionales if, que en función del código recibido, realiza
unas operaciones y envía los resultados a los números de teléfono que se hayan indicado en el
programa. Por este motivo no se describe en detalle el código, que está completamente comentado en
el anexo H, y se pasa a describir el flujo de navegación del sistema que se muestra en la Figura 42.
El sistema empieza por inicializar la tarjeta de memoria microSD, y si encuentra algún error envía un
SMS avisando (Figura 44) y finaliza el programa. Si todo va bien, pasa a configurar el módulo
SIM808 (introducción de PIN tarjeta SIM, velocidad de comunicación, activación sentencia RMC
para obtención de coordenadas y tiempo UTC, activación código para recibir mensajes) que, tras su
finalización, enviará un mensaje de texto indicando que el sistema esta listo para la interacción con el
mismo (Figura 43). Los códigos de envió son los siguientes (Figura 45):
• @GPSON: activará el GPS de la tarjeta SIM asociada al módulo SIM808.
• @GRABAR: activará un archivo de escritura de tamaño (número de filas) determinado por el
usuario donde se almacenarán las lecturas medidas por los sensores MQ135 y KY038 y las
asociadas al comando AT+CGNSINF (coordenadas GPS) siempre y cuando se haya activado
previamente el GPS mediante el código de envío @GPS. Durante el almacenamiento de
35
Comando Erróneo
Configuración Tarjeta
Fallo en
OK
inicialización
tarjeta de
memoria Configuración módulo OK / Informa Usuario
GPSON
SIM808
OK
Activando GPS
Fallo en
OK
inicialización
módulo SIM808 GRABAR
Midiendo lecturas de OK
los sensores y
grabando en fichero
OK
Error en apertura
de fichero
DATOS
OK
Midiendo lecturas
OK
GPSOF
OK
Desactivando GPS
Figura 44: Notificación del Sistema ante fallo Figura 43: Notificación del sistema indicando que la configuración
de inicialización de la tarjeta de memoria inicial se ha completado y que esta esperando recibir ordenes
36
Se puede saber que la instrucción de un código ha finalizado cuando el sistema envíe el mensaje de
texto “Código enviado Correcto”. También notificará cuando se introduzca un código erróneo con el
mensaje de texto “Código enviado incorrecto”. El sistema permite interactuar todas las veces que se
desee mientras que no surja ningún fallo, pudiendo realizar múltiples grabaciones o lecturas seguidas,
pero si no se ha activado previamente el GPS, puede olvidarse conocer las coordenadas
espaciotemporales donde se han tomado las lecturas. A modo de ejemplo, en la Figura 46 se muestra
una interacción completa con el sistema.
También a modo de ejemplo, en la Figura 47 se muestran diez lecturas grabadas en un fichero cuando
el sensor de sonido ha sido expuesto a altos niveles de ruido.
Figura 47: Representación en Excel de las lecturas de los sensores MQ135 y KY038 junto a sus coordenadas de latitud, longitud,
fecha y hora
37
El segundo diseño implementado trata de un sistema estático que permite cuantificar la calidad del
aire en edificios e industrias y que proporciona distintas alternativas de visualización de los datos, en
tiempo real a través del monitor serie cuando el sistema esta conectado por cable mini USB al
ordenador y por medio de una pantalla LCD o posteriormente mediante la extracción de la tarjeta de
memoria microSD donde se graban las lecturas. El sistema proporciona medidas de los sensores
MQ135 y DHT11 cada 5 segundos. En dicho intervalo el sistema ha tomado cinco lecturas de las
concentraciones de los gases sensibles al sensor MQ135 junto a sus condiciones ambientales de
temperatura y humedad en la que se han medido las respectivas lecturas, y ha almacenado en un
fichero de texto distribuido por columnas el promedio de las cinco lecturas correspondientes a la
concentración de gases en partes por millón (ppm), temperatura en grados centígrados (ºC) y humedad
relativa en tanto por ciento (%). Además, a las medidas tomadas por el sensor MQ135 se le han
realizado las siguientes operaciones: conversión de la lectura en ppm a un valor de tensión, calculo de
la resistencia medida por el sensor (Rs) y obtención de la concentración de dióxido de carbono por
medio de la ecuación estimada como se explicará más adelante en el apartado Resultados. Estos tres
parámetros también se han almacenado en el fichero txt distribuido por columnas.
Para conseguir que el sistema realice estas funciones se ha diseñado un programa con el IDE de
Arduino cuyo código comentado puede verse en el Anexo I y en la Figura 48 se muestra un
flujograma explicando cada una de las partes de código que se ejecutaría en Arduino para ayudar a su
comprensión.
Setup() loop()
Figura 48: Flujograma de Funcionamiento de Sistema estático de cuantificación de la calidad del aire
La estructura del programa es la siguiente: en primer lugar, se han añadido las librerías necesarias
para interactuar con los módulos, la librería SPI (Serial Peripheral Interface) que permite comunicar a
los dispositivos por puerto serie con la placa Arduino como master, en este caso permite la
comunicación con una tarjeta de memoria microSD como esclavo asociando el pin digital 10 como
slave select, la librería SD para administrar archivos de escritura y lectura, la librería DHT Sensor
Library que facilita el uso del sensor DHT11 para obtener los valores de temperatura y humedad
mediante la creación de un objeto tipo DHT (se indica el pin digital de la placa Arduino al que esta
conectado el sensor y el tipo del sensor DHT) para obtener las funciones asociadas readTemperature()
y readHumidity(), y la librería LiquidCrystal() que permite crear un objeto (como argumentos se
indica los pines de la placa Arduino, conectados a los diferentes pines del display) que representa al
display LCD facilitando la programación del dispositivo.
A continuación, se encuentran unas variables que pueden ser modificadas por el usuario antes de
cargar el programa en la placa. Dichas variables permiten cambiar la ruta de almacenamiento de los
ficheros, así como el número de líneas que desea que tenga el fichero de almacenamiento. Después, se
38
encuentran el resto de las variables correspondientes a los sensores DHT11, MQ135 y a la tarjeta de
memoria.
En la función setup() se ha configurado la comunicación serial a 9600 bps, se ha inicializado el sensor
DHT11, el display lcd indicando el tamaño mediante dos argumentos, el primero la anchura en
caracteres y el segundo la altura (número de filas) y la tarjeta de memoria.
Si todo ha ido bien, se accede a la función loop() donde se empiezan a grabar las lecturas en los
ficheros datosX.txt (“X” corresponde al número de fichero) dentro de la carpeta asignada,
visualizándose los datos por el display LCD, indicando previamente la posición del cursor en el
primer carácter de la primera fila mediante la función setCursor(0,0), y por monitor serie donde
además de visualizarse los datos se indica el fichero de grabación respectivo actual y los errores que
puedan surgir en la inicialización de los módulos y en la grabación de las lecturas.
Dado que se encuentra en un bucle infinito, la única forma de salir de el y con ello finalizar el
almacenamiento de datos es extrayendo la tarjeta de memoria microSD. Para reanudar el
almacenamiento de los datos se recomienda cambiar la ruta de la carpeta de almacenamiento, ya que,
al existir ficheros previos, los nuevos datos se copiarán a continuación provocando un análisis
posterior erróneo de los datos. Lo mismo ocurre, si una vez ejecutado el programa se abre el monitor
serie, por lo que se recomienda abrirlo según ha terminado de subirse el código a la placa y
mantenerlo abierto.
A modo de ejemplo, en la Figura 49 se muestran los datos de un fichero con 15 lecturas cuando el
sensor ha sido expuesto a los gases de un mechero, en la Figura 50 la visualización de los datos a
través del display LCD y en la Figura 51 la visualización de las medidas por medio del monitor serie.
Figura 50: Representación en Excel de las concentraciones de gases en ppm, temperatura y humedad medidas por un sistema
estático de cuantificación de calidad del aire
Figura 51: Visualización de la concentración de gases en ppm, temperatura y humedad a través del monitor serie del IDE de
Arduino de las medidas tomadas por un sistema estático de cuantificación de calidad del aire
Es importante destacar que la visualización de los datos en tiempo real está disponible solo para dos
personas: la persona que este haciendo uso del ordenador a través del cual se alimenta el sistema y
para cualquier otra persona que observe la pantalla LCD asociada al sistema.
En un sistema de cuantificación de calidad del aire se considera que los datos deben estar disponibles
para todos los empleados y usuarios de una misma oficina o industria, incluyéndose al profesional
encargado de analizar las lecturas medidas. Para ello, se ha hecho uso de las tecnologías de redes
inalámbricas añadiendo al sistema un módulo WIFI ESP-01S que establece un servidor web al que se
transmiten los datos de los sensores para su visualización.
Para evitar duplicidad de código en la memoria y facilitar la lectura del lector, se ha diseñado un
programa con el IDE de Arduino, cuyo código comentado puede verse en el Anexo J y donde
únicamente se ha empleado el módulo ESP-01S y las lecturas de los sensores MQ-135 y DHT11 con
una placa Arduino UNO. En la Figura 52 se muestra un flujograma explicando cada una de las partes
de código que se ejecutaría en Arduino para ayudar a su comprensión.
Setup() loop()
OK OK
OK
Se realizan dos envíos al módulo WIFI con el comando
AT+CIPSEND
1. Número de conexión del dispositivo y la longitud del
String html que se le quiere mandar.
2. Se envía la página html guarda en el String.
OK
Figura 52: Flujograma de Funcionamiento de Sistema estático de cuantificación de la calidad del aire con despliegue de servidor
Web
40
La estructura del programa es la siguiente: en primer lugar, se han añadido las librerías necesarias
para interactuar con los módulos, SoftwareSerial que permite crear una instancia del módulo ESP-01S
(se la ha denominado “SW” asignando los pines digitales 2 y 3 de la placa Arduino UNO como Rx y
Tx respectivamente) para poder comunicarse con la placa y la librería DHT Sensor Library que
facilita el uso del sensor DHT11 mediante la creación de un objeto tipo DHT para obtener las
funciones asociadas readTemperature() y readHumidity(). A continuación, se encuentran las variables
correspondientes a los sensores.
En la función setup() se ha configurado la velocidad de comunicación para el monitor serie a 9600 bps
y la instancia “SW” a 115200 bps. También, se ha inicializado el sensor DHT11 y la configuración
inicial del módulo WIFI mediante comandos AT, donde se establece el modo WIFI como cliente, se
introduce el SSID y la contraseña del punto de acceso de la conexión a red, se configura para recibir
múltiples conexiones y se activa el servidor web en el puerto 80.
En la función loop() se extraen las lecturas de los sensores como en previos programas y se consulta si
el módulo WIFI ha enviado datos a Arduino. Si hay datos recibidos, se obtiene el número de la
conexión (es decir, un nuevo dispositivo se ha conectado al servidor desplegado en el puerto 80)
buscando en la sentencia recibida lo siguiente a la cadena “IPD,” y se genera una variable String que
incluye una página en html con las lecturas en tiempo real proporcionadas por los sensores en formato
tabla y con actualización de la página cada cinco segundos. Finalmente, se calcula la longitud de la
variable “pagina” y se realizan dos envíos aplicando el comando “AT+CIPSEND”: en el primero se
envía el número de la conexión y la longitud de la página, y en el segundo se envía la página con toda
la estructura html creada. Por ultimo, se cierra la conexión mediante el comando
“AT+CIPCLOSE=conexion”.
A modo de ejemplo, en la Figura 53 se muestra una captura del servidor web desplegado con la
visualización de las lecturas accediendo por medio de su dirección IP “192.168.43.254”, la cual se ha
obtenido con el comando “AT+CIFSR” previamente a la ejecución del programa.
Figura 53: Visualización de la concentración de gases en ppm, temperatura y humedad a través del despliegue de un servidor Web
de las medidas tomadas por un sistema estático de cuantificación de calidad del aire
41
4. RESULTADOS
En el apartado desarrollo se han descrito los módulos y placas más adecuados para implementar en
nuestro sistema. En este apartado se describe el procedimiento de calibración del sensor MQ-135 así
como las medidas de prueba realizadas.
La hoja de características del fabricante proporciona las curvas de sensibilidad de los distintos gases
detectados por el sensor MQ-135 en unas condiciones dadas de temperatura estándar de 20ºC y 65%
de humedad relativa (Figura 54). También, proporciona información sobre la sensibilidad del sensor
en condiciones de 33% y 85% de humedad relativa (Figura 55).
Figura 54: Curvas de sensibilidad del sensor MQ-135 para varios gases
Observando las escalas de los ejes de las curvas de sensibilidad del sensor MQ-135 para varios gases,
se puede ajustar la curva a una función potencial del tipo y = a · xb , donde a es el factor de escala, b
es un exponente y x representa la concentración en partes por millón (ppm):
𝑅𝑠
𝑦= (2)
𝑅𝑜
Para calcular los parámetros del modelo, se toman varios puntos (X i, Yi) y, haciendo una
aproximación por mínimos cuadrados, se obtienen los valores de las incógnitas “a” y “b”. El proceso
es el siguiente:
(3)
Para la obtención de las incógnitas se ha creado un programa en MATLAB® [80] cuyo código se
presenta en el Anexo E, y que sirve para ajustar cualquier curva de sensibilidad de los distintos
sensores de la familia MQ por aproximación de mínimos cuadrados.
Para ello, se ha implementado un bucle while en el que se solicita al usuario que introduzca las
coordenadas (x, y) hasta que éste desee salir del mismo, mediante la introducción de un comando de
control, denominado ‘s’. A continuación, se obtienen los parámetros a (factor de escala) y b
(exponente) como se ha definido en el proceso, realizándose una representación gráfica para comparar
la curva original con la obtenida por el ajuste por mínimos cuadrados y, finalmente, se evalúa el error
de la suma [a·xib-yi]2, que debe ser mínimo para los valores de a y b obtenidos.
En nuestro caso, para obtener la curva de sensibilidad correspondiente al sensor MQ-135 para el gas
CO2 en las condiciones ambientales de 20ºC de temperatura y 65% de humedad relativa se han
tomado los siguientes puntos Xi Yi (Tabla 8):
Tabla 8: Pares (Xi, Yi) utilizados para obtener la curva de sensibilidad del sensor MQ-135 al CO2
Xi 10 20 30 40 50 60 70 80 90 100 200
Yi 2.3 1.8 1.6 1.5 1.4 1.3 1.2 1.1 1.08 1.05 0.8
43
a = 5,2735
b = -0,3503
Ecuación buscada: y = 5,2735·x-0,3503
Error = 0,0000530493
Figura 56: Curva de sensibilidad del sensor MQ-135 para el gas CO2
4.1.2. CALCULO R O
En el apartado anterior se ha estimado la curva del gas CO2 del sensor MQ-135:
1 1
−0,3503
𝑅𝑠 𝑏 𝑅𝑠
𝑅𝑠 ( ) ( )
𝑅 𝑅𝑜
= 𝑎 · [𝑝𝑝𝑚]𝑏 → 𝑝𝑝𝑚 = ( 𝑜 ) → 𝐶𝑂2 = ( ) (4)
𝑅𝑜 𝑎 5,2735
Para poder medir concentraciones de este gas, es necesario calibrar un parámetro denominado R o, que
es una constante que equivale al valor de la resistencia del sensor cuando se expone a una
concentración de 100 ppm de amoniaco en aire limpio. En esta memoria se van a dar tres opciones de
calibración. En todas ellas, el primer paso consiste en un precalentamiento del sensor durante 24 horas
de forma ininterrumpida, con el objetivo de eliminar cualquier resto de humedad del proceso de
fabricación y, solamente debe hacerse la primera vez que se conecte.
Primera Opción: se calcula el valor de Ro en el laboratorio.
Segunda Opción: se necesita usar un aparato de medición de concentraciones de dióxido de carbono
para calibrar nuestro sensor. En este caso, el parámetro Ro se considerará constante quedando la
ecuación a estimar de la siguiente forma: 𝐶𝑂2 = 𝑎 ∗ (𝑅𝑆 )𝑏
Con el aparato de medición se tomarán dos muestras de CO 2, midiéndose con nuestro sensor el valor
Rs de dichas muestras, quedando un sistema de dos ecuaciones que al resolver permite conocer los
valores de los parámetros a y b.
Dado que para la realización de este proyecto no se ha dispuesto de un aparato de medición real de
concentraciones de CO2, las dos primeras opciones no se han podido llevar acabo para calibrar el
sensor.
Tercera Opción: se conecta el sensor a su alimentación durante un periodo de precalentamiento de 15
minutos para que empiece a darnos medidas fiables. A continuación, se toma la lectura analógica
44
ADC del sensor cada segundo durante 10 minutos y, para cada lectura, se calcula el valor de la
resistencia variable del sensor:
(5)
Se ha tomado como valor de resistencia de carga RL = 20 k, como viene especificado en la curva de
sensibilidad del sensor.
Posteriormente, se calcula el valor medio de los datos medidos, para obtener la resistencia media de
sensor:
∑𝑛1 𝑅𝑆
𝑅𝑠𝑀𝑒𝑑𝑖𝑎 = (6)
𝑛
Y, conociendo la cantidad actual del gas CO2 (para ello, se toma la lectura analógica del sensor en el
último instante de tiempo coincidente con el décimo minuto, aunque lo ideal hubiese sido haber
dispuesto de un dispositivo real de concentraciones de CO 2 para tomarla), se puede obtener la
constante Ro mediante la siguiente expresión:
𝑅𝑆 _𝑀𝑒𝑑𝑖𝑎
𝑅𝑜 = (7)
𝑎 · (𝑝𝑝𝑚𝐶𝑂2 𝑎𝑐𝑡𝑢𝑎𝑙 )𝑏
A la vista de los resultados obtenidos, en los códigos desarrollados en el apartado 3.5. se ha elegido el
valor de RO = 20767,17 para calcular las concentraciones de CO2 proporcionales a las lecturas de la
salida analógica del sensor MQ-135 en ppm.
Se ha probado el sensor MQ-135 midiendo las salidas de los gases del tubo de escape de dos
automóviles, en un lugar abierto donde previamente no había concentraciones de gases
contaminantes.
45
En la Figura 57 se muestra una imagen del montaje: sensor, tarjeta de memoria microSD de
almacenamiento de las lecturas y un juego de leds que indica como aumentan/reducen las
concentraciones detectadas al someterse a los gases salientes del tubo de escape. En las Figuras 58 y
59 se representan las gráficas de las concentraciones medidas durante diez minutos (120 lecturas)
desde que se arrancan los vehículos hasta un tiempo después de apagar el motor, comparándose la
salida analógica del sensor con la ecuación obtenida del gas CO 2. A la vista de los resultados se
observa que el automóvil más antiguo emite el doble de gases contaminantes que el vehículo nuevo,
como se era esperable. Sin embargo, también se observa la notable diferencia entre representar
directamente la salida analógica del sensor (ppm) con la obtenida por la estimación de la curva del gas
CO2 (ppm) calculada, cuyo razonamiento concluye que con el tercer procedimiento de calibración del
sensor MQ-135 también es necesario disponer de un aparato de medición real de concentraciones de
CO2.
Figura 57: Sensor MQ-135 midiendo los gases salientes de un tubo de escape
101
106
111
116
Figura 59: Medida de concentraciones de gases (ppm) Figura 58: Medida de concentraciones de CO2 (ppm) salientes
salientes del tubo de escape de un coche del tubo de escape de un coche
46
Figura 60: Sistema Portátil de medida de concentraciones de CO2 montado sobre un coche
A la hora de poner en prueba el sistema portátil de medida de concentraciones de CO2 con control por
mensajes SMS han aparecido los siguientes errores que se esperan solucionar en líneas futuras de
desarrollo: el módulo SIM808 no es capaz de cargar la trama completa de coordenadas GPS cuando el
sistema está midiendo la lectura de dos sensores en el mismo instante y, por ello, no se graban los
datos de posición y tiempo en la tarjeta de memoria. Lo mismo ocurre cuando se tienen que medir las
lecturas y enviarlas a través de las redes GSM/GPRS. En ocasiones también se ha averiguado que por
algún motivo desconocido los comandos “@GRABAR” y “@DATOS” entran en conflicto
bloqueando el sistema e impidiendo la ejecución de nuevos comandos entrantes. También se ha
averiguado que el sensor MQ135 es incompatible con la librería TinyGPS que permite al módulo
SIM808 convertir los datos de posicionamiento global en formato NMEA en variables fáciles de usar
para latitud, longitud, altitud, hora, fecha y otra información.
Al margen de los fallos comentados, el sistema implementado aquí se ha desarrollado para realizar un
estudio de los niveles de contaminación encontrados en la comunidad de Madrid (CAM) centrándose
en las concentraciones de dióxido de carbono (CO2). Teniéndose en cuenta que la superficie de la
capital de Madrid es de 604,45 km2 [81] y que cada sistema portátil colocado en un vehículo móvil
circula en una pequeña área de unos 10 km2 con periodicidad para obtener unos resultados más
precisos, se ha considerado una cantidad de 60 sistemas adecuada para monitorizar la capital.
Finalmente, en función de los resultados comentados y con las posibles representaciones de los datos
representados a lo largo del apartado 3.5. se han considerado las siguientes funcionalidades para los
dos sistemas desarrollados en sus variables códigos:
47
- Circular por ciertas áreas con la misma periodicidad durante distintos días, periodos del año y
a diferentes horas del día para analizar como varían las concentraciones.
- Comparación de las concentraciones en parques y jardines con las encontradas en entornos de
alta contaminación como colegios, industrias y atascos.
- Comparación de las concentraciones producidas en un área cuando se encuentra sometida al
tráfico de vehículos y cuando está libre.
- Medición de la elevación de emisiones de concentraciones producidas por el tubo de escape
de un coche cuando se encuentra sometido a semáforos, badenes, atascos o limitaciones de
velocidad.
- Comparación de las concentraciones medidas por el sistema portátil en el exterior y el sistema
estático en el interior de una vivienda.
- Representación de las concentraciones en gráficos 3D destacándose las localizaciones con
concentraciones más elevadas.
48
5.1. CONCLUSIONES
Se han diseñado e implementado dos sistemas de monitorización de calidad del aire de bajo coste y
alta eficiencia. El primer diseño trata de un sistema portátil de medida de CO2 implementado en
distintos tipos de vehículos urbanos que registra la posición, tiempo, contaminación acústica y medida
de dicho gas cada diez segundos, almacenando las lecturas en forma de fichero de texto en una tarjeta
de memoria que el sistema lleva incorporado y notificando al usuario de cualquier valor medido por
encima del umbral establecido a través de mensajes de texto. El sistema permite interactuar con el
usuario mediante códigos SMS como si de una aplicación móvil se tratase flexibilizando el manejo y
disponibilidad de los datos. El segundo diseño trata de un sistema estático que permite cuantificar la
calidad del aire en edificios e industrias midiendo datos de los distintos tipos de gases sensibles por el
sensor en partes por millón y los valores de temperatura y humedad correspondientes a las
condiciones ambientales en las que se han realizado las medidas cada cinco segundos y
almacenándose también las lecturas en forma de fichero de texto en una tarjeta de memoria. En este
segundo sistema se ha buscado encontrar distintas alternativas de visualización de los datos en tiempo
real a través del monitor serie, un display LCD y la transmisión de los datos por medio de las
tecnologías WIFI a un servidor Web desplegado por el mismo sistema.
Estos sistemas sirven para analizar los niveles de contaminación encontrados en entornos urbanos con
alta frecuencia de tráfico vehicular, cercanías a colegios, parques e industrias, y para evaluar la
calidad del aire en la que se encuentran los empleados de una fábrica, permitiendo aplicar
restricciones para disminuir las emisiones de gases de efecto invernadero y otros contaminantes por
diversas fuentes. También permite concienciar a las personas de usar transporte público y que
permanecer en lugares donde se han detectado altos niveles peligrosos de gases contaminantes y
respirar dicho aire pueden ser causa de alergias, enfermedades respiratorias e incluso la muerte.
6. BIBLIOGRAFÍA
[1] T. Stein, «Rise of carbon dioxide unabated,» 4 June 2020. [En línea]. Available:
https://research.noaa.gov/article/ArtMID/587/ArticleID/2636/Rise-of-carbon-dioxide-unabated.
[Último acceso: 15 Junio 2020].
[2] M. McGrath, «Climate change: Greenhouse gas concentrations again break records,» 25
Noviembre 2019. [En línea]. Available: https://www.bbc.com/news/science-environment-
50504131. [Último acceso: 15 Junio 2020].
[3] «World Population Prospects 2019,» 17 June 2019. [En línea]. Available:
https://www.un.org/development/desa/publications/world-population-prospects-2019-
highlights.html. [Último acceso: 15 Junio 2020].
[4] «68% of the world population projected to live in urban areas by 2050, says UN,» 16 Mayo
2018. [En línea]. Available: https://www.un.org/development/desa/en/news/population/2018-
revision-of-world-urbanization-prospects.html. [Último acceso: 15 Junio 2020].
[5] B. Díaz, «El parque de vehículos en España crece un 8% en los últimos cinco años,» 16 Agosto
2019. [En línea]. Available: https://www.caranddriver.com/es/coches/planeta-
motor/a28718922/parque-vehiculos-espana-crecimiento/. [Último acceso: 15 Junio 2020].
[6] «Memoria del Secretario General sobre la labor de la Organización,» 2 Septiembre 2015. [En
línea]. Available: https://undocs.org/es/A/70/1. [Último acceso: 5 Junio 2020].
[7] «Urban air pollution – what are the main sources across the world?,» 30 Noviembre 2015. [En
línea]. Available: https://ec.europa.eu/jrc/en/news/what-are-main-sources-urban-air-pollution.
[Último acceso: 15 Junio 2020].
[8] «Urban air quality. Air pollution affects all areas of the world, with the population in urban
areas particularly exposed to high concentrations of small particulate matter (PM2.5).
Exposure to these concentrations can lead to major health problems.,» 18 Diciembre 2019. [En
línea]. Available: https://www.eea.europa.eu/themes/air/urban-air-quality. [Último acceso: 15
Junio 2020].
[9] «PROTOCOLO DE ACTUACIÓN PARA EPISODIOS DE CONTAMINACIÓN POR
DIÓXIDO DE NITRÓGENO EN LA COMUNIDAD DE MADRID,» [En línea]. Available:
https://www.esmadrid.com/sites/default/files/protocolo_anticontaminacion_08102018.pdf.
[Último acceso: 15 Junio 2020].
[10] D. Stojcsics, Z. Domozi y M. Andras, «Air Pollution Localisation Based on UAV Survey,»
2018. [En línea]. Available: https://ieeexplore.ieee.org/document/8616432. [Último acceso: 15
Junio 2020].
[11] R. A. Lara-Cueva, P. B. Menesses, M. D. Márquez, R. X. Gordillo y D. S. Benítez, «Air
Quality Monitoring System Within Campus by Using Wireless Sensor Networks,» 2019. [En
línea]. Available: http://www.kresttechnology.com/krest-academic-projects/krest-mtech-
projects/ECE/M-TECH%20EMBEDDED%20%202019-
20/2019%20IEEE%20BASE%20PAPERS/21.Air%20Quality%20Monitoring%20System%20
Within%20Campus.pdf. [Último acceso: 15 Junio 2020].
[12] B. A. Bravo Granda, E. J. Coronel González, L. A. Belduma Belduma y A. Soto Sarango,
«Desingning a wireless sensor network for vehicular traffic and CO2 pollution monitoring in
an urban area,» 2017. [En línea]. Available: https://ieeexplore.ieee.org/document/8240168.
[Último acceso: 15 Junio 2020].
50
[28] «KY-038 Microphone sound sensor module. Hoja de características,» 16 Junio 2017. [En
línea]. Available: https://datasheetspdf.com/pdf-file/1402048/Joy-IT/KY-038/1. [Último
acceso: 15 Junio 2020].
[29] «Tutorial Arduino y memoria SD y micro SD.,» [En línea]. Available:
https://naylampmechatronics.com/blog/38_Tutorial-arduino-y-memoria-SD-y-micro-SD-.html.
[Último acceso: 15 Junio 2020].
[30] «Reloj de tiempo real RTC DS3231. Extremely Accurate I2C-Integrated RTC/TCXO/Crystal.
Hoja de características,» 2015. [En línea]. Available:
https://datasheets.maximintegrated.com/en/ds/DS3231.pdf. [Último acceso: 15 Junio 2020].
[31] «Lipo Rider Pro. Hoja de características,» [En línea]. Available:
https://wiki.seeedstudio.com/Lipo_Rider_Pro/. [Último acceso: 15 Junio 2020].
[32] «USB to serial chip CH340. Hoja de características,» [En línea]. Available:
https://cdn.sparkfun.com/datasheets/Dev/Arduino/Other/CH340DS1.PDF. [Último acceso: 15
Junio 2020].
[33] «What is Arduino?,» 2020. [En línea]. Available:
https://www.arduino.cc/en/Guide/Introduction. [Último acceso: 15 Junio 2020].
[34] «Wikipedia. Arduino,» 2 Junio 2020. [En línea]. Available:
https://es.wikipedia.org/wiki/Arduino. [Último acceso: 15 Junio 2020].
[35] «Entornos de aplicación Arduino,» [En línea]. Available:
https://aprendiendoarduino.wordpress.com/2016/06/26/entornos-de-aplicacion-arduino/.
[Último acceso: 15 Junio 2020].
[36] «Wiring,» [En línea]. Available: http://wiring.org.co. [Último acceso: 15 Junio 2020].
[37] «Language Reference,» 2020. [En línea]. Available: https://www.arduino.cc/reference/en/.
[Último acceso: 15 Junio 2020].
[38] L. del Valle Hernández, «Breve introducción al Arduino. El Microcontrolador,» [En línea].
Available: https://programarfacil.com/blog/breve-introduccion-al-arduino/. [Último acceso: 15
Junio 2020].
[39] «Download the Arduino IDE,» 2020. [En línea]. Available:
https://www.arduino.cc/en/Main/Software. [Último acceso: 15 Junio 2020].
[40] «Arduino Software (IDE),» 2020. [En línea]. Available:
https://www.arduino.cc/en/Guide/Environment. [Último acceso: 15 Junio 2020].
[41] «Installing Additional Arduino Libraries,» 2020. [En línea]. Available:
https://www.arduino.cc/en/Guide/Libraries. [Último acceso: 15 Junio 2020].
[42] «Tutorial Arduino II: Librerias Arduino,» 28 Junio 2014. [En línea]. Available:
https://cetroniconline.blogspot.com/2014/06/tutorial-arduino-ii-librerias-arduino.html. [Último
acceso: 15 Junio 2020].
[43] «Placas Arduino,» [En línea]. Available:
https://aprendiendoarduino.wordpress.com/2017/06/19/placas-arduino-2/. [Último acceso: 15
Junio 2020].
[44] «ARDUINO UNO,» 2020. [En línea]. Available: https://store.arduino.cc/arduino-uno-rev3.
[Último acceso: 15 Junio 2020].
[45] «ATmega328P,» 2015. [En línea]. Available:
52
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-
Microcontrollers-ATmega328P_Datasheet.pdf. [Último acceso: 15 Junio 2020].
[46] «Drivers para modelo de placa Arduino NANO con circuito integrado FT232RL,» [En línea].
Available: https://www.ftdichip.com/Drivers/VCP.htm. [Último acceso: 15 Junio 2020].
[47] «Drivers para modelo de placa Arduino NANO con circuito integrado CH340G,» [En línea].
Available: http://www.wch-ic.com/downloads/CH341SER_EXE.html. [Último acceso: 15
Junio 2020].
[48] «Arduino as ISP and Arduino Bootloaders,» 2020. [En línea]. Available:
https://www.arduino.cc/en/tutorial/arduinoISP. [Último acceso: 15 Junio 2020].
[49] «Atmel ATmega640/V-1280/V-1281/V-2560/V-2561/V,» 2014. [En línea]. Available:
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2549-8-bit-AVR-Microcontroller-
ATmega640-1280-1281-2560-2561_datasheet.pdf. [Último acceso: 15 Junio 2020].
[50] Dräguer, «Introducción a los Sistemas de Detección de Gases,» 2009. [En línea]. Available:
https://www.draeger.com/Library/Content/9046703_infoflip_gds_es_l3.pdf. [Último acceso:
15 Junio 2020].
[51] «Tutorial sensores de gas MQ2, MQ3, MQ7 y MQ135,» [En línea]. Available:
https://naylampmechatronics.com/blog/42_Tutorial-sensores-de-gas-MQ2-MQ3-MQ7-y-
MQ13.html. [Último acceso: 15 Junio 2020].
[52] «Aplicaciones y características principales sensores de gas de la serie MQ,» [En línea].
Available: http://www.china-total.com/Product/meter/gas-sensor/Gas-sensor.htm. [Último
acceso: 15 Junio 2020].
[53] «MQ-2 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-2.pdf. [Último acceso: 15 Junio 2020].
[54] «MQ-3 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-3.pdf. [Último acceso: 15 Junio 2020].
[55] «MQ-4 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-4.pdf. [Último acceso: 15 Junio 2020].
[56] «MQ-5 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-5.pdf. [Último acceso: 15 Junio 2020].
[57] «MQ-6 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-6.pdf. [Último acceso: 15 Junio 2020].
[58] «MQ-7 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-7.pdf. [Último acceso: 15 Junio 2020].
[59] «MQ-8 GAS SENSOR. Hoja de características,» [En línea]. Available: http://www.china-
total.com/Product/meter/gas-sensor/MQ-8.pdf. [Último acceso: 15 Junio 2020].
[60] «Alcohol Gas Sensor. (Model: MQ303B). Manual,» 1 Mayo 2014. [En línea]. Available:
http://www.china-total.com/Product/meter/gas-sensor/MQ303B.pdf. [Último acceso: 15 Junio
2020].
[61] «MQ131 Semiconductor Sensor for Ozone. Hoja de características,» [En línea]. Available:
http://www.china-total.com/Product/meter/gas-sensor/MQ131.pdf. [Último acceso: 15 Junio
2020].
[62] «Hydrogen Sulfide Gas Sensor. (Model:MQ136). Manual,» 10 Marzo 2015. [En línea].
53
A.1 INTRODUCCIÓN
La utilización de dispositivos portátiles de medida de emisiones de gases de efecto invernadero y
otros contaminantes puede llegar a ser muy útil en el mundo actual, pudiendo tenerse más
información acerca de la calidad del aire que respiramos, concienciar a la sociedad del cambio
climático que estamos presenciando y tomar restricciones para reducir las emisiones. Actualmente, el
problema se utilizan estaciones fijas de medición situadas en ciertas zonas que, en función de los
datos que suministran, toman medidas en un territorio mayor al de su detección. Con el fin de obtener
una mayor granularidad en la medida, con una resolución espacio temporal más adecuada, se
necesitarían instalar nuevas estaciones de medición, cuya construcción y mantenimiento sería
demasiado costoso. Por este motivo, nacen este tipo de dispositivos montados sobre vehículos móviles
de bajo coste y reducido mantenimiento, que pueden operar de manera autónoma y con
monitorización remota centralizada. En temas sociales este proyecto permite mejorar la calidad de la
vida de las personas en entornos urbanos fundamentalmente donde es más necesario controlar las
concentraciones de los gases que se emiten. Este proyecto se enmarca en determinados grupos de
interés entre los que se destacan tres, los clientes o usuarios del producto final, que corresponde con
instituciones políticas, empresas privadas y centros de investigación donde se continuará
desarrollando el producto y analizando los datos recolectados, el medio ambiente interesado en
reducir emisiones y concienciar a la gente de tomar medidas de desarrollo sostenible y los
concesionarios de venta de vehículos, desfavorecidos por el apoyo al transporte público y que
requieren de una transición hacia los coche eléctricos y de hidrógeno. En relación a los temas
ambientales, es posible reducir residuos instalando una alimentación del equipo mediante baterías
recargables, por placas solares o directamente el conexionado del dispositivo a la alimentación del
vehículo de forma cómoda y eficiente.
elementos electrónicos que se estropeen, ya que contiene componentes perjudiciales para el medio
ambiente y la salud si no son reciclados adecuadamente bajo las normas vigentes.
A.4 CONCLUSIONES
El proyecto desde el punto de vista ético es indiferente. Como se ha visto tras analizar los aspectos
sociales, económicos y medioambientales involucrados en el proyecto, este puede generar un gran
beneficio en la reducción de las emisiones fundamentalmente en entornos urbanos y en la salud de las
personas. Todo ello puede generar un valor añadido al proyecto.
ANEXO B: PRESUPUESTO ECONÓMICO
TOTAL
Coste Total
Mano de obra 6.750 €
Recursos materiales 426,58 €
Gastos Generales (costes indirectos) 15% sobre CD 1.076,49 €
Beneficio Industrial 6% sobre CD+CI 495,18 €
SUBTOTAL 8.748,25 €
IVA (21%) 1.837,13 €
TOTAL 10.585,39 €
ANEXO C: SOLDADURA DE PINES PLACA
ARDUINO NANO
La placa Arduino Nano viene con los pines sin montar (Figura 61), por lo que se hace necesario
realizar una breve descripción del proceso de soldadura de los pines.
Según [82], la soldadura de los pines (Figura 62) se logra fundiendo unas aleaciones especiales que
suelen ser de estaño-plomo o estaño-plata de bajo punto de fusión mediante la aplicación de calor. El
calor se aplica sobre los terminales (pines) hasta que estos estén calientes. Posteriormente, se acerca el
hilo de estaño al punto donde se va a realizar la soldadura, tocando con el estaño los pines a soldar,
nunca la punta del soldador. Una vez fundido el estaño, se retira el hilo y el soldador, quedando una
unión pin-placa de baja resistencia óhmica.
El elemento calefactor o soldador suele tener forma de lápiz con punta de cobre estañado, que es
calentado por una resistencia, de la que está aislada eléctricamente. Las potencias del soldador oscilan
entre 15W y 250W. En la soldadura sobre pistas de circuitos impresos será suficiente con soldadores
de baja potencia (15 a 35W).
Figura 61: Visión de placa Arduino Nano con y sin los pines soldados Figura 62: Soldadura de pines.
El soldador aplica calor sobre el pin, y el pin
sobre el estaño que al fundirse moja la pista de
cobre y el pin.
ANEXO D: PROGRAMA EN ARDUINO QUE CARGA
LA COMUNICACIÓN SERIE ENTRE EL MÓDULO
SIM808 Y EL ARDUINO UNO PARA PROBAR LOS
COMANDOS AT MANUALMENTE
ANEXO E: PROGRAMA EN MATLAB PARA EL
CALCULO DE LA CURVA DEL GAS CO2 DEL
SENSOR MQ135 POR AJUSTE POR MÍNIMOS
CUADRADOS
%% Calibracion del sensor MQ135
clear, clc
n = 0;
x = []; % ppm
y = []; % Rs/Ro
x_new = [];
y_new = [];
while(1)
n = n+1;
clc
end
% Representacion grafica
h = plot(x,y,'-rs');
set(h,'Color','k','LineStyle','-','MarkerEdgeColor','r', 'LineWidth',2,
'MarkerFaceColor','g', 'MarkerSize',5);
title('Curva de sensibilidad del sensor MQ-135 para CO2');
xlabel('ppm');
ylabel('Rs/Ro');
grid;
hold on
y1 = a*(x.^b); %Curva obtenida del ajuste por minimos cuadrados
t = plot(x,y1, '-ro');
set(t,'Color','r','LineStyle','-','MarkerEdgeColor','k', 'LineWidth',2,
'MarkerFaceColor','b', 'MarkerSize',5);
legend('Curva original','Curva obtenida del ajuste por minimos cuadrados');
hold off;