Blynk IoT – Monitoramento com ESP8266 e Sensor de Umidade do Solo (Higrômetro)

Neste tutorial será mostrado como utilizar o Sensor de Umidade do Solo (também chamado de Higrômetro) com o Módulo WiFi ESP8266 NodeMCU ESP-12 e monitorar os valores lidos através de um aplicativo simples criado com o Blynk IoT. Desta forma você poderá monitorar o nível de umidade do solo de suas plantas de qualquer lugar do mundo.

Os passos mostrados aqui poderão servir de base para adicionar mais funcionalidades ao projeto e até mesmo criar um sistema de irrigação automático para sua casa. O tutorial também pode ser adaptado para qualquer placa de desenvolvimento que utilize tecnologia WiFi.

Componentes necessários

Para seguir este tutorial, você precisará dos seguintes itens:

A programação do NodeMCU será feita através da IDE do Arduino. Caso não saiba como configurar a IDE para programar módulos baseados no ESP8266, recomendamos primeiro ler o seguinte tutorial:

ESP8266 – Como Programar o NodeMCU Através da Arduino IDE

O que é o Blynk IoT?

Blynk é uma plataforma voltada a prototipagem e implantação de projetos IoT (Internet of Things). O Blynk possui um banco de dados em nuvem à qual usuários podem conectar diversos tipos de hardware através de tecnologia WiFi, Bluetooth e BLE, Ethernet, USB (Serial), GSM, entre outras; com o intuito de controlar e analisar remotamente seu funcionamento em tempo real através de aplicações iOS, Android e web.

Seu uso é gratuito (com funcionalidades limitadas) para prototipagem e projetos pessoais, porém seus termos e condições deixam claro que é necessária a aquisição de uma licença para uso comercial.

O Blynk é composto de um aplicativo para criação de interfaces de controle e monitoramento de seu hardware através de dispositivos móveis, um console web para configuração e também para controle e monitoramento, uma biblioteca responsável pela comunicação entre hardware e a nuvem e o próprio serviço de nuvem que conecta tudo.

Figura 1 – Arquitetura do Blynk

A plataforma passou por uma grande renovação em maio de 2021 com uma remodelagem do site, um novo aplicativo (chamado de Blynk 2.0 nos fóruns oficiais) e uma nova biblioteca com novas funcionalidades. A versão antiga do aplicativo ainda se encontra disponível, mas a tendência é que ela seja abandonada no futuro em favor da nova versão. Por isso, este tutorial foi criado utilizando a versão mais recente.

Instalando o Blynk

A instalação do aplicativo Blynk IoT em um dispositivo móvel é bastante simples. Abra a Play Store ou App Store (dependendo de seu sistema operacional) e pesquise por “Blynk.” Certifique-se de que o nome e o ícone do aplicativo correspondem à imagem abaixo, pois a versão antiga ainda pode aparecer na pesquisa. Será fácil reconhecer pois a versão antiga aparece como “Blynk 1.0” ou “Blynk (Legacy).” O “Blynk 2.0” ou “Blynk IoT” é a versão que utilizaremos.

Figura 2 – Blynk IoT na Play Store

Após instalado o aplicativo em seu dispositivo móvel, vamos abrir a IDE do Arduino em nosso computador. Caso não ela ainda não se encontre instalada, você pode baixá-la de graça em https://www.arduino.cc/en/software.

Com a IDE do Arduino aberta, no menu superior clique em Sketch > Incluir Biblioteca > Gerenciar Bibliotecas e pesquise por “Blynk.” Vamos instalar a biblioteca desenvolvida por Volodymyr Shymanskyy.

Figura 3 – Gerenciador de Bibliotecas

Com isso, você está pronto para escrever programas que se comunicarão com o aplicativo.

Criando cadastro no Blynk

Ao abrir o aplicativo do Blynk pela primeira vez, você vai se deparar com a seguinte tela:

Figura 4 – Tela inicial do app Blynk IoT

Caso esta seja sua primeira vez utilizando os serviços do Blynk, clique em “Sign Up” para criar uma conta gratuita. Será então requisitado um endereço de e-mail para o qual o aplicativo enviará um link de ativação.

Figura 5 – Digite seu endereço de e-mail

Figura 6 – Verifique seu e-mail

