Está en la página 1de 14

Proyecto

Riego
automático

Desarrollo de productos

Álvaro Vigueras Alarcón electrónicos.

1
Índice

Objetivo………………………………………………………………. 3

Justificación……………...……………………………………….….. 3

Compra del material….……………….……………………………. 4

Montaje del proyecto……………………………………………….. 5

Programación del proyecto….…………………………………….. 7

Visualización del proyecto…………………………………………. 8

Presupuesto………………………………..………………………. 12

Notación bibliográfica………………………………………………. 14

2
OBJETIVO:

El proyecto trata de un sistema de regadío automático, 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 pequeño,


una pantalla LCD, un arduino UNO, una electroválvula y dos
macetas para la comprobación.

Justificación:

El riego automático es un invento tanto para uso doméstico (regar


las macetas de su casa) como para uso industrial (campos de
cultivo grandes o pequeños).
En nuestro caso es para uso doméstico, ya que lo hemos
incorporado en un invernadero pequeño.
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 deberán 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 regadío automático es muy alto, pues todas las
plantas se mantendrán vivas y con un color vivo dentro de su
invernadero doméstico.

3
Compra del material
Compra de material necesario:

- Arduino UNO.

- Pantalla LCD 2x16.

- Sensor de humedad y temperatura.

- 2 Potenciómetros.

- Manguera de 0,5mm de ancho.

- Electroválvula 12 V.

- Cables de conexión.

- 2 Placas board.

- 2 Interruptores.

- Pulverizador de agua.

- LED Verde 5mm.

- 2 Resistencias de 10K Ω.

- Caja de plástico pequeña.

- Invernadero pequeño.

4
Montaje del proyecto:

En las patillas digitales conectaremos:

- En la 3 un interruptor.
- En la 7 otro interruptor.

En las patillas analógicas conectaremos:

- En la A0 el sensor de humedad y temperatura.


- En la A2 un potenciómetro.
- En la A3 otro potenciómetro.
- 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 activarán


el relé, que a la vez este activará la electroválvula.

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 ningún problema,
ya que el Arduino soporta ese voltaje.

5
6
Programación 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 librería de la


pantalla LCD, ya que nos hará falta para poder programarla. Dicha
librería se llama LiquidCrystal_I2C.h y la podemos descargar
fácilmente de internet.

En el programa se diferencia claramente donde está programado


cada componente y su función, aunque de todas formas doy
pequeñas 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 posición un
interruptor, nos muestre los datos que introducimos mediante los
potenciómetros. Una vez tengamos los datos que queremos, con
otro interruptor, cambiándolo de posición, guarde estos datos y los
exponga en la salida de la electroválvula.

También habrá un LED, que cuando esta encendido nos indicará


cuándo está leyendo los datos el Arduino, y cuando no esta
encendido no lee nada, simplemente muestra en el LCD los datos.

La electroválvula se activará en el momento en el que nosotros le


digamos al Arduino que lea los datos que le estamos metiendo,
mientras tanto, la electroválvula funcionará con los datos anteriores,
es decir, si no tenia ningún dato antes, no funcionará.

7
Visualización: return result;

Declaramos todas las }


librerías para poder
Declaramos todas las
utilizarlas
variables que hemos
#define DHT11_PIN 0 utilizado:

#include <Wire.h> int electrovalvula;

#include <LiquidCrystal_I2C.h> int a,b,c,d;

