0% encontró este documento útil (0 votos)
49 vistas16 páginas

Programación Arduino para Invernadero

El documento describe un proyecto de programación en C para un invernadero utilizando Arduino. Incluye descripciones de sensores y actuadores como un sensor ultrasónico HC-SR04, un higrómetro para medir la humedad del suelo, y un sensor DHT11 para medir la temperatura y humedad ambiental. También incluye ejemplos de código C para controlar una electrobomba basada en los niveles de humedad del suelo y para medir distancias con el sensor ultrasónico.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
49 vistas16 páginas

Programación Arduino para Invernadero

El documento describe un proyecto de programación en C para un invernadero utilizando Arduino. Incluye descripciones de sensores y actuadores como un sensor ultrasónico HC-SR04, un higrómetro para medir la humedad del suelo, y un sensor DHT11 para medir la temperatura y humedad ambiental. También incluye ejemplos de código C para controlar una electrobomba basada en los niveles de humedad del suelo y para medir distancias con el sensor ultrasónico.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PROGRAMACIÓN EN C DE ARDUINO

(Proyecto Invernadero)

I.- Sensores y Actuadores.

1.1 Sensor HC-SR04 : Sensor de ultrasonido

Su funcionamiento consiste en emitir un sonido ultrasónico por uno de sus transductores, y esperar
que el sonido rebote de algún objeto presente, el eco es captador por el segundo transductor. La
distancia es proporcional al tiempo que demora en llegar el eco.
1.2 El higrómetro.

Cuenta con un sistema de electrodos, el señor mide la resistencia entre dos electrodos que
dependerá de la humedad del suelo, para un suelo muy húmedo tendremos una resistencia muy baja
, para un suelo muy seco la resistencia será muy alta.

La tarjeta de acondicionamiento cuenta con 4 pines :

DO: salida digital , salida de un amplificador operacional modo comparador. Se activará cuando el
nivel de salida de humedad es menor al deseado. (este nivel de umbral se regula con el
potenciómetro)

A0: Salida analógica, es la salida de un divisor de tensión entre una resistencia fija y una resistencia
de los electrodos, entrega un voltaje analógico de 0 voltios para un suelo muy húmedo y hasta 5
voltios para un suelo muy seco.

Vcc: conexión a 5 voltios

GND: Tierra , conexión al circuito.

1.3 Sensor de humedad y temperatura ambiental. (DTH-11)

Características:

 Tensión de operación: 3 a 5 VDC 2.5mA max.


 Rango de medición de humedad: 20-80% ±5% de exactitud.
 Rango de medición de temperatura: 0-50ºC ±2% de exactitud.
 Máxima velocidad de muestreo: 1Hz.

Es un dispositivo analógico, aunque se conecte a un pin digital.


II.- Programador

SUMINISTRA Pin de
Fuente ENERGIA entrada
externa
3.3 y 5 Voltios 6 y 12 Volt
7-12 VOLTIOS
1.- Programando la electrobomba.

// entradas y salidas
const int bomba=13; // SALIDA
const int humedad= A0; // ENTRADA (HIGROMETRO, sensor de humedad)

void setup() {

// put your setup code here, to run once:


[Link](9600);
pinMode(humedad,INPUT); // se determina la humedad como entrada
pinMode(bomba,OUTPUT); // se determina como salida
}

void loop() {
// put your main code here, to run repeatedly:
int SensorValue = analogRead(humedad); se lee el valor analogico de la humedad
[Link](SensorValue); se imprime el valor
if(SensorValue >=700) //Los valores obtenidos van desde cero sumergido en agua, a 1023 en
el aire
//o en un suelo muy seco
// un suelo ligeramente humedo daria valores tipicos de 600-700, suelo seco : 800-1023
{
//si la tierra esta seca comenzará a regar
[Link]("La tierra esta seca, comienza el riego ")_; // bomba en ON
digitalWrite(bomba,LOW);
delay(1000); // tiempo un segundo (el riego)
}
else
{
digitalWrite(bomba,HIGH);
[Link]("La tierra esta humeda, apagar el riego"); // indica que ya
esta humeda y se apaga bomba
delay(1000); //el tiempo se puede variar que exija la planta

}
}