Após inserir um endereço válido e clicar em “Continue,” vá até a caixa de entrada deste e-mail, localize a mensagem enviada pelo Blynk, abra e clique no botão “Create Password.” Caso a mensagem não esteja na caixa de entrada, verifique a caixa de spam. Esta parte do processo também pode ser feita em um computador.

Figura 7 – Clique em Create Password

Após clicar no botão, crie uma senha para sua conta Blynk e um nome de usuário.

Figura 8 – Crie uma senha para sua conta no Blynk

Figura 9 – Crie um nome de usuário do Blynk

Sua conta agora está criada e você pode começar a criar um aplicativo de controle para seu ESP8266.

Criando seu aplicativo

Agora que você está logado no aplicativo, você verá uma chave inglesa no canto superior direito de sua tela inicial. Clique nela para entrar no modo de desenvolvedor e criar um template (modelo de interface). Só será possível adicionar um novo dispositivo (nosso ESP8266) após a criação de ao menos um template. Batizei o meu de “Umidade.”

Figura 10 – Crie seu primeiro template

Figura 11 – Dê um nome ao seu template

Figura 12 – Abra seu template

Com o template criado e nomeado, podemos abri-lo e começar a adicionar elementos à nossa interface. Ao abrir seu template você verá uma tela branca pontilhada. Os pontos servem para orientar o usuário na hora de posicionar widgets na tela.

Clique no ícone de menu no canto superior direito da tela para ver os widgets disponíveis. Você notará que alguns estão disponíveis apenas para usuários pagos. Selecione dois “Value Display” e arraste-os para a posição de sua preferência na interface.

Abra o menu

Figura 13 – Selecione o widget Value Display

Figura 14 – Dois widgets Value Display inseridos no template

Clicando em cada um dos widgets que adicionamos, podemos editar informações como nome, tamanho, cor e alinhamento da fonte, e o pino virtual que será associado a cada widget.

O nome é um campo não obrigatório e aparecerá em nossa interface quando o aplicativo estiver em execução. Note que preenchi o nome em apenas um dos dois widgets.

O pino virtual é a informação mais importante pois é a partir deste valor que vamos referenciar os widgets no código do nosso ESP8266. Selecione o pino no campo “Datastream.” É possível associar pinos virtuais de mesmo número a diversos widgets simultaneamente, fazendo com que um ou mais widgets exibam exatamente o mesmo valor, mas vamos utilizar pinos diferentes para nossos widgets. Em meu template usei os pinos V4 e V5.

No ícone do canto superior direito também podemos ver algumas informações básicas sobre nosso widget e como acessá-lo para escrita e leitura através de código.

Figura 15 – Selecione um pino virtual no campo Datastream

Figura 16 – Informações sobre o widget Value Display

 

Configurando o Blynk IoT

Agora que criamos nossa interface de controle, podemos associar um dispositivo a ela. Para isso, é necessário primeiro enviar o código de configuração para nosso ESP8266. Na IDE do Arduino, abra o exemplo disponível em Arquivo > Exemplos > Blynk > Blynk_Edgent > Edgent_ESP8266. Todo o código do nosso projeto será criado a partir deste exemplo.

Blynk.Edgent é o nome da biblioteca que gerencia a conexão com o servidor do Blynk, envia e recebe dados do servidor e auxilia no cadastro do hardware. Ela é indicada especialmente para dispositivos capazes de se conectar à internet via Wi-Fi, como é o caso do ESP8266.

Figura 17 – Abra o exemplo Edgent_ESP8266

Com o exemplo aberto, vemos que algumas linhas estão comentadas. Para que o código funcione, precisamos descomentar e preencher as linhas destacadas abaixo com as informações do nosso projeto. Mas como encontramos estas informações?

Figura 18 – Substitua as palavras TMPLxxxxxx e Device no código mas mantenha as aspas

No aplicativo do Blynk, com seu template aberto, clique no ícone de porca à esquerda do ícone de menu. Será aberta uma nova tela com o Template ID do seu projeto. O Device Name será o nome de seu template. Substitua ambos no código de exemplo.

Figura 19 – Clique no ícone de porca

Figura 20 – Template ID no app Blynk IoT

Estas mesmas informações também podem ser encontradas através do console do Blynk abrindo Blynk.Cloud no navegador, clicando em Templates e abrindo o seu template.

Figura 21 – Página Templates no console do Blynk

Figura 22 – Template ID e Device Name no console do Blynk

