Recentemente escrevi sobre como usar o Blynk para controlar o Arduino via Bluetooth, ou seja, um smartphone enviando comandos para o Arduino. Neste post vamos fazer o contrário: pegar dados das portas do Arduino e enviar para o Blynk, também via bluetooth, e mostrar esses dados na tela do aplicativo.

No nosso projeto vamos usar um sensor de temperatura DHT11 e um potenciômetro, enviando os dados desses dois componentes para o celular.
Circuito Arduino com DHT11 e HC-05
Aqui vamos usar praticamente o mesmo esquema de ligação do módulo bluetooth HC-05 que já vimos no post anterior, com o acréscimo do sensor de temperatura e do potenciômetro. Vamos precisar então de:
- Arduino Uno
- Módulo bluetooth HC-05
- Conversor de nível lógico I2C Bidirecional
- Sensor de temperatura DHT11
- Potenciômetro/Trimpot
O conversor de nível lógico serve para adaptar o nível de sinal de 5V que sai do Arduino (serial TX), reduzindo este sinal para 3.3V, que é o nível suportado pelo módulo HC-05 (pino RX). Você pode substituir esse conversor por um divisor de tensão com resistores, usando a calculadora deste link.
O DHT11 está conectado na porta analógica A0 e o potenciômetro na porta analógica A5 do Arduino. Faremos a comunicação com o módulo bluetooth HC-05 por meio das portas digitais 4 e 5, utilizando a biblioteca SofwareSerial para emular uma porta serial nesses pinos.
Criando o projeto no Blynk
Vamos agora criar um projeto no celular com Android usando o app Blynk (download), que vai receber os dados enviados pelo Arduino via bluetooth. Recomendo a leitura do post anterior, onde apresento mais detalhes sobre o software, instalação e criação de projetos usando o app.
Crie um novo projeto no Blynk, selecionando o dispositivo Arduino UNO e conexão bluetooth. Após selecionar o botão CREATE, você receberá a mensagem informando que o token de autorização (Auth Token) foi enviado para o seu email:
Na tela seguinte, selecione o sinal de + na parte superior do display e em seguida selecione LCD no menu:
O widget do LCD será adicionado ao projeto. Selecione o LCD e será aberta a tela de configuração:
Na tela de configuração, selecione V0 (Virtual V0) na entrada 0 (Input 0), e V1 na entrada 1 (Input 1). Selecione o reading rate como PUSH e configure as mensagens que irão aparecer na tela. Selecione o botão retornar do seu smartphone.
Vamos também incluir um mostrador (gauge), que também vai exibir as informações do potenciômetro. Na tela de configuração do mostrador, selecione o pino de entrada como V2 (Virtual 2) e o Reading Rate também como PUSH:
Por último, vamos incluir o widget do bluetooth. Na lista, selecione o dispositivo que você pareou anteriormente. No exemplo abaixo, o meu módulo foi nomeado como ARDUINOECIA:
Feitas as configurações, a tela do seu app deve estar mais ou menos assim:
Isso finaliza a parte de configuração do nosso projeto no Blynk. Vamos partir agora para a programação do Arduino e exibição dos dados na tela.
Envio de dados do Arduino para o Blynk
No programa abaixo usamos a biblioteca DHT11 (download) e também a biblioteca Blynk, instalada a partir da IDE do Arduino no menu Sketch => Incluir Biblioteca => Gerenciar bibliotecas:
O programa abaixo executa as rotinas enviatemp() e enviapot() a cada 1 segundo. Esse tempo é definido nas linhas 50 e 51 (troque o 1000L por 2000L, por exemplo, para obter intervalos de 2 segundos).
A rotina enviatemp() lê o valor da temperatura no DHT11 e envia pela porta virtual V0 (cujo valor definimos que será mostrado na linha superior do display LCD no projeto feito no Blynk). Já a rotina enviapot() envia o valor lido do potenciômetro tanto para a porta virtual V1 (valor mostrado na linha inferior do display) como para a V2 (gauge).
Não esqueça de colocar, na linha 21, o token que você recebeu por email e foi gerado logo no início do projeto com o Blynk.
//Programa: Blynk com Arduino DHT11 e Potenciometro
//Autor: Arduino e Cia
//Configuracoes biblioteca Blynk
#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>
#include <SoftwareSerial.h>
#include <DHT.h>
//Definicoes de pino e tipo do sensor DHT
#define pino_DHT A0
#define DHTTYPE DHT11
//Emula a serial nos pinos digitais 4 e 5
SoftwareSerial SerialBT(4, 5); // RX,
BlynkTimer timer;
//Token de autorizacao
char auth[] = "914a7c72f2a22fcb81bf321ed106cfd2";
DHT dht(pino_DHT, DHTTYPE);
int temperatura;
int valor;
void enviatemp()
{
temperatura = dht.readTemperature();
Blynk.virtualWrite(V0, temperatura);
}
void enviapot()
{
valor = analogRead(A5);
Blynk.virtualWrite(V1, valor);
Blynk.virtualWrite(V2, valor);
}
void setup()
{
//Inicializa a comunicacao serial com o modulo HC-05
SerialBT.begin(9600);
Blynk.begin(SerialBT, auth);
pinMode(A5, INPUT);
//Inicializa o DHT11
dht.begin();
//Envia as informacoes para o smartphone
timer.setInterval(1000L, enviatemp);
timer.setInterval(1000L, enviapot);
}
void loop()
{
Blynk.run();
timer.run();
}
Carregue o programa no Arduino e rode o programa no app Blynk para que os dados do DHT11 e do potenciômetro sejam mostrados no seu smartphone:
O Blynk é um app que conversa com vários tipos de dispositivos. Você tem opções para controle via ethernet, wifi, bluetooth, USB e GSM, com as mais diversas placas da linha Arduino e Raspberry Pi e também com módulos como ESP8266 e ESP32, sendo um item interessante para o seu projeto de automação residencial ou IoT. Em breve traremos novos conteúdos utilizando esse app.