Vídeo demostrativo
Descripción del Proyecto
El objetivo del presente proyecto es el de controlar a través de un sensor de temperatura y humedad, las condiciones ambientales del interior de un invernadero que se mostrarán en un display y mediante un motor de corriente continúa (un ventilador) y una alarma que nos dará el aviso, se mantendrá la temperatura dentro de los límites determinados previamente.
Como entradas tenemos un sensor de temperatura y humedad, que en el esquema de Tinkerdad lo represento con un sensor de temperatura, ya que el programa no da la opción de seleccionar un único dispositivo que contenga las dos variables, que si lo contiene el paquete físico de Elegoo y como salidas, se mostrarán los valores de temperatura y humedad en la pantalla LCD, en la que se regulará la intensidad a través de un potenciómetro, se regulará la temperatura del interior del invernadero mediante un ventilador y se dará aviso del exceso de la misma con una alarma (buzzer). Como complementos se añadirán un módulo de suministro extra de energía para el tablero de circuitos y una pila de 9V.
Este proyecto podría encuadrarse dentro de la asignatura de tecnología para alumnos de 3º o 4º de la ESO.
Esquema de conexiones con Tinkerdad
Esquema del circuito con Tinkerdad
Código de Programación
#include <LiquidCrystal.h>
#include <dht_nonblocking.h>
#define DHT_SENSOR_TYPE DHT_TYPE_11
#define ENABLE 5
#define DIRA 3
#define DIRB 4
int i;
static const int DHT_SENSOR_PIN = 2;
DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );
// room temperature in Celsius
const float baselineTemp = 24.0;
int tempPin = 0;
// BS E D4 D5 D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup() {
lcd.begin(16, 2);
//---set pin direction
pinMode(ENABLE,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
}
/* Poll for a measurement, keeping the state machine alive. Returns
true if a measurement is available */
static bool measure_environment( float *temperature, float *humidity )
{
static unsigned long measurement_timestamp = millis( );
/* Measure once every three seconds. */
if( millis( ) - measurement_timestamp > 3000ul )
{
if( dht_sensor.measure( temperature, humidity ) == true )
{
measurement_timestamp = millis( );
return( true );
}
}
return( false );
}
void loop() {
float temperature;
float humidity;
/* Measure temperature and humidity. If the functions returns
true, then a measurement is available. */
if( measure_environment( &temperature, &humidity ) == true )
{
lcd.print( "T = " );
lcd.print( temperature, 1 );
lcd.print( " deg. C " );
lcd.setCursor(0, 1);
lcd.print( "H = " );
lcd.print( humidity, 1 );
lcd.print( " % " );
} // if the temperature exceeds the set temperature
if (temperature >= baselineTemp) {
tone(6, 2000, 500);
delay(500);
tone(6, 5000, 500);
delay(500);
tone(6, 7000, 500);
delay(500);
tone(6, 9000, 500);
delay(1000);
tone(6, 7000, 500);
delay(500);
tone(6, 5000, 500);
delay(500);
tone(6, 2000, 500);
delay(500);
digitalWrite(ENABLE,HIGH);// Encender motor-ventilador si Tª>Temperatura base
digitalWrite(DIRA,HIGH);//one way
digitalWrite(DIRB,LOW);
delay(3000);
}
// if the temperature not exceeds the set temperature
if (temperature < baselineTemp ) {
digitalWrite(ENABLE, LOW);// Apagar motor-ventilador
}
}
Datos
Alumno: Aitor Ondarra Vega
Asignatura: Innovación Docente de la Especialidad de Tecnología.
Master: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas.
Centro: Universidad de Salamanca.
Curso: 2022/2023.
No hay comentarios:
Publicar un comentario