Para finalizar, vamos descomentar a linha referente a nossa placa, destacada abaixo. Envie o código para a placa.

Figura 23 – Indique no código qual placa será utilizada

Abrindo o monitor serial com um baudrate de 115200, vemos que o ESP8266 criou um ponto de acesso (AP):

Figura 24 – Ponto de acesso criado

De volta ao aplicativo, clique no ícone no canto superior esquerdo da tela para sair do modo de desenvolvedor e retornar à página inicial. Em seguida, clique em “Add new device.”

Figura 25 – Saia do modo de desenvolvedor

Figura 26 – Clique em Add new device

Você precisará conectar seu dispositivo móvel ao ponto de acesso criado pelo código exemplo. O nome do AP foi escrito no monitor serial do Arduino IDE após o carregamento do código. Ele sempre começará com a palavra “Blynk” e incluirá o Device Name indicado em seu código. Quando conectado, clique em “Ready.”

A conexão também pode ser realizada a partir do aplicativo do Blynk clicando em “Manual Connect.” O link abrirá as configurações de Wi-Fi do seu dispositivo.

Figura 27 – Clique em Manual Connect para se conectar ao seu ESP8266

Figura 28 – Selecione o AP de seu ESP8266

Figura 29 – Blynk conectando-se ao ESP8266

Após realizado o vínculo com seu ESP8266, você precisará indicar a qual rede Wi-Fi ele deverá se conectar para acessar a internet. O aplicativo abrirá automaticamente uma lista com as redes disponíveis. Selecione uma e insira a senha da rede.

Figura 30 – Selecione sua rede Wi-Fi e digite a senha

Em seguida, vamos escolher um nome para o dispositivo, uma localização e um fuso horário. Estas duas últimas informações não são obrigatórias.

Caso resolva alterar o nome do dispositivo, lembre-se de alterá-lo também no código. Sua placa não conseguirá se comunicar com o servidor do Blynk e com o aplicativo se o Device Name estiver diferente.

Figura 31 – Confirme ou altere o nome do dispositivo

Figura 32 – Selecione um local para seu dispositivo ou deixe o campo em branco

Figura 33 – Selecione seu fuso horário

Ao final, confirme as informações e seu dispositivo estará pronto para uso. Você será apresentado a uma tela onde pode escolher adicionar um novo dispositivo, adicionar um segundo dispositivo com as mesmas configurações ou encerrar as configurações. Clique em “Finish and exit” para sair.

Figura 34 – Dispositivo cadastrado. Clique em “OK, great!”

Figura 35 – Clique em “Finish and exit” para sair

A página inicial do aplicativo agora mostrará o dispositivo que você cadastrou. Clicando nele, podemos visualizar nossa interface em execução. No momento, ela não mostrará nenhuma informação pois ainda não criamos a parte do código que fará a leitura do nosso sensor de umidade.

Figura 36 – Dispositivo criado

Figura 37 – Interface de controle e monitoramento ainda sem informações do sensor

Entrando em Blynk.Cloud, você verá que o dispositivo foi adicionado à sua conta e também poderá ser monitorado através do console do Blynk no navegador.

Figura 38 – Dispositivo cadastrado no console do Blynk

 

Sensor de Umidade do Solo (Higrômetro)

O Sensor de Umidade do Solo ou Higrômetro, conhecido por YL-69, FC-28 ou HL-69 dependendo do fabricante, é utilizado para detectar variações de umidade no solo através de seu nível de condutividade.

O sensor propriamente dito é uma sonda com dois eletrodos que trocam corrente entre si. Quanto mais úmido o solo, maior será a condutividade e mais fácil será esta troca de corrente. Em outras palavras, o solo vai oferecer menos resistência e a tensão lida vai ser menor.

Figura 39 – Funcionamento do sensor de umidade do solo

A haste do sensor é ligada a uma placa com um CI (circuito integrado) comparador que pode operar em uma tensão de 3,3V a 5V. Ele é responsável por nos retornar o nível de condutividade do solo.

Esta placa possui um LED para indicar que ele está sendo alimentada corretamente e outro que indica o funcionamento da saída digital (D0). Este pino retorna apenas dois possíveis valores: nível lógico alto (HIGH) ou nível lógico baixo (LOW). A sensibilidade pode ser ajustada através do potenciômetro da placa.

