I.E.S. Francisco Romero Vargas
    Jerez de la Frontera (Cádiz)           Tlf.: 671 530 256 /7 /8  -  956 70 99 17                    
 
Desde 2007
   
Visitas:
Estadísticas
Zona restringida:
Código Profesor:
Clave SGD:

 

 

Control de un dispositivo conectado al Arduino mediante los datos de la estación meteorológica

Control de un dispositivo conectado al Arduino mediante los datos de la estación meteorológica

Información relacionada:
0.- Los datos de nuestra estación meteorológica.
1.- Estación meteorológica.

2.- Instalación del servidor web Apache
3.- Vinculación de datos de la estación meteorológica a una página web. Cumulus.
4.- Creación de un temporizador para subir los archivos automáticamente mediante FTP.
5.- Realización de un programa personalizado basado en el Cumulus. Visual Basic.
6.- Realización de un programa personalizado con el AutoIt.
7.- Cambiar la apariencia de Cumulus, EasyWeather,... con Reshacker. Traducción al español .
8.-
Control de un dispositivo conectado al Puerto paralelo del ordenador mediante los datos de la estación meteorológica
8B.- Controlar un dispositivo externo mediante la estación meteorológica y Arduino. (NUEVO)
9.- La estación en UBUNTU - LINUX.
10.-
Construcción de un reloj analemático
11.- Nos damos de alta en AWEKAS, red internacional de estaciones meteorológicas.
12.- Nos damos de alta en Weather Underground, red internacional de estaciones meteorológicas.
13.- Nos damos de alta en Personal Weather Stations, red internacional de estaciones meteorológicas.
14.- Utilización del archivo realtime.txt y PHP para crear una página web personalizada.
15.- Configuración de la Cámara web

16.- ¡¡¡Se me apaga el ordenadorrrr!!!
17.- Formulario y programación en AutoIt
18.- Capturas automáticas de mapas meteorológicos de una página web

_________________________________________________

Cómo encender una lámpara cuando la temperatura u otro dato, supera un determinado valor.

Útil con varios programas meteorológicos.


La estación meteorológica manda los datos a la estación base que está conectada al ordenador y que se pueden visualizar mediante un programa (Cumulus, EasyWeather,...), éste programa guarda los datos obtenidos en un archivo (realtime.txt, EasyWeather.dat, ...)
Un programa (basado en Visual Basic, Autoit,...) toma esos datos y según sus valores envía una señal a un conector USB del ordenador.
En ese USB del ordenador hemos conectado un módulo Arduino que cuando reciben los datos enciende una lámpara, emite una señal sonora, cierra un relé,...

_________________________________________________

Para realizar este montaje hace falta:

- Bajar el Visual Basic 2010 Express de http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express (171 MB) (Gratis)

- Tener un módulo Arduino y algunos componentes (puede costar unos 50 €)

- Lo he realizado con el archivo realtime.txt que general el programa de meteorología Cumulus, se puede adaptar a cualquier archivo generado con otro software de meteorología. El archivo realtim.txt lo he puesto en esta dirección:
C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime.txt

_________________________________________________

- El Visual Basic es gratuito, solo tendrás que poner tu correo para registarte. Con el VB podrás realizar programas para que funcionen en Windows.

- El Arduino es un pequeño circuito que puede costar unos 25 €. Se conecta a un conector USB del ordenador. Con él podemos controlar cualquier elemento eléctrico externos como lámpara, relé, motor,...


Módulo Arduino, viene a costar unos 25 €

Además del Arduino conviene tener una serie de cables, LED y placa para hacer las pruebas (No se necesita soldador).

En vez de comprar solamente el módulo Arduino, es conveniente adquirir una caja en donde viene además del módulo Arduino, una placa para realizar las conexiones, cables, diodos LED, resistencias,... esta caja cuesta unos 50 €. Si te interesa sacarle partido al Arduino es una buena compra.

La puedes adquirir en Cooking Hacks que tiene una sede en Zaragoza:
http://www.cooking-hacks.com/index.php/shop/arduino/starter-kits/arduino-starter-kit.html

 

_________________________________________________

Puesta a punto del Arduino.

- Baja el programa para trabajar con el Arduino (IDE).
- Instala el Driver para que Windows reconozca al Arduino.
- Realiza el programa de prueba Blink para que parpadee el LED naranja que el Arduino tiene ya conectado a su salida 13 (no hace falta conectar ningún LED como está indicado en la foto, ya que el propio Arduino tiene un pequeño LED en su placa que nos puede servir para hacer la prueba)

