Sistema de rega automática com Arduino para suas plantas, pomar ou jardim

Regador regando plantas

O verão é uma época em que muitos costumam sair de férias e as plantas são um problema, pois não podem ser regar aqueles dias quando você não está em casa. Além disso, as lojas de jardinagem costumam vender uma espécie de gel que permite que a planta seja hidratada e nutrida por cerca de um mês. Mas com o calor que está ou se você sair por mais de um mês, então você vai precisar de um sistema um pouco melhor para que quando você voltar eles ainda estejam vivos e vigorosos.

Para que isso seja possível, a solução que existe é comprar um sistema de irrigação automática que você pode programar ou, se for um fabricante e gostar do DIY, pode fazer você mesmo com o Arduino. Os materiais de que você precisa, além da placa Arduino, são fáceis de encontrar e bastante baratos, portanto, não envolvem um gasto muito grande. Além disso, para alguns elementos como o tanque de água, etc., você pode usar materiais reciclados ...

Se você navegar um pouco na web, você encontrará vários projetos deste tipo, mas talvez o mais interessante seja Jardim. Nisso serei inspirado para este projeto, visto que considero que outros sistemas de irrigação que utilizam apenas sensores de umidade e nada mais não são tão completos.

O que precisa?

Os materiais necessários para o seu sistema de irrigação automática são:

  • Nenhum produto encontrado., embora outros valham a pena.
  • Protoboard ou PCB se você quiser soldá-lo e torná-lo permanente.
  • sensor de temperatura e umidade Nenhum produto encontrado.
  • Cabos
  • Sensor YL-69 humidade no chão com um higrômetro para colocar em seu vaso ou solo.
  • mini bomba Água submersível 3V e vazão aproximada de 120 l / h.
  • Diodo 1N4007
  • transistor bipolar PN2222
  • 3 resistores: 1x 220 ohms, 1x 1k, 1x fotoresiste LDR
  • Tanque de água, que pode ser um tambor ou uma garrafa de 5 ou mais litros, etc.
  • Tubo para conectar à minibomba e levar para a (s) planta (s)

Como ideias alternativas, Eu diria que você também pode usar um sonoff ou um módulo WiFi para ativá-lo pela Internet de onde você estiver, ou melhorá-lo adicionando também uma válvula automática à torneira para programar o enchimento do tanque de água quando esvaziar etc.

Como configurar o sistema de irrigação automática

Esquema da montagem em Fritzing

A montagem é bastante simples. Você pode use o esquema acima para fazer todas as conexões. Você deve posicionar seu sistema em um local próximo à janela ou onde está localizada a planta que você deseja regar e colar as duas pontas do sensor de umidade no solo da planta, próximo ao caule.

O sistema de rega automática com Arduino regará sempre que detectar um série de condições ambientais. Por exemplo, quando detecta pouca luz ou escuridão, a temperatura do ar é concreta que iremos configurar no esboço IDE do Arduino, e a umidade no solo é baixa. Naquele momento ele acionaria o motor para regar a planta.

É aconselhável regar as plantas à noite, quando faz menos calor, pois fazê-lo em dias de calor intenso pode prejudicar mais do que beneficiar ...

Lembre-se que você deve introduza a mini bomba debaixo d'água no tanque que você destinou para irrigação, e que deve ter capacidade suficiente para agüentar os dias que você não está lá. Você pode fazer testes prévios para saber quanto tempo dura e deve deixar um pouco mais de água caso evapore com o calor intenso ...

Nem é preciso dizer que o tubo deve ser fixado à planta para que não se mova com o vento ou a água pode cair e ser desperdiçada. E acho que não seria necessário lembrar que é preciso manter um suprimento atual da placa Arduino para que funcione ...

programação

Agora é quando você deve escrever o código necessário no Arduino IDE ser capaz de programar o microcontrolador que gerencia o hardware usado. Este é o momento de adaptar os valores adequados de temperatura, umidade e luz à água de sua região, pois podem variar dependendo de onde você estiver. Mas o exemplo que você pode usar como base é (deixei comentários onde você pode modificar os valores, o resto você pode deixar assim):

Baixe o código de código-irrigação-autorega automática para o seu jardim

#include <SimpleDHT.h>
#include <SPI.h>
#define humidity_sensor_pin A0
#define ldr_pin A5
//Bibliotecas para los módulos sensores usados necesarias
//Y definición de variables para los sensores de humedad y LDR en los pines A0 y A5

