Proyecto
Riego
automtic
o
2
Desarrollo de
productos
lvaro Vigueras Alarcn
electrnicos.
ndice
Objetivo.
Justificacin......
Presupuesto...
12
Notacin bibliogrfica.
14
3
OBJETIVO:
El proyecto trata de un sistema de regado automtico, dependiendo
de la temperatura y la humedad que haya dentro del invernadero,
con el fin de aumentar la comodidad del usuario e imponiendo el
tiempo que quiere que est regando, y cada cuanto quiere que
riegue su invernadero.
Para ello utilizaremos una maqueta de un invernadero pequeo,
una pantalla LCD, un arduino UNO, una electrovlvula y dos
macetas para la comprobacin.
Justificacin:
El riego automtico es un invento tanto para uso domstico (regar
las macetas de su casa) como para uso industrial (campos de
cultivo grandes o pequeos).
En nuestro caso es para uso domstico, ya que lo hemos
incorporado en un invernadero pequeo.
Este trabajo es muy til, ya que las personas no tienen que estar
pendientes de cuando tienen que regar sus plantas, o cuanta agua
deben echarle, simplemente debern elegir cada cuanto quiere que
riegue, y cuanto tiempo quiere que est regando.
La comodidad para el usuario, y el despreocupamiento que causa
este proyecto de regado automtico es muy alto, pues todas las
plantas se mantendrn vivas y con un color vivo dentro de su
invernadero domstico.
4
Compra del material
Compra de material necesario:
- Arduino UNO.
- Pantalla LCD 2x16.
- Sensor de humedad y temperatura.
- 2 Potencimetros.
- Manguera de 0,5mm de ancho.
- Electrovlvula 12 V.
- Cables de conexin.
- 2 Placas board.
- 2 Interruptores.
- Pulverizador de agua.
- LED Verde 5mm.
- 2 Resistencias de 10K .
- Caja de plstico pequea.
- Invernadero pequeo.
5
Montaje del proyecto:
7
Programacin del proyecto:
8
return result;
Visualizacin:
Declaramos todas las
libreras para poder
utilizarlas
#define DHT11_PIN 0
#include <Wire.h>
int electrovalvula;
#include <LiquidCrystal_I2C.h>
int a,b,c,d;
LiquidCrystal_I2C
lcd(0x27,16,2);
Declaramos todas las
funciones:
byte read_dht11_dat()
int interruptor2 = 3;
int cuanto;
int cada;
int interruptor = 7;
{
byte i = 0;
byte result=0;
for(i=0; i< 8; i++)
{
while(!(PINC &
_BV(DHT11_PIN))); // wait for
50us
delayMicroseconds(30);
if(PINC & _BV(DHT11_PIN))
result |=(1<<(7-i));
while((PINC &
_BV(DHT11_PIN))); // wait '1'
finish
}
int led = 5;
void setup()
{
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
lcd.init();
lcd.backlight();
pinMode (led,OUTPUT);
pinMode (interruptor, INPUT);
9
pinMode
(interruptor2,INPUT);
Serial.begin(9600);
}
Programamos la
electrovalvula
void loop(){
byte dht11_dat[5];
byte dht11_in;
return;
}
delayMicroseconds(80);
dht11_in = PINC &
_BV(DHT11_PIN);
if(!dht11_in)
{
Serial.println("dht11 start
condition 2 not met");
byte i;
// start condition
// 1. pull-down i/o pin from
18ms
PORTC &=
~_BV(DHT11_PIN);
delay(18);
PORTC |= _BV(DHT11_PIN);
return;
}
delayMicroseconds(80);
// now ready for data
reception
for (i=0; i<5; i++)
dht11_dat[i] =
read_dht11_dat();
delayMicroseconds(40);
DDRC &=
~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in = PINC &
_BV(DHT11_PIN);
if(dht11_in)
{
Serial.println("dht11 start
condition 1 not met");
DDRC |= _BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
byte dht11_check_sum =
dht11_dat[0]+dht11_dat[1]+dht
11_dat[2]+dht11_dat[3];
// check check_sum
if(dht11_dat[4]!=
dht11_check_sum)
{
10
Serial.println("DHT11
checksum error");
{
Serial.println("estado=1");
lcd.print("Temperatura:");
lcd.setCursor(12,0);
lcd.print(dht11_dat[2], DEC);
lcd.setCursor(14,0);
cuanto = analogRead
(minutos);
lcd.print("C");
lcd.setCursor(3,1);
cuanto = map
(cuanto,0,1023,1,61);
lcd.print("Humedad:");
lcd.print(dht11_dat[0], DEC);
cada = map
(cada,0,1023,1,24);
Serial.println(digitalRead(interr
uptor));
delay(500);
estado =
digitalRead(interruptor);
Hacemos que nos lo
muestre en pantalla
lcd.setCursor(13,1);
lcd.print("% ");
}
else
{
Serial.println("estado=0");
lcd.setCursor (0,0);
lcd.print ("Cuanto:");
if (estado != cambio)
lcd.setCursor (10,0);
lcd.print (cuanto);
lcd.clear();
lcd.setCursor (13,0);
cambio = estado;
lcd.print ("min");
lcd.setCursor(0,1);
if (estado==HIGH)
lcd.print ("Cada:");
lcd.setCursor (15,1);
11
lcd.print ("h");
b=analogRead(cada);
lcd.setCursor (10,1);
delay (500);
lcd.print (cada);//Cada
cuanto tiempo quiero que
riegue
c=a*60;
d=b*60*60;
Serial.println(c);
lcd.setCursor(0,0);
Serial.println(d);
if (cuanto<10){
delay(b);
lcd.setCursor (11,0);
lcd.print(" ");}
if (cada<10){
digitalWrite(electrovalvula,HIG
H);
delay(a);
lcd.setCursor (11,1);
lcd.print(" ");}
}
Con el interruptor 2 leemos
lo que hemos marcado en el
potencimetro.
if (interruptor2==HIGH){
digitalWrite(electrovalvula,LO
W);
}
else
{digitalWrite(electrovalvula,LO
W);
digitalWrite(led, HIGH);
digitalWrite(led,LOW);
c=map(cuanto,1,61,1,3660);
d=map(cada,1,24,1,87840);
a=analogRead(cuanto);
}
}
Presupuesto:
Producto
Nombre
Unidades Precio/Unida
d
Total
Arduino
UNO
26,56
26,56
Pantalla
LCD
17,26
17,26
6,18
6,18
2,22
4,44
Sensor
Humedad
Y
temperatur
a
Potencime
tro
Manguera
5 mm.
5,99
5,99
Electrovlv
ula
15
15
Cables de
conexin
4,50
4,50
Placa
Board
6,50
13
Interruptor
1,38
2,76
LED Verde
5mm
0,15
0,15
Resistencia
10K
0,06
0,12
Pulverizado
3,50
3,50
r de agua
Caja
pequea
de plstico
Invernadero
shoket
TOTAL
Notacin bibliogrfica:
www.ikea.com
www.electan.com
Catlogo Dieltron.
Material instituto.
Bazar luna
13,45
13,45
113,87