Projeto Sensor de Umidade do Solo Arduino com Alerta por SMS

O sistema de alerta por SMS de baixa umidade é essencial para qualquer casa que possui plantas. Em várias casas encontrarmos diversas plantas no jardim. Essas plantas necessitam diariamente de nutrientes e água para o seu crescimento. A água é um elemento essencial para o seu crescimento, porém, corre o risco de a pessoa esquecer e, consequentemente, a planta irá morrer. Vamos resolver isso hoje com o Projeto Sensor de Umidade do Solo Arduino.

Dessa forma, para evitar que a planta morra por falta de água, devemos criar um mecanismo para alertar o usuário, quando o solo da planta estiver com baixa umidade.

Assim, esse artigo tem a finalidade de apresentar como criar um sistema de alerta por mensagem no celular, para sinalizar ao usuário que a planta está com baixa umidade, conforme apresentado na Figura 1.

Projeto Sensor de Umidade do Solo Arduino com Alerta SMS

Figura 1 – Sistema GSM de Alerta de Baixa Umidade no Projeto Sensor de Umidade do Solo Arduino.

 

Logo, por meio desse projeto, você aprenderá os seguintes pontos:

  • Como desenvolver um sistema de alerta por mensagem com o Módulo SIM800L;
  • Como funciona o Módulo SIM800L;
  • Funcionamento do Sensor de Umidade Resistivo;

Para você montar o circuito e alcançar esses objetivos, serão necessários alguns componentes eletrônicos.

 

Itens Necessários para o Projeto Sensor de Umidade do Solo Arduino:

Portanto, de acordo com a lista apresenta iremos abordar cada etapa do projeto e todos os tópicos de aprendizado serão apresentados.

 

Sistema de Alerta SMS de Umidade da Planta

O Sistema de Alerta por SMS consiste em um projeto que irá monitorar a umidade através de um sensor de umidade do solo. Quando a umidade estiver abaixo do valor de 60%, o sistema deverá enviar um SMS para o celular do usuário. Dessa forma, o usuário irá receber o alerta e colocar água em sua planta.

Após a umidade ultrapassar o valor de 60%, o sistema enviará uma nova mensagem para informar que a umidade está normal.

Dessa forma, foi desenvolvido o seguinte circuito com o objetivo de solucionar esse problema.

Esquemático Projeto Sensor de Umidade do Solo Arduino com Alerta SMS

Figura 2 – Circuito do Projeto Sensor de Umidade do Solo Arduino com Alerta SMS

O circuito apresentado na Figura 2 é relativamente simples. Conforme é possível observar, temos o Arduino UNO, que será responsável por fazer a leitura do sinal do sensor de umidade e enviar o SMS através do módulo SIM800L.

Primeiramente, devemos espetar o sensor no solo e em seguida, o sistema iniciará a leitura da umidade do solo. O valor lido será comparado com um valor padrão de 60%, ou seja, se o valor for menor que 60%, o usuário será alertado.

Assim, o sistema enviará a mensagem “Umidade Baixa!” para o celular registrado pelo usuário. Portanto, ele receberá a notificação em seu celular e deverá colocar água em sua planta.

Após colocar água e a umidade ultrapassar o valor de 60%, o sistema irá enviar a mensagem “Umidade Normal”, para informar que a umidade está acima dos 60%.

Em seguida, explicaremos a lógica completa para você desenvolver o seu próprio sistema de alerta SMS de baixa umidade para suas plantas.

 

O Programa de Leitura de Umidade e Envio de Alerta SMS

Inicialmente, disponibilizamos o código completo do Projeto Sensor de Umidade do Solo Arduino com Alerta por SMS. Em seguida, explicaremos o passo a passo da lógica desenvolvida nesse sistema.

Primeiramente, a biblioteca SoftwareSerial foi declarada e os pinos Tx e Rx foram definidos, conforme apresentado na porção de código a seguir.

