Comunicação Arduino e celular usando Blynk

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.

Arduino e Smartphone Android usando Blynk

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:

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.

Avalie este post!

Related posts

Tutorial Processing com Arduino e Firmata

by Arduino e Cia
10 anos ago

Comunicação Arduino e Raspberry Pi com LoRa

by Arduino e Cia
4 anos ago

Controlando 2 displays 7 segmentos com Max7219

by Arduino e Cia
11 anos ago
Sair da versão mobile