Temos também uma saída analógica (A0) que fornece uma precisão maior ao medir a umidade do solo. O ESP8266 possui um ADC (conversor analógico-digital) com uma precisão de 10-bits, o que significa que os sinais recebidos desta placa serão representados por valores entre 0 e 1023.

Figura 40 – Pinos da placa de controle

 

Ligação do circuito

Ligue o pino A0 da placa comparadora ao pino A0 do ESP8266, o GND da placa ao GND do ESP8266 e o VCC da placa ao pino 3V3 do ESP8266 como ilustrado abaixo. A ordem dos pinos dos eletrodos não interfere na leitura do sensor.

Figura 41 – Ligação do sensor de umidade

 

Programando

Como foi mencionado anteriormente, criaremos nosso código a partir do exemplo Edgent_ESP8266 disponibilizado na biblioteca do Blynk. Precisaremos de todas as abas abertas pelo exemplo para que o programa seja executado, mas vamos editar apenas a aba principal, o arquivo Edgent_ESP8266.ino.

As primeiras linhas do código devem estar descomentadas e com as informações de seu projeto:

E a seguinte linha deve estar descomentada para que o programa entenda que estamos usando um ESP8266:

Em seguida, vamos criar uma variável global que indicará a qual pino a saída analógica do nosso sensor está ligado:

Vimos na tela de informações do widget Value Display que o envio de dados para o Blynk é realizado pela função Blynk.virtualWrite(). Porém, na documentação oficial do Blynk é recomendado não chamar a função diretamente dentro do loop() pois isto pode resultar no ESP8266 ser desconectado do servidor. Devemos então criar uma segunda variável global, um timer que ficará responsável pela chamada desta função:

Dentro do setup(), vamos configurar o nosso timer com uma chamada método setInterval():

Este método exige dois parâmetros: o primeiro é o intervalo em milissegundos entre cada chamada da função que daremos como segundo argumento. O nome da função fica a critério do programador.

Note que passamos “1000L” como primeiro argumento. Logo, a função myTimerEvent() será chamada a cada 1000 milissegundos (1 segundo). O “L” ao final indica que o valor será passado como uma variável do tipo long int.

Dentro da função myTimerEvent() será feita a leitura do sensor e as chamadas do Blynk.virtualWrite() com dois argumentos: o número do pino virtual que configuramos na interface do Blynk e o dado que vamos enviar ao widget.

É aconselhável não tentar enviar mais de 10 valores por segundo. Também deve-se evitar usar dentro do timer funções que bloqueiam a execução do programa como, por exemplo, delays.

Note que criei uma função chamada analisaUmidade() que recebe o valor lido pelo sensor. Esta função retornará uma String indicando se o solo está com umidade baixa, média ou alta. Esta informação será posteriormente escrita no segundo Value Display de nossa interface.

É importante ressaltar que os limiares mostrados acima podem não corresponder à sua realidade. Cada tipo de solo possui propriedades únicas que podem interferir nos resultados do sensor. É imprescindível que o usuário teste o sensor em solo úmido e molhado e substitua os valores dessa função pelos números que encontrar.

Para finalizar, vamos adicionar ao loop() a execução de nosso timer:

Ao final, sua aba Edgent_ESP8266 deve estar da seguinte maneira:

Carregue o código na placa.

Funcionamento

Abrindo o aplicativo do Blynk e acessando o nosso dispositivo, agora podemos ver o valor lido pelo sensor. Ele será atualizado a cada segundo de acordo com as configurações de nosso timer.

Figura 42 – Interface de monitoramento no Blynk IoT

Caso queira alterar a posição das informações, usar widgets diferentes ou adicionar mais widgets à interface, ela pode ser editada clicando no ícone de chave inglesa.

Gostou? Deixe seu comentário logo abaixo, não deixe de conferir outras postagens do nosso blog. Confira também a nossa loja virtual e encontre todos os componentes utilizados no projeto no post.

Gabriel Martins de Freitas

Graduando em Sistemas e Mídias Digitais. Tenho experiência com Arduino e ESP8266. Atualmente compartilhando meu conhecimento no blog da Smart Kits.

Post navigation

4 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

ESP8266/32 – Programação sem fio (OTA)

ESP8266 – Salvando Credenciais Wi-Fi na EEPROM Através de um Access Point (AP)

Introdução a tecnologia LoRa