LiquidCrystal_I2C
lcd(0x27,16,2);
int interruptor2 = 3;
Declaramos todas las
int cuanto;
funciones:
int cada;
byte read_dht11_dat()
int interruptor = 7;
{
int minutos = A2;
byte i = 0;
int horas = A3;
byte result=0;
int estado;
for(i=0; i< 8; i++)
int cambio = 0;
{
int led = 5;
while(!(PINC &
_BV(DHT11_PIN))); // wait for void setup()
50us
{
delayMicroseconds(30);
DDRC |= _BV(DHT11_PIN);
if(PINC & _BV(DHT11_PIN))
PORTC |= _BV(DHT11_PIN);
result |=(1<<(7-i));
lcd.init();
while((PINC &
lcd.backlight();
_BV(DHT11_PIN))); // wait '1'
finish pinMode (led,OUTPUT);

} pinMode (interruptor, INPUT);

8
pinMode return;
(interruptor2,INPUT);
}
Serial.begin(9600);
delayMicroseconds(80);
}
dht11_in = PINC &
Programamos la _BV(DHT11_PIN);
electrovalvula
if(!dht11_in)
void loop(){
{
byte dht11_dat[5];
Serial.println("dht11 start
byte dht11_in; condition 2 not met");

byte i; return;

// start condition }

// 1. pull-down i/o pin from delayMicroseconds(80);


18ms
// now ready for data
PORTC &= reception
~_BV(DHT11_PIN);
for (i=0; i<5; i++)
delay(18);
dht11_dat[i] =
PORTC |= _BV(DHT11_PIN); read_dht11_dat();

delayMicroseconds(40);

DDRC &= DDRC |= _BV(DHT11_PIN);


~_BV(DHT11_PIN);
PORTC |= _BV(DHT11_PIN);
delayMicroseconds(40);
byte dht11_check_sum =
dht11_in = PINC & dht11_dat[0]+dht11_dat[1]+dht
_BV(DHT11_PIN); 11_dat[2]+dht11_dat[3];

if(dht11_in) // check check_sum

{ if(dht11_dat[4]!=
dht11_check_sum)
Serial.println("dht11 start
condition 1 not met"); {

9
Serial.println("DHT11 {
checksum error");
Serial.println("estado=1");
}
lcd.print("Temperatura:");
Realizamos la regla de tres
lcd.setCursor(12,0);
para transformar los datos
del potenciómetro en lcd.print(dht11_dat[2], DEC);
minutos y horas.
lcd.setCursor(14,0);
cuanto = analogRead
lcd.print("C");
(minutos);

cuanto = map lcd.setCursor(3,1);


(cuanto,0,1023,1,61); lcd.print("Humedad:");
cada = analogRead (horas); lcd.print(dht11_dat[0], DEC);
cada = map lcd.setCursor(13,1);
(cada,0,1023,1,24);
lcd.print("% ");

Serial.println(digitalRead(interr }
uptor)); else
delay(500); {
estado = Serial.println("estado=0");
digitalRead(interruptor);
lcd.setCursor (0,0);
Hacemos que nos lo
muestre en pantalla 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:");

10
lcd.setCursor (15,1); a=analogRead(cuanto);

lcd.print ("h"); b=analogRead(cada);

lcd.setCursor (10,1); delay (500);

lcd.print (cada);//Cada c=a*60;


cuanto tiempo quiero que
d=b*60*60;
riegue
Serial.println(c);
lcd.setCursor(0,0);
Serial.println(d);
if (cuanto<10){
delay(b);
lcd.setCursor (11,0);

lcd.print(" ");}
digitalWrite(electrovalvula,HIG
if (cada<10){ H);

lcd.setCursor (11,1); delay(a);

lcd.print(" ");}
digitalWrite(electrovalvula,LO
}
W);
Con el interruptor 2 leemos
}
lo que hemos marcado en el
potenciómetro. else
{digitalWrite(electrovalvula,LO
if (interruptor2==HIGH){
W);
digitalWrite(led, HIGH);
digitalWrite(led,LOW);
c=map(cuanto,1,61,1,3660);
}
d=map(cada,1,24,1,87840);
}

11
Presupuesto:
Producto Nombre Unidades Precio/Unida Total
d

Arduino 1 26,56€ 26,56€


UNO

Pantalla 1 17,26€ 17,26€


LCD

Sensor
Humedad
Y 1 6,18€ 6,18€
temperatura

Potencióme 2 2,22€ 4,44€


tro

Manguera
5 mm. 1 5,99 5,99

Electroválv 1 15€ 15€


ula

12
Cables de 1 4,50€ 4,50€
conexión

Placa
Board 2 6,50€ 13€

Interruptor 2 1,38€ 2,76€

LED Verde 1 0,15€ 0,15€


5mm

Resistencia 2 0,06€ 0,12€


10K

Pulverizado 1 3,50€ 3,50€


r de agua

Caja
pequeña 1 1€ 1€
de plástico

13
Invernadero
shoket 1 13,45 € 13,45€

TOTAL 113,87

Notación bibliográfica:

www.ikea.com

www.electan.com

Catálogo Dieltron.

Material instituto.

Bazar luna

14

También podría gustarte