34
ESTACIÓN METEOROLÓGICA MÓVIL (MANUAL DE FABRICACIÓN) UNIVERSIDAD DE LAS FUERZAS ARMADAS (ESPE) Almeida Jorge Alomoto Carlos Espinosa Natalia González Juan Pablo Orbe Andrea

ESTACIÓN METEOROLÓGICA MÓVIL (MANUAL DE FABRICACIÓN) UNIVERSIDAD DE LAS FUERZAS ARMADAS (ESPE

Embed Size (px)

Citation preview

ESTACIÓN METEOROLÓGICA MÓVIL (MANUAL DE FABRICACIÓN) UNIVERSIDAD DE LAS FUERZAS ARMADAS (ESPE)

Almeida Jorge

Alomoto Carlos

Espinosa Natalia

González Juan Pablo

Orbe Andrea

Contenido INFORMACIÓN DE SEGURIDAD .......................................................................................................... 3

PROTECCIÓN PERSONAL ................................................................................................................. 3

FABRICACIÓN ...................................................................................................................................... 4

MECÁNICA: ...................................................................................................................................... 4

Montaje: ...................................................................................................................................... 8

ELECRÓNICA: ................................................................................................................................. 12

SENSORES .................................................................................................................................. 12

PROGRAMACIÓN ARDUINO: ......................................................................................................... 19

RASPBERRY ................................................................................................................................ 29

ELÉCTRICA: .................................................................................................................................... 32

COSTOS: ............................................................................................................................................ 33

RECOMENDACIONES: ....................................................................................................................... 33

Ilustración 1 Tubo de montaje ............................................................................................................ 4

Ilustración 2 Tubo de soporte ............................................................................................................. 4

Ilustración 3 Perforado de tubo .......................................................................................................... 4

Ilustración 4 Perforaciones para paso de cables ................................................................................. 5

Ilustración 5 Ángulo de unión de tubo de montaje y tubo de soporte ............................................... 5

Ilustración 6 Soporte pluviómetro ...................................................................................................... 6

Ilustración 7 Soporte de radiación ...................................................................................................... 6

Ilustración 8 Perforación para paso de cables en tubo de soporte .................................................... 6

Ilustración 9 Tubo de ajuste ................................................................................................................ 7

Ilustración 10 Perforación en tubo de ajuste ...................................................................................... 7

Ilustración 11 Soporte para sensor de dirección de viento ................................................................ 7

Ilustración 12 Ensamblaje de soportes de sensor de dirección y velocidad de viento ....................... 8

Ilustración 13 Ensamblaje caja de control .......................................................................................... 9

Ilustración 14 Ensamblaje anemómetro ............................................................................................. 9

Ilustración 15 Ensamblaje sensor dirección de viento ...................................................................... 10

Ilustración 16 Ensamblaje sensor de radiación ................................................................................. 10

Ilustración 17 Ensamblaje pluviómetro ............................................................................................ 11

Ilustración 18 Conexión sensor de radiación .................................................................................... 12

Ilustración 19 Conexión anemómetro ............................................................................................... 12

Ilustración 20 Conexión sensor de dirección de viento .................................................................... 13

Ilustración 21 Circuito esquemático de sensor de dirección de viento ............................................ 13

Ilustración 22 Circuito físico de sensor dirección de viento.............................................................. 14

Ilustración 23 Montaje de imanes..................................................................................................... 14

Ilustración 24 Circuito en tapa de CD ................................................................................................ 14

Ilustración 25 conexión pluviómetro ................................................................................................ 15

Ilustración 26 Conexión sensor de presión ....................................................................................... 15

Ilustración 27 Conexión sensor de altura .......................................................................................... 16

Ilustración 28 Conexión sensor de temperatura ............................................................................... 16

Ilustración 29 Conexión sensor de humedad .................................................................................... 17

Ilustración 30 Conexión sensor GPS .................................................................................................. 17

Ilustración 31 Conexión pantalla ....................................................................................................... 28

Ilustración 32 Conexión de todos los elementos .............................................................................. 28

Ilustración 33 Ventana phpMyAdmin ............................................................................................... 31

Ilustración 34 Localhost .................................................................................................................... 31

Ilustración 35 Pantalla inicial del Raspberry ..................................................................................... 32

INFORMACIÓN DE SEGURIDAD

PROTECCIÓN PERSONAL

Todo trabajo de instalación debe ser realizado con la mayor seguridad posible.

Se recomienda usar arnés para evitar caídas accidentales cuando la instalación se la realice

en lugares elevados.

Se recomienda asegurar bien la escalera antes de subir en la misma.

Se recomienda el uso de guantes para evitar pequeños cortes con los filos de los metales

en el momento de la instalación.

Se debe utilizar gafas de protección para evitar daños en los ojos, debido a las virutas

desprendidas durante el taladrado.

Guardar extrema precaución en las labores de soldadura para evitar quemaduras.

Trabajos bajo lluvia

Debido al uso de elementos electrónicos susceptibles al agua, es necesario realizar toda la

fabricación e instalación en un área cerrada o si es necesario a la intemperie en días no

lluviosos.

FABRICACIÓN

MECÁNICA:

Comprar un trípode para pedestal de platillo el cual se lo puede adquirir en cualquier

tienda que provee equipos musicales.

Cortar un tubo negro de 25mm x 2 mm de espesor a una longitud de 2300mm para el

soporte. Limar rebabas de los extremos.

Ilustración 1 Tubo de montaje

Cortar un segundo tubo de igual material, diámetro y espesor con una longitud de

500mm, utilizado como brazo de soporte.

Ilustración 2 Tubo de soporte

Perforar el tubo para soporte con broca M5 a una altura de 1000mm. En este agujero se

sujetará la estructura de la caja de control.

Ilustración 3 Perforado de tubo

Realizar 2 perforaciones más a una altura de 1500mm la primera, y la segunda a una

distancia de 25mm de la primera. Las perforaciones deben ser realizadas con broca M5.

Estas perforaciones serán utilizadas para fijar las bases del sensor de radiación y el

pluviómetro.

Ilustración 4 Perforaciones para paso de cables

Cortar 2 tubos del mismo material de los anteriores de 200mm de longitud con diámetro

interno 25mm, los cuales servirán para codo de unión entre el soporte y el brazo de

soporte. En un extremo de cada tubo realizar un corte a 45o. Limar rebabas. Soldar con

electrodo 6011 formando un ángulo de 90o entre los 2 tubos.

Ilustración 5 Ángulo de unión de tubo de montaje y tubo de soporte

Cortar una placa de acero A36 de 40mmx4mm y 250mm de longitud. Posteriormente

utilizada para base del pluviómetro.

Doblar la placa a 90o midiendo desde un extremo a una distancia de 40mm.

Perforar la placa previamente doblada en el lado más pequeño con una broca M5 y

distancia entre los 2 agujeros 25mm.

Perforar la placa en el lado más largo con 2 agujeros con broca M3 a una distancia del

primer agujero al extremo de 20mm y distancia entre agujeros de 50mm.

Ilustración 6 Soporte pluviómetro

Repetir la elaboración de la placa anterior para el sensor de radiación con la variación en l

segunda perforación ya que para este sensor se requiere 3 agujeros con broca M3. Las

medidas se deberán tomar ubicando el sensor encima de la placa y marcando la posición.

Ilustración 7 Soporte de radiación

En el tubo para brazo de soporte realizar una perforación con broca M5 a una distancia de

uno de los extremos de 200mm. En este agujero se sujetara la base del sensor de dirección

de viento y el anemómetro.

Ilustración 8 Perforación para paso de cables en tubo de soporte

Cortar dos tubos del material y dimensiones del utilizado para el codo, con una longitud de

100mm.

Ilustración 9 Tubo de ajuste

Perforar los tubos anteriormente cortados con broca M5 a una distancia de un extremo de

50mm.

Ilustración 10 Perforación en tubo de ajuste

Cortar 2 placas redondas de tol de 2mm con un diámetro de 150mm.

Ilustración 11 Soporte para sensor de dirección de viento

Perforar cada lámina según la posición que requiere el sensor de dirección de viento para

la una y el anemómetro para la otra.

Soldar con electrodo 6011 las dos placas totalmente opuestas a uno de los tubos de

100mm de longitud.

Ilustración 12 Ensamblaje de soportes de sensor de dirección y velocidad de viento

Realizar una perforación con broca M10 en el tubo para soporte cerca a la base para los

sensores de dirección de viento y el anemómetro, este agujero será utilizado para enviar

el cableado por el interior del tubo.

Perforar con broca M10 el tubo para soporte en un punto cercano hacia debajo de la caja

de control, por este agujero saldrán los cables de los sensores e ingresaran a la caja de

control.

Perforar la caja de control en la cara inferior con una broca de ½ pulg. Por este agujero

ingresarán los cables necesarios.

Montaje:

Para el montaje de la estación meteorológica se debe tener en cuenta 2 fases:

Armado de la estructura de cada sensor.

Armado de la estructura total de la estación.

Para el armado de la estructura de cada sensor:

1. Ensamblaje de la caja de control: Ubicar la estructura metálica en las marcas indicadas en

la caja y fijar con los tornillos respectivos.

Ilustración 13 Ensamblaje caja de control

2. Ensamblaje del anemómetro: Colocar el sensor en su base metálica y asegurar con los

tornillos correspondientes.

Ilustración 14 Ensamblaje anemómetro

3. Ensamblaje del sensor de dirección de viento: Repetir el procedimiento anterior con su

placa y tornillos respectivos.

Ilustración 15 Ensamblaje sensor dirección de viento

4. Ensamblaje del sensor de radiación: Ubicar el sensor en las marcas de su base y fijar con

los tornillos respectivos.

Ilustración 16 Ensamblaje sensor de radiación

5. Ensamblaje del pluviómetro: Repetir el paso previo con sus respectiva base y tornillos.

Ilustración 17 Ensamblaje pluviómetro

Para el armado de la estructura total de la estación se debe seguir a detalle los pasos a

continuación mencionados.

1. Seleccionar el lugar idóneo para el montaje de la estructura. En este lugar se ubica el

trípode abierto y firme para soportar el resto de elementos.

2. El ensamble del sensor de dirección de viento se lo fija al brazo soporte en las marcas

respectivas con tornillos M3.

3. Similar al numeral anterior, el ensamble del anemómetro se ubica en sus marcas

correspondientes y se lo asegura con tornillos M3.

4. El ensamble de la caja de control se debe insertar en la estructura soporte hasta la marca

indicada en la misma. Una vez puesta en su sitio se debe ajustar con llave No. 11 para

evitar el desplazamiento hacia abajo o alrededor del soporte.

5. El brazo soporte, con sus respectivos sensores, se embona en el codo de la parte superior

de la estructura soporte y se lo fija con un perno M5 con su respectiva tuerca.

6. Después de insertada la caja de control y el brazo soporte, toda la estructura soporte

debe ser fijada en el trípode.

7. El ensamble del pluviómetro debe ser alineado en las marcas indicadas en el soporte y

fijado con pernos M5 y sus respectivas tuercas.

8. Para el ensamble del sensor de radiación se repite el numeral anterior con sus respectivas

marcas y el mismo número de pernos anteriores.

ELECRÓNICA:

SENSORES

SENSOR DE RADIACIÓN

Este sensor se debe conectar a 3.3V d alimentación, 2 tierras y su señal a la entrada

analógica A1 de Arduino.

Para obtener las mediciones correctas se debe mantener centrado el sensor, con el

dispositivo que viene integrado en el mismo sensor.

El sensor debe estar completamente expuesto a la luz solar, ya que cualquier cosa que lo

obstaculice haría que las mediciones sean erróneas.

Ilustración 18 Conexión sensor de radiación

ANEMÓMETRO

Este sensor se debe conectar a 12V de alimentación, tierra y su señal a la entrada

analógica A2 de Arduino.

Ilustración 19 Conexión anemómetro

SENSOR DE DIRECCION DEL VIENTO

Este sensor se debe conectar a 5V de alimentación, tierra y su señal a la entrada analógica

A3 de Arduino.

Para obtener la dirección correcta del viento, se debe identificar donde está ubicado el

norte, luego ubicar la señal que tiene el sensor en su estructura y hacerla coincidir la

dirección.

Ilustración 20 Conexión sensor de dirección de viento

Fabricación del sensor de dirección de viento:

Ilustración 21 Circuito esquemático de sensor de dirección de viento

Ilustración 22 Circuito físico de sensor dirección de viento

Ilustración 23 Montaje de imanes

Ilustración 24 Circuito en tapa de CD

PLUVIÓMETRO

Este sensor se debe conectar a 3V de alimentación, y su señal a una entrada digital 9 de

Arduino.

Para obtener las mediciones correctas, el sensor debe estar nivelado, esto se debe realizar

con un nivel.

Antes de realizar las mediciones, verificar que el balancín no tenga residuos de agua de

una medición anterior, con el fin de no tener error en la nueva medición.

El sensor debe estar completamente expuesto para que pueda ingresar la lluvia.

Ilustración 25 conexión pluviómetro

SENSOR DE PRESIÓN

Este sensor se debe conectar a 3.3 V de alimentación, tierra y sus señales SDA al SDA del

Arduino PIN 20 y SCL al SCL del Arduino PIN 21.

Para el correcto funcionamiento de este sensor, no debe estar expuesto directamente al

sol, ya que esto hace que las mediciones varíen.

Ilustración 26 Conexión sensor de presión

SENSOR DE ALTURA

Este sensor se debe conectar a 3.3 V de alimentación, tierra y sus señales SDA al SDA del

Arduino PIN 20 y SCL al SCL del Arduino PIN 21.

Para el correcto funcionamiento de este sensor, no debe estar expuesto directamente al

sol, ya que esto hace que las mediciones varíen.

Ilustración 27 Conexión sensor de altura

SENSOR DE TEMPERATURA

Este sensor se debe conectar a 3.3 V de alimentación, tierra y sus señales SDA al SDA del

Arduino PIN 20 y SCL al SCL del Arduino PIN 21.

Para el correcto funcionamiento de este sensor, no debe estar expuesto directamente al

sol, ya que esto hace que las mediciones.

Ilustración 28 Conexión sensor de temperatura

SENSOR DE HUMEDAD

Este sensor se debe conectar a 5 V de alimentación, tierra y su señal a una entrada digital

del Arduino PIN 7.

Para el correcto funcionamiento de este sensor, no debe estar expuesto directamente al

sol, ya que esto hace que las mediciones.

Ilustración 29 Conexión sensor de humedad

SENSOR GPS

Comunicación entre Raspberry PI y GPS mediante el uso de UART

UART son las siglas de "Universal Asynchronous Receiver-Transmitter". ES una forma de comunicación serial la cual permite controlar los puertos, datos para envío y recepción, sólo es

necesario liberar a la UART de la Raspberry Pi. Para empezar, se debe conectar el módulo GPS a la Raspberry Pi de la siguiente manera, cruz-conecta los pines TX y RX (TX en un único dispositivo va al RX en el otro y viceversa), y el

suministro de 5V del Pi a la clavija de VIN en el módulo GPS, como se muestra en la Figura:

Ilustración 30 Conexión sensor GPS

1. Edición del archivo /boot/cmdline.txt.

A continuación, introduzca el siguiente comando desde la línea de comandos:

sudo nano /boot/cmdline.txt

Y cambiar:

dwc_o tg.lpm_enable=0 co nso le=ttyAMA0,115200 kgdbo c=ttyAMA0,115200 console=tty1 ro o

t=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

por:

dwc_o tg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline

rootwait

2. Edición del archivo /etc/inittab

A continuación, introduzca el siguiente comando desde la línea de comandos:

sudo nano /etc/inittab

Y cambiar:

#Spawn a getty o n Raspberry Pi serial line

T0: 23: respawn: /sbin/getty -L ttyAMA0 115200 vt100

Por:

#Spawn a getty o n Raspberry Pi serial line

#T0: 23: respawn: /sbin/getty -L ttyAMA0 115200 vt100

3. Reiniciar la Raspberry Pi

4. Reiniciar GPSD con HW UART

Reinicie gpsd y redirección a utilizar HW UART, introduciendo los siguientes comandos:

sudo nano /boot/cmdline.txt

sudo nano /etc/inittab

sudo killall gpsd

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock

cgps -s

PROGRAMACIÓN ARDUINO: #include <dht.h> //Librería para sensor de humedad //Librerías de pantalla #include <UTFT.h> #include <UTouch.h> #include <UTFT_Geometry.h> #include <Wire.h> //Librería de sensor barométrico dht DHT; #define DHT11_PIN 7 //Se define el pin 7 que recibirá la señal del sensor de humedad #define BMP085_ADDRESS 0x77 //Se define el sensor barométrico const unsigned char OSS = 0; // Calibración de valores para el sensor barométrico int ac1; int ac2; int ac3; unsigned int ac4; unsigned int ac5; unsigned int ac6; int b1; int b2; int mb; int mc; int md; long b5; const float p0 = 101325; // Pressure at sea level (Pa) extern uint8_t SmallFont[]; extern uint8_t BigFont[]; extern uint8_t SevenSegNumFont[]; //Se definen pines para pantalla UTFT myGLCD(ITDB32S,38,39,40,41); UTouch myTouch( 6, 5, 4, 3, 2); UTFT_Geometry geo(&myGLCD); //Declarar variables float temp=0; char humed[2]; float humedad=0; float temperature=0; float pressure1=0; float pressure=0; float pressure2=0; float altitude=0; float altitude1=0; float velocidad=0; float radiacion=0; float voltage=0; char varT[10]; char varH[10]; char varP[10]; char varA[10]; char varV[10]; char varR[10]; String separador = "|"; String aux1 = ""; String aux2 = "";

String aux3 = ""; String aux4 = ""; String aux5 = ""; String aux6 = ""; String aux7 = ""; String aux8 = ""; String aux9 = ""; //velocidad viento int direccion=A3; int valor; int valor1; int valor2; int valor3; void setup() { //sensor de humedad y temperatura Serial.begin(9600); myGLCD.InitLCD(); myGLCD.clrScr(); myTouch.InitTouch(); myTouch.setPrecision(PREC_MEDIUM); //tamano de letra myGLCD.setBackColor(VGA_BLUE); //sensor de presión Wire.begin(); bmp085Calibration(); } //sensor de presión void bmp085Calibration() { ac1 = bmp085ReadInt(0xAA); ac2 = bmp085ReadInt(0xAC); ac3 = bmp085ReadInt(0xAE); ac4 = bmp085ReadInt(0xB0); ac5 = bmp085ReadInt(0xB2); ac6 = bmp085ReadInt(0xB4); b1 = bmp085ReadInt(0xB6); b2 = bmp085ReadInt(0xB8); mb = bmp085ReadInt(0xBA); mc = bmp085ReadInt(0xBC); md = bmp085ReadInt(0xBE); } // Calculate temperature given ut. // Value returned will be in units of 0.1 deg C short bmp085GetTemperature(unsigned int ut) { long x1, x2; x1 = (((long)ut - (long)ac6)*(long)ac5) >> 15; x2 = ((long)mc << 11)/(x1 + md); b5 = x1 + x2; return ((b5 + 8)>>4); } // Calculate pressure given up // calibration values must be known // b5 is also required so bmp085GetTemperature(...) must be called first. // Value returned will be pressure in units of Pa. long bmp085GetPressure(unsigned long up) {

long x1, x2, x3, b3, b6, p; unsigned long b4, b7; b6 = b5 - 4000; // Calculate B3 x1 = (b2 * (b6 * b6)>>12)>>11; x2 = (ac2 * b6)>>11; x3 = x1 + x2; b3 = (((((long)ac1)*4 + x3)<<OSS) + 2)>>2; // Calculate B4 x1 = (ac3 * b6)>>13; x2 = (b1 * ((b6 * b6)>>12))>>16; x3 = ((x1 + x2) + 2)>>2; b4 = (ac4 * (unsigned long)(x3 + 32768))>>15; b7 = ((unsigned long)(up - b3) * (50000>>OSS)); if (b7 < 0x80000000) p = (b7<<1)/b4; else p = (b7/b4)<<1; x1 = (p>>8) * (p>>8); x1 = (x1 * 3038)>>16; x2 = (-7357 * p)>>16; p += (x1 + x2 + 3791)>>4; return p; } // Read 1 byte from the BMP085 at 'address' char bmp085Read(unsigned char address) { unsigned char data; Wire.beginTransmission(BMP085_ADDRESS); Wire.write(address); Wire.endTransmission(); Wire.requestFrom(BMP085_ADDRESS, 1); while(!Wire.available()); return Wire.read(); } // Read 2 bytes from the BMP085 // First byte will be from 'address' // Second byte will be from 'address'+1 int bmp085ReadInt(unsigned char address) { unsigned char msb, lsb; Wire.beginTransmission(BMP085_ADDRESS); Wire.write(address); Wire.endTransmission(); Wire.requestFrom(BMP085_ADDRESS, 2); while(Wire.available()<2); msb = Wire.read(); lsb = Wire.read(); return (int) msb<<8 | lsb; } // Read the uncompensated temperature value unsigned int bmp085ReadUT()

{ unsigned int ut; // Write 0x2E into Register 0xF4 // This requests a temperature reading Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x2E); Wire.endTransmission(); // Wait at least 4.5ms delay(5); // Read two bytes from registers 0xF6 and 0xF7 ut = bmp085ReadInt(0xF6); return ut; } // Read the uncompensated pressure value unsigned long bmp085ReadUP() { unsigned char msb, lsb, xlsb; unsigned long up = 0; // Write 0x34+(OSS<<6) into register 0xF4 // Request a pressure reading w/ oversampling setting Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF4); Wire.write(0x34 + (OSS<<6)); Wire.endTransmission(); // Wait for conversion, delay time dependent on OSS delay(2 + (3<<OSS)); // Read register 0xF6 (MSB), 0xF7 (LSB), and 0xF8 (XLSB) Wire.beginTransmission(BMP085_ADDRESS); Wire.write(0xF6); Wire.endTransmission(); Wire.requestFrom(BMP085_ADDRESS, 3); // Wait for data to become available while(Wire.available() < 3) ; msb = Wire.read(); lsb = Wire.read(); xlsb = Wire.read(); up = (((unsigned long) msb << 16) | ((unsigned long) lsb << 8) | (unsigned long) xlsb) >> (8-OSS); return up; } void loop() {

// PANTALLA myGLCD.setColor(VGA_BLUE); myGLCD.fillRect(1,1,319,236); myGLCD.setColor(VGA_LIME); myGLCD.drawRect(1, 1, 159, 59); myGLCD.drawRect(159, 1, 319, 59); myGLCD.drawRect(1, 59, 159, 118); myGLCD.drawRect(159, 59, 319, 118); myGLCD.drawRect(1, 118, 159, 177); myGLCD.drawRect(159, 118, 319, 177); myGLCD.drawRect(1, 177, 159, 236);

myGLCD.drawRect(159, 177, 319, 236); //sensor de presion

float pressure = bmp085GetPressure(bmp085ReadUP()); // sensor de velocidad de viento // read the input on analog pin 2: int sensorValue = analogRead(A2); float voltage = sensorValue * (5.0 / 1023.0); //sensor temperatura float temperature = bmp085GetTemperature(bmp085ReadUT()); temp=temperature/10; //sensor de altura float altitude= ((float)44330 * (1 - pow(((float) pressure1/p0), 0.190295)));

//velocidad de viento float velocidad=(32.4*voltage-11.364)/2; if((voltage<0.4)||(velocidad<0)){ velocidad=0; }

// sensor de radiacion // read the input on analog pin 1: int sensorValue1 = analogRead(A1); float voltage1 = sensorValue1 * (5.0 / 1023.0); float radiacion=voltage1*(0.5693)*1000;

// direccion de viento valor=analogRead(A3); valor1=valor+300; valor2=valor+100; valor3=valor+200; if(valor>535 && valor<555){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NORTE ",10,130); } if(valor>492 && valor<508){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NORESTE",10,130); } if(valor>457 && valor<477){ // myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NORESTE",10,130); } if(valor>147 && valor<160){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NORESTE",10,130); } if(valor>678 && valor<692){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("ESTE ",10,130); }

if(valor2>685 && valor2<695){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("ESTE ",10,130); } if(valor>557 && valor<565){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SURESTE",10,130); } if(valor>664 && valor<670){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SURESTE",10,130); } if(valor>400 && valor<410){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SURESTE",10,130); } if(valor1>790 && valor1<810){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SUR ",10,130); } if(valor>695 && valor<705){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SUROESTE",10,130); } if(valor>610 && valor<620){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SUROESTE",10,130); } if(valor3>695 && valor3<705){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("SUROESTE",10,130); } if(valor>590 && valor<598){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("OESTE ",10,130); } if(valor1>580 && valor1<598){ myGLCD.print("OESTE ",10,130); } if(valor>230 && valor<238){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NOROESTE",10,130); } if(valor>325 && valor<335){ myGLCD.setBackColor(0, 0, 0);

myGLCD.setFont(SmallFont); myGLCD.print("NOROESTE",10,130); } if(valor>635 && valor<645){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NOROESTE",10,130); } if(valor1>885 && valor1<1000){ myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(SmallFont); myGLCD.print("NOROESTE",10,130); }

//sensor de humedad y temperatura // READ DATA int chk = DHT.read11(DHT11_PIN); switch (chk) { case DHTLIB_OK: //Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } dtostrf(DHT.humidity,0,0,humed);

// Muestro datos en pantalla myGLCD.setColor(VGA_WHITE); myGLCD.setBackColor(VGA_BLUE); myGLCD.setFont(SmallFont); myGLCD.print("Temperatura [°C]", 2, 2); myGLCD.setFont(BigFont); myGLCD.printNumF(temp,1, 50, 30); float humedad=DHT.humidity; myGLCD.setFont(SmallFont); myGLCD.print("Humedad [%]", 160, 2); myGLCD.setFont(BigFont); myGLCD.print(humed,180, 30); // myGLCD.print(" ", 215, 30); myGLCD.setFont(SmallFont); myGLCD.print("Presion [hPa]", 2, 60); myGLCD.setFont(BigFont); myGLCD.printNumF(pressure, 1,50, 70); myGLCD.setFont(SmallFont); myGLCD.print("Altitud [m]", 160, 60); myGLCD.setFont(SmallFont); myGLCD.printNumF(altitude1, 1, 200,70); myGLCD.setColor(0, 255, 0); myGLCD.setFont(SmallFont); myGLCD.print("Velocidad Viento [m/s]", 10, 90);

myGLCD.setFont(SmallFont); myGLCD.printNumF(velocidad, 3, 200,90); myGLCD.setColor(0, 255, 0); myGLCD.setFont(SmallFont); myGLCD.print("Radiacion [w/m2]", 10, 110); myGLCD.setFont(SmallFont); myGLCD.printNumF(radiacion, 3, 200,110); myGLCD.setColor(0, 255, 0); // Datos enviados a raspberry PI dtostrf(DHT.temperature, 1, 2, varT); //dtostrf(DHT.humidity, 1, 2, varH); dtostrf(pressure2, 1, 2, varP); dtostrf(altitude, 1, 2, varA); dtostrf(velocidad, 1, 2, varV); dtostrf(radiacion, 1, 2, varR); aux1 = varT +separador; aux2 = aux1 +humed; aux3 = aux2 +separador; aux4 = aux3 +varP; aux5 = aux4 +separador; aux6 = aux5 +varA; aux7 = aux6 +separador; aux8 = aux7 +varV; aux9 = aux8 +separador; Serial.println(aux9 + varR); delay(1000); //delay(8000); }

PANTALLA

La pantalla cuenta con un switch de encendido/apagado.

Una vez encendida la pantalla en esta se muestran todos los datos que están midiendo los

sensores.

La pantalla debe conectarse en los siguiente pines:

CONEXIÓN DE LA PANTANLLA CON ARDUINO MEGA 2560

TOUCH SCREEN TFT 3,2” ADUINO MEGA 2560

1 GND

DISPLAY

2 5V

3 NC

4 38

5 39

6 3,3V

7 22

8 23

9 24

10 25

11 26

12 27

13 28

14 29

15 40

16 NC

17 41

18 NC

19 3,3V

20 NC

21 37

22 36

23 35

24 34

25 33

26 32

27 31

28 30

TOUCH SCREEN

29 6

30 5

31 4

32 NC

33 3

34 2

35 51

MEMORIA SD

36 52

37 50

38 53

39 NC

40 NC

Gráfico de distribución de los pines de la pantalla.

Ilustración 31 Conexión pantalla

CONEXIÓN DE TODOS LOS ELEMENTOS QUE CONFORMAN LA ESTACIÓN METEOROLÓGICA.

Ilustración 32 Conexión de todos los elementos

RASPBERRY

Conectar la Raspberry PI al Arduino vía Serial

Previo a la comunicación se debe realizar modificaciones en las líneas de configuración.

1. En la RasPI se modifica el archivo sudo nano /boot/cmdline.txt y se elimina la siguiente

parte:

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

2. Después de realizado el primer paso se comentan las siguientes líneas en el archivo sudo

nano /etc/inittab:

#Spawn a getty on Raspberry Pi serial line

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Una vez realizadas estas modificaciones se reinicia la RasberryPI. Estas modificaciones evitan que

el Kernel envíe mensajes a la línea serial.

Adquisición de datos con Raspberry Pi

Una vez habilitado los puertos, se inicia la programación de la Raspberry para acceder a la

comunicación Arduino, y así disponer de los datos que envié.

El objetivo de la adquisición es enviar los datos que recibe la Raspberry PI a una base de datos

local, para poder manipular esta información almacenada en cualquier momento, así como para

presentar la información en gráficos históricos para un posterior análisis.

La base de datos será creada con MySQL y el administrador de la base de datos PHPmyAdmin.

A continuación se indican los pasos a seguir para su instalación:

1. Instalación de Apache y php

Inicialmente se crea y da permisos al grupo que usa apache por defecto.

sudo addgroup www-data

sudo usermod -a -G www-data www-data

Se realiza una actualización de los repositorios y se procede a instalar Apache y PHP:

sudo apt-get update

sudo apt-get install apache2 php5 libapache2-mod-php5

Se reinicia Apache:

sudo /etc/init.d/apache2 restart

2. Instalación y configuración de MySQL y PHPMyAdmin

Una vez instalado Apache y php, se procede a instalar MySQL y PHPMyAdmin. Lo primero será

activar la interfaz loopback, de lo contrario se genera un error al instalar MySQL.

sudo ifup lo

Seguidamente se instala MySQL y PHPMyAdmin:

sudo apt-get install mysql-server mysql-client php5-mysql phpmyadmin

Al instalarse aparece una pantalla de configuración preguntando la contraseña a ser utilizada, a

continuación esta se añade en el archivo:

sudo nano /etc/php5/apache2/php.ini

Antes de la línea “Dynamics Extensions”:

extension=mysql.so

Posteriormente se escriben los siguientes comandos:

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf

sudo /etc/init.d/apache2 reload

Al final del siguiente archivo:

sudo nano /etc/apache2/apache2.conf

Se añade la instrucción:

Include /etc/phpmyadmin/apache.conf

/etc/init.d/apache2 restart

Ilustración 33 Ventana phpMyAdmin

Ilustración 34 Localhost

Una vez instalados el servidor, la base de datos y el administrador de la base de datos se procede a

iniciar la programación. La plataforma seleccionada para el desarrollo del programa es PYTHON, La

misma que se debe complementar con las librerías necesarias detalladas a continuación:

sudo apt-get install python-serial

sudo apt-get install mysql-server python-mysqldb

Ilustración 35 Pantalla inicial del Raspberry

ELÉCTRICA:

Comprar 42 m. de cable flexible #22 para alargue de los cables de los sensores de radiación,

anemómetro, dirección de viento, pluviómetro y batería de 12V. Este se lo puede conseguir en

cualquier electrónica.

La distribución es la siguiente:

Anemómetro: 3 cables de 4 m. cada uno.

Dirección de viento: 3 cables de 4 m. cada uno.

Pluviómetro: 2 cables de 2 m. cada uno.

Radiación: 4 cables de 2 m. cada uno.

Batería: 2 cables de 3 m. cada uno.

COSTOS:

ELEMENTO FABRICANTE MODELO PRECIO

PLUVIOMETRO LA CROSS TECHNOLOGY LTD. TX 58 UN IT 49,37

ANEMÓMETRO ADAFRUIT MPXV 7002 49,99

SENSOR DE PRESIÓN, TEMPERTURA Y ALTITUD

BOSCH BMP 085 20,00

SENSOR DE RADIACIÓN DAVIS INSTRUMENTS PART # 6450 150,00

SENSOR DE HUMEDAD ADAFRUIT DHT11 6,45

GPS ADAFRUIT ULTIMATE V3.0 44,99

PANTALLA TACTIL SAINT SMART 3.2" TFT 25,00

RASPBERRY PI RASPBERRY 2B 75,00

CONTROLADOR ARDUINO MEGA 2560 23,99

BATERIA SOLAR APOLO 7200 Ma 30,00

CAJA CONTROL POLYCASE WH-18 45,00

CAJA ACRÍLICO SENSORES 6,45

CAJA ACRÍLICO INTERNA 4,60

TUBO 1"X2mm de espesor 8,00

MANO DE OBRA 60,00

598,84

RECOMENDACIONES:

El sensor GPS Ultimate V3.0 envía datos a través del puerto serial, según la frecuencia

programada pudiendo enviar como máximo 10 datos en 1 segundo y como mínimo 1 dato

por segundo, por lo que está enviando y recibiendo datos constantemente, se recomienda

usar el protocolo maestro esclavo junto con otro arduino para que de esta manera el

maestro pueda recibir el dato del esclavo al momento en que se lo llama, para así

descartar el exceso de datos que envía el sensor. De no realizar lo antes mencionado,

conectar directamente al Raspberry PI.

Al fabricar el sensor de dirección de viento el principal inconveniente es que no se cuenta

con la lectura exacta de grados, se recomienda utilizar un potenciómetro lineal para

obtener un valor de voltaje para cada grado de desviación de la veleta.

El principal problema con la conexión de raspberry y arduino es la comunicación ya que

ambos funcionan a diferentes frecuencias de procesamiento, esto causa que en ocasiones

se reinicie la adquisición de datos de arduino, la recomendación por software es

desarrollar un algoritmo que mejore la comunicación, en hardware comprar un dispositivo

para comunicación UART que facilite la comunicación serial.