El alumnado de 1º Bachillerato, en la materia de Tecnología Industrial, han estado trabajando en el diseño y construcción de una estación meteorológica. La estación de compone de un sensor de humedad-temperatura, un presión-altitud y un sensor de radiación ultravioleta. Estos sensores están conectados a Arduino y el valor de ellos se visualiza en una pantalla LCD. El diseño se ha realizado con autocad y las piezas se han cortado con máquina laser.
En las figuras se muestran imágenes del diseño y la construcción.
//PROGRAMACIÓN ESTACIÓN METEREOLÓGICA
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <BMP280_DEV.h> // Include the BMP280_DEV.h library
#include <DHT.h>
#define DHTTYPE DHT11 // DHT 11
const int DHTPin = 8; // Pin digital al que está conectado el sensor DHT
DHT dht(DHTPin, DHTTYPE);
//Crear el objeto lcd dirección 0x27 y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27,16,2); //
float temperature, pressure, altitude; // Create the temperature, pressure and altitude variables
BMP280_DEV bmp280; // Instantiate (create) a BMP280_DEV object and set-up for I2C operation (address 0x77)
void setup()
{
Serial.begin(300); // Initialise the serial port
bmp280.begin(); // Default initialisation, place the BMP280 into SLEEP_MODE
bmp280.setTimeStandby(TIME_STANDBY_1000MS); // Set the standby time to 1s
bmp280.startNormalConversion(); // Start NORMAL conversion mode
// Inicializar el sensor DHT
dht.begin();
// Inicializar el LCD
lcd.init();
//Encender la luz de fondo.
lcd.backlight();
// Escribimos el Mensaje en el LCD.
}
void loop()
{
if (bmp280.getMeasurements(temperature, pressure, altitude)) // Check if the measurement is complete
Serial.print(temperature); // Display the results
Serial.print(F("*C "));
Serial.print(pressure);
Serial.print(F("hPa "));
Serial.print(altitude);
Serial.println(F("m"));
lcd.clear();
// Mostrar la presión en el LCD
lcd.setCursor(0, 0);
lcd.print("Pres: ");
lcd.print(pressure);
lcd.print(F("hPa "));
delay(1000);
// Mostrar la altitud en el LCD
lcd.setCursor(0, 1);
lcd.print("Alt: ");
lcd.print(altitude);
lcd.println(F("m"));
delay(5000);
// Obtener la humedad y temperatura del sensor DHT
float h = dht.readHumidity();
float t = dht.readTemperature();
// Limpiar la pantalla del LCD
lcd.clear();
// Mostrar la humedad en el LCD
lcd.setCursor(0, 0);
lcd.print("Hum: ");
lcd.print(h);
lcd.print("%");
// Mostrar la temperatura en el LCD
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(t);
lcd.print("C");
delay(5000);
lcd.clear();
void uv_index() ;
float sensorVoltage;
float sensorValue;
int UV_index;
String quality = "";
sensorValue = analogRead(A0);
sensorVoltage = sensorValue / 1024 * 5.0;
UV_index = sensorVoltage / 0.1;
//condition for UV state
if (UV_index <= 2) {
quality = " BAJO ";
}
else if (UV_index > 2 && UV_index <= 5) {
quality = " MEDIO ";
}
else if (UV_index > 5 && UV_index <= 7) {
quality = " ALTO ";
}
else if (UV_index > 7 && UV_index <= 10) {
quality = " MUY ALTO";
}
else {
quality = " EXTREMO ";
}
lcd.print("Ind UV ");
lcd.print(UV_index);
lcd.println(quality);
delay(5000);
}