Monitore sua planta usando Arduino

Monitore sua planta usando Arduino

Não seria ótimo se a sua planta pudesse avisar você quando está precisando de água ? Com o sensor de umidade do solo higrômetro e um Arduino, isso é possível. Monte um sistema para monitorar sua planta usando Arduino com as instruções deste post, que utiliza poucos componentes para criar um indicador visual de nível de umidade do solo e saúde da sua plantinha.

Monitore sua planta usando Arduino

Neste projeto, temos três leds que acendem conforme o nível detectado pelo sensor de umidade: vermelho para solo seco, amarelo para umidade moderada e verde para solo úmido.

O sensor de umidade do solo higrômetro

O sensor de umidade do solo consiste em 2 partes: uma sonda que entra em contato com o solo, e um pequeno módulo contendo um chip comparador LM393 (datasheet), que vai ler os dados que vêm do sensor e enviá-los para o microcontrolador, no nosso caso, um Arduino Uno. Como saída, temos um pino D0, que fica em nível 0 ou 1 dependendo da umidade, e um pino de saída analógica (A0), que possibilita monitorar com maior precisão usando uma porta analógica do microcontrolador.

Sensor de umidade do solo

O módulo tem um led que indica quando a placa está sendo alimentada corretamente, e outro que acende quando a saída digital for acionada. A sensibilidade do módulo é ajustada por meio do potenciômetro existente na placa.

Conexão do sensor ao Arduino

No nosso exemplo vamos usar a porta analógica A0 do Arduino para ler os valores do pino A0 do módulo. Os leds serão ligados às portas digitais 5, 6 e 7.

Circuito Arduino Sensor de Solo

Usamos resistores de 10K nos leds, mas você pode utilizar outros valores de resistores no circuito.

Programa de monitoração de planta usando Arduino

O programa abaixo faz a leitura da porta analógica a cada 2 segundos, e de acordo com o valor lido acende o led correspondente à solo seco (led vermelho), solo com umidade moderada (led amarelo), ou solo úmido (led verde). O valor da porta analógica e a condição de umidade também são mostrados no serial monitor.

//Programa: Monitoracao de planta usando Arduino
//Autor: FILIPEFLOP

#define pino_sinal_analogico A0
#define pino_led_vermelho 5
#define pino_led_amarelo 6
#define pino_led_verde 7

int valor_analogico;

void setup()
{
  Serial.begin(9600);
  pinMode(pino_sinal_analogico, INPUT);
  pinMode(pino_led_vermelho, OUTPUT);
  pinMode(pino_led_amarelo, OUTPUT);
  pinMode(pino_led_verde, OUTPUT);
}

void loop()
{
  //Le o valor do pino A0 do sensor
  valor_analogico = analogRead(pino_sinal_analogico);

  //Mostra o valor da porta analogica no serial monitor
  Serial.print("Porta analogica: ");
  Serial.print(valor_analogico);

  //Solo umido, acende o led verde
  if (valor_analogico > 0 && valor_analogico < 400)
  {
    Serial.println(" Status: Solo umido");
    apagaleds();
    digitalWrite(pino_led_verde, HIGH);
  }

  //Solo com umidade moderada, acende led amarelo
  if (valor_analogico > 400 && valor_analogico < 800)
  {
    Serial.println(" Status: Umidade moderada");
    apagaleds();
    digitalWrite(pino_led_amarelo, HIGH);
  }

  //Solo seco, acende led vermelho
  if (valor_analogico > 800 && valor_analogico < 1024)
  {
    Serial.println(" Status: Solo seco");
    apagaleds();
    digitalWrite(pino_led_vermelho, HIGH);
  }
  delay(100);
}

void apagaleds()
{
  digitalWrite(pino_led_vermelho, LOW);
  digitalWrite(pino_led_amarelo, LOW);
  digitalWrite(pino_led_verde, LOW);
}

Uma boa sugestão de “upgrade” nesse circuito é a utilização do NodeMCU, enviando os avisos para o seu celular ou tablet ou mostrando esses valores em uma página web. Você também pode usar esse sensor como base para montar um sistema de irrigação com Arduino.

