Sunteți pe pagina 1din 97

UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ

Instituto de Ingeniería y Tecnología

Departamento de Ingeniería Eléctrica y Computación

Automatización de una Estación Meteorológica de Superficie a través de

Tecnología Arduino.

Reporte Técnico de Investigación presentado por:

Carlos Emilio Zapata González 106940

Requisito para la obtención del título de

INGENIERO EN SISTEMAS COMPUTACIONALES

Asesor

M. de C. José Fernando Estrada Saldaña

Ciudad Juárez, Chihuahua 30 de noviembre de 2018


Agradecimientos

Primeramente, agradezco al Laboratorio de Climatología y Calidad del Aire por haberme


permitido formar parte de su equipo de trabajo, por darme la oportunidad de desarrollar el
presente proyecto, por haber confiar en mí y por siempre tener la disponibilidad de
ayudarme en todo momento.
Agradezco a mis maestros de titulación por llevarme de la mano en el desarrollo de
mi documento ya que sin ellos no podría haber concluido de manera satisfactoria la
redacción de mi documento.
Para finalizar un agradecimiento especial a mi maestro asesor quien fue el
responsable de apoyarme en cada paso, por haberme brindado su conocimiento, porque en
los momentos difíciles siempre tuvo un momento de apoyo.

v
Dedicatoria

Mi proyecto de titulación se lo dedico en primer lugar a mis a mis padres, Myriam Verónica
González y Emilio Zapata Hernández, quienes me han apoyado en todo momento, por el
esfuerzo que realizaron para que concluyera mi carrera profesional, por sus consejos y
palabras de motivación, porque en los momentos difíciles siempre han estado a mi lado y
porque gracias a su esfuerzo estoy aquí.
A mi pareja Monica Puente Tavares, quien es una persona que me ha ayudado en
cada momento, desde que empecé mi carrera siempre creyó en mí, me dio la motivación
para seguir adelante con mis estudios, por su amor, cariño y esfuerzo que deposita en mí.
A mi familia, quienes han estado conmigo y que de alguna forma han contribuido
a la conclusión de mis estudios a todos ellos les dedico el presente trabajo.
A mis hermanos quienes son parte importante de mi vida, porque sé que como
hermano mayor tengo una responsabilidad con ellos, y sé que en algún momento de sus
vidas llegare a ser un ejemplo para ellos.

vi
Índice de Contenido

Declaración de Originalidad .............................................................................................. iv


Agradecimientos ................................................................................................................. v
Dedicatoria ......................................................................................................................... vi
Índice de Contenido .......................................................................................................... vii
Índice de Figuras ................................................................................................................. x
Índice de Tablas ................................................................................................................ xii
Índice de Gráficas ........................................................................................................... xiii
Resumen........................................................................................................................... xiv
Introducción ........................................................................................................................ 1
I. Planteamiento del problema ............................................................................................ 3
1.1 Antecedentes ............................................................................................................. 3
1.2 Definición del problema ........................................................................................... 4
1.3 Objetivos ................................................................................................................... 5
1.4 Justificación .............................................................................................................. 5
II. Marco Referencial .......................................................................................................... 6
2.1 Marco conceptual ...................................................................................................... 6
2.1.1 Temperatura ........................................................................................................... 6
2.1.2 Humedad relativa ................................................................................................... 8
2.1.3 Evaporación ........................................................................................................... 8
2.1.4 Precipitación .......................................................................................................... 9
2.2 Marco teórico .......................................................................................................... 10
2.3 Marco tecnológico .................................................................................................. 11
2.3.1 MySQL ................................................................................................................ 11
2.3.2 Entorno de desarrollo Arduino............................................................................. 12
2.3.3 Raspberry Pi ......................................................................................................... 13
2.3.4 WeeWX................................................................................................................ 13
III. Desarrollo del proyecto ............................................................................................... 15
3.1 Producto propuesto ................................................................................................. 15
vii
3.2 Descripción de la metodología................................................................................ 16
3.3 Sensor temperatura de suelo ................................................................................... 19
3.3.1 Recolección de requisitos ................................................................................ 19

3.3.2 Diseño rápido prototipo uno ............................................................................ 21

3.3.3 Construcción del prototipo uno ........................................................................ 23

3.3.4 Evaluación del prototipo uno por el cliente ..................................................... 26

3.3.5 Refinamiento del prototipo uno ....................................................................... 26

3.3.7 Construcción del prototipo dos ........................................................................ 28

3.3.8 Evaluación del prototipo dos por el cliente...................................................... 29

3.3.9 Refinamiento del prototipo dos........................................................................ 29

3.3.10 Producto final ................................................................................................. 30

3.4 Garita termométrica ................................................................................................ 30


3.4.1 Recolección de requisitos ................................................................................ 30

3.4.2 Diseño rápido ................................................................................................... 32

3.4.3 Construcción del prototipo............................................................................... 34

3.4.4 Evaluación del prototipo por el cliente ............................................................ 35

3.4.5 Refinamiento del prototipo .............................................................................. 35

3.4.6 Producto final ................................................................................................... 35

3.5 Evaporímetro........................................................................................................... 36
3.5.1 Recolección de requisitos ................................................................................ 36

3.5.2 Diseño rápido ................................................................................................... 38

3.5.3 Construcción del prototipo............................................................................... 40

3.5.4 Evaluación del prototipo por el cliente ............................................................ 41

3.5.5 Refinamiento del prototipo .............................................................................. 41

3.5.6 Producto final ................................................................................................... 42

3.6 Pluviómetro ............................................................................................................. 42


viii
3.6.1 Recolección de requisitos ................................................................................ 42

3.6.2 Diseño rápido ................................................................................................... 43

3.6.3 Construcción del prototipo............................................................................... 45

3.6.4 Evaluación del prototipo por el cliente ............................................................ 46

3.6.5 Refinamiento del prototipo .............................................................................. 46

3.6.6 Producto final ................................................................................................... 46

3.7 Configuración de Raspberry Pi ........................................................................... 47

3.7.1 Instalación de sistema operativo y WeeWx ..................................................... 47

3.7.3 Driver de comunicación Arduino-Raspberry Pi .............................................. 49

3.7.4 Página web ....................................................................................................... 50

IV. Resultados y Discusiones ........................................................................................... 56


V. Conclusiones ................................................................................................................ 66
Referencias ........................................................................................................................ 67
Apéndices .......................................................................................................................... 69
Anexos .............................................................................................................................. 70

ix
Índice de Figuras

Figura 2.1 Termómetro ordinario ....................................................................................... 7


Figura 2.2 Termómetro de máximas y mínimas tipo six .................................................... 7
Figura 2.3 Termómetro de suelo. ........................................................................................ 7
Figura 2.4 Psicrómetro. ....................................................................................................... 8
Figura 2.5 Tanque de evaporación y tornillo micrométrico .............................................. 9
Figura 2.6 Pluviómetro Hellmann ...................................................................................... 9
Figura 2.7 Pluviómetro de pared ...................................................................................... 10
Figura 2.8 Estructura de la tarjeta Arduino Uno . ............................................................. 10
Figura 2.9 Entorno de Desarrollo Integrado de Arduino (IDE). ....................................... 12
Figura 2.10 Ejemplo de una página con weeWX ............................................................ 14
Figura 3.2 Esquema de la metodología . ........................................................................... 17
Figura 3.3 Esquema alternativo de la metodología .......................................................... 18
Figura 3.4 Sensor DS18B20 con cubierta metálica .......................................................... 20
Figura 3.5 Sensor DS18B20 ............................................................................................. 21
Figura 3.6 Esquema de conexiones prototipo uno ............................................................ 22
Figura 3.7 Prototipo uno vista frontal ............................................................................... 23
Figura 3.8 Prototipo uno vista lateral ................................................................................ 23
Figura 3.9 Código obtención de dirección única sensor DS18B20 .................................. 24
Figura 3.10 Prototipo uno primer diseño .......................................................................... 25
Figura 3.11 Esquema de conexiones prototipo dos .......................................................... 27
Figura 3.12 Prototipo dos .................................................................................................. 28
Figura 3.13 Código uno segundo diseño .......................................................................... 29
Figura 3.14 Instalación sensores DS18B20 ...................................................................... 30
Figura 3.15 Sensor DTH22 ............................................................................................... 31
Figura 3.16 Sensor DHT22 con módulo ........................................................................... 32
Figura 3.17 Diseño del prototipo garita termométrica ...................................................... 33
Figura 3.18 Construcción del prototipo ............................................................................ 34
Figura 3.19 Código prototipo garita.................................................................................. 34
Figura 3.20 Instalación sensores de temperatura .............................................................. 36

x
Figura 3.21 Evaporímetro NOVALYNX 255-100 ........................................................... 37
Figura 3.22 Diseño prototipo evaporímetro ...................................................................... 39
Figura 3.23 Vista frontal del evaporímetro ....................................................................... 40
Figura 3.24 Código evaporímetro. .................................................................................... 41
Figura 3.25 Instalación evaporímetro ............................................................................... 42
Figura 3.26 Pluviómetro RG2 ........................................................................................... 43
Figura 3.27 Esquema de conexiones pluviómetro ............................................................ 44
Figura 3.28 Construcción del pluviómetro ....................................................................... 45
Figura 3.29 Prototipo pluviómetro .................................................................................... 45
Figura 3.30 Instalación pluviómetro ................................................................................. 47
Figura 3.22 Configuración inicial ..................................................................................... 48
Figura 3.23 Ejemplo de la página web.............................................................................. 50
Figura 3.25 Código reporte NOAA .................................................................................. 55
Figura 4.2 Cédula 1 datos no recabados ........................................................................... 64
Figura 4.2 Cédula 2 datos recabados erróneamente.......................................................... 65

xi
Índice de Tablas

Tabla 1 Características sensor DHT22. ............................................................................ 32


Tabla 2 Especificaciones físicas ....................................................................................... 38
Tabla 3 Código de colores. ............................................................................................... 38
Tabla 4 Especificaciones del pluviómetro ........................................................................ 43

xii
Índice de Gráficas

Gráfica 1 Temperatura de suelo 10 cm ............................................................................. 56


Gráfica 2 Temperatura de suelo 20 cm ............................................................................. 57
Gráfica 3 Temperatura de suelo 30 cm ............................................................................. 57
Gráfica 4 Temperatura de suelo 50 cm ............................................................................. 58
Gráfica 5 Temperatura de suelo 100 cm ........................................................................... 59
Gráfica 6 Temperatura ambiente ...................................................................................... 59
Gráfica 7 Humedad ........................................................................................................... 60
Gráfica 8 Temperatura bulbo seco .................................................................................... 61
Gráfica 9 Temperatura bulbo húmedo .............................................................................. 61
Gráfica 10 Temperatura evaporímetro .............................................................................. 62
Gráfica 11 Evaporación .................................................................................................... 63
Gráfica 12 Precipitación ................................................................................................... 63

xiii
Resumen

El presente proyecto realizó la automatización de una estación meteorológica de superficie


a través de tecnología arduino. La estación meteorológica, se encuentra ubicada en el
Instituto de Ingeniería y Tecnología (IIT) de la Universidad Autónoma de Ciudad Juárez
(UACJ), siendo el Laboratorio de Climatología y Calidad del Aire, el encargado de
monitorear el equipo de recolección de datos y de cosechar los datos de manera manual.
Los parámetros que se monitorean en la estación meteorológica son: presión
atmosférica, temperatura ambiente, temperatura máxima y mínima, humedad relativa,
dirección del viento, temperatura de suelo a cinco profundidades, evaporación y
precipitación.
Con el objeto de automatizar la estación meteorológica de superficie, se utilizaron
sensores digitales, dichos sensores fueron leídos con un arduino UNO. Por último, se
utilizó una Raspberry Pi 3 Model B para realizar la construcción de una página web y
mostrar los datos recolectados por arduino. Al final se realiza una comparación entre los
datos obtenidos de forma manual contra los datos obtenidos de forma automática.

xiv
Introducción

El presente proyecto tuvo como objetivo principal automatizar una estación meteorológica
de superficie a través de tecnología arduino, para obtener datos atmosféricos confiables.
Entrando en contexto, el Laboratorio de Climatología y Calidad del Aire (LCCA)
del Instituto de Ingeniería y Tecnología (IIT) de la Universidad Autónoma de Ciudad
Juárez (UACJ), trabaja una estación meteorológica de superficie de manera manual. Dicha
estación está dotada de un equipo de medición atmosférico, donde el proceso de
recolección de datos es de manera manual, realizada en su mayoría por estudiantes de la
clase de meteorología perteneciente a la licenciatura de ingeniería ambiental.
Existen varios puntos a considerar en el proceso de recolección de datos, el primero
de ellos es que cada semestre los estudiantes que recaban los datos son diferentes, al inicio
del semestre se les brinda una capacitación para que se familiaricen y conozcan el equipo
de medición, esto con el fin de que puedan realizar la recolección de los datos de manera
correcta. Otro punto es que los datos recabados son los siete días de la semana en un horario
de 8:00 am, por cuestiones de disponibilidad de los estudiantes existen ocasiones que los
datos no son tomados, esto conlleva un problema porque si el dato no es recabado,
representa un día que se perdió en el cual no se obtuvo la información atmosférica.
Por las razones mencionadas, se decidió automatizar la estación meteorológica de
superficie, teniendo como beneficios, la recolección automática de los parámetros
atmosféricos, se evita la perdida de datos en caso de que no se tomen manualmente, se
accede a los datos en tiempo real y se da difusión de manera más rápida. Para comparar los
datos recabados manualmente con los recolectados automáticamente se realizaron las
pruebas pertinentes. El presente documento, explica la metodología empleada para el
desarrollo del proyecto, por tal razón fue dividida en cinco capítulos.
En el capítulo I, se aborda el planteamiento del problema, se muestran algunos
antecedentes similares al proyecto desarrollado, así mismo se detalla el objetivo y
justificación del proyecto.
El capítulo II, abarca los conceptos teóricos y tecnológicos. En primer lugar, se
explican conceptos básicos para comprender mejor una estación meteorológica de