En el programa del Arduino ve a: Tools | Serial Port y establece el puerto COM al que está conectado el Arduino (El Arduino esta conectado a un conector USB, pero está actuando como puerto serie COM)

http://arduino.cc/es/Guide/Windows

http://arduino.cc/es/Guide/HomePage

Cuando ya hayas conseguido hacer que parpadee el LED del terminal 13, puedes continuar con nuestro proceso.

 

_________________________________________________

Cuando la temperatura exterior sea de 19.7 grados se encenderá una lamparita (diodo LED) mediante el Arduino.

Lo primero que vamos hacer es construir el circuito con el Arduino, cuando ya lo tengamos realizaremos un par de programas para controlarlo.

Conectamos 4 diodos LED con resistencias de 470 ohmios a los terminales 10, 11, 12 y 13 del Arduino, como indico en la figura siguiente.

 

_________________________________________________

Los Programas.

1.- Debemos cargar un programa en el Arduino y luego otro en Visual Basic en nuestro ordenador.

El programa para el Arduino establece los terminales 10, 11, 12 y 13 como salidas. Lee el puerto serie Serial.read()
y según lea la cadena de caracteres "10 on", "10 off","11 on", "11 off",... encenderá o apagará el LED correspondiente.

Bajar este archivo: VisualBasic_arduino_meteo.pde

Programa para el Arduino

// Juan Antonio Villalpando
// juana1991@yahoo.com

char inData[20];
char inChar=-1;
byte index = 0;

void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}

char Comp(char* This) {
while (Serial.available() > 0)

{
if(index < 19)
{
inChar = Serial.read();
inData[index] = inChar;
index++;
inData[index] = '\0';
}
}

if (strcmp(inData,This) == 0) {
for (int i=0;i<19;i++) {
inData[i]=0;
}
index=0;
return(0);
}
else {
return(1);
}
}

void loop()
{
if (Comp("10 on")==0) {digitalWrite(10, HIGH);}
if (Comp("10 off")==0) {digitalWrite(10, LOW);}
if (Comp("11 on")==0) { digitalWrite(11, HIGH);}
if (Comp("11 off")==0) {digitalWrite(11, LOW);}
if (Comp("12 on")==0) { digitalWrite(12, HIGH);}
if (Comp("12 off")==0) {digitalWrite(12, LOW);}
if (Comp("13 on")==0) { digitalWrite(13, HIGH);}
if (Comp("13 off")==0) {digitalWrite(13, LOW);}
}

Bajar el proyecto en Visual Basic

Programa en Visual Basic 2010

Debemos insertar en el formulario:
- 11 Label
- 4 TextBox
- 4 OvalShape (FillStyle = Solid)
- 1 Timer (Enable = True, Interval = 1000)
- 1 SerialPort (Debes poner el número de puerto COM correspondiente)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Class Form1
' Juan Antonio Villalpando
' IES Fco. Romero Vargas - Jerez de la Frontera
' http://iesromerovargas.com
' juana1991@yahoo.com

Dim oFile As System.IO.File
Dim oRead As System.IO.StreamReader
Dim archivo, caracter, dato As String
Dim x, cambio13, cambio12, cambio11, cambio10 As Integer
Dim tabla(80) As String
Dim Temperaturas, Presions, Vientos, Humedads As String
Dim Temperatura, Presion, Viento, Humedad As String
Dim WebClient As New System.Net.WebClient()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
SerialPort1.Close()
SerialPort1.PortName = "com3" 'CAMBIA EL PUERTO COM
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Encoding = System.Text.Encoding.Default
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
oRead = IO.File.OpenText("C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime.txt")

'WebClient.DownloadFile("http://www.iesromerovargas.com/estacion_meteorologica/Cumulus/web/realtime.txt", "C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime2.txt")
' oRead = IO.File.OpenText("C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime2.txt")


archivo = oRead.ReadToEnd()
oRead.Close()
Label11.Text = archivo
x = 0
For n = 1 To Len(archivo)
caracter = Mid(archivo, n, 1)
dato = dato & caracter
If caracter = " " Then
tabla(x) = dato
x = x + 1
dato = ""
End If
Next

' Añado 1 al índice http://wiki.sandaysoft.com/a/Realtime.txt
Temperaturas = tabla(2)
Label6.Text = Temperaturas
Presions = tabla(10)
Label7.Text = Presions
Vientos = tabla(5)
Label8.Text = Vientos
Humedads = tabla(3)
Label9.Text = Humedads

Temperatura = TextBox1.Text
Presion = TextBox2.Text
Viento = TextBox3.Text
Humedad = TextBox4.Text

SerialPort1.Open()
If Val(Temperaturas) >= Val(Temperatura) Then
SerialPort1.Write("13 on")
cambio13 = 0
OvalShape1.FillColor = Color.Red
Else
SerialPort1.Write("13 off")
cambio13 = 1
OvalShape1.FillColor = Color.Green
End If

If Val(Presions) >= Val(Presion) Then
SerialPort1.Write("12 on")
cambio12 = 0
OvalShape2.FillColor = Color.Red
Else
SerialPort1.Write("12 off")
cambio12 = 1
OvalShape2.FillColor = Color.Green
End If

If Val(Vientos) >= Val(Viento) Then
SerialPort1.Write("11 on")
cambio11 = 0
OvalShape3.FillColor = Color.Red
Else
SerialPort1.Write("11 off")
cambio11 = 1
OvalShape3.FillColor = Color.Green
End If

If Val(Humedads) >= Val(Humedad) Then
SerialPort1.Write("10 on")
cambio10 = 0
OvalShape4.FillColor = Color.Red
Else
SerialPort1.Write("10 off")
cambio10 = 1
OvalShape4.FillColor = Color.Green
End If
SerialPort1.Close()
End Sub
End Class

Con las siguientes líneas podemos conseguir que el realtime.txt desde Internet. En este caso convendría poner el Interval del Timer1 en 60000

'WebClient.DownloadFile("http://www.iesromerovargas.com/estacion_meteorologica/Cumulus/web/realtime.txt", "C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime2.txt")
' oRead = IO.File.OpenText("C:\Users\juan\Documents\Visual Studio 2010\Projects\Estacion_meteo_arduino\realtime2.txt")

En el programa podemos establecer (en los casilleros) un valor tope, cuando el correspondiente dato de la estación (a través del realtime.txt) sea mayor que el del casillero, se enviará un nivel alto a uno de los terminales del puerto paralelo. Este terminal estará conectado a un diodo LED que se encenderá.

El programa está preparado para temperatura, presión, tiempo y humedad.

Para probar el programita no es necesario hacer el circuito, ya que he puesto unos círculos rojo/verde que cambiarán según el dato leído. (Para probarlo escribe, por ejemplo -10 en donde pone introduce los niveles de alarma)

He utilizado el punto como separador decimal, es decir, escribiremos: 19.7

El programa está autocomentado y está realizado de forma didáctica, para que pueda ser entendido y modificado con facilidad.
Detecta los valores máximos, se podría ampliar fácilmente para que también detectara los valores mínmos.

En este caso hemos realizado el programa para el realtime.txt del Cumulus, pero fácilmente podemos adaptarlo a otros archivos de datos meteorológicos que creen otros programas.

_________________________________________________

En vez de encender un diodo LED, que se ilumine una lámpara de potencia

En esta ocasión en vez de iluminar diodos LED, vamos a utilizar un circuito que pueda alimentar a relés. Los contactos asociados de los relés pueden controlar cargas de potencias. Por ejemplo, iluminar con una lámpara alimentada con 230 V.

Nosotros lo hemos probado con estos relés, es decir, en vez de poner los LED ponemos los relés, de tal manera que podemos controlar 220/250 5A en la salida de los relés para poder alimentar a un circuito de potencia como una lámpara.

Lo hemos comprado por Internet en esta tienda... relés de 5V por unos 2,5 € cada uno (consulta otras tiendas y otros precios).


Relé de 5 VDC

 

 


IES Fco. Romero Vargas
Avda. Moreno Mendoza, s/n - 11408 Jerez de la Frontera (Cádiz) -
Tlf.: 671 530 256 /7 /8  -  956 70 99 17
  email: 11007922.edu@juntadeandalucia.es
Las informaciones ofrecidas por este medio tienen exclusivamente carácter ilustrativo, y no originarán derechos ni expectativas de derechos.
(Decreto 204/95, artículo 4; BOJA 136 de 26 de Octubre)