SOBRE ESTE PROYECTO

Este proyecto ahorra tiempo y mantiene la planta sana de forma continua gracias a la automatización del invernadero. También es capaz de comunicarse tanto por señal visual como acústica con seres externos capaces de recibirlos.

COMPONENTES

  • LED de 5 mm: rojo
  • LED de 5 mm: verde
  • Resistencia de foto
  • Resistencia de 10 k ohmios
  • Resistencia 221 ohmios
  • Sensor de movimiento PIR (genérico)
  • Zumbador
  • Sensor de temperatura
  • Micro-servomotor SG90
  • Arduino
  • nivel de agua
  • higrómetro
  • relé
  • soporte de lámpara
  • Bombilla LED, GLS mate
  • enchufe
  • bomba de agua
  • cables de conexión

INTRODUCCIÓN:

El propósito de este proyecto es construir un invernadero usando Arduino. El invernadero trata las plantas de forma totalmente automática. En particular, se basa en una placa Arduino Uno, a la que giran en torno a varios sensores útiles para analizar las condiciones necesarias para su correcto funcionamiento. Estos incluyen la presencia del sensor de humedad y temperatura (TMP36), dos de fotorresistencia, un nivel de agua y finalmente un PIR HC – SR501. La operación de este proyecto es detectar un conjunto de datos utilizando los sensores descritos anteriormente y en función del valor que detecten se activarán diferentes mecanismos que pueden mantener la planta sana.

FUNCIÓN:

1. En este proyecto, se colocan dos fotoresistores sobre la superficie superior del invernadero, que transmiten varios valores en función de la luminosidad del entorno exterior. Posteriormente promediarás los valores y según este encenderá una luz interna para alimentar las plantas o accionarás un servomotor que se encarga de abrir el panel superior permitiendo que la luz del ambiente externo irradie los arbustos dentro del invernadero, salvando lo artificial. iluminación en caso de brillo necesario para alimentarlos. Fuera del invernadero se coloca un sensor de temperatura que es capaz de detectar la temperatura externa, este factor influye en el accionamiento del servo. Si el valor detectado estará por debajo de un umbral preestablecido, el servo no actuará incluso si el brillo externo es alto y la lámpara permanecerá encendida para iluminar las plantas.

2. Hay dos sensores de humedad colocados dentro de los recipientes donde se verificará el nivel de humedad del suelo que determinará el nivel de sequedad de las plantas y en base a ello actuará una bomba que automáticamente regará las plantas debajo del invernadero. actuar cuando el nivel del líquido en el interior del tanque, gracias a la presencia del sensor de nivel de agua que permitirá la medición, superará un cierto umbral preestablecido y tomará el agua necesaria para el riego de donde se encuentre el sensor que medirá el nivel del líquido se colocará en su interior. Este sensor permitirá que suene un zumbador y encienda un LED rojo solo al final del líquido dentro del recipiente, solo sonará en presencia de un movimiento frente al invernadero determinado por el piro. Mientras que si el nivel será alto se encenderá un LED verde.

Esquema de invernadero

CÓDIGO

#include <Servo.h>
Servo servo ;
int nivel = 0 ;
temperatura de flotación = 0 ;
int valhumidity = 0 ;
int detección = 0 ;

int pir = 2 ;
int buzzerPin = 3 ;
int relé1 = 4 ;
int relé2 = 5 ;
int verde = 9 ;
int rojo = 10 ;

int ldr1 ;
int ldr2 ;
int temp ;
int nivel de agua ;
int humedad1 ;
int humedad2 ;


configuración vacía () {
Serial.begin ( 9600 ) ;
servo.attach ( 11 ) ;
pinMode ( verde, SALIDA ) ;
pinMode ( rojo, SALIDA ) ;
pinMode ( pir, ENTRADA ) ;
pinMode ( buzzerPin, SALIDA ) ;
pinMode ( relé1 , SALIDA ) ;
pinMode ( relé2, SALIDA ) ;
pinMode (nivel de agua, ENTRADA ) ;
pinMode ( humedad1 , ENTRADA ) ;
pinMode ( humedad2 , ENTRADA ) ;
pinMode ( temperatura, ENTRADA ) ;
pinMode ( ldr1, ENTRADA ) ;
pinMode ( ldr2, ENTRADA ) ;
}
bucle vacío ()
{
  temp = analogRead ( A2 ) ;
  temperatura  = (( temp * 0 .00488 ) - 0 .5 ) / 0 .01 ;
  detección = digitalRead ( pir ) ;
  nivel de agua = analogRead ( A3 ) ;
  
  ldr1  = analogRead ( A0 ) ;
  ldr2  = analogRead ( A1 ) ;
  Serial.print ( "ldr1 es:" ) ;
  Serial.print ( ldr1 ) ;
  Serial.print ( "|" ) ;
  Serial.print ( "ldr2 es:" ) ;
  Serial.print ( ldr2 ) ;
  Serial.print ( "|" ) ;
  Serial.print ( "el nivel del agua es:" ) ;
  Serial.println (nivel de agua ) ;
  Serial.print ( "|" ) ;
  Serial.print ( "la temperatura es:" ) ;
  Serial.println ( temperatura ) ;
  
  if (( ldr1-ldr2 ) > = 250  ||  ( ldr2-ldr1 ) > = 250 )  { // vero se una delle due espressioni è vera
   si ( detección == ALTA )
   servo.write ( 0 ) ;
    digitalWrite ( relé1 , ALTO ) ; {
    para ( int i = 1 ; i < 6 ; i ++ )  {
  tono ( buzzerPin, 1000 , 500 ) ;
  digitalWrite ( rojo, ALTO ) ;
  digitalWrite ( verde, BAJO ) ;
  retraso ( 500 ) ;    
  digitalWrite ( rojo, BAJO ) ;
  retraso ( 500 ) ; }
  retraso ( 5000 ) ; }}
    
  else {
    if ((( ldr1 + ldr2 ) / 2 ) > 700 && temperatura> 15   ) {
    servo.write ( 90 ) ;
    digitalWrite ( relé1 , BAJO ) ;
    retraso ( 1000 ) ; }
    
    if ((( ldr1 + ldr2 ) / 2 ) < 700  || temperatura> 15   ) {
    servo.write ( 0 ) ;
    digitalWrite ( relé1 , ALTO ) ;
    retraso ( 1000 ) ; }
    
    
  si (nivel de agua < 180 ) {
  digitalWrite ( rojo, ALTO ) ;
  digitalWrite ( verde, BAJO ) ; 
  digitalWrite ( relé2, BAJO ) ;
    si ( detección == ALTA ) {
    para ( int i = 1 ; i < 5 ; i ++ )  {
  tono ( buzzerPin, 1000 , 500 ) ;
  retraso ( 1000 ) ; }
  retraso ( 5000 ) ; }}
    
  else {
  digitalWrite ( verde, ALTO ) ;
  digitalWrite ( rojo, BAJO ) ;
  digitalWrite ( relé2, BAJO ) ;
  hacer {
  digitalWrite ( relé2, ALTO ) ;
  humidity1 = analogRead ( A4 ) ;
  humidity2 = analogRead ( A5 ) ; }
  while  ((( humedad1 + humedad2 ) / 2 ) > 500 ) ;
  digitalWrite ( relé2, BAJO ) ;
  retraso ( 1000 ) ;
  }}}
https://create.arduino.cc/