1
superficie, en seguida, se habla de la tecnología Arduino, por último, se exponen las
herramientas tecnológicas que ayudaron a desarrollar el proyecto.
En el capítulo III, se describe el producto propuesto, área de conocimiento, tipo de
proyecto, se explica la metodología de trabajo empleada y, por último, se muestra el
desarrollo del proyecto.
En el capítulo IV, se muestran las discusiones y resultados obtenidos a partir de
poner en funcionamiento el proyecto, los resultados son presentados en forma de gráfica,
haciendo una comparación entre los datos recabados manualmente y los automáticos.
En el capítulo V, se realiza una conclusión basada en los resultados obtenidos y en
el objetivo del proyecto.

2
I. Planteamiento del problema

Una estación meteorológica es un área destinada a la medición y recolección de diferentes


parámetros atmosféricos mediante una serie de instrumentos, la cual tiene ciertos
lineamientos o requisitos para poder ser considerada como tal. Por ejemplo, el número de
sensores que se utilizan en la estación, la manera de instalar dichos sensores, el lugar donde
se instalan y, por último, la forma en que se registran los datos. Se podría decir que una
estación meteorológica trabaja de dos maneras: automatizada y manual.
En particular, el Instituto de Ingeniería y Tecnología (IIT) de la Universidad
Autónoma de Ciudad Juárez (UACJ), cuenta con el Laboratorio de Climatología y Calidad
del Aire (LCCA), el cual tiene una estación meteorológica de superficie y diez estaciones
Davis Vantage Pro2 en varios puntos del estado de Chihuahua. La estación de superficie
es totalmente analógica, por lo que los datos son recabados manualmente por alumnos de
la clase de meteorología. El presente proyecto pretende digitalizar dicha estación a través
de la tecnología Arduino.

1.1 Antecedentes

A continuación, se presentan una serie de trabajos relacionados directamente con la


tecnología Arduino.

1) “Estación Meteorológica Multiparamétrica Sincronizada con GPS y Monitoreada a


través de Internet” [1]. Un grupo de estudiantes de la Universidad del Salvador en
la facultad de Ingeniería y Arquitectura en el año 2013 desarrollaron un proyecto
de tesis. Este proyecto tenía como objetivo diseñar y construir una estación
meteorológica. Este grupo de estudiantes utilizaron tecnología Arduino para
incorporar sensores digitales para el registro de los datos. Además, incorporaba
GPS y una interfaz web para monitoreo de los sensores y descarga de archivos con
los datos recabados. Todo esto implementado con hardware y software libre. El
resultado final que se obtuvo fue una estación de monitoreo meteorológico capaz
de obtener y registrar datos en una hoja de cálculo.

3
2) “Telemetría de Estación Meteorológica” [2]. Este proyecto fue desarrollado por un
estudiante de Ecuador en la Escuela Superior Politécnica del Litoral en la facultad
de Ingeniería en Electricidad y Computación en el año 2015. Dicho proyecto tuvo
como objetivo el diseño e implementación de una estación meteorológica basado
en equipo de hardware libre como Arduino Mega y Raspberry PI B+. Dentro de
este proyecto se buscó dar solución al costo elevado que tiene la implementación
de estaciones meteorológicas. Se planteó dar una solución alternativa para
implementar más estaciones en el país a un menor costo. Finalmente, el resultado
que se obtuvo fue una estación meteorológica funcional y
una página web para poder visualizar los datos recabados.

3) “Automatización y Telecontrol de Sistemas De Riego” [3]. El siguiente trabajo fue


desarrollado en la Escuela Politécnica Superior de Gandía en el año 2016. Este
proyecto se planteó como objetivos, optimizar el uso de agua en terrenos dedicados
al cultivo de frutos, aumentar la producción y calidad del cultivo. Otra de las cosas
que se trató en este documento, pero que no es la problemática principal, fue
maximizar el uso de agua en los campos de cultivo. La solución que se planteó fue
implementar un sistema de riego automatizado y controlado remotamente
utilizando sensores, actuadores y tecnología Arduino. Por último, el resultado de
dicho proyecto fue un sistema de telecontrol de riego.

Como puede observarse en los trabajos anteriores el uso de la tecnología Arduino


ha demostrado ser de gran utilidad en proyectos cuyo objetivo es la adquisición y gestión
de datos ya que cuenta con herramientas versátiles que se ajustan dependiendo de las
necesidades, obteniendo beneficios en costo y operación.

1.2 Definición del problema


El Laboratorio de Climatología y Calidad del Aire trabaja una estación meteorológica de
superficie en forma manual. El proceso que se tiene para la toma de datos es el siguiente:
Un grupo de alumnos de la clase de meteorología hace el registro de los datos todos los
días a las 8:00 am, estos quedan registrados en una cédula en papel que se encuentra en la

4
estación, después de finalizar la recolección de datos un alumno en el laboratorio captura
los datos en un documento de Excel, por último, se almacena la cédula en una carpeta.
Este proceso conlleva un riesgo elevado, ya que si los datos son mal recabados en
la cédula se tendría un mal procesamiento de ellos y por ende los resultados obtenidos
serían erróneos.
Además, existen otros problemas a la hora de llevar a cabo este proceso, estos son:
la disponibilidad de los alumnos para recabar los datos, el mal manejo de los sensores, la
confiabilidad y pérdida de los datos recabados (cédula). Si esto no se atiende afectará la
calidad de los datos y la posible información que se generaría de ellos pues muchos de
estos son utilizados por alumnos de la clase, maestros investigadores, empresas,
solicitantes privados y dependencias de gobierno.
Por tal motivo la propuesta para resolver dichos problemas, es digitalizar la estación
meteorológica usando tecnología Arduino.

1.3 Objetivos
Automatizar el proceso de recolección de datos de la estación meteorológica mediante el
desarrollo de un sistema basado en tecnología Arduino minimizando los errores de captura.

1.4 Justificación
En el proyecto se plantea el desarrollo de un sistema basado en tecnología Arduino y
sistemas web para la adquisición precisa de datos de una estación meteorológica de
superficie.
Al utilizar tecnología Arduino, se puede integrar la parte de hardware y software.
En la actualidad, existen muchos microcontroladores para realizar estas tareas. Sin
embargo, Arduino tiene la ventaja sobre otras tecnologías ya que este es más barato, es
multiplataforma, su entorno de programación es simple y es de código abierto. Dicho esto,
Arduino se adecua a las necesidades y objetivos que se plantean en este proyecto.

5
II. Marco Referencial

En la siguiente sección del documento, se explicará el marco referencial que está


conformado por el marco conceptual, teórico y tecnológico. En la primera parte, se
explicarán conceptos básicos para comprender mejor una estación meteorológica de
superficie, en seguida, se hablará de la tecnología Arduino, por último, se expondrán las
herramientas tecnológicas que ayudarán a desarrollar el proyecto.

2.1 Marco conceptual


A continuación, se explicarán los parámetros que se obtienen de una estación
meteorológica de superficie. De igual manera se mencionará la forma en que los
componentes de dicha estación miden estos parámetros.

2.1.1 Temperatura
Se define a la temperatura como la condición que determina la dirección del flujo de calor
resultante entre dos cuerpos. Existen distintas unidades y escalas en que se representa a la
temperatura, algunas de ellas son: °F Grados Fahrenheit, °C Grados Celsius y °K Grados
Kelvin [4].
Para medir la temperatura de un objeto, se utiliza un termómetro con el que se debe
de encontrar en equilibrio termodinámico. Este aparato utiliza cualquier propiedad física
de una sustancia que surja en función de la temperatura, generalmente se utilizan la
dilatación térmica y el cambio de resistencia eléctrica [4].
Los termómetros utilizados se clasifican en dos tipos, los “ordinarios” que indican
la temperatura ambiental y los de “máxima y mínima” que registran las temperaturas
extremas durante un periodo de tiempo [4]. Además, para la medición de la temperatura de
suelo a distinta profundidad se utilizan termómetros de mercurio sencillos como los vistos
en los laboratorios de química. En las figuras 2.1, 2.2 y 2.3 se muestran los tipos de
termómetros más utilizados:

6
Figura 2.1 Termómetro ordinario [5].

Figura 2.2 Termómetro de máximas y mínimas tipo six [6].

Figura 2.3 Termómetro de suelo [7].

7
2.1.2 Humedad relativa
La humedad relativa, es la relación que existe entre la masa de vapor de agua contenida en
la unidad de volumen del aire y la de vapor de agua que sería necesario para saturar ese
volumen a la misma temperatura. Este parámetro se expresa generalmente en porcentaje
(%) [4].
Algunos instrumentos utilizados para medir el contenido de vapor de agua en la
atmósfera son el higrómetro y el psicrómetro (que es el que se utiliza en esta estación) [4].
El psicrómetro está conformado por dos termómetros, uno de ellos mide la temperatura
ambiente y el otro la temperatura de una fuente de agua, es decir, que el bulbo de uno de
ellos está envuelto en un tejido que se mantiene siempre humedecido [8].
Para la determinación de la humedad relativa, se registran las dos temperaturas
obtenidas y se introducen en un documento de Excel que cuenta con las operaciones
necesarias para calcular este valor con ayuda de una carta psicrométrica. En la Figura 2.4,
se visualiza un psicómetro.

Figura 2.4 Psicrómetro [9].

2.1.3 Evaporación
La evaporación, es un proceso físico en el cual el agua contenida en una superficie es
introducida al aire en forma de vapor a una temperatura menor al punto de ebullición [4].
Existen múltiples métodos y aparatos para medir la evaporación, el utilizado aquí
es el evaporímetro estadounidense de cubeta de clase A, que está compuesto de un cilindro
de 25.4 cm de profundidad y 120.7 cm de diámetro. Este debe estar colocado a 10 cm del
nivel de suelo, perfectamente nivelado sobre una plataforma de madera [4].

8
El componente determinante de esta medición es el tornillo micrométrico el cual
contiene una escala graduada en centímetros y un disco girable a modo de cabeza que está
debidamente calibrado para dar lecturas de décimas y centésimas de milímetro [4]. La
lectura se obtiene al hacer girar este disco hasta que la punta del tornillo toca el espejo del
agua. En la Figura 2.5 se muestra un tornillo micrométrico instalado en la tina.

Figura 2.5 Tanque de evaporación y tornillo micrométrico [10].

2.1.4 Precipitación
Se denomina precipitación al agua que cae desde la atmósfera a la superficie en forma
líquida o sólida [4].
Un pluviómetro es uno de los aparatos utilizados para la medición de la
precipitación de los cuales a su vez existen diferentes tipos, en este caso se utiliza el
pluviómetro Hellmann (Figura 2.6) y el pluviómetro de pared (Figura 2.7). Ambos
pluviómetros se encuentran calibrados para obtener medidas directas.

Figura 2.6 Pluviómetro Hellmann [11].

9
Figura 2.7 Pluviómetro de pared [12].

2.2 Marco teórico


En la siguiente sección del documento, se hablará de los fundamentos teóricos, estructura
física y la forma de comunicación de la tecnología Arduino para una mejor comprensión.
Arduino, es una tecnología de código abierto que aparece en el año 2005
desarrollado para estudiantes sin experiencia en programación y electrónica [4]. Fue
diseñado para desarrollar proyectos donde se requiere integrar hardware y software. La
parte física de Arduino cuenta con las siguientes características: pines digitales y análogos
de entrada y salida, pines de alimentación, un botón de reset, un microcontrolador
ATMega328, una conexión USB tipo B o mini y una conexión para alimentación externa.
La figura 2.8, muestra la estructura física de Arduino UNO.

Figura 2.8 Estructura de la tarjeta Arduino Uno [13].

10
Por otro lado, es importante mencionar la forma de comunicación que utiliza
Arduino. Esta tecnología utiliza la comunicación en serie, el puerto serie está asociado al
puerto USB para facilitar la conexión con el ordenador. Dependiendo de la placa de
Arduino que se maneje, los pines digitales asociados a esta comunicación varían. En la
placa Arduino UNO la comunicación serial está asociada a los pines digitales 0 (RX-
recepción) y 1 (TX-transmisión).
Dentro de la comunicación en serie Arduino utiliza algunos protocolos de
comunicación como son:
 UART (Universally Asynchronous Receiver/Transmitter)
 SPI (Serial Peripheral Interface)
 I2C (Inter-Integrated Circuit)

Actualmente, existen una variedad de microcontroladores similares que se podrían


usar para el proyecto, sin embargo, se utilizará Arduino por las siguientes razones:
 Es económico.
 Es multiplataforma.
 Es de código abierto.
 Su entorno de programación es simple y claro ya que está pensado en
usuarios principiantes y avanzados.
 La comunicad de usuarios es muy grande.

2.3 Marco tecnológico


A continuación, se describen las herramientas tecnológicas que se utilizarán en el
desarrollo del proyecto.

2.3.1 MySQL
MySQL es un administrador o gestor de bases de datos relacional que permite gestionar
archivos de una manera sencilla, rápida y segura [14]. Se puede utilizar de dos maneras.
La primera es bajo la licencia GNU (General Public License), la segunda es bajo una
licencia comercial estándar. Alguna de las características de este gestor son las siguientes:
es multiusuario, es multihilo, es de código abierto y es multiplataforma.

11
2.3.2 Entorno de desarrollo Arduino
Arduino cuenta con su propio entorno de desarrollo integrado (IDE). Este software es el
que se utiliza para la construcción de programas llamados “sketch” el cual contiene las
instrucciones que se ejecutan en la tarjeta Arduino [15]. La descarga de este software es
totalmente gratuita y está disponible en la página oficial de Arduino. En la figura 2.9 se
visualiza el IDE de Arduino.

7
1 5 8

6 Figura 2.3.2 IDE de Arduino


9

10

Figura 2.9 Entorno de Desarrollo Integrado de Arduino (IDE).


La figura 2.9 muestra la estructura del IDE de Arduino la cual está compuesta por
los siguientes puntos:
1. Botón de Verificar: Este botón compila el código.
2. Botón de Subir: Carga el código a la placa Arduino.
3. Botón de Nuevo: Abre un nuevo documento.
4. Botón de Abrir: Abre un documento existente.
5. Botón de Salvar: Guarda el archivo actual.
6. Área de codificación: En esta área se hace la codificación del programa que
se cargará en la placa Arduino y está compuesta por dos funciones
principales: void setup y void loop.
7. Menú: En esta área se encuentran los menús disponibles del IDE.
8. Botón Monitor Serie: Abre una nueva ventana y muestra la información que
este recibiendo Arduino.
12
9. Consola: Muestra mensajes de error de código.
10. Placa y Puerto: Aquí se visualiza la placa que se utiliza y el puerto de
comunicación.

