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.
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);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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.
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;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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++;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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);
}
/////////////////////////////////////////////////////////////////
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.
#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);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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.
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:
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:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Diseño de plaqueta:
Una vez ya programado y ver que todo anduvo pasamos a diseñar su plaqueta:
Clase N°10: Clase Final
Código usado:
//////////////////////////////////////////////////////
0 Comentarios