2.- Programando el sensor de ultrasonido.

int TRIG=10; //pin trigger del sensor


// El trigger manda un pulso de ultrasonidos y echo se encarga de recibirlo
// por lotanto tenemos el tiempo que tarda en recibirlo y la velocidad,
//la del sonido, así de facil
// como el recorrido es ida y vuelta se divide entre dos
int ECO=9; // pin de conexion al sensor
int LED=13; // pin de conexion led
int DURACION;
int DISTANCIA;

void setup() {
// put your setup code here, to run once
pinMode(TRIG,OUTPUT);
pinMode(ECO,INPUT);
pinMode(LED,OUTPUT);
[Link](9600);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TRIG,HIGH); //enviar un pulso alto de 1 mseg
delay(1);
digitalWrite(TRIG,LOW);
DURACION=pulseIn(ECO,HIGH); tiempo que tarda en recibir el pulso
DISTANCIA=DURACION/58.2 // se convierte el valor de tiempo en distancia
para obtner
//en cm la medida, se pone una constante dada por el fabricante del sensor
(58.2)
[Link](DISTANCIA); // envio de informacion distancia a la
computadora para ver la informacion
delay(200); //demora entre dato y dato
if(DISTANCIA <=20 && DISTANCIA>=0)
{
digitalWrite(LED,HIGH); //este sera el indicador de obstaculos
delay(DISTANCIA*10); //demora proporcional a la distancia
digitalWrite(LED,LOW);

}
UNIENDO TODOS LOS PROGRAMAS

#include <dht.h>
dht DHT; // necesario para hacer el llamado de la librería
#define DTH11_PIN 8

//SENSOR DE ULTRASONIDO//
int TRIG=10; //pin Trigger del sensor
int ECO =9; //pin de Conexion sensor
int LED =11; //pin de conexion led
int DURACION;
int DISTANCIA;

//RIEGO HUMEDAD BOMBA//


const int bomba= 13; //salida
const int humedad= A0; //(HIGROMETRO sensor de humedad)

void setup() {
// put your setup code here, to run once:
pinMode(TRIG,OUTPUT);
pinMode(ECO,INPUT);
pinMode(LED,OUTPUT);
[Link](9600);
[Link](9600);
[Link](9600);

pinMode(humedad,INPUT); //SE DETERMINA LA HUMEDA COMO ENTRADA


pinMode(bomba,OUTPUT); //SE DETERMINA LA BOMBA COMO SALIDA
}

