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.
2 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.

  • 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