Proyecto realizado por los alumnos de 4º ESO, Miguel Peláez Duro y Jaime Rodríguez Pacheco, durante el curso 2017-2018 en la asignatura de Robótica.
El objetivo del proyectoo es automatizar el riego y ventilación de un mini invernadero. Para ello disponemos de una placa Arduino UNO que controla el funcionamiento de los sensores de humedad y de luz (LDR).
La idea es activar la bomba del sistema de riego cuando el sensor de humedad incrustado en la tierra no conduzca la corriente (tierra seca).
En cuanto a la ventilación, se decide abrir la cubierta del invernadero por el día (con luz diurna) y cerrarla por la noche (oscuridad). Para el sistema mecánico de apertura-cierre, se recurre a un servo.
Esquema de conexiones
Código de programación:
#include <Servo.h> //incluimos librería
int bomba = 8; //pin digital donde conectar la bomba (o el relé)
int riego; //variable de riego
Servo myservo;
int ldr = A1; //pin analogico A0 donde se conecta la LDR
int ldrvalor = 0; //variable de la ldr
int serv= 7; //pin digital donde conectar el led
int Analog_Eingang = A0 ;
int Digital_Eingang = 9 ;
int bomba = 8; //pin digital donde conectar la bomba (o el relé)
int riego; //variable de riego
Servo myservo;
int ldr = A1; //pin analogico A0 donde se conecta la LDR
int ldrvalor = 0; //variable de la ldr
int serv= 7; //pin digital donde conectar el led
int Analog_Eingang = A0 ;
int Digital_Eingang = 9 ;
void setup(){
Serial.begin(9600); //inicia comunicacion serial
Serial.println(); //monitor serie
pinMode(8,OUTPUT);//configuracion del pin 8
myservo.attach(7);
pinMode(7,OUTPUT);//configuracion del pin 7
pinMode (Analog_Eingang, INPUT);
pinMode (Digital_Eingang, INPUT);
}
void loop(){
Serial.begin(9600); //inicia comunicacion serial
Serial.println(); //monitor serie
pinMode(8,OUTPUT);//configuracion del pin 8
myservo.attach(7);
pinMode(7,OUTPUT);//configuracion del pin 7
pinMode (Analog_Eingang, INPUT);
pinMode (Digital_Eingang, INPUT);
}
void loop(){
Serial.print("Sensor de Humedad valor:"); //escribe
riego = analogRead(0); // puerto analogico para el riego
Serial.print(riego); //escribe
if (riego <= 300)
Serial.print(riego); //escribe
if (riego <= 300)
digitalWrite(8,LOW);
if ((riego > 300) and (riego <= 700))
if ((riego > 300) and (riego <= 700))
digitalWrite(8,LOW);
if (riego > 700)
if (riego > 700)
digitalWrite(8,HIGH);
delay(1000);
ldrvalor = analogRead(ldr); //lee los valores analógicos de LDR
Serial.println("lectura");
Serial.println(ldrvalor); // escribe valores de LDR en el monitor serie
delay(100); // tiempo de espera para cada medición
if (ldrvalor > 400){//cambiar numero en función de lo que se desee
myservo.write(0); //posición inicial 70º
}else
delay(1000);
ldrvalor = analogRead(ldr); //lee los valores analógicos de LDR
Serial.println("lectura");
Serial.println(ldrvalor); // escribe valores de LDR en el monitor serie
delay(100); // tiempo de espera para cada medición
if (ldrvalor > 400){//cambiar numero en función de lo que se desee
myservo.write(0); //posición inicial 70º
}else
myservo.write(50); // posición final 0º
}
}
No hay comentarios:
Publicar un comentario