int pinDHT11 = 2;
SimpleDHT11 dht11;
int ldr_value = 0;
int water_pump_pin = 3;
int water_pump_speed = 255;
//Aquí puedes dar valores desde 0 a 255 para la velocidad a la que trabajará la minibomba
//Haz pruebas previas del caudal y configura la. Yo he //elegido 255 pero ustedes pueden elegir la que estimen conveniente. A más velocidad, mayor //bombeo de agua
void setup() {
  Serial.begin(9600);
}
void loop() {
// Mide la temperatura y humedad relativa y muestra resultado
  Serial.println(“*******************************”);
  Serial.println(“Muestra DHT11…”);
  
  byte temperature = 0;
  byte humidity_in_air = 0;
  byte data[40] = {0};
  if (dht11.read(pinDHT11, &temperature, &humidity_in_air, data)) {
    Serial.print(“Lectura del sensor DHT11 fallida”);
    return;
  }
  
  Serial.print(“Muestra RAW Bits: “);
  for (int i = 0; i < 40; i++) { Serial.print((int)data[i]); if (i > 0 && ((i + 1) % 4) == 0) {
      Serial.print(‘ ‘);
    }
  }
  Serial.println(“”);
  
  Serial.print(“Muestra OK: “);
  Serial.print(“Temperatura: “);Serial.print((int)temperature); Serial.print(” *C, “);
  Serial.print(“Humedad relativa en aire: “);Serial.print((int)humidity_in_air); Serial.println(” %”);
  
  int ground_humidity_value = map(analogRead(humidity_sensor_pin), 0, 1023, 100, 0);
  Serial.print(“Humedad en suelo: “);
  Serial.print(ground_humidity_value);
  Serial.println(“%”);

  int ldr_value = map(analogRead(ldr_pin), 1023, 0, 100, 0);
  Serial.print(“Luz: “);
  Serial.print(ldr_value);
  Serial.println(“%”);
   Serial.println(“*******************************”);

//**************************************************************
// Condiciones de riego 
// Si la humedad en el suelo es igual o inferior al 60%, si la luminosidad es inferior al 30%,
// Si la temperatura es inferior al 35%, entonces el sistema de riego riega. 
// En caso de que no se  cumpla alguno o ninguno de los 3 requisitos anteriores,
// el sistema de riego no riega
//**************************************************************
//Aquí puedes variar los parámetros que necesites de 60, 35 y 30, e incluso usar otros operandos <>=...
 if( ground_humidity_value <= 60 && ldr_value<30 && temperature<35) {
 digitalWrite(water_pump_pin, HIGH);
 Serial.println(“Irrigación”);
 analogWrite(water_pump_pin, water_pump_speed);

 }
 else{
 digitalWrite(water_pump_pin, LOW);
 Serial.println(“Riego detenido”);

 }
 delay (2000); 
// Ejecuta el código cada 2000 milisegundos, es decir, 2 segundos. Puedes variar la frecuencia de muestreo
}

Mais informação - Curso de programação Arduino (PDF grátis)

Fontes

Mais informação - Jardim


