11 março 2018

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.

Circuito Arduino DHT11 HC05 e Potenciômetro


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:

Blynk Projeto e Token

Na tela seguinte, selecione o sinal de + na parte superior do display e em seguida selecione LCD no menu:

Blynk Widget LCD

O widget do LCD será adicionado ao projeto. Selecione o LCD e será aberta a tela de configuração:

Blynk configuração LCD

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:

Blynk gauge

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:

Blynk bluetooth

Feitas as configurações, a tela do seu app deve estar mais ou menos assim:

Blynk projeto criado

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:

Biblioteca Blynk IDE Arduino

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//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:

Blynk - DHT11 e Potenciômetro

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.

2 comentários:

  1. Você sabe se é possível esse tipo de interação só que usando um módulo wifi mas em com um app criado por mim, por exemplo?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Perfeitamente, existem várias bibliotecas prontas que fazem esse tipo de comunicação.

      Abraço!

      Adilson

      Excluir