Invernadero Inteligente con Arduino y Techo Corredizo Automático⚡
✅Proyecto con Arduino - Invernadero inteligente con techo corredizo automático para mantener un cultivo en codiciones adecuada para su germinación. Este proyecto combina conocimientos en electrónica, programación y ciencias naturales. Espero te sea de mucha utilidad y sea una guía para elaborar tu proyecto para la feria de ciencia y tecnología o para presentar en tu Colegio o Universidad.
⚙️Materiales:
-Arduino UNO
-Sensor temperatura DHT11
-Sensor de humedad o agua YL-38 (Puedes usar el sensor de agua rojo)
-Servomotor SG90
-Buzzer (zumbador)
-Transistor Mosfet IRF530 N
-Resistencia de 1K
-Ventilador o extractor de calor
-Pantalla LCD 16x2 con I2C
-Protoboard, jumpers, entre otros.
Diagrama de Conexiones - Arduino
Código de Programación Arduino
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include "DHT.h"
//Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas
LiquidCrystal_I2C lcd(0x27,16,2); //
//Definir pin conexión sensor temperatura
#define DHTPIN 8
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
//variables
Servo servoMotor;
int sensorHumedad = A0;
int humedad = 0;
float temperatura = 0;
int ventilador = 6;
int alarma = 5;
void setup() {
//Inicializar el LCD
lcd.init();
//Encender la luz de fondo.
lcd.backlight();
//Limpiar la pantalla
lcd.clear();
//Inicializar sensor DHT11
dht.begin();
//servomotor conectado al pin 7 e inicia en 0 grados
servoMotor.attach(7);
servoMotor.write(0);
//pines de ventilador y alarma definidos como salida e inician apagados
pinMode(ventilador,OUTPUT);
pinMode(alarma,OUTPUT);
digitalWrite(ventilador,LOW);
digitalWrite(alarma,LOW);
}
void loop() {
//humedad: seco -> 1023 y humedo -> 0
//lectura de humedad
humedad = analogRead(sensorHumedad);
humedad = map(humedad,700,1023,100,0);
//lectura de temperatura
temperatura = dht.readTemperature();
if(temperatura > 25 && temperatura < 40){
if(humedad < 50){
//si la temperatura es adecuada (entre 25 y 40 °C) y no esta lloviendo, abre el techo y enciende ventilador
servoMotor.write(90);
digitalWrite(ventilador,HIGH);
}else{
//si la temperatura es adecuada (entre 25 y 40 °C) y si esta lloviendo, cierra el techo
servoMotor.write(0);
digitalWrite(ventilador,LOW);
}
digitalWrite(alarma,LOW);
}
else if(temperatura <= 25){
//si la temperatura es menor o igual a 25 °C cierra el techo y apaga el ventilador
servoMotor.write(0);
digitalWrite(ventilador,LOW);
digitalWrite(alarma,LOW);
}
else if(temperatura >= 40){
//si la temperatura es mayor a 40 °C sin importar que este lloviendo abre el techo y enciende el ventilador y alarma
servoMotor.write(90);
digitalWrite(ventilador,HIGH);
digitalWrite(alarma,HIGH);
delay(200);
digitalWrite(alarma,LOW);
delay(100);
}
//Ubicamos el cursor en la primera posición(columna:0) de la segunda línea(fila:0)
lcd.setCursor(0, 0);
//Escribimos los datos en la pantalla
lcd.print("Humedad: ");
lcd.print(humedad + String(" % "));
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperatura);
lcd.print(String(" ") + (char)223 + String("C"));
delay(1000);
}