Posteriormente, devemos inserir o número do celular que será responsável por receber as mensagens de alerta, conforme apresentado a seguir.

Na hora de inserir o número do celular, é importante ficar atento à forma correta. Primeiramente, insira o código do Brazil (+55), depois insira o DDD da sua cidade e, por fim, insira o número do seu celular com o número 9 na frente.

Após isto, foi definido o pino do sensor e foram declaradas as variáveis do programa.

Em seguida, foram realizadas as configurações do projeto na função setup().

 

Função Setup – Configurações Iniciais

Inicialmente, foi realizada a inicialização da comunicação serial e comunicação do objeto chip, que foi criado a partir da biblioteca SoftwareSerial.

Por fim, o pino do sensor é configurado como entrada e é realizada uma primeira leitura do valor do sensor. Esse valor será utilizado como valor de referencia inicial para a variável ValorAnterior.

Em seguida, o fluxo entrará na função loop.

 

Função Loop – Execução da Lógica Principal

Nesta função será executada toda a lógica principal do nosso projeto. A seguir, apresentaremos a estrutura do código na função loop.

Primeiramente, é realizada a leitura do valor analógico do sensor. O sensor de umidade varia o sinal de saída com base no nível de umidade do solo. De acordo com essa resistência, haverá uma variação de tensão na saída do pino do sensor e esse sinal será lido pela linha de código a seguir.

Em seguida, o valor lido é mapeado em uma escala de 0% a 100%, conforme é apresentado no código abaixo.

Dessa forma, o valor 0 representa uma umidade alta e o valor 100 representa baixa umidade. Entretanto, para facilitar a compreensão, foi realizada uma inversão desses valores, de modo que o 0 represente baixa umidade e o 100 representará alto percentual de umidade. Isto foi realizado através da linha de código a seguir.

Finalmente, o sistema entrará na condição para testar se o valor lido pelo sensor está acima ou abaixo do percentual de 60% de umidade, conforme apresentado a seguir.

Para que estas duas condições sejam verificadas, é preciso que a condição abaixo seja verdadeira.

O fluxo de código só passará nessa condição, se o valor da umidade variar em uma unidade para cima ou para baixo em relação ao valor anterior. Isto evita que o sistema realize a verificação de forma contínua. Portanto, caso o valor seja alterado em relação ao valor anterior em no mínimo uma unidade, serão executadas as seguintes condições internas.

 

Verificação do valor de umidade do alerta GSM de baixa umidade

Dessa forma, se o valor da umidade for menor que 60%, o sistema entrará na primeira condição e enviará um alerta de baixa umidade para o usuário. Essa condição pode ser vista no bloco de código abaixo.

Após entrar na condição, o sistema atribuirá o valor 1 á variável BaixaUmid. Esta variável é utilizada para garantir que o fluxo de código entre apenas uma única vez na condição, quando a umidade está abaixo de 60%. Isto serve para evitar que o sistema entre continuamente na condição e envie inúmeras mensagens para o usuário e consuma os créditos do celular.

Em seguida, atribuirá o valor 0 à variável AltaUmid. Isto servirá para garantir que o fluxo de código possa entrar na condição de umidade acima de 60%. Finalmente, o sistema executará a função MensUmidBaixa().

A partir dessa mensagem, o usuário irá receber a mensagem de Umidade Baixa em seu celular, conforme apresentado na figura abaixo.

Mensagem de Alerta de Baixa Umidade

Figura 3 – Mensagem de Alerta de Baixa Umidade.

Após o usuário receber a mensagem, colocar água na planta e o sistema verificar que a umidade ultrapassou 60%, o usuário receberá uma mensagem de Umidade Normal, conforme apresentada na figura abaixo.

Mensagem de Alerta de Umidade Normal

Figura 4 – Mensagem de Alerta de Umidade Normal.