void loop() {
// put your main code here, to run repeatedly:
DHT.read11(DHT11_PIN); //lee lo que envia el sensor

//TEMPERATURA
[Link]("Temperatura= ");
[Link]([Link]); //Valor de la temperatura
[Link]("C "); //grados celcius

//HUMEDAD RELATIVA
[Link]("Humedad= ");
[Link]([Link]);
[Link]("% ");
delay(2000);

digitalWrite(TRIG,HIGH);
delay(1);
digitalWrite(TRIG,LOW);
DURACION=pulseIn(ECO,HIGH); //TIEMPO QUE TARDA EN RECIBIR EL PULSO
DISTANCIA =DURACION/58.2; // PARA OBTENER EN cm se divide entre 58.3 dato
fabricante
[Link](DISTANCIA);
delay(200); //DEMORA ENTRE DATO Y DATO
if(DISTANCIA >=0 && DISTANCIA <=20)
{
digitalWrite(LED,HIGH); //Este será el indicador de detector de
obstáculos
delay(DISTANCIA*10); //demora proporcional a la distancia
digitalWrite(LED,LOW);

}
//SISTEMA DE RIEGO SENSADO CON HIGROMETRO
int SensorValue = analogRead(humedad);
[Link](SensorValue); [Link]("-");
if(SensorValue>=700)
{
//SI LA TIERRA ESTA SECA COMENZARA A REGAR
[Link]("la tierra esta seca, comienza el riego")
digitalWrite(bomba,LOW);
delay(1000);
} else
{
digitalWrite(bomba,HIGH);
[Link]("la tierra está humeda, apagar el riego");
delay(1000) //EL TIEMPO SE PUEDE VARIAR SEGUN EXIJA LA PLANTA

}
// HUMEDAD Y ELECTROBOMBA OK
// SENSOR DE ULTRASONIDO OK

#include <DHT.h>
#include <DHT_U.h>
#define DHT11_PIN 8
DHT dht(8,DHT11);

//SENSOR DE ULTRASONIDO//
int TRIG=10; //pin Trigger del sensor
int ECO =9; //pin de Conexion sensor
int LED =13; //pin de conexion led
int DURACION;
int DISTANCIA;

//RIEGO HUMEDAD BOMBA//


const int bomba= 13; //salida
const int humedad= A0; //(HIGROMETRO sensor de humedad)

void setup() {
// put your setup code here, to run once:
pinMode(TRIG,OUTPUT);
pinMode(ECO,INPUT);
pinMode(LED,OUTPUT);
[Link](9600);
pinMode(humedad,INPUT); //SE DETERMINA LA HUMEDA COMO ENTRADA
pinMode(bomba,OUTPUT); //SE DETERMINA LA BOMBA COMO SALIDA
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TRIG,HIGH);
delay(1);
digitalWrite(TRIG,LOW);
DURACION=pulseIn(ECO,HIGH); //TIEMPO QUE TARDA EN RECIBIR EL PULSO
DISTANCIA =DURACION/58.2; // PARA OBTENER EN cm se divide entre 58.3 dato
fabricante
[Link](DISTANCIA);
delay(200); //DEMORA ENTRE DATO Y DATO
if(DISTANCIA >=0 && DISTANCIA <=20)
{
digitalWrite(LED,HIGH); //Este será el indicador de detector de
obstáculos
delay(DISTANCIA*10); //demora proporcional a la distancia
digitalWrite(LED,LOW);

///////
int SensorValue =analogRead(humedad);
[Link](SensorValue);
if(SensorValue >=700)
{
digitalWrite(bomba,LOW);
delay(4000);
}
else
{
digitalWrite(bomba,HIGH);
delay(3000);
}
}
Programa

Incluir librería

Añadir librería .zip

(buscas tu zip en tu carpeta download)

Clic en abrir

DHT.h no such file or directory

Tools

Manage library

DHT.h (escribes el el cuadrode busqueda)

DHT sensor library by adafruit hacer clic en install

Compilar te va a salir :

Fatal error: Adafruit_Sensor.h no such file….

Tools

Manage libraries

En el cuadro de busqueda escribe : unified

Buscas y encontraras:

Adafuit unified sensor by adafruit hacer clic en install

[Link]
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);

void setup() {
[Link](16,2);
}

void loop() {
[Link](0,0);
[Link]("GREEN HOME sac");
[Link](0,1);
[Link]("Respira pureza en un hogar feliz");

}
SENSOR DE DISTANCIA : OK

//SENSOR DE DISTANCIA
// FUNCIONA , VER DIAGRAMA WORD TITULO : DISTANCIA OK
int TRIG=10;
int ECO=9;
int LED=3;
int DURACION;
int DISTANCIA;
void setup() {
// put your setup code here, to run once:
pinMode(TRIG,OUTPUT);
pinMode(ECO,INPUT);
pinMode(LED,OUTPUT);
[Link](9600);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(TRIG,HIGH);
delay(1);
digitalWrite(TRIG,LOW);
DURACION=pulseIn(ECO,HIGH);
DISTANCIA=DURACION/58.2;
[Link](DISTANCIA);
delay(200);
if(DISTANCIA <= 20 && DISTANCIA >=0) {

digitalWrite(LED,HIGH);
delay(DISTANCIA*10);
digitalWrite(LED,LOW);
}

También podría gustarte