Atualmente, quase todos os problemas podem ser resolvidos com um simples toque em uma tela de Smartphone ou Tablet, onde diversos serviços encontram-se disponíveis em plataformas móveis de fácil acesso. E é obvio que a automação de sistemas não poderia ficar de fora dessa tendência, afinal, conectar as informações coletadas por sensores, acionar componentes, ou ser notificado sobre determinados eventos através de aplicativos mobile, tornam o controle de quaisquer projetos mais simples e prático. Neste post iremos explorar a construção de um app com o Blynk, com a finalidade de analisar a leitura e o funcionamento de componentes controlados por uma placa ESP32.

 

Automatize, conecte e controle funções com um único toque em uma tela de Smartphone.

 



Componentes

          Para concluir as atividades desse post, tenha em mãos os seguintes componentes:

          Você pode compra-los clicando nos links acima ou visitando nosso site: www.curtocircuito.com.br.     


Blynk: Controle Mobile

          Trata-se de uma plataforma compatível com sistemas IOS e Android, aplicada ao desenvolvimento de interfaces gráficas (aplicativos), com o objetivo de auxiliar no controle e monitoramento de projetos automatizados. Quaisquer placas microcontroladores conectadas ao Wi-Fi, Ethernet, ou chips ESP, estarão aptas aos serviços disponíveis pelo Blynk, possibilitando a construção de sistemas como Internet das Coisas de forma simples e ágil. Neste projeto iremos construir um aplicativo simples voltado ao acionamento de funções no ESP32, e, como iremos trabalhar através do software do Arduino IDE, será necessário instalar a biblioteca Blynk.h. Para incluir a biblioteca a IDE, clique em Sketch >> Incluir Biblioteca >> Adicionar Biblioteca.ZIP.
 

A adição de bibliotecas por meio da IDE do Arduino, poderá ser realizada através de arquivos compactado em pastas ZIP.


          Além da biblioteca, será necessário instalar em algum dispositivo móvel o próprio aplicativo do Blynk (disponível gratuitamente), para que seja iniciado o desenvolvimento da plataforma de controle do ESP32. Na tela inicial do app selecione a opção New Project, nomeie, selecione o plano de fundo (claro ou escuro), e, o que realmente irá intervir no funcionamento do projeto, escolha o tipo de sistema/placa que será controlado pelo software, que nesse caso será "ESP32 Dev Board".

Configure o Blynk de acordo com o projeto que deseja automatizar.

 


          Após clicar em Create, será enviado um e-mail informando o Token de Autenticação, que será responsável por estabelecer a comunicação entre o ESP32 e o software. Guarde esse código com atenção, pois este será inserido na programação futuramente.

Para conectar o ESP ao aplicativo Blynk, será necessário introduzir um token de autenticação.


          O Blynk possui diversas ferramentas aplicadas a construção de um sistema personalizado, e, para visualizar as opções disponíveis, basta tocar no botão , tais acessórios serão consumidos por meio de um dinheiro virtual, que inicialmente irá corresponder ao saldo de 2000 energias. Este valor será ofertado gratuitamente a todos os usuários do Blynk, porém, a adição de mais valores só será obtida por meio de cartões de crédito e resgate de códigos promocionais. 


Cada ferramenta disponível no Blynk irá consumir um valor virtual de dinheiro.


          O primeiro acessório que iremos construir será um botão, capaz de acionar componentes no circuito elétrico controlado pelo ESP32. Selecione a ferramenta "Button", insira o objeto na área de trabalho, e clique uma vez  para acessar as opções de configuração. Assim como em qualquer programação, o acionamento de um LED de forma digital será atribuído ao nível lógico, e este deverá ser ajustado com valores 0 (LOW) e 1 (HIGH). O tipo de botão será dividido entre Push, que irá enviar o sinal ao circuito enquanto o usuário estiver pressionando o botão, ou Switch, com um único toque o sinal será enviado de forma contínua, se pressionar novamente o sinal será interrompido.

A ferramenta Button dispõe de diversas opção de configuração para o funcionamento do controle mobile.

          Na opção PIN selecione o valor equivalente a um dos pinos do ESP32, ao qual algum componente acionável esteja conectado. Portanto, encaixe um LED RGB ao Protoboard, conectando resistores de 330 Ω entre os terminais menores do LED e as portas digitais D02, D04 e D23 do ESP32, e alimente o pino maior do componente de acordo com o tipo, se for Ânodo positivo, Cátodo negativo.