Finalmente, o sistema atribui o valor da variável umidade para a variável ValorAnterior a fim de atualizar e usá-la como referência para entrar na condição de testar os valores de umidade.

Todas essas mensagens são enviadas através de comandos implementados nas funções MensUmidBaixa() e MensUmidNormal(). A seguir, explicaremos o processo de implementação dessas duas funções.

 

O Módulo SIM800L  e suas funções de envio de SMS

O Módulo SIM800L é o coração do Projeto Sensor de Umidade do Solo Arduino. Ele é o responsável por enviar o SMS para o celular do usuário. Porém, ele possui uma linguagem de programação própria, ou seja, ele utiliza o que conhecemos como comandos AT. A Figura 3 apresenta  o módulo  SIM800L.

Módulo SIM800L.

Figura 3 – Módulo SIM800L.

O termo AT é uma abreviação da palavra ATtention. Os comandos AT são instruções utilizadas para controlar um modem. Nesses comandos, toda e qualquer instrução de controle começará com o termo AT e entre as diversas tecnologias que suportam esses comandos, destacamos a tecnologia GSM/GPRS, que é a tecnologia utilizada em nosso projeto.

Portanto, baseado nessas instruções, iremos apresentar o passo a passo da implementação das funções de envio das mensagens.

 

Implementação da função de Envio de SMS

A implementação da função de envio de SMS consiste em enviar comandos AT para o seu módulo SIM800L. Para isso, foi necessário criar uma comunicação serial entre o Arduino e o Módulo SIM800L.

A seguir, explicarei a função de envio de mensagem de umidade baixa. O processo de implementação é o mesmo para outra função.  Apenas alteramos a mensagem enviada.

Conforme é possível observar na função MensUmidBaixa(), foram implementados diversos comandos AT. Cada comando tem sua finalidade e isso será explicado agora.

 

O Envio do Texto SMS

Todos os comandos são enviados pela serial que criamos através da biblioteca SoftwareSerial. O primeiro comando enviado é o AT+CMGF=1.

Conforme citado anteriormente, é obrigatório em qualquer comando colocar o prefixo AT na frente. O termo CMGF = 1 determina o modo de operação de envio de mensagens. Quando utiliza-se o valor 1, o módulo é configurado para enviar mensagens em formato de texto.

Após a execução desse comando, aguarde o tempo de 1 segundo para finalizar a configuração. Em seguida, é necessário enviar o próximo comando e, mais uma vez, aguarda-se 1 segundo, conforme apresentado no bloco de código abaixo.

Esse comando é utilizado para enviar um SMS para um número GSM. Conforme é possível observar, a estrutura da mensagem que será impressa carrega a string SeuNumero. Essa string possui o número de telefone cadastrado para receber a mensagem.

Após a string número, temos um caractere de retorno “\r”. Finalmente, o sistema aguardará 1 segundo, carregará a mensagem “Baixa Umidade” na string SMS e executará um delay de 100 ms, conforme apresentado no bloco de código a seguir.

Após o tempo de 100 ms, o sistema deve enviar o comando char(26), que é referente ao comando CTRL + Z. Ele é utilizado para indicar o fim de mensagem. Dessa forma, teremos o envio completo de uma mensagem para o usuário.

 

Conclusão

Portanto, através do Projeto Sensor de Umidade do Solo Arduino com Alerta por SMS foi possível compreender passo a passo como funciona o processo de uso do sensor de umidade resistivo para leitura de umidade do solo, verificação do nível de umidade e, finalmente, enviar um texto SMS para o usuário cadastrado através módulo SIM800L.

Além desse projeto, você pode alterar o código e desenvolver novas funcionalidade. Sugerimos que você insira um LCD 16×2 e adicione um menu de configuração para cadastro do telefone de usuário no sistema. Portanto, por meio desse mecanismo, o operador poderá inserir ou apagar qualquer usuário cadastrado.

Dessa forma, o sistema ficará dinâmico e independente de um único número cadastrado.