2.3.3 Raspberry Pi
Raspberry Pi es un computador en forma de placa que cuenta con un alto rendimiento, es
de bajo costo y es posible instalar un sistema operativo libre mediante una tarjeta SD [16].
Se desarrolló con la finalidad de ayudar a la gente a resolver problemas e incluso divertirse
con la tecnología digital y computacional, en la página oficial se provee de recursos gratis
para ayudar a instructores que puedan guiar a otras personas a aprender.
En el mercado hay una variedad de modelos de Raspberry Pi, para este proyecto se
trabajará con Raspberry Pi modelo B. A continuación, se muestra una lista con las
características físicas de este modelo:
 Procesador Quad Core 1.2 GHz Broadcom BCM2837 de 64 bits.
 1 GB de memoria RAM.
 GPIO extendido de 40 pines.
 Fuente de alimentación micro USB.
 Puerto SD.
 Puerto de pantalla DSI.
 Puerto de cámara CSI.
 Puerto HDMI.
 4 puertos USB 2.
 Salida estéreo de 4 polos y puerto de video compuesto.

2.3.4 WeeWX
WeeWX es un software de código abierto escrito en Python y se ejecuta en la mayoría de
las versiones de Linux, Solaris y MacOS [17]. Este software interactúa con la estación
meteorológica generando gráficos, reportes y páginas HTML.

13
Figura 2.10 Ejemplo de una página con weeWX [18].
La figura 2.10 muestra una página web utilizando weeWX, en este ejemplo se
puede visualizar el procesamiento que se le puede dar a los datos utilizando este software.

14
III. Desarrollo del proyecto

En el presente capítulo se tratarán temas tales como, el producto propuesto, donde se detalla
el área de conocimiento, el tipo de proyecto que se trabaja, la metodología de trabajo
empleada, por último, se describen cada una de las fases de la metodología.

3.1 Producto propuesto


El área de conocimiento en el cual se encuentra inmerso el proyecto es de ingeniería, por
lo tanto, se considera de desarrollo tecnológico debido a que es un trabajo sistemático sobre
conocimiento existente. Las áreas de conocimiento involucradas son sistemas web, bases
de datos y tecnología Arduino. El impacto generado es de índole económico y académico;
el primero, por la reducción en los costos en comparación con una estación comercial y el
segundo, porque estos datos son utilizados en prácticas del programa académico de
Ingeniería Ambiental.
Como se observa en la figura 3.1, muestra un esquema general del sistema.
Primeramente, se cuenta con una estación meteorológica de superficie la cual está dotada
de una serie de sensores digitales, en segunda instancia está un Arduino, este interactúa
directamente con los sensores para tomar las mediciones que arrojan. Una vez obtenido
dicho valor aparece el tercer elemento la Raspberry Pi, el trabajo de este elemento consiste
en tomar los valores que obtiene Arduino y depositarlos en una base de datos. Por último,
se tiene a WeeWx que es una herramienta web que interactúa con Raspberry Pi para obtener
los valores y procesarlos para al final crear una página web.
El producto final es una página web donde se visualizan los datos que se están
generando en la estación meteorológica de superficie.

15
Figura 3.1 Esquema general del sistema.
El sistema es utilizado por administradores de sistemas, maestros, alumnos y
público en general. El administrador, se encarga de dar soporte en caso de alguna falla y
manejar actualizaciones cuando sea necesario. El resto de los usuarios tienen acceso a los
datos que se encuentran almacenados en la base de datos mediante una página web. Dicha
página muestra los datos en forma de lista y gráfica. Asimismo, el usuario puede visualizar
los datos en diferentes lapsos de tiempo, medición actual, semanal, mensual y anual.

3.2 Descripción de la metodología


La metodología basada en prototipos es también conocida como modelo de desarrollo
evolutivo, o prototipado evolutivo. Está diseñado para desarrollar un sistema por pequeñas
partes o secciones. Estas partes del sistema se diseñan rápidamente con la finalidad de dar
un vistazo preliminar al cliente de la solución planteada, con el objetivo de recibir
comentarios y refinar dicha solución a través de diferentes versiones hasta llegar al sistema
final.

16
Estructuralmente la metodología tiene varias etapas, las cuales se visualizan en las
figuras 3.2 y 3.3, a continuación, se enlistan estas etapas:
 Recolección y refinamiento de requisitos.
 Diseño rápido.
 Construcción del prototipo.
 Evaluación del prototipo por el cliente.
 Refinamiento del prototipo.
 Producto de ingeniería.

Figura 3.2 Esquema de la metodología [19].

17
Figura 3.3 Esquema alternativo de la metodología [20].
En la primera etapa, se comienza por la recolección de los requisitos del sistema
con la finalidad de conocer qué es lo que se espera y desea del producto final, en segundo
lugar, se realiza un diseño rápido el cual puede ser tan sencillo como un dibujo, una
maqueta o complejo como desarrollo de interfaces. Una vez realizado el diseño, se
construye la primera versión del prototipo centrada en la información que proporcionó el
cliente, posteriormente, el cliente evalúa el prototipo con el objetivo de obtener una
retroalimentación. Realizada la evaluación, comienza el refinamiento del prototipo, lo cual
se hace cíclicamente hasta lograr que el cliente este satisfecho con el prototipo, por último,
se obtiene un producto de ingeniería que es considerado el producto final.
Existen dos tipos de prototipos dentro de la metodología:
 Prototipo exploratorio, donde el objetivo es trabajar de la mano con el cliente para
explorar sus requerimientos y entregar un sistema final. Se comienza a trabajar con
las partes que el cliente comprende mejor [20].
 Prototipos desechables, donde el objetivo es comprender los requerimientos del
sistema y desarrollar una definición mejorada. El prototipo se centra en los
requerimientos que el cliente no comprende del todo [20].

18
Por último, esta metodología, es más útil en la producción de software, ya que suele
ser más efectivo debido a que satisface las necesidades inmediatas de los clientes. Una gran
ventaja de este tipo de desarrollo está basada en la idea de desarrollar de forma creciente
el sistema. Sin embargo, este tipo de enfoque conlleva desventajas, como, entregas
constantes para evaluación del sistema, deficiente documentación por la realización de
diferentes versiones y cambios continuos en las especificaciones a medida que el cliente
va concretando sus requerimientos [20].

3.3 Sensor temperatura de suelo


El desarrollo de la metodología tiende a ser cíclica ya que se construyen prototipos con
base a las especificaciones iniciales y evaluaciones del cliente, por lo tanto, para el sensor
de temperatura de suelo se construyeron dos prototipos que serán descritos como prototipo
uno y prototipo dos, los cuales comparten la etapa de recolección de requisitos. Las etapas
que se repiten en la metodología son: diseño rápido, construcción del prototipo, evaluación
del cliente y refinamiento del prototipo.
El prototipo está diseñado para medir la temperatura de suelo a 5 profundidades
diferentes, 10 cm, 20 cm, 30 cm, 50 cm y 100 cm.
3.3.1 Recolección de requisitos
En esta etapa se realizó una reunión con el especialista del dominio para determinar los
requisitos del primer prototipo, con la finalidad de obtener información relevante para la
construcción de este. Los requisitos son:
 Recolectar la temperatura de suelo en 5 profundidades (10 cm, 20 cm, 30 cm, 50
cm y 100 cm).
 Utilizar un sensor capaz de estar enterrado.
 El rango de medición del sensor debe de estar entre -40 y 40 grados centígrados.
Para construir el primer prototipo el laboratorio de Climatología y Calidad de Aire
contaba con el sensor DS18B20, lo cual facilitó el armado del prototipo, existen otros
sensores en el mercado que pueden sustituir al DS18B20, pero por cuestiones económicas
no se pueden adquirir por el momento, un ejemplo de otro sensor es el SHT10.

19
Sensor DS18B20
El termómetro digital de temperatura trabaja bajo el protocolo de comunicación 1-Wire
que por definición solo requiere una sola línea de comunicación para enviar y recibir datos.
La figura 3.4 muestra la estructura del sensor, cuenta con 3 cables, rojo-voltaje (VDD),
negro-tierra (GND) y amarillo-datos (DQ), esta combinación de colores puede variar
dependiendo del fabricante y cuenta con un recubrimiento metálico para poder sumergirlo
en agua. Cada sensor tiene un código de serie único de 64 bits, lo cual permite conectar
múltiples sensores en el mismo pin digital del microcontrolador (Arduino). El sensor
obtiene lecturas con una resolución programable de 9 a 12 bits, a mayor resolución mayor
es la precisión de la lectura. Su rango de operación es de -50 a 125 grados centígrados (°C)
con una precisión de +- 0.5 °C en el rango de operación entre -10 °C a 85 °C, esta
información fue extraída de las primeras dos hojas de la ficha técnica del sensor (datasheet)
o también conocida como hoja de datos (ver anexo 1), la hoja de datos completa se
encuentra disponible en el siguiente link:
https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Figura 3.4 Sensor DS18B20 con cubierta metálica

20
VDD DQ GND

Figura 3.5 Sensor DS18B20


La figura 3.5 muestra la estructura del sensor DS18B20 sin la cubierta metálica,
está constituido por tres terminales, la terminal izquierda es voltaje (VDD), la terminal
central es de datos (DQ) por último la terminal derecha es la tierra (GND).
3.3.2 Diseño rápido prototipo uno
El primer diseño se realizó basado en una investigación rápida del sensor, ver figura 3.6.
Los materiales que se utilizaron para el armado fueron:
1. Un Arduino UNO.
2. Un Protoboard.
3. Cinco resistencias de 4.7kΩ.
4. Cinco sensores DS18B20.

21
5. Cinco cables amarillos, seis cables rojos, seis negros.

Protoboard:
Línea Azul
Línea Roja
Pin de alimentación

10 cm 20cm 30cm 50cm 100 cm

Figura 3.6 Esquema de conexiones prototipo uno


La figura 3.6, muestra cinco sensores DS18B20 conectados a cinco pines digitales
de Arduino, los sensores están organizados de izquierda a derecha, en dicho orden están
distribuidas las profundidades que medirá cada sensor iniciando por 10 cm hasta llegar a
100 cm. En primer lugar, el sensor DS18B20 es conectado al protoboard, posteriormente,
se conectó una resistencia entre la terminal VDD y DQ. La forma de conectar los cables al
Arduino es la siguiente:
La terminal izquierda del sensor (VDD) se conectó a la línea roja del protoboard a
través de un cable rojo, la terminal central del sensor (DQ) se conectó con un cable amarillo
al pin digital 11 de Arduino (se utilizaron los pines digitales 11,10,9,8,7 para conectar los
sensores, el pin 11 conecta primer sensor a 10 cm, el pin 10 conecta el segundo sensor a
20 cm y así sucesivamente hasta llegar al pin 7), mientras que la terminal derecha del sensor
22
(GND) se conectó a la línea azul del protoboard. Para abastecer el protoboard con voltaje
y tierra, se utilizaron los pines de alimentación de Arduino, el pin de 5 volts y el pin de
tierra (GND), el voltaje se conectó a la línea roja del protoboard a través de un cable rojo
y la tierra a la línea azul del protoboard a través de un cable negro.

3.3.3 Construcción del prototipo uno


La siguiente etapa de la metodología es pasar del diseño realizado a la construcción
físicamente del prototipo, las figuras 3.7 y 3.8 se visualiza el primer prototipo realizado.

Figura 3.7 Prototipo uno vista frontal

Figura 3.8 Prototipo uno vista lateral

23
Figura 3.9 Código obtención de dirección única sensor DS18B20
La figura 3.9 muestra el código que obtiene la dirección única del sensor DS18B20,
el sensor utiliza la librería OneWire.h, en esta librería se implementa el protocolo 1-Wire.
El programa de Arduino tiene dos funciones void setup() y void loop().
La función void setup() se ejecuta una sola vez al iniciar el programa, la función void loop(),
se ejecuta repetidamente mientras el programa este en ejecución. Primeramente, se creó el
objeto para acceder a las funciones de la librería, recibe como parámetro el pin de
comunicación (línea 4). La dirección del sensor es un arreglo de 8 byte, el cual es
almacenado en el arreglo addr[] (línea 9). La función search(addr) busca el sensor, si lo
encontró almacena la dirección en addr[]. Por último, recorremos el arreglo con un ciclo
while y un for para imprimir la dirección en hexadecimal.

24
Figura 3.10 Prototipo uno primer diseño
La figura 3.10 muestra el código del primer diseño del prototipo uno. El programa
está dividido en tres secciones: librerías, declaraciones y programa. En la sección de
librerías se importaron las dos librerías para controlar el sensor DS18B20. En seguida, se
declararon cinco objetos OneWire que reciben como parámetro el número de pin al que se
conectaran en Arduino y cinco objetos DallasTemperature. Por último, en la sección de
programa dentro de la función setup se inicia la comunicación en serie (línea 19) de igual
manera se inician que los sensores (líneas 19 a 24). La función loop contiene las peticiones
para leer la temperatura (líneas 28,30,32,34,36) y se obtiene la temperatura (línea
29,31,33,35,37), al final se imprimen los valores de temperatura de cada sensor (líneas 38
a 47).

25
3.3.4 Evaluación del prototipo uno por el cliente
Para la evaluación del prototipo se realizó una reunión con el cliente, en la cual se le mostró
la construcción del prototipo.
Los comentarios recibidos para este primer prototipo fueron:
 Soldar la punta de los cables (estañar) rojo, amarillo y negro de cada sensor.
 Soldar cables con punta “macho” en los sensores para facilitar las conexiones.
 Utilizar el mismo código de colores para los cables (tierra-negro, voltaje-rojo,
datos-amarillo).
3.3.5 Refinamiento del prototipo uno
Con base a la evaluación realizada y a los comentarios recibidos por el cliente, se realizaron
los siguientes cambios al prototipo.
 Se soldaron las puntas de los cables del sensor (estañaron).
 Se utilizaron cables con terminal “macho” a cada cable del sensor.
 Se utilizó el código de colores establecido por el cliente.
3.3.6 Diseño rápido prototipo dos
El segundo diseño se realizó basado en la hoja de datos o también conocida como ficha
técnica del sensor DS28B20 (datasheet), esta hoja de datos se encuentra disponible en
internet. La figura 3.9, muestra cinco sensores DS18B20 conectados al pin digital 9 de
Arduino, los sensores están organizados de izquierda a derecha, en dicho orden están
distribuidas las profundidades que medirá cada sensor iniciando por 10 cm hasta llegar a
100 cm.
Los materiales que se utilizaron para el armado fueron:
1. Un Arduino UNO.
2. Un Protoboard.
3. Una resistencia de 4.7kΩ.
4. Cinco sensores DS18B20.
5. Seis cables amarillos, siete cables rojos, seis negros.

26
1 2 3 4 5

Figura 3.11 Esquema de conexiones prototipo dos


A continuación, se describen las conexiones del prototipo dos, (ver figura 3.11). En
primer lugar, se conectaron los sensores DS18B20 al protoboard, posteriormente, se
conectó una resistencia en el protoboard que se utilizó para los cinco sensores. La forma
de conectar las terminales de alimentación VDD de los sensores, es a través de un cable
rojo a la línea roja del protoboard. El primer terminal de la resistencia se conectó con un
cable rojo a la línea roja del protoboard, la segunda terminal de la resistencia se conectó al
pin digital 9 de Arduino mediante un cable amarillo, el pin 9 se utilizó para la transmisión
de datos. La terminal DQ del sensor 1 se conectó a la terminal DQ del sensor 2, la terminal
DQ del sensor 2 a la terminal DQ del sensor 3 y así sucesivamente, mientras tanto, la
terminal DQ del sensor 5, se conectó a la otra terminal de la resistencia con un cable
amarillo. Para abastecer el protoboard con voltaje y tierra se utilizaron los pines de
alimentación de Arduino, el pin 5V y el pin GND respectivamente, el voltaje se conectó a
la línea roja del protoboard a través de un cable rojo y la tierra se conectó a la línea azul
del protoboard a través de un cable negro.
27
3.3.7 Construcción del prototipo dos
En la siguiente etapa de la metodología, se realizó la construcción física del prototipo, (ver,
figura 3.12).

Figura 3.12 Prototipo dos

La figura 3.13 muestra el código para obtener la temperatura mediante el sensor


DS18B20. El código está dividido en tres partes, librerías, definiciones y programa.
Primeramente, se agregan las librerías, DallasTemperature y OneWire. En seguida, se
hacen las declaraciones de las variables a utilizar, se definió el número de pin a cuál están
conectados los sensores (línea 6), se definió un objeto para acceder a las funciones de la
librería DallasTemperature (línea 8), se definieron las variables donde se almacena la
dirección única de cada sensor (línea 10). En tercer lugar, se inició la comunicación en
serie de Arduino y se iniciaron los sensores. Por último, se hace la solicitud de la
temperatura (línea 26), se lee e imprime la temperatura (línea 29).

28
Figura 3.13 Código uno segundo diseño
3.3.8 Evaluación del prototipo dos por el cliente
La evaluación del segundo prototipo se realizó en una reunión con el cliente, en la cual se
le mostró la construcción del segundo prototipo, se explicaron las conexiones y el
funcionamiento. Este prototipo agradó al cliente por lo que se pasó a la última etapa de la
metodología, el producto final.
Los comentarios recibidos son los siguientes.
 Identificar los sensores con una etiqueta con base a la profundidad que medirán.
 Usar tubo de pvc para instalar los sensores.
 De ser necesario extender el tamaño de los cables, utilizar cable de red.

3.3.9 Refinamiento del prototipo dos


En esta etapa de la metodología ya no se realizó ningún cambio al prototipo, porque los
comentarios recibidos por el cliente no tenían impacto directo en el prototipo, por
consiguiente, se pasó directamente a la siguiente etapa de la metodología.

29
3.3.10 Producto final
La última etapa de la metodología es el producto final, la imagen 3.14 muestra los sensores
instalados, en esta etapa se siguieron las recomendaciones del cliente para la instalación.

Figura 3.14 Instalación sensores DS18B20

3.4 Garita termométrica


El siguiente prototipo corresponde a la garita termométrica el cual está diseñado para medir
la temperatura ambiente (máxima y mínima), humedad relativa, el bulbo seco y el bulbo
húmedo.
3.4.1 Recolección de requisitos
En esta etapa se realizó una reunión con el especialista del dominio para determinar los
requisitos del segundo prototipo, con la finalidad de obtener información relevante para la
construcción de este. Los requisitos fueron:
 Medir temperatura ambiente máxima y mínima.
 Medir la humedad relativa.
 Medir la temperatura del bulbo seco y el bulbo húmedo.

30
Para realizar el prototipo, el laboratorio contaba con el sensor DHT22 que integra
un módulo para medir la temperatura ambiente y humedad relativa, la implementación del
bulbo seco y húmedo se hizo mediante el sensor DS18B20.

Sensor DHT22
El sensor digital DHT22, está diseñado específicamente para medir humedad y temperatura
mediante un sensor capacitivo y un termistor respectivamente. Proporciona una señal
digital que se lee mediante un microcontrolador, dicha señal solo requiere una sola línea
de comunicación para enviar y recibir datos. Existen dos variaciones de este sensor, la
primera, el sensor físicamente tiene una cubierta plástica de color blanco y cuatro
terminales, voltaje (VCC), datos (DAT), tierra (GND) y una que no se conecta(N/C) ver
figura 3.13. La segunda, es el sensor tal cual, la diferencia con respecto al primer sensor,
es que incorpora un módulo con un capacitor y una resistencia que conecta la terminal de
voltaje con la terminal de datos, esta variación solo otorga tres terminales tierra (GND),
voltaje (VCC) y datos (DAT), ver figura 3.15. La información se tomó de la hoja de datos
del sensor, (datasheet), ver anexo 2. El anexo dos solo contiene una parte de la hoja de
datos, la hoja de datos completa se encuentra disponible en el siguiente enlace:
https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf

VCC DAT N/C GND

Figura 3.15 Sensor DTH22

31
Figura 3.16 Sensor DHT22 con módulo
La tabla 1 muestra una serie de características del sensor DHT22.
Tabla 1 Características sensor DHT22.
Parámetro Descripción
Voltaje Min: 3.3V Max: 5.5V recomendado a 5V
Unidades Temperatura: ℃ Humedad: %HR
Periodo de muestra 2 segundos
Rango temperatura Min: -40℃ Max: 80 ℃
Rango humedad Min: 0%HR Max: 99.9%HR
Resolución Temperatura: ±0.1℃ Humedad: ±0.1%
Precisión Temperatura: ±0.5℃ Humedad: ±2%
Como se puede observar en la tabla 1, el periodo de muestra mínimo es de dos
segundos para poder obtener una buena lectura. Para la construcción del programa se tomó
en cuenta este parámetro y se decidió tomar los valores del sensor cada cinco segundos.
3.4.2 Diseño rápido
El diseño del prototipo está basado en la hoja de datos (datasheets) de los sensores, ver
figura 3.17.
Los materiales utilizados son:
1. Un Arduino UNO.
2. Un protoboard.
3. Dos resistencias de 4.7kΩ.
4. Dos sensores DS18B20.

32
5. Un sensor DHT22.
6. Seis cables rojos, cuatro cables negros, dos cables amarillos y 2 cables verdes.

Figura 3.17 Diseño del prototipo garita termométrica


La figura 3.17, muestra las conexiones del prototipo (garita termométrica). En
primer lugar, se conectó el sensor DHT22 protoboard. En segundo lugar, se conectaron las
terminales del sensor DHT22 de la siguiente manera. La terminal GND se conectó a la
línea azul del protoboard mediante un cable negro. La terminal VCC se conectó a la línea
roja del protoboard mediante un cable rojo. La terminal DAT se conectó al pin digital 7 de
Arduino mediante un cable verde. Por último, para abastecer el protoboard con voltaje y
tierra se utilizaron los pines de alimentación de Arduino, el pin 5V y el pin GND
respectivamente, el voltaje se conectó a la línea roja del protoboard a través de un cable
rojo y la tierra se conectó a la línea azul del protoboard a través de un cable negro. Las
conexiones del sensor de temperatura se explican en la sección 3.3.6.

33
3.4.3 Construcción del prototipo
A continuación, se muestra la construcción del prototipo (ver figura 3.18).

Figura 3.18 Construcción del prototipo

Figura 3.19 Código prototipo garita

34
La figura 3.19 muestra el código del prototipo garita termométrica. El programa
esta divido en tres secciones, librerías, definiciones y programa. En la sección de librerías,
se agregan las librerías que manejan los sensores. La sección de definiciones, se definen
las variables y objetos para manejar los sensores. Por último, en la sección de programa se
encuentran las funciones que controlan los sensores, en la función setup se inició la
comunicación en serie (línea 21) y se iniciaron los sensores (línea 22 y 23). La función
loop, contiene las peticiones de temperatura y humedad (línea 27, 29 y 30), al final se
imprimieron los valores de los sensores (línea 32 a 39).

3.4.4 Evaluación del prototipo por el cliente


En la etapa de evaluación se realizó una reunión con el cliente para que proporcionara
comentarios de mejora, aquí se le explicó el funcionamiento y las conexiones.
Los comentarios sugeridos fueron los siguientes:
 Conectar el sensor DHT22 mediante cables y no directo al protoboard.
 Usar cables con punta macho-hembra.

3.4.5 Refinamiento del prototipo


Con base a la evaluación del prototipo se tomó lo decisión de no llevar a cabo el proceso
de refinamiento, esto se hizo para no construir un nuevo prototipo ya que las sugerencias
fueron mínimas y no llevaba cambios significativos en el diseño, por tal razón se continuo
con la fase final de la metodología, el producto final.

3.4.6 Producto final


La figura 3.20 muestra los sensores muestra el sensor de temperatura ambiente y humedad
(rojo), y los sensores de temperatura (bulbo seco y bulbo húmedo), antes de hacer la
instalación se realizaron los cambio que sugirió el cliente.

35
Figura 3.20 Instalación sensores de temperatura

3.5 Evaporímetro
El prototipo incumbe al evaporímetro y el sensor de temperatura, el cual tiene como
finalidad medir la temperatura del agua de un tanque y evaporación total en un día.
3.5.1 Recolección de requisitos
En esta etapa se realizó una reunión con el especialista del dominio para determinar los
requisitos del tercer prototipo, con la finalidad de obtener información relevante para la
construcción de este.
Los requisitos fueron:
 Medir la temperatura del agua.
 Medir la evaporación total en 1 día.
Para el prototipo, el laboratorio proporcionó un evaporímetro NOVALYNX 255-100
y un sensor de temperatura DS18B20 el cual es resistente al agua.

36
NOVALYNX 255-100
El evaporímetro 255-100 (figura 3.21) es utilizado para determinar la tasa de evaporación
mediante una señal analógica, producida por el cambio en el nivel de agua del tanque de
evaporación. La señal que produce el potenciómetro es proporcional a la posición del
flotador.

Figura 3.21 Evaporímetro NOVALYNX 255-100

La figura 3.21 fue tomada de la hoja de datos (datasheet) (ver anexo 3). Muestra la
estructura física del evaporímetro. Externamente es un cilindro de tapa removible con base
triangular. En la base del cilindro tiene un cople para conectar un tubo de ½ pulgada.
Internamente consiste en un flotador, una polea y un contrapeso atado a un potenciómetro
de una precisión de 1000-ohm montado en una carcasa resistente a la intemperie. El cable
de la señal es blindado y tiene 3 terminales el cual está conectado al potenciómetro. La
tabla 2 muestra las especificaciones físicas del evaporímetro, mientras que la tabla 3
muestra especificaciones código de colores del cable.

37
Tabla 2 Especificaciones físicas
Parámetro Descripción
Diámetro del cilindro 8 pulgadas (203 mm)
Altura del cilindro 27-1/2 pulgadas (700 mm)
Base del cilindro Triangular de 16 pulgadas con 3 tornillos niveladores
Peso 3.4 kg
Flotador 4 pulgadas de diámetro, plástico
Cable Cable blindado con 3 terminales
Contrapeso 114 gramos
Resolución 0.03 pulgadas (0.76 mm)
Temperatura de operación -40℃ a 60 ℃
Rotación del potenciómetro 360°
Resistencia 1000 ohm
Rango mecánico 0 a 10 pulgadas (0 a 254mm)
Rango eléctrico 0 a 9.44 pulgadas (0 a 239.8)

Tabla 3 Código de colores.


Color Descripción Valor
Rojo Voltaje VCC (5V recomendado)
Blanco Datos DAT (0V - 5V)
Negro Tierra GND

3.5.2 Diseño rápido


El diseño del prototipo se realizó con base a las especificaciones de la hoja de datos y en
la investigación del funcionamiento del potenciómetro ver figura 3.16.

38
Figura 3.22 Diseño prototipo evaporímetro

La figura 3.22 muestra el esquema de conexiones, la manera como se conectó el


evaporímetro fue de la siguiente forma: en primer lugar, se conectaron los tres cables del
evaporímetro al protoboard. En segundo lugar, se conectó el cable GND del evaporímetro
a la línea azul del protoboard con un cable negro para aterrizarlo, el cable VCC se conectó
a la línea roja del protoboard para energizarlo con 5V. El tercer paso, fue conectar el cable
DAT mediante un cable blanco al pin análogo 0 (A0) de Arduino. Las conexiones del
sensor de temperatura se explican en la sección 3.3.2.

39
3.5.3 Construcción del prototipo
En la figura 3.23 se visualiza la construcción física del prototipo evaporímetro.

Figura 3.23 Vista frontal del evaporímetro


La figura 3,24 muestra el código del evaporímetro y el sensor de temperatura
DS18B20. Solo se describe la parte del evaporímetro ya que el sensor de temperatura ya se
había explicado en la sección 3.3.3. Primeramente, se agregaron las librerías necesarias
para el manejo de los sensores y se definieron los pines de comunicación con Arduino
(línea 5 y 6). En segunda instancia, se realiza un mapeo del valor del potenciómetro para
tomar la posición en pulgadas del agua. El manual de usuario explica como obtener la
posición del agua en pulgadas (ver anexo 4). El anexo 4 solo contiene las hojas que se
utilizaron, el manual completo se encuentra disponible en el siguiente enlace:
https://novalynx.com/manuals/255-100-manual.pdf

40
Figura 3.24 Código evaporímetro.
3.5.4 Evaluación del prototipo por el cliente
En la etapa de evaluación se realizó una reunión con el cliente para que proporcionara
comentarios de mejora, aquí se le explicó el funcionamiento y las conexiones.
Los comentarios sugeridos fueron los siguientes:
 Usar cables con punta macho en los tres cables del evaporímetro.

3.5.5 Refinamiento del prototipo


Con base a la evaluación del prototipo se tomó lo decisión de no realizar el proceso de
refinamiento, esto se hizo para no construir un nuevo prototipo ya que las sugerencias
fueron mínimas y no llevaba cambios significativos en el diseño, por tal razón se continuo
con la fase final de la metodología, el producto final.

41
3.5.6 Producto final
La figura 3.25 muestra la instalación del evaporímetro, antes de efectuar la instalación se
realizaron los cambios que sugirió el cliente.

Figura 3.25 Instalación evaporímetro

3.6 Pluviómetro
La función del prototipo es captar la lluvia total por día.
3.6.1 Recolección de requisitos
En esta etapa se realizó una reunión con el especialista del dominio para determinar los
requisitos del cuarto prototipo, con la finalidad de obtener información relevante para la
construcción de este.
Los requisitos fueron:
 Medir la lluvia en un lapso de un día.
Para este cuarto prototipo el laboratorio de Climatología y Calidad del Aire
proporcionó un pluviómetro onset RG2.

Onset RG2
El pluviómetro RG2 está diseñado para captar la precipitación mediante un sistema
eléctrico resistente a la intemperie ver figura 3.26, costa de un embudo receptor de lluvia
el cual tiene un orificio en la parte baja, el agua cae sobre un balancín o canaleta con un
imán, cada vez que el balancín se acciona contabiliza 0.01 pulgadas de precipitación.

42
Figura 3.26 Pluviómetro RG2
La tabla 4 muestra las especificaciones del pluviómetro RG2.
Tabla 4 Especificaciones del pluviómetro
Parámetro Descripción
Resolución 0.01 pulgadas
Dimensiones 6.5 pulgadas de ancho por 10 pulgadas de alto
Rango de operación 0℃ a 50℃
Peso 1 kg
Embudo receptor 6.06 pulgadas de diámetro

3.6.2 Diseño rápido


El diseño de este prototipo se realizó con base a la hoja de datos del pluviómetro (ver anexo
5). El anexo 5 solo contiene una parte de la hoja de datos, la hoja de datos se encuentra en
el siguiente enlace: https://s.campbellsci.com/documents/es/manuals/255-100.pdf. La
imagen 3.27, muestra el diseño de las conexiones.

43
Figura 3.27 Esquema de conexiones pluviómetro

La figura 3.27 muestra las conexiones del prototipo las cuales se describen de la
siguiente manera: en primer lugar, se conectó la resistencia de 4.7kohm en el protoboard,
en segundo lugar, se conectó el pluviómetro al protoboard mediante los dos cables que
contiene (azul y café), el cable azul es utilizado para transmitir datos y el café para
alimentar con voltaje al pluviómetro. El cable café se conecta a la primera terminal de la
resistencia y el cable azul a la segunda terminal de la resistencia. La transmisión de datos
es mediante el pin digital 2 de Arduino el cual se conectó con un cable azul a la segunda
terminal de la resistencia. Por último, para abastecer de voltaje al pluviómetro se conectó
la primera terminal de la resistencia a la línea roja del protoboard mediante un cable rojo.

44
3.6.3 Construcción del prototipo
En la figura 3.28 se visualiza la construcción física del prototipo.

Figura 3.28 Construcción del pluviómetro

Figura 3.29 Prototipo pluviómetro

45
La figura 3.29 muestra el código del pluviómetro. El programa maneja
interrupciones y temporizadores (Timer) para detectar la precipitación. Dicho programa
esta divido en tres secciones, librerías, dediciones y programa. La sección de librerías, se
agregan las librerías para controlar las interrupciones. En la sección de declaraciones, se
declararon las variables que se utilizaran en el programa. Por último, la sección de
programa contiene las funciones que controlan el pluviómetro.
En la función setup, aquí se declaró la interrupción, esta recibe como parámetro el
pin donde se conectó el pluviómetro, la función que ejecutará y el tipo de interrupción
(línea 17). Enseguida, se declaró el objeto Timer1 (línea 18) recibe como parámetro el
tiempo en microsegundos de cada cuando se ejecutará, se declaró el objeto Timer1 que
asocia la interrupción que se ejecutará cuando se activa (línea 19). La función loop, calcula
los milímetros de lluvia cada 3 segundos (línea 24) e imprime el resultado.
Cuando se ejecuta el Timer1 ejecuta la función interrptor, esta función cambia el valor de
la variable muestra a true. La función contador incrementa la variable counter que guarda
el número de veces que se activa el pluviómetro.
3.6.4 Evaluación del prototipo por el cliente
En la etapa de evaluación se realizó una reunión con el cliente para que proporcionara
comentarios de mejora, aquí se le explicó el funcionamiento y las conexiones.
Los comentarios sugeridos fueron los siguientes:
 Usar cables con punta macho en los dos cables pluviómetro.
3.6.5 Refinamiento del prototipo
La etapa de refinamiento se realizó para la etapa de producto final, esto con el fin de no
realizar otro prototipo ya que no eran cambios significativos al diseño.
3.6.6 Producto final
La figura 3.30 muestra el pluviómetro instalado en la estación meteorológica, antes de
hacer la instalación se realizaron los cambios que sugirió el cliente.

46
Figura 3.30 Instalación pluviómetro
3.7 Configuración de Raspberry Pi
En la siguiente sección se describen las configuraciones de la Raspberry Pi 3 Modelo B,
comenzando con la instalación del sistema operativo, instalación de WeeWx,
configuración de WeeWx, controlador (driver) de comunicación entre Arduino y
Raspberry Pi, y configuración de la página web.
3.7.1 Instalación de sistema operativo y WeeWx
El sistema operativo que utiliza la Raspberry Pi es almacenado en una tarjeta SD, el sistema
operativo que se instaló en la Raspberry Pi 3 fue Raspbian (RASPBIAN STRETCH LITE),
el proceso de instalación fue el siguiente:
 Se descargó el sistema operativo de la página www.raspberrypi.org, en la sección
downloads/raspbian.
 Se cargó el sistema operativo en la memoria SD mediante el programa
Win32DiskImager que se puede descargar de la siguiente página
https://sourceforge.net/projects/win32diskimager/postdownload.
Instalado el sistema operativo se inicia la Raspberry Pi, para instalar WeeWx se
puede hacer de las siguientes 2 formas:
 sudo apt-get update
sudo apt-get install weewx
 sudo wget http://www.weewx.com/downloads/weewx_3.2.11_all.deb
sudo dpkg -i wee*.deb

47
Una vez instalado WeeWx se ejecutará automáticamente para su configuración
inicial, en la configuración inicial se configuran cuatro puntos, descripción de la estación,
latitud y longitud, altitud y unidades (US o Metric), la figura 3.22 muestra la configuración
inicial que se ejecuta al instalar WeeWx, la configuración inicial se omitió debido a que se
realizó la configuración completa en la siguiente sección.

Figura 3.22 Configuración inicial

3.7.2 Archivo de configuración WeeWx


En el archivo de configuración weewx.conf se encuentra dividido en secciones, la ubicación
del archivo está el directorio /etc/weewx/weewx.conf se realizaron las siguientes
configuraciones:
 La sección [Station] es para configurar la información de la estación, aquí se
modificaron las variables location, latitude, longitud, altitude y station_type.
 La sección [Arduino-Raspberry] es para configurar la estación que se utilizará, aquí
se configuró la variable driver (nombre del driver que recolecta los datos de
Arduino), se hace una relación entre las variables que toman los valores y las
variables donde se almacena en la base de datos [[label-map]].
 La sección [StdReport] es para configurar los reportes a generar, aquí se configuró:
1. #Where the generated reports should go, relative to WEEWX_ROOT
HTML_ROOT = /var/www/html/skins
2. [[SmallImages]]
# These are the images used on the front page of the website.
# Dimensions are set in the Images/skin.conf file
skin = Images

48
HTML_ROOT = /var/www/html/weewx/Bootstrap/images/
3. [[BigImages]]
# These images are used when a small web page image is clicked on.
# So the skin.conf image_width and image_height are overridden here.
skin = Images
HTML_ROOT = /var/www/html/weewx/Bootstrap/big_images/
4. [[HTMLPages]]
# This generates the webpages themselves.
skin = Bootstrap
HTML_ROOT = /var/www/html/weewx/Bootstrap
 La sección [DataBindings] es para hacer el enlace a la base de datos, aquí se
configuró la variable schema (schema = user.EstacionIIT.schema_EstacionIITC)
que define la estructura de la base de datos.
 La sección [Databases] es para definir las bases de datos a utilizar, aquí se configuró
el tipo de base de datos (database_type = MySQL) y el nombre de la base de datos
(database_name = “nombre de la base de datos”).
3.7.3 Driver de comunicación Arduino-Raspberry Pi
El controlador (driver) de comunicación es el que se encarga de obtener los datos recabados
de Arduino y almacenarlos en la base de datos de WeeWx. El driver es un programa escrito
en Python (ver anexo 6), el código está basado en el ejemplo de Matthew Wall desarrollado
para tomar datos de una estación meteorológica Campbell.
Arduino manda una línea de texto (ver anexo 7), el formato que tiene la línea de
texto es un JSON (JavaScript Object Notation – Notación de Objetos de JavaScript). JSON
es utilizado para dar formato que sigue la sintaxis de JavaScript. La estructura que tiene es
la siguiente, una sección de campos (fields) y otra de valores (values).
El driver importa las librerías, cuando el driver se ejecuta, llama a la función
genLoopPackets recibe el formato JSON y se encarga de realizar la relación entre los
campos y los valores.

49
3.7.4 Página web
Para la realización de la página web se usó un templete llamado Bootstrap, el cual se
descargó de https://github.com/weewx/weewx/wiki/Bootstrap. Cabe mencionar, que el
templete utilizado en la página web, es el que actualmente utiliza el laboratorio para las
distintas estaciones meteorológicas que tiene trabajando. Por último, la página que se
desarrolló se puede acceder desde este link http://148.210.21.112/Estacion08/Bootstrap/

Figura 3.23 Ejemplo de la página web


La figura 3.23 muestra un ejemplo del templete que se utilizó. En la parte superior
(franja gris) muestra el nombre de la estación, Gráficas, Estadísticas, Histórico, Noticias y
Sobre mí. Debajo de la franja gris se encuentran cuatro opciones (pestañas), Últimas 24
horas, Última semana, Último mes y Último año. Del lado izquierdo se muestran los
“Gauges”, del lado derecho se muestran las gráficas.
El directorio en donde se encuentra el templete completo es en /etc/weewx/skins
aquí se encuentran las carpetas Images y Bootstrap, estas carpetas tienen los archivos de la
página web.
La carpeta Images, contiene un archivo de configuración llamado skin.conf, el
archivo sirve para indicar las variables que se graficarán (día, semana, mes y año). En el
archivo se modificó la sección [ImageGenerator], dentro de esta sección se encuentran las
50
secciones [[day_images]], [[week_images]], [[month_images]], [[year_images]]. A
continuación, se muestran cuatro ejemplos de cómo se declaran las variables:
1. [[day_images]]  Sección
[[[dayHumedad-Bootstrap]]]  Título de la gráfica
[[[[inHumidity]]]]  Variable a graficar
2. [[week_images]]
[[[weekHumedad-Bootstrap]]]
[[[[inHumidity]]]]
3. [[month_images]]
[[[montHumedad-Bootstrap]]]
[[[[inHumidity]]]]
4. [[year_images]]
[[[yearHumedad-Bootstrap]]]
[[[[inHumidity]]]]
La carpeta Bootstrap contiene el archivo skin.conf que sirve para establecer las
variables que se visualizarán en los gauges, los archivos html para modificar los gauges y
las gráficas. Dentro del archivo skin.conf se modificó la sección [Labels],
[GaugeGenerator], [Bootstraplabels] y [HistoryReport].
La sección [Labels] sirve para establecer las etiquetas que aparecen en los “gauges”
por ejemplo:
 inHumidity – Humedad
La sección [GaugeGenerator] aquí se configuraron los gauges que aparecen en la
página web, a continuación, se muestra un ejemplo:
 [[outTemp]]
 minvalue  Rango mínimo de medición.
 maxvalue  Rango máximo de medición.
 majorstep  Valor máximo de cambio (números grandes).
 miniorstep  Valor mínimo de cambio.
 digitformat  Para ver el valor con punto decimal.
En la sección [BootstrapLabels] se especificaron las variables para sacar los valores
mínimos, máximos y promedios. Por ejemplo:
51
 [[history_tables]]
 min_temp  Variable para temperatura mínima.
 max_temp  Variable para temperatura máxima.
 avg_temp  Variable para temperatura promedio.
La sección [HistotyReport] contiene la parte que se usa para la pestaña Histórico,
aquí se encuentran especificados los rangos de valores mínimos, máximos, los colores que
pintará cuando se encuentre dentro de los diferentes rangos, los meses que aparecen en la
parte superior, la declaración de las variables para los valores máximos, mínimos y la parte
de los reportes con el formato de la NOAA. Por ejemplo:
 minvalues = -50, -10, -5, 0, 5, 10, 15, 25, 30, 35
 maxvalues = -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 60
 colours = “#0029E5”, “#0186E7” “#02E3EA”, “#04EC97”, “#05EF3D2”
 monthnames = Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
 [[max_temp]]
 obs_type = outTemp  La variable de donde tomará el dato.
 aggregate_type = max  Tipo de dato que almacena. (min, max, avg, sum).
En la sección [[NOAA]] se declararon los archivos que se utilizaron para los
reportes de la NOAA.
 year_filename
 monthfilename
Los archivos html que se modificaron de la carpeta Bootstrap son los siguientes,
gauges.html.tmpl, index.html.tmpl, week.html.tmpl, month.html.tmpl, year.html.tmpl,
stats.html.tmpl, history.html.tmpl. En los archivos index, week, month y year se realizaron
los mismos cambios por esta razón solo se describirá un ejemplo de las modificaciones que
se realizaron.
El archivo gauges.html.tmpl contiene el código html que pinta los gauges en la
página, los gauges están divididos es secciones <div> para agruparlos de dos en dos. A
continuación, se muestra un ejemplo:
<div class=”col-md-4”>
<div class =”row”>

52
<div class=”col-md-6” align=”center”>
<img src=”outTempGauge.png” alt””>
<h5>$Labels.Generic.outTemp</h5>
</div>
<div class=”col-md-6” align=”center”>
<img src=”inTempGauge.png” alt””>
<h5>$Labels.Generic.inTemp</h5>
</div>
</div>
Los archivos index.html.tmpl, week.html.tmpl, month.html.tmpl, year.html.tmpl
contienen prácticamente el mismo código html, estos archivos muestran las gráficas que
aparecen cuando damos clic sobre una gráfica, están seccionados en <div. Para agrupar de
dos en dos. Por ejemplo:
<br>
<div class=”row”>
<div class=”col-md-6” align=”center”>
<a href =”big_images/outTemp-Bootstrap.png” data”ligthbox”>
<img src=”images/outTemp-Bootstrap.png alt”” class”img responsive”
style=”mmax-width:100%;”>
</a>
</div>
<div class=”col-md-6” align=”center”>
<a href =”big_images/inTemp-Bootstrap.png” data”ligthbox”>
<img src=”images/inTemp-Bootstrap.png alt”” class”img responsive”
style=”mmax-width:100%;”>
</a>
</div>
</div>

El archivo history.html.tmpl contiene el código html que se muestra en la pestaña


Histórico, el código esta seccionado en <div> para agrupar las variables. Por ejemplo:
53
<div class=”col-md-8 main”
<h3>$BootstrapLabels.history_tables.min_temp</h3>
$min_temp_table
<h3>$BootstrapLabels.history_tables.max_temp</h3>
$max_temp_table
</div>
El archivo stats.html.tmpl contiene el código en html para la pestaña Estadísticas,
el código esta seccionado en tablas. Por ejemplo:
<h3>$Labels.Generic.outTemp</h3>
<table class="table table-hover">
<thead>
<tr>
<th></th>
<th>$BootstrapLabels.timespans.today</th>
<th>$BootstrapLabels.timespans.week</th>
<th>$BootstrapLabels.timespans.month</th>
<th>$BootstrapLabels.timespans.year</th>
<th>$BootstrapLabels.timespans.ever</th>
</tr>
</thead>
<tbody>
<tr>
<td>$BootstrapLabels.minmax.max</td>
<td>$day.outTemp.max<br>$day.outTemp.maxtime</td>
<td>$week.outTemp.max<br>$week.outTemp.maxtime</td>
<td>$month.outTemp.max<br>$month.outTemp.maxtime</td>
<td>$year.outTemp.max<br>$year.outTemp.maxtime</td>
<td>$alltime.outTemp.max<br>$alltime.outTemp.maxtime</td>
</tr>
<tr>
<td>$BootstrapLabels.minmax.min</td>
<td>$day.outTemp.min<br>$day.outTemp.mintime</td>
<td>$week.outTemp.min<br>$week.outTemp.mintime</td>
<td>$month.outTemp.min<br>$month.outTemp.mintime</td>
<td>$year.outTemp.min<br>$year.outTemp.mintime</td>
<td>$alltime.outTemp.min<br>$alltime.outTemp.mintime</td>
</tr>
</tbody>
</table>
Dentro de la carpeta Bootstrap existe la carpeta NOAA que contiene dos archivos
(NOAA-YYYY-MM.txt.tmpl y NOAA-YYYY-txt.tmpl), uno muestra el reporte por mes

54
y el otro por año, los archivos construyen los reportes en el formato de la NOAA que
parecen en la sección Histórico.

Figura 3.25 Código reporte NOAA

55
IV. Resultados y Discusiones

En el presente capitulo se muestran los resultados obtenidos, los datos se presentan en


forma de gráfica, cada gráfica muestra la comparación de los datos obtenidos manualmente
contra los obtenidos digitalmente.

Temperatura de suelo 10 cm
12.00

10.00

8.00

6.00

4.00

2.00

0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 9.00 8.00 7.00 4.00 3.00 4.00 4.00 4.00 3.00 5.00
Digital 9.75 7.75 7.00 3.88 3.00 3.88 3.75 4.00 3.25 4.75

Análogo Digital

Gráfica 1 Temperatura de suelo 10 cm


La gráfica 1, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.25 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

56
Temperatura de suelo 20 cm
10.00
9.00
8.00
7.00
6.00
5.00
4.00
3.00
2.00
1.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 9.00 9.00 8.00 5.00 4.00 4.00 5.00 8.00 5.00 7.00
Digital 9.00 8.75 7.88 4.50 4.00 3.88 4.75 7.25 4.25 7.50

Análogo Digital

Gráfica 2 Temperatura de suelo 20 cm


La gráfica 2, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.75 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Temperatura de suelo 30 cm
14.00

12.00

10.00

8.00

6.00

4.00

2.00

0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 10.00 12.00 11.00 9.00 7.00 7.00 7.00 7.00 7.00 9.00
Digital 9.75 11.88 11.00 8.75 6.75 7.00 7.00 6.75 6.75 8.50

Análogo Digital

Gráfica 3 Temperatura de suelo 30 cm

57
La gráfica 3, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.25 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Temperatura de suelo 50 cm
16.00
14.00
12.00
10.00
8.00
6.00
4.00
2.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 14.00 14.00 13.00 12.00 7.00 11.00 10.00 10.00 10.00 11.00
Digital 13.50 13.75 12.50 11.75 7.25 10.75 9.75 9.75 9.75 10.75

Análogo Digital

Gráfica 4 Temperatura de suelo 50 cm


La gráfica 4, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.75 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

58
Temperatura de suelo 100 cm
20.00
18.00
16.00
14.00
12.00
10.00
8.00
6.00
4.00
2.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 18.00 17.00 16.00 12.00 12.00 14.00 16.00 10.00 14.00 13.00
Digital 17.50 16.75 16.00 11.50 11.75 13.75 16.00 9.75 14.25 12.50

Análogo Digital

Gráfica 5 Temperatura de suelo 100 cm


La gráfica 5, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.75 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Temperatura ambiente
18.00
16.00
14.00
12.00
10.00
8.00
6.00
4.00
2.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 2.00 9.00 2.00 11.00 3.00 17.00 9.00 14.00 5.00 12.00
Digital 1.75 8.50 1.75 10.50 2.75 16.75 8.50 13.25 4.75 11.75

Análogo Digital

Gráfica 6 Temperatura ambiente


59
La gráfica 6, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.75 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Humedad
80.00
70.00
60.00
50.00
40.00
30.00
20.00
10.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 53.00 55.00 55.00 68.00 21.00 16.00 53.00 55.00 43.00 55.00
Digital 52.70 54.10 53.80 67.30 21.80 16.80 51.90 53.60 44.50 53.80

Análogo Digital

Gráfica 7 Humedad
La gráfica 7, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 1.40, la diferencia que existe tiene relación con el procesamiento
de los datos por parte del laboratorio y la precisión del sensor digital.

60
Temperatura bulbo seco
12.00

10.00

8.00

6.00

4.00

2.00

0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 10.00 11.00 5.00 2.00 4.00 6.00 6.00 5.00 3.00 10.00
Digital 9.81 10.54 5.21 1.87 4.34 5.87 5.74 4.89 3.52 9.37

Análogo Digital

Gráfica 8 Temperatura bulbo seco


La gráfica 8, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.66 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Temperatura bulbo humedo


12.00

10.00

8.00

6.00

4.00

2.00

0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 7.00 10.00 3.00 0.00 1.00 3.00 3.00 2.00 5.00 8.00
Digital 6.89 9.56 2.37 0.21 0.87 3.37 3.12 2.25 4.9 8.19

Análogo Digital

Gráfica 9 Temperatura bulbo húmedo


61
La gráfica 9, muestra la comparación de los datos obtenidos digitalmente contra los
datos tomados manualmente, se realizaron dos mediciones por día en un periodo de cinco
días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.75 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

Temperatura evaporímetro
18.00
16.00
14.00
12.00
10.00
8.00
6.00
4.00
2.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 16.00 8.00 3.00 5.00 12.00 2.00 6.00 12.00 9.00 7.00
Digital 15.75 8.25 2.89 5.21 11.37 1.89 5.56 11.78 8.68 6.89

Análogo Digital

Gráfica 10 Temperatura evaporímetro


La gráfica 10, muestra la comparación de los datos obtenidos digitalmente contra
los datos tomados manualmente, se realizaron dos mediciones por día en un periodo de
cinco días. Los resultados obtenidos muestran un comportamiento similar, teniendo como
diferencia un máximo de 0.63 grados, la diferencia que existe tiene relación con la precisión
y margen de error de los sensores digitales.

62
Evaporación
7.00
6.00
5.00
4.00
3.00
2.00
1.00
0.00
Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra Muestra
1 2 3 4 5 6 7 8 9 10
Análogo 1.00 3.00 6.00 5.00 3.00 1.00 2.00 4.00 3.00 1.00
Digital 0.90 3.30 5.76 5.20 2.80 0.85 1.52 3.88 2.70 0.85

Análogo Digital

Gráfica 11 Evaporación
La gráfica 11, muestra la comparación de los datos obtenidos digitalmente contra
los datos tomados manualmente, se realizó un muestreo de 10 datos. Los resultados
obtenidos muestran un comportamiento similar. La diferencia que existe tiene relación con
la precisión, instalación y margen de error del evaporímetro.

Precipitación
0.99
0.98
0.97
0.96
0.95
0.94
0.93
0.92
0.91
0.90
0.89
Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5
Pulgadas 0.93 0.96 0.95 0.98 0.92

Pulgadas

Gráfica 12 Precipitación

63
La gráfica 12, muestra los resultados obtenidos de la precipitación. Se realizaron
cinco muestras, en cada muestra se colocaron 473 ml de agua que equivale a 1 pulgada de
lluvia.
A continuación, se muestran dos ejemplos de cédulas recabadas. Primeramente, la
figura 4.1 muestra una cédula en donde los datos no fueron recabados. En segundo lugar,
la figura 4.2 muestra una cédula donde algunos parámetros atmosféricos no se tomaron
correctamente.

Figura 4.2 Cédula 1 datos no recabados

64
Figura 4.2 Cédula 2 datos recabados erróneamente

65
V. Conclusiones

El presente proyecto logró alcanzar el objetivo inicial que era automatizar el proceso de
recolección de datos de la estación meteorológica mediante el desarrollo de un sistema
basado en tecnología arduino minimizando los errores de captura.
Considerando que el error humano siempre estará presente, se presentan dos
factores a considerar al momento de realizar la comparación de los datos obtenidos. El
primero es, la instalación del equipo de medición. El segundo, la toma de datos
manualmente. Estos factores siempre darán una incertidumbre al momento de realizar la
comparación de los datos. Con base a los resultados obtenidos en el capítulo de resultados
y discusiones, se puede concluir que los datos tienen un comportamiento similar y no existe
una variación significativa entre ellos, sin embargo, ahorra tiempo, se actualiza la
información y se encuentra al alcance de todos.
Por otra parte, se quedó como trabajo futuro la medición de la presión atmosférica,
velocidad y dirección de viento. Así como la creación de los reportes de la NOAA y la
incorporación de la página web de la estación meteorológica de superficie a la página
principal del Laboratorio de Climatología y Calidad del Aire que aún se encuentra en
desarrollo (http://cecatev.uacj.mx/).

66
Referencias

[1] V. J. P. MENJÍVAR, "Estación meteorológica multiparamétrica sincronizada con


GPS y monitoreada a través de Internet," El Salvador, 2013.
[2] J. M. R. Anchundia, "Telemetría de estación meteorológica," Guayaquil, Ecuador,
2015.
[3] F. E. Martinez, "Automatización y telecontrol de sistema de riego," Gandia-España,
2016.
[4] C. N. d. agua, Manual teórico práctico del observador meteorológico de superficie,
Ciudad de México: Secretaría de medio ambiente y recursos naturales, 2010.
[5] MeteoLobios, "MeteoLobios," 2013. [Online]. Available:
http://www.meteolobios.es/temp.htm. [Accessed 20 08 2018].
[6] I. S. d. C.V, "Interastro S.A de C.V," 2014. [Online]. Available:
(http://www.sbkmexico.com/catalogo/images/TF10300003-a.jpg. [Accessed 20 08
2018].
[7] T. -. L. Químico, "TP - Laboratorio Químico," 2018. [Online]. Available:
https://www.tplaboratorioquimico.com/wp-
content/uploads/2015/02/termometro_b.jpg. [Accessed 20 08 2018].
[8] S. Medrano, "Medición de Humedad Relativa," 2003. [Online]. Available:
http://www.metas.com.mx/guiametas/la-guia-metas-03-09.pdf. [Accessed 27
Octubre 2017].
[9] S. Tutiempo Network, "TuTiempo.net," 2018. [Online]. Available:
https://www.tutiempo.net/meteorologia/i/instrumentos/psicro.gif. [Accessed 20 08
2018].
[10] I. N. d. M. e. Hidrología, "Instituto Nacional de Meteorología e Hidrología –
Ecuador," 2018. [Online]. Available: http://www.serviciometeorologico.gob.ec/wp-
content/uploads/2017/11/clip_image018.jpg. [Accessed 20 08 2018].

67
[11] S. Darrera, "Darrera," 2018. [Online]. Available:
https://www.darrera.com/archivos/productos/img/d2148-pluviometro-hellmann-
120-litros-desmontado.jpg. [Accessed 20 08 2018].
[12] DISGRUP.ES, "DISGRUP," 2014. [Online]. Available: http://disgrup.es/camping-
jardin-y-playa/9025-pluviometro-pared-import-16-cms.html. [Accessed 20 08
2018].
[13] W. Themes, "Ritsa El Salvador," 2016. [Online]. Available:
http://www.ritsasv.com/tag/curso-arduino/). [Accessed 20 08 2018].
[14] O. Corporation, "MySQL," Oracle Corporation, 2017. [Online]. Available:
https://www.mysql.com. [Accessed 2017 Septiembre 25].
[15] Arduino, "Ardino," Arduino, 2017. [Online]. Available:
https://www.arduino.cc/en/Main/Software. [Accessed 25 Septiembre 2017].
[16] R. Pi, "Raspberry Pi," RASPBERRY PI FOUNDATION, 2017. [Online]. Available:
https://www.raspberrypi.org/. [Accessed 25 Septiembre 2017].
[17] T. Keffer, "weeWX," Tom Keffer, 2017. [Online]. Available:
http://www.weewx.com/. [Accessed 25 Septiembre 2017].
[18] T. Keffer and M. Wall, "weeWX," 2018. [Online]. Available:
http://www.weewx.com/screenshots/hoodriver.png. [Accessed 20 08 2018].
[19] EcuRed, "EcuRed," [Online]. Available:
https://www.ecured.cu/Modelo_de_prototipos. [Accessed 27 08 2018].
[20] I. Sommerville, Ingeniería del Software, Madrid: Pearson Educación, S.A., 2005.

68
Apéndices

Apéndice 1 Formato de llenado manual (cédula).

69
Anexos

DS18B20 Programmable Resolution


1-Wire Digital Thermometer
Benefits and Features
General Description ● Unique 1-Wire® Interface Requires Only One Port
The DS18B20 digital thermometer provides 9-bit to 12-bit Pin for Communication
Celsius temperature measurements and has an alarm ● Reduce Component Count with Integrated
function with nonvolatile user-programmable upper and Temperature Sensor and EEPROM
lower trigger points. The DS18B20 communicates over a • Measures Temperatures from -55°C to +125°C
1-Wire bus that by definition requires only one data line (-67°F to +257°F)
(and ground) for communication with a central micro- • ±0.5°C Accuracy from -10°C to +85°C
processor. In addition, the DS18B20 can derive power • Programmable Resolution from 9 Bits to 12 Bits
directly from the data line (“parasite power”), eliminating • No External Components Required
the need for an external power supply.
● Parasitic Power Mode Requires Only 2 Pins for
Each DS18B20 has a unique 64-bit serial code, which Operation (DQ and GND)
allows multiple DS18B20s to function on the same 1-Wire
bus. Thus, it is simple to use one microprocessor to control ● Simplifies Distributed Temperature-Sensing
many DS18B20s distributed over a large area. Applications with Multidrop Capability
Applications that can benefit from this feature include • Each Device Has a Unique 64-Bit Serial Code
HVAC environmental controls, temperature monitoring Stored in On-Board ROM
systems inside buildings, equipment, or machinery, and ● Flexible User-Definable Nonvolatile (NV) Alarm Settings
process monitoring and control systems. with Alarm Search Command Identifies Devices with
Temperatures Outside Programmed Limits
Applications ● Available in 8-Pin SO (150 mils), 8-Pin µSOP, and
● Thermostatic Controls 3-Pin TO-92 Packages
● Industrial Systems
● Consumer Products Pin Configurations
● Thermometers
● Thermally Sensitive Systems

TOP VIEW
+
N.C. 1 8 N.C.
DS18B20
N.C. 2 DS18B20 7 N.C.
1 2 3
VDD 3 6 N.C.

DQ 4 5 GND

SO (150 mils)
(DS18B20Z)

DQ 1 + 8 VDD
GND DQ VDD N.C. 2 7 N.C.
DS18B20
N.C. 3 6 N.C.
1 2 3 GND 4 5 N.C.

µSOP
BOTTOM VIEW (DS18B20U)
Ordering Information appears at end of data sheet.
TO-92
(DS18B20)
1-Wire is a registered trademark of Maxim Integrated Products, Inc.

19-7487; Rev 4; 1/15

Anexo 1 Hoja de datos DS18B20

70
Absolute Maximum Ratings
Voltage Range on Any Pin Relative to Ground ....-0.5V to +6.0V Operating Temperature Range......................... -55°C to +125°C

Storage Temperature Range ............................ -55°C to +125°C


Solder Temperature ...............................Refer to the IPC/JEDEC
J-STD-020 Specification
These are stress ratings only and functional operation of the device at these or any other conditions above those indicated in the operation sections of this specification is not implied. Exposure
to absolute maximum rating conditions for extended periods of time may affect reliability.

DC Electrical Characteristics
(-55°C to +125°C; VDD = 3.0V to 5.5V)

PARAMETER SYMBOL CONDITIONS MIN TYP MAX UNITS


Supply Voltage VDD Local power (Note 1) +3.0 +5.5 V
Parasite power +3.0 +5.5
Pullup Supply Voltage VPU (Notes 1, 2) V
Local power +3.0 VDD
-10°C to +85°C ±0.5
Thermometer Error tERR (Note 3) °C
-55°C to +125°C ±2
Input Logic-Low VIL (Notes 1, 4, 5) -0.3 +0.8 V

Local power +2.2 The lower


Input Logic-High VIH (Notes 1,6) of 5.5 or V
Parasite power +3.0 VDD + 0.3
Sink Current IL VI/O = 0.4V 4.0 mA
Standby Current IDDS (Notes 7, 8) 750 1000 nA
Active Current IDD VDD = 5V (Note 9) 1 1.5 mA
DQ Input Current IDQ (Note 10) 5 µA
Drift (Note 11) ±0.2 °C

Note 1: All voltages are referenced to ground.


Note 2: The Pullup Supply Voltage specification assumes that the pullup device is ideal, and therefore the high level of the
pullup is equal to VPU. In order to meet the VIH spec of the DS18B20, the actual supply rail for the strong pullup transis-
tor must include margin for the voltage drop across the transistor when it is turned on; thus: V PU_ACTUAL = VPU_IDEAL +
VTRANSISTOR.
Note 3: See typical performance curve in Figure 1.
Note 4: Logic-low voltages are specified at a sink current of 4mA.
Note 5: To guarantee a presence pulse under low voltage parasite power conditions, V ILMAX may have to be reduced to as low as
0.5V.
Note 6: Logic-high voltages are specified at a source current of 1mA.
Note 7: Standby current specified up to +70°C. Standby current typically is 3µA at +125°C.
Note 8: To minimize IDDS, DQ should be within the following ranges: GND ≤ DQ ≤ GND + 0.3V or VDD – 0.3V ≤ DQ ≤ VDD.
Note 9: Active current refers to supply current during active temperature conversions or EEPROM writes.
Note 10: DQ line is high (“high-Z” state).
Note 11: Drift data is based on a 1000-hour stress test at +125°C with VDD = 5.5V.

Anexo 1 Hoja de datos DS18B20

71
Aosong Electronics Co.,Ltd
---------------------------------------------------------------------------------------------------------------------
Your specialist in innovating humidity & temperature sensors
1. Feature & Application:
* Full range temperature compensated * Relative humidity and temperature measurement
* Calibrated digital signal *Outstanding long-term stability *Extra components not needed
* Long transmission distance * Low power consumption *4 pins packaged and fully interchangeable

2. Description:
DHT22 output calibrated digital signal. It utilizes exclusive digital-signal-collecting-technique and humidity
sensing technology, assuring its reliability and stability.Its sensing elements is connected with 8-bit single-chip
computer.

Every sensor of this model is temperature compensated and calibrated in accurate calibration chamber and the
calibration-coefficient is saved in type of programme in OTP memory, when the sensor is detecting, it will cite
coefficient from memory.

Small size & low consumption & long transmission distance(20m) enable DHT22 to be suited in all kinds of
harsh application occasions.

Single-row packaged with four pins, making the connection very convenient.

3. Technical Specification:
Model DHT22
Power supply 3.3-6V DC
Output signal digital signal via single-bus
Sensing element Polymer capacitor
Operating range humidity 0-100%RH; temperature -40~80Celsius
Accuracy humidity +-2%RH(Max +-5%RH); temperature <+-0.5Celsius
Resolution or sensitivity humidity 0.1%RH; temperature 0.1Celsius
Repeatability humidity +-1%RH; temperature +-0.2Celsius
Humidity hysteresis +-0.3%RH
Long-term Stability +-0.5%RH/year
Sensing period Average: 2s
Interchangeability fully interchangeable
Dimensions small size 14*18*5.5mm; big size 22*28*5mm

4. Dimensions: (unit----mm)

1) Small size dimensions: (unit----mm)

Thomas Liu (Business Manager)

Email: thomasliu198518@yahoo.com.cn

Anexo 2 DHT22
72
Pin sequence number: 1 2 3 4 (from left to right direction).
Pin Function
1 VDD----power supply
2 DATA—signal
3 NULL
4 GND

Anexo 2 DHT22

