Estación Meteorológica con Arduino

Estación Meteorológica con Arduino

En esta oportunidad tenes el agrado de traerles un curso bastante interesante sobre estaciones meteorologicas usando Arduino. A continuación se muestra los videos de las clases:


Clase N°1:

En esta primera clase vimos las diferntes estaciones que existen como asi tambien los elememtos que la conforman. y se presenta una idea de con cual estación se va a trabajar a lo largo del video.



Clase N°2:


En este segundo video vimos como programar el sensor de lluvia FC-37. El codigo del mismo se realizo con el motivo de usar tanto su parte analoggica como digital del sensor:

Codigo del Sensor de lluvia usado en este video:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int analogValue;

bool digitalValue;

void setup() {

  Serial.begin(9600);   //iniciar puerto serie

}

void loop(){

  analogValue=analogRead(0); //leemos A0

  if (analogValue<300)

  Serial.println("Lluvia Intensa");

  else if (analogValue<500)

    Serial.print("Lluvia Moderada");

    else

    Serial.print("Lluvia No Detectada");

    digitalValue= digitalRead(9);

    if (digitalValue ==HIGH)

    Serial.println(">>> NO LLUVIA");

    else

    Serial.println(">>> LLUVIA");

  delay(2000);

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Clase N°3:

En esta clase vimos como usar y programar el Pluviometro Digital. Este sensor fue bastante interesamnte analizar y bsucar la forma de medir la cantida de lluvia caida en una hora o cada 15 minutos.

 
Codigo de pluviometro Digital:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const int SENSOR=3;

const int umbraltiempo=300;

volatile int ISRContador = 0;

int contador = 0;

float litros=0;

long tiempocontador=0;

long tiempohora =0;

 

void setup(){

   pinMode(SENSOR, INPUT_PULLUP);

   Serial.begin(9600);

   attachInterrupt(digitalPinToInterrupt(SENSOR),contadorLitros,FALLING);

}

void contadorLitros()

{

 if(millis()>(tiempocontador+umbraltiempo))

  {

    ISRContador++;

    tiempocontador=millis();

      Serial.println(ISRContador);

  }

}

void loop()  {

 if (millis()tiempohora)

    {

    tiempohora=0;

    }

 if (millis()-tiempohora3600000UL) { 

    tiempohora = millis();

    litros=ISRContador  1.5;

    Serial.print(Litros por m2 caidos en una una Hora (Lm2) );

    Serial.println(litros);

    ISRContador= 0;

    contador= 0;

  }

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



Clase N°4:


En este video analizamos el anemómetro el cual fue probado en un tunel de viento para poder medir y analizar el circuito que realizamos para el mismo con el fin de eliminar ruido.


Codigo de Anemómetro
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

const int SENSOR=3;

const int RecordTime = 3; //Definir el tiempo de medición (segundos)

const int SensorPin = 3;  //Definir pin de interrupción (2 o 3 @ Arduino Uno)

int InterruptCounter;

float WindSpeed;

void setup()

{

  pinMode(SensorPin, INPUT_PULLUP);

  Serial.begin(9600);

}

void loop() {

  meassure();

  Serial.print("Wind Speed: ");

  Serial.print(WindSpeed);       //Velocidad en km/h

  Serial.print(" km/h - ");

  Serial.print(WindSpeed / 3.6); //Velocidad en m/s

  Serial.println(" m/s");

}

void meassure() {

  InterruptCounter = 0;

  attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);

  delay(1000 * RecordTime);

  detachInterrupt(digitalPinToInterrupt(SensorPin));

  WindSpeed = (float)InterruptCounter / (float)RecordTime * 2.4;

}

void countup() {

  InterruptCounter++;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




Clase N°5:

En este video analizamos la veleta digital. La veleta nos da la dirección del viento.


Codigo de Veleta
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

int sensorPin = A0;    // select the input pin for the potentiometer

int veleta = 0;  // variable to store the value coming from the sensor

 

void setup() {

Serial.begin(9600);

}

 

void loop() {

  // read the value from the sensor:

  veleta = analogRead(sensorPin);

 

   Serial.print("direccion=");

  

    if ((745 < veleta) && (veleta < 824)) 

    Serial.println("N o 0°" ); //0°

 

  if ((384 < veleta) && (veleta < 425))

  Serial.println("NNE o 22.5°"); //22.5°

 

  if ((437 < veleta) && (veleta < 483))

    Serial.println("NE o 45°"); //45°

 

 if ((78 < veleta) && (veleta < 87))

 Serial.println("ENE o 67.5°"); //67.5°

 

  if ((88 < veleta) && (veleta < 97))

    Serial.println("E o 90°");//90°

 

  if ((61 < veleta) && (veleta < 68))

    Serial.println("ESE o 112.5°"); //112.5°

 

if ((175 < veleta) && (veleta < 193))

    Serial.println("SE o 135°"); //135°

 

if ((120 < veleta) && (veleta < 132))

    Serial.println("SSE o 157.5°"); //157.5°

 

if ((272 < veleta) && (veleta< 301))

    Serial.println("S o 180°"); //180°

 

if ((232 < veleta) && (veleta < 256))

    Serial.println("SSO o 202.5°"); //202.5°

 

if ((598 < veleta) && (veleta < 661))

    Serial.println("SO o 225°"); //225°

 

  if ((568 < veleta) && (veleta < 628))

    Serial.println("OSO"); //247.5°

 

if ((897 < veleta) && (veleta < 991))

    Serial.println("O o 270°"); //270°

 

if ((785 < veleta) && (veleta < 868))

    Serial.println("ONO o 292.5°"); //292.5

 

if ((842 < veleta) && (veleta < 930))

    Serial.println("NO o 315°");//315°

 

if ((666 < veleta) && (veleta < 737))

    Serial.println("NNOo 337.5°"); //337.5°

      delay(500);

}

/////////////////////////////////////////////////////////////////





Clase N°6:


En este video analizamos el sensor de Temperatura y huemadad DHT22, es un sensor bastante simple y pequeño que funciona bastante bien para este tipo de aplicaciones. 
Para poder usar este sensor es necesario instalar en Arduino las librerías DHT de Adafruit, el cual lo encontramos en el gestor de librerías.


Codigo de DHT22
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <DHT.h>

#include <DHT_U.h>

int SENSOR=2;

int TEMPERATURA;

int HUMEDAD;

DHT dht(SENSOR, DHT22);

void setup() {

 Serial.begin (9600);

 dht.begin();

}

void loop() {

 TEMPERATURA= dht.readTemperature();

 HUMEDAD= dht.readHumidity();

 Serial.print("Temperatura: ");

 Serial.print(TEMPERATURA);

 Serial.print(" Humedad: ");

 Serial.println(HUMEDAD);

 delay(500);

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////




Clase N°7:


En este video analizamos el ultimo  sensor de la estación: el Sensor de radiación solar SUF268J001 el cual nos permite medir radiación. 



Codigo de SUF268J001
////////////////////////////////////////////////////////////////////////////////////////////////

int lectura;

int Dato;

void setup() {

 pinMode (A0, INPUT);

 Serial.begin(9600);

}

void loop() {

  lectura= analogRead(A0);

  Dato=(lectura*-0.75)+767,4;

  Serial.print(Dato);

  Serial.println(" W/m^2");

delay(2000);

}

//////////////////////////////////////////////////////////////////////////////////////////////////


Clase N°8:


En este video respondemos algunas cosultas y veremos los soportes del Sensor de Radiación y el sensor Dectector de Lluvia como asi tambien la ubicación de los mismos. Los soportes de sensor de lluvia y de Radición solar Diseñados se pueden descargar en los siguientes links:

  • Sensor de lluvia ------------ Descargar
  • Sensor de Radiación Solar --------------- Descargar


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Clase N°9:


En este video les muestro el circuito la programación completa de una estación Meteorologica usando Arduino. El codigo usado y el circuito diseñado se muestra a continuación:


Circuito diseñado:

Primero se monto todo en una protoboard para saber si todo funcionaba correctamente. Si observamos el cuircuito es la unión de todos los circuitos de los sensores vistos anteriormente:


Codigo de Programación:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////// Definición Pluviometro////////////
const int SENSOR=3;
const int umbraltiempo=300;
volatile int ISRContador = 0;
int contador = 0;
float litros=0;
long tiempocontador=0;
long tiempohora =0;

/////////////// Sensor detector de Lluvia /////////////
int analogValue;

////////////////Definición Anemometro ///////////////////////////

const int RecordTime = 3; //Definir el tiempo de medición (segundos)
const int SensorPin = 2;  //Definir pin de interrupción (2, 3 , 18, 19, 20 ,22 @ Arduino Mega)
int InterruptCounter;
float WindSpeed;
 
///////////////// Definición Veleta ///////////////////////////////////////////
int sensorvPin = A0;
int veleta = 0;

//////////////////Definición de DHT22/////////////////////////////////////77
#include <DHT.h>
#include <DHT_U.h>

int SENSORT=12;
int TEMPERATURA;
int HUMEDAD;
DHT dht(SENSORT, DHT22);

/////////////////////Definición sensor Radiación Solar///////////////////////////////////
int lectura;
int Dato;

//////////////////////////////////////////////////////////////7

void setup(){
  //////////// Void SETUP Pluviometro /////////////////////

   pinMode(SENSOR, INPUT_PULLUP);
   Serial.begin(9600);
   attachInterrupt(digitalPinToInterrupt(SENSOR),contadorLitros,FALLING);

   /////////////////// Void Setup Anemometro ////////////////////
 pinMode(SensorPin, INPUT_PULLUP);

 ///////////////// Void setup del DHT22 /////////////////////////
 dht.begin();

 ///////////////// Void Setup del Sensor de Radiación /////////////////
 pinMode (A1, INPUT);
}

//// Void del Pluviometro /////////////////////////////////7
void contadorLitros()
{
 if(millis()>(tiempocontador+umbraltiempo))
  {
    ISRContador++;
    tiempocontador=millis();
      Serial.println(ISRContador);

  }
}
//////////////////////////////////////////////////////////////////////////

void loop()  {

  ////////////////////////////////cODIGO Pluviometro /////////////////////////77
 if (millis()<tiempohora)
    {
    tiempohora=0;
    }
 if (millis()-tiempohora>3600000UL) {  
    tiempohora = millis();
    litros=ISRContador * 0.27945;
    Serial.print("Litros por m2 caidos en una una Hora (L/m2): ");
    Serial.println(litros);
    ISRContador= 0;
    contador= 0;
  }
  //////////////////////////////Codigo Anemometro //////////////////////////////////////
  meassure();
  Serial.print("Velocidad del Viento: ");
  Serial.print(WindSpeed);       //Velocidad en km/h
  Serial.print(" km/h - ");
  Serial.print(WindSpeed / 3.6); //Velocidad en m/s
  Serial.println(" m/s");

  //////////////////// Codigo Veleta //////////////////////////////////////////
  veleta = analogRead(sensorvPin);
 
   Serial.print("direccion= ");
   
    if ((745 < veleta) && (veleta < 824))  
    Serial.println("N o 0°" ); //0°

   
  if ((384 < veleta) && (veleta < 425))
  Serial.println("NNE o 22.5°"); //22.5°


  if ((437 < veleta) && (veleta < 483))
    Serial.println("NE o 45°"); //45°


 if ((78 < veleta) && (veleta < 87))
 Serial.println("ENE o 67.5°"); //67.5°

 
  if ((88 < veleta) && (veleta < 97))
    Serial.println("E o 90°");//90°

   
  if ((61 < veleta) && (veleta < 68))
    Serial.println("ESE o 112.5°"); //112.5°


if ((175 < veleta) && (veleta < 193))
    Serial.println("SE o 135°"); //135°


if ((120 < veleta) && (veleta < 132))
    Serial.println("SSE o 157.5°"); //157.5°



if ((272 < veleta) && (veleta< 301))
    Serial.println("S o 180°"); //180°


if ((232 < veleta) && (veleta < 256))
    Serial.println("SSO o 202.5°"); //202.5°



if ((598 < veleta) && (veleta < 661))
    Serial.println("SO o 225°"); //225°


  if ((568 < veleta) && (veleta < 628))
    Serial.println("OSO"); //247.5°


if ((897 < veleta) && (veleta < 991))
    Serial.println("O o 270°"); //270°


if ((824 < veleta) && (veleta < 842))
    Serial.println("ONO o 292.5°"); //292.5


if ((842 < veleta) && (veleta < 930))
    Serial.println("NO o 315°");//315°


if ((666 < veleta) && (veleta < 737))
    Serial.println("NNO o 337.5°"); //337.5°
      delay(500);

/////////////////////// Codigo del DHT22 //////////////////
TEMPERATURA= dht.readTemperature();
 HUMEDAD= dht.readHumidity();
 Serial.print("Temperatura: ");
 Serial.print(TEMPERATURA);
 Serial.println( " °C");
 Serial.print("Humedad: ");
 Serial.println(HUMEDAD);
 delay(500);

 //////////////////// Codigo del sensor de Radiación ////////////////////////////////
 lectura= analogRead(A1);
  Dato=(lectura*-0.75)+767,4;
  Serial.print("Radiación Solar: ");
  Serial.print(Dato);
  Serial.println(" W/m^2");
delay(2000);

////////////////// Codigo del Sensor dectector de Lluvia //////////////////////////
analogValue=analogRead(2); //leemos A0
  if (analogValue<300)
  Serial.println("Lluvia Intensa");
  else if (analogValue<500)
    Serial.println("Lluvia Moderada");
    else
    Serial.println("Lluvia No Detectada");
  delay(5000);
}

/////////////////////////Void del Anemometro ///////////////////////////////////////
void meassure() {
  InterruptCounter = 0;
  attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);
  delay(1000 * RecordTime);
  detachInterrupt(digitalPinToInterrupt(SensorPin));
  WindSpeed = ((float)InterruptCounter / (float)RecordTime)*2.4;
 
}

void countup() {
  InterruptCounter++;
}
/////////////////////////////////////////////////////////////////////////

Diseño de plaqueta:

Una vez ya programado y ver que todo anduvo pasamos a diseñar su plaqueta:


El cual en el siguiente diagrama se muestra como se conecta todo:




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Clase N°10: Clase Final


En este video mostramos como transferir los datos de la estación Meteorológica mediante el Modulo Ethernet y concluimos el final de este Curso.

Código usado:

//////////////////////////////////////////////////////

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

//////////// Definición Pluviometro////////////
const int SENSOR=3;
const int umbraltiempo=300;
volatile int ISRContador = 0;
int contador = 0;
float litros=0;
long tiempocontador=0;
long tiempohora =0;

/////////////// Sensor detector de Lluvia /////////////
int analogValue;

////////////////Definición Anemometro ///////////////////////////

const int RecordTime = 3; //Definir el tiempo de medición (segundos)
const int SensorPin = 2;  //Definir pin de interrupción (2, 3 , 18, 19, 20 ,22 @ Arduino Mega)
int InterruptCounter;
float WindSpeed;
 
///////////////// Definición Veleta ///////////////////////////////////////////
int sensorvPin = A0;
int veleta = 0;

//////////////////Definición de DHT22/////////////////////////////////////77
#include <DHT.h>
#include <DHT_U.h>

int SENSORT=12;
int TEMPERATURA;
int HUMEDAD;
DHT dht(SENSORT, DHT22);

/////////////////////Definición sensor Radiación Solar///////////////////////////////////
int lectura;
int Dato;

//////////////////////////////////////////////////////////////7

void setup(){
Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Ethernet WebServer Example");

  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);

  // Check for Ethernet hardware present
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
    Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
    while (true) {
      delay(1); // do nothing, no point running without Ethernet hardware
    }
  }
  if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Ethernet cable is not connected.");
  }

  // start the server
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());

  //////////// Void SETUP Pluviometro /////////////////////

   pinMode(SENSOR, INPUT_PULLUP);
   Serial.begin(9600);
   attachInterrupt(digitalPinToInterrupt(SENSOR),contadorLitros,FALLING);

   /////////////////// Void Setup Anemometro ////////////////////
 pinMode(SensorPin, INPUT_PULLUP);

 ///////////////// Void setup del DHT22 /////////////////////////
 dht.begin();

 ///////////////// Void Setup del Sensor de Radiación /////////////////
 pinMode (A1, INPUT);
}