Para que você compreenda esse processo de criação de menu, sugerimos a leitura de outros artigos em nosso blog e que te ajudam a compreender a respeito dessas funcionalidades.

Categorias
ArduinoProjetos

Técnico em Automação Industrial e graduando do curso de Tecnologia em Mecatrônica Industrial pelo Instituto Federal do Ceará. E, atualmente, trabalha como desenvolvedor de projetos, sistemas inteligentes e criador de conteúdo por meio da empresa Silícios Lab para o seu canal e para o blog da UsinaInfo. Nas horas livres, desenvolve alguns projetos com Microcontroladores e Arduino.
20 Número de Comentários
  • Alex
    4 março 2020 at 13:04
    Deixe seu Comentário

    Opa Diogo,

    meu môdulo GSM SIM800L parou de funcionar sem mais nem menos, tem alguma dica, estava funcionando perfeitamente.

  • Diego Moreira
    19 março 2020 at 11:37
    Deixe seu Comentário

    Oi, Alex! É importante, primeiramente, você verificar o circuito. Verifique a alimentação e realize alguns testes.
    Primeiro, faça teste via comando AT pra verificar se o seu dispositivo está respondendo.

    Verifique a alimentação e a montagem do circuito também. Além disso, nesse próprio artigo eu deixei um circuito básico para você realizar a montagem do projeto. Você já verificou como eu montei?

    É difícil oferecer uma resposta para resolver o seu problema, pois é preciso avaliar circuito e hardware.

    Mas faça a avaliação por partes. Primeiro faça testes de comando AT e verifique se o seu módulo está respondendo. Isso já será um bom sinal que o seu dispositivo está funcionando e respondendo aos comandos.

    Forte abraço da Equipe UsinaInfo.

    • Bruno
      28 julho 2021 at 12:57
      Deixe seu Comentário

      Olá meu sensor não está fazendo a leitura do solo estou usando as porta A0, GND E VCC sabe me dizer qual o motivo de não está fazendo a leitura do solo ou tenho que fazer alguma modificação na programação

      • Matheus Gebert Straub
        2 agosto 2021 at 17:12
        Deixe seu Comentário

        Olá Bruno! A princípio, pelo que vi não é necessário nenhuma alteração no código, além do número os detalhes de uso do GSM, recomendo realizar o tese apenas do sensor de umidade assim como no projeto a seguir, caso suspeite que o seu sensor poça estar com algum problema: https://www.usinainfo.com.br/blog/sensor-de-umidade-de-solo/

        • Bruno
          4 agosto 2021 at 10:37
          Deixe seu Comentário

          Olá Matheus preciso de uma ajuda sua por favor, eu estou usando seu código não editei nada. No Modulo sim800l estou usando o Diodo na porta VCC o RXD está conectado na porta 11 do Arduino e TXD está na porta 10 do Arduino e o GND está no negativo da protoboard, na parte de SENSOR o VCC dele está conectado no positivo da protoboard junto do GND no negativo e o A0 está na porta Analog do Arduino, a protoboard está todo alimentada com o 5V do Arduino. Quando eu executo o programa era para ir logo fazendo a leitura do solo correto pra depois manda o SMS para um usuário cadastrado! o problema está na leitura do sensor pois foi feito teste tanto com sensor e com modulo e está tudo ok quando o código e lido ele só aparece isto (Inicializando Sistema…) e fica nisso não desenvolver para função principal. Será que pode da uma ajuda nesse minha duvida pois tentei de tudo e nada. Desde já agradeço.

  • Rafael Oliveira
    26 setembro 2020 at 13:34
    Deixe seu Comentário

    e de qnts Volts seria a alimentação ? 5v serve ?

    • Matheus Gebert Straub
      29 setembro 2020 at 15:14
      Deixe seu Comentário

      Boa Tarde Rafael! A alimentação do SIM800L é feita através de fontes de 3.7V a 4.2V e com corrente máxima de aproximadamente 2A.

  • Rafael Oliveira
    26 setembro 2020 at 13:35
    Deixe seu Comentário

    e quanto ao problema da Anatel bloquear o Modulo SIM 800L, tem alguma resolução ? ou algo pra prevenir o bloqueio? estou fazendo um projeto semelhante de TCC e queria saber sobre essas coisas

    • Matheus Gebert Straub
      7 outubro 2020 at 08:49
      Deixe seu Comentário

      Bom Dia Rafael! Infelizmente até o momento não consegui encontrar nenhuma resolução para este problema.

  • ANderson R.
    16 novembro 2020 at 21:10
    Deixe seu Comentário

    poderiam me enviar uma foto ou video da parte de cima do circuito no meu email pfvr? pois ficou meio confuso pra mim

    • Matheus Gebert Straub
      27 novembro 2020 at 12:39
      Deixe seu Comentário

      Bom Dia Anderson! Para visualizar de uma maneira diferente o projeto, recomendo que verifique o esquema de ligação, mesmo que as conexões pareçam não ser as mesmas que as da foto, ele é utilizado como base para a instalação de todos os dispositivos.

  • Gilberto Vieira
    20 novembro 2020 at 15:20
    Deixe seu Comentário

    preciso de um chip com créditos para enviar a mensagem ?

    • Matheus Gebert Straub
      27 novembro 2020 at 11:57
      Deixe seu Comentário

      Bom Dia Gilberto! Sim, o projeto é desenvolvido com microcontrolador, mas mantem-se todos os padrões de uso das operadoras, é necessário ter disponibilidade de crédito tanto para realizar ligações quanto enviar mensagens.

  • renato fernandes
    5 julho 2021 at 15:57
    Deixe seu Comentário

    Boa tarde !! estou montando um projeto parecido e estou com dificuldade na parte de montar o circuito, acima mostra um circuito diferente do projeto em execução, poderia me da uma ajuda quais porta no Arduino foi usada, e na questão do chip no código tem que por o numero que vai está no modulo (chip) ou de outro celular

    • Matheus Gebert Straub
      6 julho 2021 at 09:36
      Deixe seu Comentário

      Olá Renato! O sistema de funcionamento é o mesmo, a única diferença é que o produto do esquema possui um módulo integrado ao sensor e o utilizado no projeto possui o sensor conectado a um módulo externo. Quanto ao número que vai no código, este deve ser o número que irá receber as mensagens, por exemplo.

  • REnato fernandes
    6 julho 2021 at 14:51
    Deixe seu Comentário

    MUITO OBRIGADO

  • REnato fernandes
    7 julho 2021 at 14:40
    Deixe seu Comentário

    Boa tarde, pode me tira mais uma duvida na linha de código O “Envio do Texto SMS” está dando o seguinte erro (“exit status 1
    invalid operands of types ‘const char*’ and ‘const char [3]’ to binary ‘operator+”).

    Onde estou errado

  • alesandra
    8 setembro 2021 at 20:33
    Deixe seu Comentário

    Olá você pode me da uma ajuda quando eu vou enviar o sms no final do processo ele não enviar deve ser nos comando chip.println((char)26);
    delay(1000)

    você pode me da uma diga eu vir que seu código não esta fora do padrão de proposito kkk mais eu entendi só não essa parte no final, só um diga pode ser

  • Pedro
    4 outubro 2021 at 10:07
    Deixe seu Comentário

    Bom dia, parabéns pelo trabalho, minha dúvida é se é possível uma adaptação desse código para, por exemplo, alterar o sensor de umidade do solo por sensor de temperatura e umidade como o DHT 11.

    • Matheus Gebert Straub
      26 outubro 2021 at 09:22
      Deixe seu Comentário

      Olá Pedro! Algumas alterações serão necessárias na programação, porém é possível adaptar outro sensor sem problema.

    Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados