MINI INVERNADERO
Alumna: D. Patricia Blanco Figueredo
Asignatura: Innovación Docente de la Especialidad de Tecnología
Máster: 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
PROYECTO
DESCRIPCIÓN DEL PROYECTO
Proyecto planteado para 3ro y 4to de la Eso en la asignatura de Tecnología.
Este proyecto plantea un Mini invernadero que permite albergar una planta o varias, ya sean para uso culinario, como puede ser una planta de perejil, de albahaca, cilantro, tomate etc, o plantas ornamentales que necesite una temperatura óptima todo el año.
El sistema del min invernadero mide la humedad y la temperatura del interior, siendo la óptima de 18 a 24 grados centígrados encendiendo el led de color azul si se encuentra a esta temperatura, e indicando en la pantalla LCD "Stable". A partir de los 25 grados se encendería el led rojo y se marcaría en la pantalla LCD el mensaje "Danger". Al detectar el sensor una temperatura de más de 25 grados centígrados se activaría el Servomotor que giraría 90 grados para que la puerta superior del mini invernadero de abriese y ventilará hasta alcanzar la temperatura menor de 25 grados activando, así nuevamente el servomotor que volvería a la posición 0 que cerraría la ventana.
COMPONENTES
1 |
Arduino Uno R3 |
1 |
Posicional Microservomotor |
1 |
LCD 16 x 2 |
1 |
250 kΩ Potenciómetro |
1 |
Rojo LED |
1 |
Azul LED |
2 |
1 kΩ Resistencia |
1 |
Sensor de Temperatura y
humedad DHT |
CÓDIGO | |
|||
#include <Servo.h> #define DHT_SENSOR_TYPE DHT_TYPE_11 static const int DHT_SENSOR_PIN = 3; DHT_nonblocking dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); // initialize the LCD library with the numbers of the interface pins LiquidCrystal lcd(7, 8, 9, 10, 11, 12); Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.print("Mi Planta"); //salida de texto inicio en pantalla lcd.setCursor(0, 2); Serial.begin(9600); myservo.attach(2); // pin del servo } /* * Poll for a measurement, keeping the state machine alive. Returns * true if a measurement is available. */ static bool measure_environment(float *temperature, float *humidity) //estado del entorno { static unsigned long measurement_timestamp = millis(); /* Measure */ if (millis() - measurement_timestamp > 1000ul) { if (dht_sensor.measure(temperature, humidity) == true) { measurement_timestamp = millis(); return (true); } } return (false); } void loop() { float temperature; // variable de temperatura decimal float humidity;//variable de humedad decimal /* Measure temperature and humidity. If the functions returns true, then a measurement is available. */ if (measure_environment(&temperature, &humidity) == true) { lcd.setCursor(0, 0); lcd.print("T = "); lcd.print(temperature, 1); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("H = "); lcd.print(humidity, 1); if (temperature > 24.0) { digitalWrite(5, HIGH); digitalWrite(4, LOW); lcd.print("Danger"); // mensaje que la temperatura alta peligro planta en peligro myservo.writeMicroseconds(1000);// se posiciona el servo en cero grados se abre la ventana } else { digitalWrite(5, LOW); digitalWrite(4, HIGH); lcd.print("Estable"); // mensaje que la temperatura idonea myservo.writeMicroseconds(2000); // se posiciona el servo en 180 grados se cierra la ventana } /* //-----Bucle Movimiento servo si quisieramos que la ventana se cierre y se abra constantemente para regular temperatura--- for (pos = 0; pos <= 120; pos += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } for (pos = 120; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position }*/ } } | ||||