Upload
independent
View
0
Download
0
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.