You are on page 1of 14

1

Proyecto
De Riego
Automtic
o Usando
Arduino

2
Desarrollo de
productos
lvaro Vigueras Alarcn

electrnicos.

ndice

Objetivo.

Justificacin......

Obtencin del material...

Montaje del proyecto..

Programacin del proyecto...

Visualizacin del proyecto.

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:

En las patillas digitales conectaremos:


- En la 3 un interruptor.
- En la 7 otro interruptor.
En las patillas analgicas conectaremos:
-

En la A0 el sensor de humedad y temperatura.


En la A2 un potencimetro.
En la A3 otro potencimetro.
En la A4 la patilla SDA de la pantalla LCD.
En la A5 la patilla SCL de la pantalla LCD.

De la patilla Vin de nuestro Arduino sacamos los 12V que activarn


el rel, que a la vez este activar la electrovlvula.
Los 12V se los daremos nosotros al Arduino mediante un
transformador de 12V. Aunque en mi caso, el transformador no da
los 12V, si no que da 15,7 o 15,8V, pero no causa ningn problema,
ya que el Arduino soporta ese voltaje.

7
Programacin del proyecto:

Programamos nuestro proyecto en lenguaje arduino, con su propio


programa descargado de la web www.arduino.cc.
Antes de empezar a programar, descargamos la librera de la
pantalla LCD, ya que nos har falta para poder programarla. Dicha
librera se llama LiquidCrystal_I2C.h y la podemos descargar
fcilmente de internet.
En el programa se diferencia claramente donde est programado
cada componente y su funcin, aunque de todas formas doy
pequeas explicaciones de por donde vamos en el programa para
no liarnos.
El programa trata principalmente de que nos muestre en pantalla
LCD la temperatura y la humedad, y que cambiando de posicin un
interruptor, nos muestre los datos que introducimos mediante los
potencimetros. Una vez tengamos los datos que queremos, con
otro interruptor, cambindolo de posicin, guarde estos datos y los
exponga en la salida de la electrovlvula.
Tambin habr un LED, que cuando esta encendido nos indicar
cundo est leyendo los datos el Arduino, y cuando no esta
encendido no lee nada, simplemente muestra en el LCD los datos.
La electrovlvula se activar en el momento en el que nosotros le
digamos al Arduino que lea los datos que le estamos metiendo,
mientras tanto, la electrovlvula funcionar con los datos anteriores,
es decir, si no tenia ningn dato antes, no funcionar.

8
return result;

Visualizacin:
Declaramos todas las
libreras para poder
utilizarlas

#define DHT11_PIN 0

Declaramos todas las


variables que hemos
utilizado:

#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++)

int horas = A3;


int estado;
int cambio = 0;

{
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 minutos = A2;

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:");

Realizamos la regla de tres


para transformar los datos
del potencimetro en
minutos y horas.

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:");

cada = analogRead (horas);

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 Marte

13,45

13,45

113,87