Site icon Blog Usinainfo

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.

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:

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.

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.
[crayon-673f406474b8d870346141/]
Primeiramente, a biblioteca SoftwareSerial foi declarada e os pinos Tx e Rx foram definidos, conforme apresentado na porção de código a seguir.
[crayon-673f406474b96267150420/]
Posteriormente, devemos inserir o número do celular que será responsável por receber as mensagens de alerta, conforme apresentado a seguir.
[crayon-673f406474b98074765817/]
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.
[crayon-673f406474b99586755427/]
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.
[crayon-673f406474b9b717450139/]
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.
[crayon-673f406474b9c667112402/]
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.
[crayon-673f406474b9d077123535/]
Em seguida, o valor lido é mapeado em uma escala de 0% a 100%, conforme é apresentado no código abaixo.
[crayon-673f406474b9e424053944/]
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.
[crayon-673f406474b9f565335237/]
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.
[crayon-673f406474ba0570642923/]
Para que estas duas condições sejam verificadas, é preciso que a condição abaixo seja verdadeira.
[crayon-673f406474ba1071594649/]
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.
[crayon-673f406474ba3713413738/]
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().
[crayon-673f406474ba4273081529/]
A partir dessa mensagem, o usuário irá receber a mensagem de Umidade Baixa em seu celular, conforme apresentado na figura abaixo.

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.

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.
[crayon-673f406474ba5032437413/]
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.

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.
[crayon-673f406474ba6929706979/]
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.
[crayon-673f406474ba8773810147/]
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.
[crayon-673f406474ba9513794138/]
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.
[crayon-673f406474baa045344448/]
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.

Sair da versão mobile