Documente Academic
Documente Profesional
Documente Cultură
Tecnología Arduino.
Asesor
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
3.5 Evaporímetro........................................................................................................... 36
3.5.1 Recolección de requisitos ................................................................................ 36
ix
Índice de Figuras
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
xii
Índice de Gráficas
xiii
Resumen
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
1.1 Antecedentes
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.
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
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].
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.
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.
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.
9
Figura 2.7 Pluviómetro de pared [12].
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)
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
10
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.
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.
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.
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].
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
20
VDD DQ GND
21
5. Cinco cables amarillos, seis cables rojos, seis negros.
Protoboard:
Línea Azul
Línea Roja
Pin de alimentación
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
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.
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.
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
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.
33
3.4.3 Construcción del prototipo
A continuación, se muestra la construcción del prototipo (ver figura 3.18).
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).
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.
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)
38
Figura 3.22 Diseño prototipo evaporímetro
39
3.5.3 Construcción del prototipo
En la figura 3.23 se visualiza la construcción física del prototipo evaporímetro.
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.
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.
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
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.
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.
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/
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>
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.
55
IV. Resultados y Discusiones
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
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
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
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
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
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
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
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
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
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.
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
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
69
Anexos
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.
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
DC Electrical Characteristics
(-55°C to +125°C; VDD = 3.0V to 5.5V)
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)
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
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
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')]
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};
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(",");
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();
}}
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(":[");}
83