//// Void del Pluviometro /////////////////////////////////7
void contadorLitros()
{
 if(millis()>(tiempocontador+umbraltiempo))
  {
    ISRContador++;
    tiempocontador=millis();
      Serial.println(ISRContador);

  }
}
//////////////////////////////////////////////////////////////////////////

void loop()  {

  ////////////////////////////////cODIGO Pluviometro /////////////////////////77
 if (millis()<tiempohora)
    {
    tiempohora=0;
    }
 if (millis()-tiempohora>3600000UL) {  
    tiempohora = millis();
    litros=ISRContador * 0.27945;
    Serial.print("Litros por m2 caidos en una una Hora (L/m2): ");
    Serial.println(litros);
    ISRContador= 0;
    contador= 0;
  }
  //////////////////////////////Codigo Anemometro //////////////////////////////////////
  meassure();
  Serial.print("Velocidad del Viento: ");
  Serial.print(WindSpeed);       //Velocidad en km/h
  Serial.print(" km/h - ");
  Serial.print(WindSpeed / 3.6); //Velocidad en m/s
  Serial.println(" m/s");

  //////////////////// Codigo Veleta //////////////////////////////////////////
  veleta = analogRead(sensorvPin);
 
   Serial.print("direccion= ");
   
    if ((745 < veleta) && (veleta < 824))  
    Serial.println("N o 0°" ); //0°

   
  if ((384 < veleta) && (veleta < 425))
  Serial.println("NNE o 22.5°"); //22.5°


  if ((437 < veleta) && (veleta < 483))
    Serial.println("NE o 45°"); //45°


 if ((78 < veleta) && (veleta < 87))
 Serial.println("ENE o 67.5°"); //67.5°

 
  if ((88 < veleta) && (veleta < 97))
    Serial.println("E o 90°");//90°

   
  if ((61 < veleta) && (veleta < 68))
    Serial.println("ESE o 112.5°"); //112.5°


if ((175 < veleta) && (veleta < 193))
    Serial.println("SE o 135°"); //135°


if ((120 < veleta) && (veleta < 132))
    Serial.println("SSE o 157.5°"); //157.5°



if ((272 < veleta) && (veleta< 301))
    Serial.println("S o 180°"); //180°


if ((232 < veleta) && (veleta < 256))
    Serial.println("SSO o 202.5°"); //202.5°



if ((598 < veleta) && (veleta < 661))
    Serial.println("SO o 225°"); //225°


  if ((568 < veleta) && (veleta < 628))
    Serial.println("OSO"); //247.5°


if ((897 < veleta) && (veleta < 991))
    Serial.println("O o 270°"); //270°


if ((824 < veleta) && (veleta < 842))
    Serial.println("ONO o 292.5°"); //292.5


if ((842 < veleta) && (veleta < 930))
    Serial.println("NO o 315°");//315°


if ((666 < veleta) && (veleta < 737))
    Serial.println("NNO o 337.5°"); //337.5°
      delay(500);

/////////////////////// Codigo del DHT22 //////////////////
TEMPERATURA= dht.readTemperature();
 HUMEDAD= dht.readHumidity();
 Serial.print("Temperatura: ");
 Serial.print(TEMPERATURA);
 Serial.println( " °C");
 Serial.print("Humedad: ");
 Serial.println(HUMEDAD);
 delay(500);

 //////////////////// Codigo del sensor de Radiación ////////////////////////////////
 lectura= analogRead(A1);
  Dato=(lectura*-0.75)+767,4;
  Serial.print("Radiación Solar: ");
  Serial.print(Dato);
  Serial.println(" W/m^2");
delay(2000);

////////////////// Codigo del Sensor dectector de Lluvia //////////////////////////
analogValue=analogRead(2); //leemos A0
  if (analogValue<300)
  Serial.println("Lluvia Intensa");
  else if (analogValue<500)
    Serial.println("Lluvia Moderada");
    else
    Serial.println("Lluvia No Detectada");
  delay(5000);
 ////////////////////////////////////////////////////////////////////////////////
 EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an HTTP request ends with a blank line
    bool currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the HTTP request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard HTTP response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
         client.println("<html>");                
            client.println("<head><title> Datos de la Estacion </title>");
            client.println("</head>");
            client.println("<body>");
            client.println("<div style='text-align:center;'>");
            client.println("<h1>Estacion Meteorologica</h1>");
            client.println("<h3>Datos del viento</h3>");
            client.print("Velocidad del Viento: ");
            client.print(WindSpeed);
            client.println(" Km/h");
            client.println("<br />");
            client.print("Direccion: ");
             if ((745 < veleta) && (veleta < 824))  
            client.print("N o 0 &#176" ); //0°
             if ((384 < veleta) && (veleta < 425))
            client.print("NNE o 22.5 &#176"); //22.5°
             if ((437 < veleta) && (veleta < 483))
            client.print("NE o 45 &#176"); //45°
             if ((78 < veleta) && (veleta < 87))
            client.print("ENE o 67.5 &#176"); //67.5°
             if ((88 < veleta) && (veleta < 97))
            client.print("E o 90 &#176");//90°
             if ((61 < veleta) && (veleta < 68))
            client.print("ESE o 112.5°"); //112.5°
             if ((175 < veleta) && (veleta < 193))
            client.print("SE o 135 &#176"); //135°
             if ((120 < veleta) && (veleta < 132))
            client.print("SSE o 157.5 &#176"); //157.5°
             if ((272 < veleta) && (veleta< 301))
            client.print("S o 180 &#176"); //180°
             if ((232 < veleta) && (veleta < 256))
            client.print("SSO o 202.5 &#176"); //202.5°
             if ((598 < veleta) && (veleta < 661))
            client.print("SO o 225 &#176"); //225°
             if ((568 < veleta) && (veleta < 628))
            client.print("OSO"); //247.5°
             if ((897 < veleta) && (veleta < 991))
            client.print("O o 270 &#176"); //270°
             if ((824 < veleta) && (veleta < 842))
            client.print("ONO o 292.5 &#176"); //292.5
             if ((842 < veleta) && (veleta < 930))
            client.print("NO o 315 &#176");//315°
             if ((666 < veleta) && (veleta < 737))
            client.print("NNO o 337.5 &#176"); //337.5°
            client.println("<br />");
            client.println("<h3>Datos de Temperatura</h3>");
            client.print("Temperatura: ");
            client.print(TEMPERATURA);
            client.print("&#8451");
            client.println("<br />");
            client.print("Radiacion Solar: ");
            client.print(Dato);
            client.print(" W/m^2");
            client.println("<br />");
            client.print("Humedad: ");
            client.print(HUMEDAD);
            client.print("%");
            client.println("<h3>Datos de Lluvia</h3>");        
            client.print("Lluvia: ");  
              if (analogValue<300)
            client.print("Lluvia Intensa");
              else if (analogValue<500)
            client.print("Lluvia Moderada");
              else
            client.print("Lluvia No Detectada");
            client.println("<br />");            
            client.print("Cantidad caida en 1hora: ");  
            client.print(litros);  
            client.print(" L/m^2");  
            client.println("<br />");            
            client.println("<br /><br />");            
            client.println("</b></body>");
            client.println("</html>");
            break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(0.1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }



}

/////////////////////////Void del Anemometro ///////////////////////////////////////
void meassure() {
  InterruptCounter = 0;
  attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);
  delay(1000 * RecordTime);
  detachInterrupt(digitalPinToInterrupt(SensorPin));
  WindSpeed = ((float)InterruptCounter / (float)RecordTime)*2.4;
 
}

void countup() {
  InterruptCounter++;
}
/////////////////////////////////////////////////////////////////////////

Para su instalación se usa una caja estanca la cual en esta se introducen el
arduino Mega, el modulo Ethernet y el circuito construido.


0 Comentarios