Os pinos do ESP serão apresentados como GP no menu do aplicativo, no caso do exemplo apresentado nesta imagem, escolha o GP correspondente aos pinos de conexão do ESP.

          No caso desse exemplo será GP13, GP04 ou GP02.
 
 
Programação
 
          Para testar o funcionamento do aplicativo transfira a seguinte programação ao ESP32, inserindo o token de autenticação e ajustando as configurações de Wi-Fi.
 

/* Projeto Curto Circuito – ESP32, Button Blynk */
/*-------- Bibliotecas ----------- */
#define BLYNK_PRINT Serial /* Blynk Serial Print */
#include <WiFi.h> /* Wi-Fi */
#include <WiFiClient.h> /* Wi-Fi client */
#include <BlynkSimpleEsp32.h> /* Blynk-ESP32 */
/*-------- Token de Autenticação ----------- */
char auth[] = "INSIRA_O_TOKEN";
/*-------- Configurações de Wi-Fi ----------- */
char ssid[] = "NOME_DA_REDE";
char pass[] = "SENHA";
/*-------- Pino Virtual ----------- */
BLYNK_CONNECTED()
{         /* Se conectar com Blynk */
  Blynk.syncVirtual(V1);    /* Sincroniza com o pino virtual V1 */
  Blynk.syncVirtual(V2);    /* Sincroniza com o pino V2 */
  Blynk.syncVirtual(V3);    /* Sincroniza com o pino V3 */
}
void setup()
{
  Serial.begin(115200);     /* Taxa de transmissão 115200 */
  pinMode(23, OUTPUT);           /* LED Azul */
  pinMode(4, OUTPUT);           /* LED Verde */
  pinMode(2, OUTPUT);           /* LED Vermelho */
  Blynk.begin(auth, ssid, pass); /* TOKEN+REDE+SENHA */
}
void loop() 
{
  Blynk.run();
}

          O comando Blynk.begin(auth, ssid, pass), inicia um processo do Linux, conectando o microcontrolador aos servidores do Blynk, enquanto Blynk.run() irá iniciar uma função de bloqueio, ou seja, nada mais irá ocorrer no sketch , até que o mesmo seja concluído, nesse caso, será um processo contínuo. A função Blynk.syncVirtual irá construir um pino de conexão virtual, cada botão adicionado no aplicativo irá corresponder a um desses pinos, e a cor acionada no LED RGB será equivalente ao valor configurado na ferramenta button do aplicativo, por exemplo, na imagem abaixo configuramos o pino digital GP23 do aplicativo, que corresponde ao pino D23 do ESP32, acionando assim a cor azul do nosso LED.

 


Do virtual ao Real, basta configurar um pino para que o controle mobile comece.

          Volte a área de trabalho, e clique no botão  iniciando o funcionamento do aplicativo. Procure adicionar outro dois botões no aplicativo para acionar os terminais GP02 e GP04. Caso haja alguma falha na conexão, pressione o botão Boot no ESP32 e tente acionar o LED novamente.

Virtual, Digital e Analógico

         O Blynk dispõe de funções específicas voltadas ao controle e armazenamento de informações, um exemplo importante a ser citado será o comando virtualWrite, que torna possível a configuração de uma porta virtual direcionada ao recebimento de leituras referentes a um pino real do ESP32. No caso apresentado abaixo, a função Blynk.virtualWrite irá enviar os valores da variável "pin" a porta virtual V10, que irá interpreta-los e transmiti-los as ferramentas disponíveis no aplicativo.

A leitura virtual permite uma coleta de informações transmitidas por sensores reais.
          A configuração de portas virtuais terá como função principal a coleta de informações em sensores, enquanto as opções analógicas e digitais,  possibilitam um melhor controle, facilitando a conexão de diferentes tipos de componentes.

O Blynk permite a aplicação e configuração de funções de forma digital, analógica e virtual.
          No exemplo apresentado anteriormente, acionamos o funcionamento do LED RGB através do comando  Blynk.syncVirtual, que cria um caminho virtual possibilitando o controle de qualquer componente configurado no menu PIN do aplicativo. Uma outra forma de realizar tal tarefa seria selecionando o valor de um pino qualquer configurado na própria programação, no caso apresentado na imagem abaixo, o terminal D1 direciona um controle digital exclusivo ao componente conectado ao pino GP01,  sendo este responsável por alterar o nível lógico do mesmo.