73
`

Evaporation
255-100 Analog Output Evaporation Gauge
The 255-100 Analog Output Evaporation Gauge is
used to determine the evaporation rate by measuring the
changing water level in an evaporation pan. A standard
National Weather Service Class A Evaporation Pan is
recommended. The instrument consists of a float, pulley,
and counterweight attached to a precision 1000-ohm
potentiometer mounted in a weatherproof housing. The
triangular base plate is equipped with three leveling
screws. The potentiometer produces a resistance output
proportional to the position of the float which can be
monitored on site using a data logger or remotely by
telemetry equipment. The gauge can be placed directly in
the pan, or connected to the pan by using the 255-100P/F
stainless steel pipe and fittings.

Specifications
Potentiometer:
Accuracy: 0.25%
Rotation: Continuous
Resistance: 1000 ohms
Operating temperatures: -40° C to 60° C
Linearity: 0.25%
Range: 0-10" 255-100 Analog Output Evaporation Gauge
System accuracy: Gauge with pan & pipes ± 0.25% over 10" range
Float: 4" diameter
Height: 27-1/2"
Diameter: 8"
Base: 16" triangle with leveling screws
Water input port: 1/2" NP coupling, female
Cable: 3 conductor, 50’ included
Weight/Shipping: 7-1/2 lbs/15 lbs (Box 29" x 17" x 16")

Ordering Information
255-100 Analog Output Evaporation Gauge, 50' cable
255-100C-4 Signal Conditioning PCB, 4-20mA Output
255-100C-4 Signal Conditioning PCB, 4-20mA Output, NEMA encl
255-100P/F Stainless Steel Conntecting Pipe and Fittings
for attaching gauge to pan, 60"
255-100P/F-S Stainless Steel Connecting Pipe and Fittings, 6"
255-100POT Replacement Potentiometer

NovaLynx Corporation PO Box 240 Grass Valley CA 95945


Phone: (530) 823-7185 Fax: (530) 823-8997 USA Toll Free: 1-800-321-3577
www.novalynx.com

Anexo 3 Hoja de datos Evaporímetro 255-100

74
Anexo 4 Manual Evaporímetro

75
Field calibration increase the number of tips per measured
The tipping-bucket mechanism is a simple and amount of water. Turning the screws
highly reliable device. Absolutely accurate counterclockwise will de- crease the number of
calibration can be obtained only with laboratory tips per measured amount of water. A 1/4 turn
equipment, but an approximate field check can on both screws either clockwise or
be easily done. The rain gauge must be located counterclockwise will increase or decrease the
in a clear area away from trees, buildings, etc. number of tips by approximately one tip.
Accurate readings will not be obtained unless Changing the battery
the rain gauge is mounted in a level position. Open the case by unsnapping the latch and
The mecha- nism must be clean. The rain gauge lifting the lid. Unplug the 2.5 mm sensor cable.
must be calibrated with a controlled rate of flow Holding on to the HOBO's main case (not the
of water through the tipping-bucket mecha- lid) firmly tap the open case into the palm of
nism. At least 36 seconds should be allowed to your hand until the circuit board dislodges. Re-
fill one side of the tipping bucket. This move the circuit board, then remove the battery
represents a maximum flow rate of one inch of by carefully pushing it out with a small, non-
rain per hour. If the flow rate is increased, a metallic, blunt instrument. Be sure to install the
properly cali-brated instrument will read low. battery with the printed side of the battery away
Decreasing the rate of flow will not materially from the HOBO’s circuit board (Diagram C).
affect the calibration. The reason for this is obvi- The logger’s light will blink three times after the
ous if the tipping bucket assembly is observed in battery has been installed.
operation. With water falling into one side of the Keep the inside of the case dry
tipping bucket there comes a point when the With the case closed and latched, the HOBO Event
mass of the water starts to tip the bucket. Some data logger is weatherproof. The electronics can be
time is required for the bucket to tip (a few permanently damaged by corrosion from moisture,
milliseconds). During the first 50% of this so protect them from rain and condensation.
tipping time water continues to flow into the Should the electronics get wet, remove the
filled bucket; the last 50% of this tipping time battery immediately and dry the board
water flows into the empty bucket. The amount completely with a hair dryer before reinstalling
of water flowing during the first 50% of time is the battery. The moisture-absorbing desiccant
error, the faster the flow rate the greater the pack inside the case should be replaced when the
error. At flow rates of one inch per hour (20 battery is changed.
mm/hr) or less the water actually drips into the Specifications
buckets rather than flowing. Under this Resolution: RG2: 0.01"
condition the bucket tips between drips, and no RG2-M: 0.2 mm
error water is added to a full moving bucket. Calibration accuracy: ±1.0%
To check calibration: (up to 1"/hr for the RG2 and
Obtain a plastic or metal container of at least 20 mm/hr for the RG2-M;
onequart capacity. Place a very small hole field accuracy depends on
(pinhole) in the bottom of the container. Place installation and envi-
the container in the top funnel of therain gauge ronmental conditions.)
with the hole not over the orifice. Follow the Time accuracy: ±100 ppm at 20°C, full dependence
instructions for the Rain Gauge model you have: shown in Plot A
RG2: Pour exactly 473 ml of water into the Capacity: 8000 tips (note that the 8000 tips
container. Each tip of the bucket represents require 32K of memory in the HOBO Shuttle to
0.01" of rainfall. RG2-M: Pour exactly 373 ml of fully offload.)
water into the container. Each tip of the bucket Battery: CR-2032 (lithium); provides one year of
represents 0.2 mm of rainfall. If it takes less than continuous use
one hour for this water to run out then the hole Operating temperature range: +32ºF to +125ºF
(Step 1) is too large. Field calibration of this sort (0°C to +50°C) Storage
should result in one hundred tips, plus or minus temperature range: -4ºF to +158ºF (-20°C to
two. Adjusting screws are located on the bottom +70°C) Relative humidity range: (when logger
outside of the rain gauge housing. These two case is closed) 0 to 100% RH, weatherproof
socket head set screws require a 5/64" (.078") Size: 6.5" diameter x 10.0" high (165 x 254 mm)
Allen wrench. Adjust both equally, i.e. if you Weight: 2.2 pounds (1.0 kg)
turn one a half turn then turn the other a half Receiving orifice diameter: 6.060" (154 mm)
turn. Turning these screws clockwise will

Anexo 5 Evaporímetro
76
#!/usr/bin/python
from __future__ import with_statement
import syslog
import time
import requests
import json
import time
import sys
import serial
from calendar import timegm
import weewx.drivers
DRIVER_NAME = 'EstIIT'
DRIVER_VERSION = "1.0"
def logmsg(dst, msg):
syslog.syslog(dst, 'fileparse: %s' % msg)
def logdbg(msg):
logmsg(syslog.LOG_DEBUG, msg)
def loginf(msg):
logmsg(syslog.LOG_INFO, msg)
def logerr(msg):
logmsg(syslog.LOG_ERR, msg)
def _get_as_float(d, s):
v = None
if s in d:
try:
v = float(d[s])
except ValueError, e:
logerr("cannot read value for '%s': %s" % (s, e))
return v

Anexo 6 Código de driver


77
def loader(config_dict, engine):
return FileParseDriver(**config_dict[DRIVER_NAME])
class FileParseDriver(weewx.drivers.AbstractDevice):
"""weewx driver that reads data from a Campbell Scientific datalogger"""
def __init__(self, **stn_dict):
# where to find the data file
self.path = stn_dict.get('path', '/var/tmp/wxdata')
# how often to poll the weather data file, seconds
self.poll_interval = float(stn_dict.get('pool_interval', 2.5))
# mapping from variable names to weewx names
self.label_map = stn_dict.get('label_map', {})
# URL mapping
self.url = stn_dict.get('url')
loginf("data file is %s" % self.path)
loginf("polling interval is %s" % self.poll_interval)
loginf('label map is %s' % self.label_map)
loginf('url is %s' % self.url)

def genLoopPackets(self):
while True:
try:
arduino = serial.Serial('/dev/ttyACM0', baudrate=9600, timeout=5.0)
arduino.setDTR(False)
time.sleep(.3)
arduino.flushInput()
arduino.setDTR(True)
datos = arduino.readline()
datain = json.loads(datos)
values = datain["data"][0]["vals"]
i=0
Anexo 6 Código de driver
78
for each in datain["head"]["fields"]:
if each["type"].encode('ascii','ignore') == "xsd:float":
data[each["name"].encode('ascii','ignore')] = values[i]
i=i+1
# map the data into a weewx loop packet
_packet = {'dateTime': int(time.time() + 0.5),
'usUnits': weewx.METRIC}
for vname in data:
_packet[self.label_map.get(vname, vname)] = _get_as_float(data,
vname)
yield _packet
time.sleep(self.poll_interval)
except TypeError as e:
logerr("Error %s" % e)
time.sleep(120)
@property
def hardware_name(self):
return "EstIIT"
# To test this driver, run it directly as follows:
# PYTHONPATH=/home/pi python /home/pi/Estacion.py
if __name__ == "__main__":
import weeutil.weeutil
driver = FileParseDriver()
for packet in driver.genLoopPackets():
print weeutil.weeutil.timestamp_to_string(packet['dateTime']), packet

import schemas.wview
schema_EstIIT = schemas.wview.schema + [('Evapor','Real')]

Anexo 6 Código de driver


79
///// Librerias /////
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>
#include <DHT_U.h>
#include "TimerOne.h"
#include <math.h>

///// Definiciones /////


#define DHTTYPE DHT22
#define DHTPIN 7
#define PinDatos 9
#define PinPluviometro 2
#define analogPin (A0)

DHT dht(DHTPIN, DHTTYPE);


OneWire ObjetoC(PinDatos);
DallasTemperature sensorDS18B20(&ObjetoC);

volatile bool muestra;


volatile unsigned int Temporizador;
volatile unsigned long tiempocontacto;
volatile unsigned long counter;
float lluvia;
float valorVolt, valorSen, valorCambio, valorInicial, valorFinal = 9;

DeviceAddress valorDiez = {0x28, 0xFF, 0x0B, 0xC5, 0xA4, 0x16, 0x04, 0xCF};
DeviceAddress valorVeinte = {0x28, 0xFF, 0x1B, 0xC7, 0xC1, 0x16, 0x04, 0x24};
DeviceAddress valorTreinta = {0x28, 0xFF, 0xDB, 0x31, 0xA4, 0x16, 0x05, 0xB0};
DeviceAddress valorCincuenta = {0x28, 0x6A, 0x0D, 0x01, 0x00, 0x00, 0x80, 0xFD};
DeviceAddress valorCien = {0x28, 0x29, 0x11, 0x01, 0x00, 0x00, 0x80, 0x8C};
DeviceAddress valorBulHum = {0x28, 0xFF, 0x39, 0xC1, 0xA4, 0x16, 0x04, 0xC6};
DeviceAddress valorBulSeco = {0x28, 0xFF, 0xDF, 0xB5, 0xA4, 0x16, 0x05, 0x78};
DeviceAddress valorEvaporimetro = {0x28, 0xFF, 0x18, 0xB4, 0xA4, 0x16, 0x05, 0x84};

///// Programa /////


void setup() {
Serial.begin(9600);
dht.begin();
sensorDS18B20.begin();
muestra = false;
Temporizador = 0;
counter = 0;
pinMode(PinPluviometro, INPUT_PULLUP);
Anexo 7 Código de arduino

80
attachInterrupt(digitalPinToInterrupt(PinPluviometro), contador, FALLING);
Timer1.initialize(500000);
Timer1.attachInterrupt(interruptor);
}
void loop() {

if(muestra){
//counter
lluvia = counter * 0.254;
counter = 0;
muestra = false;
imprime();
Serial.print(lluvia);Serial.print(",");

// Mandamos comandos para toma de temperatura del sensor DHT22


float humedad = dht.readHumidity();
float tempAmbiente = dht.readTemperature();
// Mandamos comandos para toma de temperatura a los sensores
sensorDS18B20.requestTemperatures();
// Leemos y mostramos los datos de los sensores DS18B20 por dirección única
Serial.print(sensorDS18B20.getTempC(valorDiez));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorVeinte));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorTreinta));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorCincuenta));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorCien));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorBulSeco));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorBulHum));Serial.print(",");
Serial.print(sensorDS18B20.getTempC(valorEvaporimetro)); Serial.print(",");
Serial.print(tempAmbiente); Serial.print(",");
Serial.print(humedad);Serial.print(",");

valorSen = analogRead(analogPin);
valorInicial =valorInicial = valorSen * (5.0 / 1023.0);
if (valorInicial > valorFinal){
valorCambio = valorInicial - valorFinal;
valorCambio = valorCambio * (25.4/1);
valorFinal = valorInicial;
}
Serial.print(valorCambio);Serial.println("]}]}");
}
}
void interruptor(){
Temporizador++;
Anexo 7 Código de arduino
if(Temporizador == 6){
81
muestra = true;
Temporizador = 0;
}}
void contador() {
if((millis() - tiempocontacto) > 100 ){
counter++;
tiempocontacto = millis();
}}

void imprime (){

Serial.print("{");Serial.print('"');Serial.print("head");Serial.print('"');Serial.print(":{");Seri
al.print('"');Serial.print("environment");Serial.print('"');Serial.print(":{");Serial.print('"');S
erial.print("station_name");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("E
stacionIITC");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("table_name");
Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("datos_IITC");Serial.print('"');
Serial.print(",");Serial.print('"');Serial.print("model");Serial.print('"');Serial.print(":");Seri
al.print('"');Serial.print("arduino-raspberry");Serial.print('"');Serial.print(",");Serial.print
('"'); Serial.print("prog_name"); Serial.print('"'); Serial.print(":");Serial.print('"');
Serial.print("iitjson");Serial.print('"');Serial.print("},");Serial.print('"');Serial.print("fields"
);Serial.print('"');Serial.print(":[{");Serial.print('"');Serial.print("name");Serial.print('"');Se
rial.print(":");Serial.print('"');Serial.print("Precipitacion");Serial.print('"');Serial.print(",");
Serial.print('"');Serial.print("type");Serial.print('"');Serial.print(":");Serial.print('"');Serial.
print("xsd:float");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("units");Seri
al.print('"');Serial.print(":");Serial.print('"');Serial.print("mm");Serial.print('"');Serial.print
("},{");Serial.print('"');Serial.print("name");Serial.print('"');Serial.print(":");Serial.print('"'
);Serial.print("TempDiez");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("ty
pe");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("xsd:float");Serial.print('"
');Serial.print(",");Serial.print('"');Serial.print("units");Serial.print('"');Serial.print(":");Seri
al.print('"');Serial.print("Deg C");Serial.print('"');Serial.print("},{");Serial.print('"');
Serial.print("name");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("TempVe
inte");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("type");Serial.print('"');
Serial.print(":");Serial.print('"');Serial.print("xsd:float");Serial.print('"');Serial.print(",");S
erial.print('"');Serial.print("units");Serial.print('"');Serial.print(":");Serial.print('"');Serial
.print("Deg C");Serial.print('"');Serial.print("},{");Serial.print('"'); Serial.print ("name");
Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("TempTreinta");Serial.print('"'
);Serial.print(",");Serial.print('"');Serial.print("type");Serial.print('"');Serial.print(":");Seria
l.print('"');Serial.print("xsd:float");Serial.print('"');Serial.print(",");Serial.print('"');Serial.p
rint("units");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("Deg C"); Serial.
print ('"');Serial.print("},{");Serial.print('"'); Serial.print("name"); Serial.print('"');
Serial.print(":");Serial.print('"');Serial.print("TempCincuenta");Serial.print('"');Serial.print
(",");Serial.print('"');Serial.print("type");Serial.print('"');Serial.print(":");Serial.print('"');S
erial.print("xsd:float");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("units")
Anexo 7 Código de arduino

;Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("Deg C");Serial.print('"');
82
Serial.print("},{");Serial.print('"');Serial.print("name");Serial.print('"');Serial.print(":");Se
rial.print('"');Serial.print("TempCien");Serial.print('"');Serial.print(",");Serial.print('"');Ser
ial.print("type");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("xsd:float");
Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("units");Serial.print('"');Serial.
print(":");Serial.print('"');Serial.print("Deg C");Serial.print('"');Serial.print("},{");
Serial.print('"');Serial.print("name");Serial.print('"');Serial.print(":");Serial.print('"');Serial
.print("TempBSeco");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("type");
Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("xsd:float");Serial.print('"');Se
rial.print(",");Serial.print('"');Serial.print("units");Serial.print('"');Serial.print(":");Serial.pr
int('"');Serial.print("DegC");Serial.print('"');Serial.print("},{");Serial.print('"');Serial.print(
"name");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("TempBHumedo");S
erial.print('"');Serial.print(",");Serial.print('"');Serial.print("type");Serial.print('"');Serial.pr
int(":");Serial.print('"');Serial.print("xsd:float");Serial.print('"');Serial.print(",");Serial.prin
t('"');Serial.print("units");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("Deg
C");Serial.print('"');Serial.print("},{");Serial.print('"');Serial.print("name");Serial.print('"')
;Serial.print(":");Serial.print('"');Serial.print("TempEva");Serial.print('"');Serial.print(",");
Serial.print('"');Serial.print("type");Serial.print('"');Serial.print(":");Serial.print('"');Serial.
print("xsd:float");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("units");
Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("Deg C");Serial.print('"');
Serial.print("},{");Serial.print('"');Serial.print("name");Serial.print('"');Serial.print(":");Se
rial.print('"');Serial.print("TempAmb");Serial.print('"');Serial.print(",");Serial.print('"');Ser
ial.print("type");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("xsd:float");S
erial.print('"');Serial.print(",");Serial.print('"');Serial.print("units");Serial.print('"');Serial.p
rint(":");Serial.print('"');Serial.print("Deg C");Serial.print('"');Serial.print ("},{");
Serial.print('"');Serial.print("name");Serial.print('"');Serial.print(":");Serial.print('"');Serial
.print("Humedad");Serial.print('"');Serial.print(",");Serial.print('"');Serial.print("type");Ser
ial.print('"');Serial.print(":");Serial.print('"');Serial.print("xsd:float");Serial.print('"');Serial
.print(",");Serial.print('"');Serial.print("units");Serial.print('"');Serial.print(":");Serial.print
('"');Serial.print("%");Serial.print('"');Serial.print("},{");Serial.print('"');Serial.print("name
");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("Evaporacion");Serial.print(
'"');Serial.print(",");Serial.print('"');Serial.print("type");Serial.print('"');Serial.print(":");Se
rial.print('"');Serial.print("xsd:float");Serial.print('"');Serial.print(",");Serial.print('"');Seria
l.print("units");Serial.print('"');Serial.print(":");Serial.print('"');Serial.print("mm");Serial.p
rint('"');Serial.print("}]},");Serial.print('"');Serial.print("data");Serial.print('"');Serial.print(
":[{");Serial.print('"'); Serial.print("vals"); Serial.print('"');Serial.print(":[");}

Anexo 7 Código de arduino

83

S-ar putea să vă placă și