36 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   ROGER FERNANDO ASTO BONIFÁCIO dito

    POR QUE eu obtenho o status de saída 1
    #include espera "FILENAME" ou ESO ON LOAD

    1.    Isaac dito

      Olá,
      Este erro é devido a algum problema de sintaxe no código. Passei por isso e tive um erro. Agora deve ficar bem.
      Uma saudação!

  2.   não fontes dito

    Olá, boa tarde, também estou com o mesmo problema:
    projeto: 3:10: erro: #include espera "FILENAME" ou

    #include <SimpleDHT.h>

    ^

    projeto: 4:10: erro: #include espera "FILENAME" ou

    #incluir <SPI.h>

    ^

    status de saída 1
    #include espera "FILENAME" ou

  3.   kevin dito

    Olá, com licença, você pode me ajudar com um erro que ocorre no código

  4.   samanta dito

    Da mesma forma que aparece um erro no código, você poderia me ajudar com esse problema, por favor

    1.    Isaac dito

      Olá,
      Por favor, deixe informações sobre o erro que você cometeu para que eu possa ajudar. Se eu não souber o conteúdo do erro, é difícil para mim ajudá-lo ou localizar onde está o problema ...
      Uma saudação

  5.   samantha vega ama dito

    Olá, aparece este erro, como posso resolvê-lo?

    erro: SimpleDHT.h: Esse arquivo ou diretório não existe

    #include

    ^ ~~~~~~~~~~~~~~

    compilação terminada.

    status de saída 1
    SimpleDHT.h: Esse arquivo ou diretório não existe

    1.    Isaac dito

      Olá Samantha,
      Esse erro ocorre porque o IDE do Arduino parece não detectar a biblioteca SimpleDHT.h. Você o instalou corretamente? Caso você tenha, tente usar uma versão mais atual do Arduino IDE se for mais antiga ...
      Você pode ver mais informações aqui:
      https://www.arduino.cc/en/Guide/Libraries
      E pegue a biblioteca aqui:
      https://github.com/adafruit/DHT-sensor-library
      Uma saudação!

  6.   pimenta dito

    Primeiramente obrigado pela postagem que é muito interessante e muito válida, mas eu li isso:

    "É aconselhável regar as plantas à noite, quando faz menos calor, pois fazê-lo em dias de calor intenso pode prejudicar mais do que beneficiar ..."

    Já ouvi isso muitas vezes, mas gostaria que alguém me explicasse claramente como isso os machuca. Cultivo plantas há mais de 20 anos e quando está muito calor não há nada que apreciem mais do que uma boa rega e poder ficar com um regador molhando as folhas.

    Isso é um mito de que só faz as plantas sofrerem ... Quando você está com calor e com sede, você espera a noite para beber? ... pense nisso

    obrigado pelo post !!!

    1.    Isaac dito

      Olá Pepe,
      Obrigado pela sua contribuição. Moro no campo e às vezes, quando o calor é muito intenso, regar as plantas em horas de calor pode matá-las. Eu mesmo verifiquei (além disso, não é o mesmo dependendo da área geográfica onde você está, na minha terra faz muito calor). Pode ser por vários motivos:
      1-Porque as gotas d'água nas folhas agem como um copo, queimando-as com a luz do sol como uma lupa.
      2-As plantas têm estômatos que fecham para não desidratar quando faz sol. Se você regá-los, eles abrem e podem desidratar.
      3-Se eles estiverem em um pote de plástico, o efeito pode ser ainda pior.
      Uma saudação!

  7.   Andrés caro dito

    OLÁ!
    Gostei muito do projeto elaborado, tenho meu próprio jardim e estou testando este projeto como uma experiência pessoal, sem obter um benefício lucrativo, só queria perguntar se você poderia me ajudar com o código, pois me dá um erro , Eu tenho a biblioteca DHT, mas ao verificá-la, lanço um erro no final do código: {Serial.println ("Watering interrompido");} e me diz que é: stray '\ 342' no programa.
    Tenho muito pouco conhecimento do assunto e investiguei e não consegui resolver.
    Eu apreciaria se você me ajudasse. Obrigado 😀

    1.    Isaac dito

      Olá,
      O código está correto? Ou seja, não tem erros de digitação?
      Por outro lado, você pode verificar mais sobre esse erro aqui:
      https://forum.arduino.cc/index.php?topic=386225.0
      Uma saudação

  8.   José Arredondo dito

    Olá Boa tarde, desculpe, não sei se tem como entrar em contato com você, é que está me dando muitos erros com esse código no arduino

    1.    Isaac dito

      Olá a todos,
      Limpei o código e o escrevi novamente, para ver se houve um erro por algum motivo no código que é exibido na web. Para que possa ser baixado, deixei o novo código em um link de download antes do código que aparece na web. Se você clicar aqui, poderá baixá-lo em formato de texto. Espero que não haja mais problemas.
      Uma saudação!

  9.   Chaki dito

    Como posso adicionar o módulo wi-fi? e seria possível controlá-lo fazendo um aplicativo?

  10.   Chaki dito

    Como está a comida também: c?

    1.    Luís Alberto Alvarado dito

      Oi Chaqui! Estou tentando fazer o mesmo que você, você poderia me ajudar se terminou seu código ????

  11.   Nerea dito

    Uma questão de qual componente seria aquele entre a placa Arduino e o sensor DHT11?
    Obrigado!

    1.    Isaac dito

      Oi Nerea,
      Você quer dizer o diodo e o resistor? Observe que na seção anterior ao diagrama há uma lista de todos os componentes ...
      Uma saudação!

  12.   Jannet dito

    Olá, você tem um vídeo de como estava seu sistema de irrigação.?

  13.   Alejandro Barros dito

    com licença só funciona para arduino uno ou também para arduino mega

  14.   Emmanuel dito

    Olá, bom dia, desculpe, eu queria fazer uma pergunta por que quando eu abro o monitor ide do Arduino, obtenho uma leitura do sensor dht11 com falha?
    Todo o programa compilou bem e carregou bem, o detalhe é quando eu abro o monitor e aquela legenda aparece.
    O que pode ser?

  15.   DANIEL ALFREDO RIVAS MEDINA dito

    OLÁ, AMIGO GRANDE TRABALHO, MAS DÁ ERRO NESTA PARTE Não existe tal arquivo ou diretório

    #include
    O QUE SERÁ? Gostaria muito de receber sua ajuda

  16.   Isabell dito

    OLÁ, ISTO É PÚBLICO, MAS NÃO IMPORTA, REALMENTE QUERO AGRADECER A PESSOA OU PESSOAS QUE PARTICIPARAM DO DESENVOLVIMENTO DESTE PROJETO, TALVEZ PARA MUITOS É TOLO, MAS VOCÊ SALVOU A MINHA VIDA, POR ISSO MUITO OBRIGADO ESCOLA A QUE NÃO QUERO PERTENCER E A VERDADE NÃO Lamento ter aprendido, OBRIGADO PELA PÁGINA, DESEJO-LHE O MELHOR.

  17.   Ayelen dito

    Como posso adicionar o módulo wi-fi? e seria possível controlá-lo fazendo um aplicativo?

  18.   Brian dito

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    pinLDR int = A5;
    motor interno = 8;
    // ——————————————————————————————————————————————-
    configuração vazia ()
    {
    Serial.begin (9600);
    Valor LDR = 0;
    Serial.begin (9600);
    Serial.println ("TESTE DO SISTEMA DE IRRIGAÇÃO");
    dht.begin ();
    pinMode (MOTOR, SAÍDA);
    Serial.println ("Valor do sensor de umidade");
    }
    // ——————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («================================================== = ============================ »);
    umidade interna = analogRead (A0);
    Serial.print ("Ler:");
    Serial.println (umidade);
    if (umidade> = 0 & umidade> = 1000) {
    Serial.println ("Sensor em solo seco");
    } else if (umidade> 500 e umidade <= 1000) {
    Serial.println ("Sensor em solo úmido");
    } else if (umidade <= 500) {
    Serial.println ("Sensor na água");
    }
    valorLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valorLDR);
    Serial.println (")");
    atraso (2000);
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Falha ao ler o sensor DHT11!");
    voltar;
    }
    Serial.print ("Umidade:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    if (h <= 50 && LDRvalue <70 && t = 1000) {
    digitalWrite (MOTOR, ALTO);
    Serial.println ("Água obrigatória");
    }
    mais {
    digitalWrite (MOTOR, BAIXO);
    Serial.println ("NÃO deve regar");
    }
    atraso (1000);
    }

    Eu só usei o
    -DTH de temperatura e umidade no pino 2
    - o fotorresiste LDR no pino A5
    -motor no pino 8
    -sensor de umidade do solo no pino A0
    este é o meu código, espero e funcione para você

    - sensor de umidade para solo

  19.   Jose L. dito

    Bom dia, estou tendo problemas com o código que recebo e estou usando o software mais recente:

    sketch_nov12c: 1: 10: erro fatal: SimpleDHT.h: Esse arquivo ou diretório não existe

    #include

    ^ ~~~~~~~~~~~~~~

    compilação terminada.

    status de saída 1

    SimpleDHT.h: Esse arquivo ou diretório não existe

    Gostaria que você me ajudasse a resolver isso por favor, como sou novo nisso não sei como funciona muito bem. Obrigada.

  20.   banheiro dito

    Olá, você poderia deixar uma imagem melhor de como o circuito está conectado? Não é bem apreciado, com que tensão de alimentação é alimentado? Obrigado

  21.   Brian dito

    #include "DHT.h"
    DHT dht (2, DHT11);
    int valueLDR;
    pinLDR int = A5;
    motor interno = 8;
    // ——————————————————————————————————————————————-
    configuração vazia ()
    {
    Serial.begin (9600);
    Valor LDR = 0;
    Serial.begin (9600);
    Serial.println ("TESTE DO SISTEMA DE IRRIGAÇÃO");
    dht.begin ();
    pinMode (MOTOR, SAÍDA);
    Serial.println ("Valor do sensor de umidade");
    }
    // ——————————————————————————————————————————————-
    void loop ()
    {
    Serial.println («================================================== = ============================ »);
    // —————————————————————————————–
    // ———– Sensor de umidade, solo ——————————————————–
    umidade interna = analogRead (A0);
    Serial.print ("Ler:");
    Serial.println (umidade);
    if (umidade> = 0 & umidade> = 1000) {
    Serial.println ("Sensor em solo seco");
    } else if (umidade> 500 e umidade <= 1000) {
    Serial.println ("Sensor em solo úmido");
    } else if (umidade <= 500) {
    Serial.println ("Sensor na água");
    }
    // —————————————————————————————–
    // ————— Resistência à foto ———————————————————-
    valorLDR = analogRead (pinLDR);
    Serial.print ("LIGHT (");
    Serial.print (valorLDR);
    Serial.println (")");
    atraso (2000);
    // —————————————————————————————–
    // ————— Sensor DTH11 de temperatura e umidade no ar —————————–
    float h = dht.readHumidity ();
    float t = dht.readTemperature ();
    if (isnan (h) || isnan (t)) {
    Serial.println ("Falha ao ler o sensor DHT11!");
    voltar;
    }
    Serial.print ("Umidade:");
    Serial.print (h);
    Serial.print ("%");
    Serial.print ("Temperatura:");
    Serial.print (t);
    Serial.println ("* C");
    // —————————————————————————————–
    // ———— Condição para regar ou não regar ————————————————-
    // (umidade do ar) (fotorresiste) (temperatura) (umidade da terra)
    if (h <= 50 && LDRvalue <70 && t = 1000) {
    digitalWrite (MOTOR, ALTO);
    Serial.println ("Água obrigatória");
    }
    mais {
    digitalWrite (MOTOR, BAIXO);
    Serial.println ("NÃO deve regar");
    }
    atraso (1000);
    }

    // assim que os pinos, verifique se a bomba é um pino pwm e
    // aquele do fotoresiste LDR é analógico e também o da umidade do solo igual a um pino
    // analógico e aqueles do dth11 do sensor de temperatura e umidade do ar qualquer que seja
    // pinos digitais ainda podem ser baseados no código original desta página
    // para conectar os pinos
    // funciona com 5v

  22.   Erick dito

    Recebo um erro nesta parte do código »loop vazio () {» poderia me ajudar

  23.   André P. dito

    Olá, você poderia me dizer quais bibliotecas ou qual é o nome delas para instalá-las já que quando eu colo o código ele me diz que preciso da biblioteca DTH

  24.   Andres Guzman dito

    Olá, o sistema parece muito bom. Tentei recriá-lo, mas no momento de incluir o código e a biblioteca correspondente, o seguinte apareceu.

    No arquivo incluído em C: \ Users \ User \ Documents \ Arduino \ TEST_1 \ TEST_1.ino: 5: 0:
    C: \ Arquivos de programas (x86) \ Arduino \ libraries \ DHT-sensor-library-master / DHT_U.h: 36:10: erro fatal: Adafruit_Sensor.h: Não existe esse arquivo ou diretório
    #include
    ^ ~~~~~~~~~~~~~~~~~~~~
    compilação terminada.
    status de saída 1
    Erro de compilação para cartão Arduino Uno.

    Não tenho certeza se preciso de alguma outra livraria, se alguém puder me ajudar por favor.

  25.   PEPE GONZALES dito

    Projeto muito bom, porém depois de verificar o código, compilá-lo e enviá-lo, a única coisa que aparece no monitor serial é "Falha na leitura do DHT11" não vai além desse ponto

  26.   Rous dito

    Olá, estou com vários problemas, por favor me ajudem e se alguém tiver um vídeo ou encontrei um vídeo detalhado que posso ver

  27.   Sebastian dito

    Eu tenho uma pergunta, onde colocar a corrente e que tipo de corrente pode ser usada.

  28.   Adrian dito

    Você pode adicionar um contorno de resolução mais alta? algumas conexões não são claramente visíveis