o funcionamento de um pino digital no Blynk, corresponde a configuração de um pino digital comum em uma programação qualquer.


Análise de Sensores

          Analise de SensoresAplicativos voltados ao controle, armazenamento e análise de dados serão uma das principais funções atribuídas ao Blynk, afinal, este disponibiliza inúmeras ferramentas voltadas a construção de gráficos e derivados. Para explorar melhor o funcionamento das ferramentas dispiníveis, utilizaremos uma programação com a finalidade de demonstrar os valores de leitura coletados nos sensores Capacitivos e Hall de um ESP32. Lembre-se de inserir o Token de autenticação, e ajustar as configurações de Wi-Fi.

 
/* Projeto Curto Circuito – ESP32: Monitorando os Sensores */

/*-------- Bibliotecas ----------- */
#define BLYNK_PRINT Serial
#include <BlynkSimpleEsp32.h> /* Blynk-ESP32 */
#include <SPI.h>
#include <WiFi.h> /* Wi-Fi */
#include <WiFiClient.h> /* Wi-Fi client */
BlynkTimer timer;
/*-------- Token de Autenticação -----------*/
char auth[] = "INSIRA_O_TOKEN";
/*-------- Configurações de Wi-fi ----------- */
const char* ssid = "NOME_DA_REDE";
const char* password = "SENHA";
void sendSensor()
{
  int cap = touchRead(T3);
  int hall = 0;
  hall = hallRead();
  Blynk.virtualWrite(V3, cap);      /* Sensor Capacitivo */
  Blynk.virtualWrite(V1, hall);     /* Sensor Hall */
  Serial.println("Sensor Capacitivo:");
  Serial.println(cap);
  Serial.println("Sensor Hall:");
  Serial.println(hall);
  delay(100);
}
void setup()
{
  Serial.begin(115200);
  Blynk.begin(auth, ssid, password);
  timer.setInterval(1000L, sendSensor);
}
void loop()
{
  timer.run();
  Blynk.run();
}


          No aplicativo, abra as opções de ferramentas e adicione dois objetos Level H, que terá a função de expressar as informações coletadas por meio de uma barra de progresso. Nas opções de PIN configure V3 para armazenar os valores do sensor capacitivo, com uma faixa de leitura de 0 a 100, e V1 para a análise de Hall, com o valor de -50 e 10.

Configure as informações a serem coletadas por essa ferramenta.


          A faixa de leitura da ferramenta poderá ser ajustada como bem entender, e no caso do exemplo apresentado acima, optamos por adicionar um valor médio, por exemplo, a análise de Hall apresenta uma leitura abaixo de 0 ao identificar desvios na corrente elétrica, portanto, utilizamos os valores negativos como base de calculo para determinar a intensidade de campos magnéticos.

          Ao pressionar o botão , as barras de level irão exibir as informações coletadas automaticamente, ajustando os valores em tempo real.


Leitura baseada nos sensores básicos presentes em um ESP32.


          Para testar os sensores basta passar um imã comum próximo ao chip de Wi-Fi avaliando assim os valores coletados pelo sensor de hall, ou conectar um jumper no pino T3 (GP15) e toca-lo com a mão, isso fará com que a leitura no sensor capacitivo fique abaixo de 50.


Toque na ponta do jumper conectado ao pino D4, ou passe um imã próximo ao chip do Wi-Fi.


          Procure manter o ESP32 conectado a um computador inicialmente, testando se os valores coletados pelo aplicativo serão compatíveis com a leitura impressa no Monitor Serial.


Considerações Finais

          A aplicação de sistemas mobile no controle e monitoramento de componentes transformam quaisquer automações em algo simples e dinâmico, e construir uma plataforma personalizada, voltada a programações próprias, tornam qualquer projeto mais profissional. Graças ao Blynk e o ESP32, a comunicação entre objetos tomou um rumo consideravelmente mais simplificado, fornecendo um serviço de qualidade próximo ao apresentado em servidores particulares como o Watson, estudado nas postagens anteriores. Automatize, conecte e controle funções com um único toque.