Detalhe Circuito

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

3
Monitore sua planta usando Arduino
56 votos, 4.89 classificação média (97% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

39 Comentários

  1. Camila - 27 de junho de 2017

    Oi, o código foi feito em que site?

  2. Bruno Vidigal - 6 de junho de 2017

    Olá, estava olhando os comentários sobre os led não funcionarem. Acabei de encomendar o sensor e ainda não pude testar, mas se o problema não foi corrigido, minha impressão (olhei por cima só) é de que o void apagaleds(); vem sempre antes dos digitalWrite’s que ligam eles dentro dos if’se. Será esse o problema?
    De todo jeito muito obrigado pelo suporte! Grande abraço

  3. HENRIQUE - 29 de maio de 2017

    mano, boa noite, oq eu coloco no valor analogico?

  4. José Donizeti - 29 de maio de 2017

    Caro Adilson, somos estudantes do curso de Automação Industrial, adoramos seu trabalho e gostariamos de aplicar parte desse projeto em nosso projeto de irrigação, precisamos converter a programação de ADUINO para o PIC 18F4520 (foi o indicado pelos professores). Você teria a programação ou parte dela para o PIC acima?.
    Precisamos de um exemplo para continuidade de nosso projeto.

    ficamos no aguardo

    Obrigado
    Donizeti

  5. Rainer - 19 de maio de 2017

    Eu tentei realizar todo o passo a passo … Entretanto, a leitura realizada pelo sensor eu consigo monitorar somente pelo monitor serial. Os leds não acendem … Onde posso estar errando?

  6. George Myller Esteves de Souza - 7 de maio de 2017

    Seria possível montar em raspberry pi ?
    haveria possibilidade de utilizar saída analógica (A0), que possibilita monitorar com maior precisão?

  7. lucas - 27 de março de 2017

    gostaria de saber qual programa usou para montar o desenho do circuito com o protoboard?

  8. Arthur - 11 de março de 2017

    Oi pessoal, Blz?
    To precisando de uma ajudinha aqui: quero montar o sistema de irrigação que no caso se baseia em quanto que cada planta precisa de umidade(exemplo: batata:min.335, Max.560; alface:min.430,max.640 e por aí vai…), e tô querendo saber se esse sensor é capaz de medir esses números de mínimo e máximo.

  9. Guilherme Perim - 19 de janeiro de 2017

    Olá, poderia me dizer se essa placa é resistente? Pois já vi pessoas falando que após 1 mês de uso, o sensor de humidade começa a sofrer uma reação por estar em constante contato com o solo, e ai o projeto para de funcionar. Muito obrigado

  10. Bruno - 10 de janeiro de 2017

    Olá. Gostaria de implementar esse projeto utilizando o Wi-Fi com o esp8622. Qual app e mais recomendado para receber essas msgs no android?

  11. Luiz Felipe - 8 de janeiro de 2017

    Ola queria saber se tem como ligar os sensores em serie pra melhorar coleta em uma área maior, ou liga-los separadamente em outros lugares, sendo em um só Arduíno.

  12. FILIPE REBOLLO - 29 de novembro de 2016

    Boas,

    O que você achou da precisão deste sensor? Tenho utilizado algum sensores mas não são muito precisos. Ou retorna valores altos ou baixo, não existe meio termo.

    abs,

    Filipe

  13. Reinaldo costa - 28 de novembro de 2016

    Muito bom …eu sou leigo no assunto gostaria que se possível me ajudasse a implementar uma bomba de água para irrigar automaticamente e um LCD para dizer em que nível de umidade o solo se apresenta.

  14. Lilian rodrigues - 4 de novembro de 2016

    Olá!
    Sou professora e tenho aulas eletivas de robótica com arduino, o blog tem sido um referencial excelente para meus alunos e eu. Um dos projetos escolhidos foi este de monitoração de uma planta, para associar à outra aula de cultivo em horta.
    Inicialmente os led’s não acendiam, para tisso alterei um pouco a programação que ficou assim:

    //Solo umido, acende o led verde
    if (valor_analogico > 0 && valor_analogico 400 && valor_analogico 800 && valor_analogico < 1023)
    {
    Serial.println(" Status: Solo seco – Hora de regar!");
    digitalWrite(pino_led_vermelho, HIGH);
    digitalWrite(pino_led_verde, LOW);
    digitalWrite(pino_led_amarelo, LOW);

    }
    delay(1000);
    }

    Por outro lado não consegui alimentar sem o cabo USB. Qual alimentação você utilizou?

  15. robson henrique dos santos - 29 de outubro de 2016

    boa noite tentei utilizar essa programação e apareceu a seguinte mensagem ” exit status 1 ‘apagaleds’ was not declared in this scope ,se puder me ajudar agradeço.

  16. ivy - 25 de outubro de 2016

    Vc sabe o qnto varia essa leitura da umidade? O único dado que eu não consegui encontrar em lugar algum.
    Sem falar que: qual eh a grandeza da umidade lida?

    Vc tem esses dados pra me passar?

    brigada!

  17. João Vitor - 14 de setembro de 2016

    Como o senhor definiu a umidade ideal da planta?

  18. Ciro - 21 de agosto de 2016

    Eae pessaol, blz?

    Alguém sabe como consigo o sensor de umidade de solo no Fritzing? Encontrei a sonda, mas a outra peca nao encontro.

    Obrigado!

  19. marcus - 8 de agosto de 2016

    Olá pessoal, tudo bem? Parabens pelo site.

    Eu procuro um projeto arduino para irrigaçã com sensor de umidade e solenoide 127V, vocês tem referência pra isto?

    • Bruno - 29 de agosto de 2016

      Olá Marcus, boa tarde!

      Estou concluindo um sistema exatamente como vc propõe: acionar uma solenoide.
      É muito simples: nos mesmo pontos onde estão os comandos “digitalWrite” para acionar os leds, estariam também um comando similar para acionar um relé. Este relé vai fechar um circuito que vai alimentar sua válvula solenoide e pronto.

      Vc deve definir em que valor do higrômetro deve ocorrer o fechamento do relé e em qual valor deve ocorrer sua abertura para acionamento e desligamento respectivamente da solenoide.

      Se tiver interesse em mais informações, basta me mandar um e-mail.
      Um sistema semelhante para controle de relés vc pode ver em http://blog.filipeflop.com/modulos/controle-modulo-rele-arduino.html

      Forte abraço.

  20. Raimundo Miranda neto - 31 de julho de 2016

    Felipe,
    você já tentou Ler dois sensores de umidade ao mesmo tempo, ou seja , um na a0 e outro na a1?
    Tentei mas uma das leituras sai destorcida.
    Quando desligo uma das portas, a leitura volta ao normal.

    Obrigado,
    Raimundo.

    • Felix - 21 de dezembro de 2016

      Eu fiz com tres, mas no caso a informação que vai para o display é a media, ou seja, media = (s1 + s2 + s3)/3, meu projeto é higrometros em varias partes e cada um le, de acordo com a media, liga ou nao a bomba.

  21. Clovis Fritzen - 12 de julho de 2016

    Olá pessoal do FilipeFlop. Tem um blog (link abaixo) copiando literalmente seus textos e imagens: http://www.rbeletronica.com.br/arduino/projetos/81/monitor-de-plantas-com-arduino

  22. Frank Andriessen - 11 de julho de 2016

    Ola, gostaria de acrecentar uma valvula solenoide para abrir quando o solo estiver seco.
    Pode me ajudar

  23. JOSE CESAR FAGNANI - 30 de junho de 2016

    ADOREI OS PROGRAMAS E APLICATIVOS.
    ESTOU COMEÇANDO COM ARDUINO E GOSTARIA DE SABER COMO POSSO COPIAR ESSE PROGRAMA PRONTO PARA O MEU ARDUINO?

    AGRADECIMENTOS!!!!

  24. kennedy - 19 de junho de 2016

    como add um relé nesse projeto?
    comecei agora no arduino

  25. Fabio Arnaldo - 13 de junho de 2016

    Como é feita a calibração?

Deixe uma resposta