22 janeiro 2018

Use o Blynk para controlar o Arduino via bluetooth

No post de hoje vamos mostrar como controlar as portas do Arduino via bluetooth diretamente pelo smartphone, usando o software Blynk.

Arduino Uno Bluetooth HC-05 Blynk

Com o Blynk, vamos nos conectar à um módulo bluetooth HC-05, que por sua vez estará se comunicando com o Arduino via Serial. 

O que é o Blynk?


O Blynk é uma aplicativo para iOS e Android usado para controlar placas como Arduino e Raspberry Pi através da internet ou bluetooth, como veremos neste tutorial. É uma excelente ferramenta para você que deseja criar um projeto de IoT (Internet of Things, ou Internet das Coisas) de forma rápida e prática, já que conta com um sistema de widgets com funções pré-definidas, bastando arrastar e soltar no layout de sua preferência.
O Blynk funciona com mais de 400 tipos de placas diferentes, desde o Arduino e Raspberry, como comentamos anteriormente, mas também com ESP8266 NodeMCU, Wemos, ESP32, micro:bit, Particle, Feather, Intel Edison e muitas outras. A lista completa do hardware suportado você encontra neste link.

Para funcionar, o Blynk usa um sistema de "créditos de energia", que você utiliza conforme adiciona widgets ao seu projeto. Um botão, por exemplo, custa 200 créditos, um timer, mais 200, e esses créditos são debitados do valor total que você recebe quando se cadastra no aplicativo (2000 créditos). Quando você atinge o limite de créditos é possível comprar mais pelo aplicativo. Mas para reproduzir este tutorial não se preocupe, vamos usar apenas 600 créditos, e vão sobrar 1400 para você adicionar novas funções ou criar novos projetos. :)

Conexão do módulo Bluetooth HC-05 no Arduino Uno


Na conexão do módulo bluetooth HC-05 no Arduino Uno vamos utilizar os pinos 4 e 5 para comunicação serial entre o microcontrolador e o módulo bluetooth, e os pinos 6 e 7 para conexão de 2 leds que vão representar o estado de cada porta (ligada/desligada).

Circuito Arduino Uno e bluetooth HC-05

Note que na conexão dos pinos RX e TX eu usei um conversor de nível lógico, já que os pinos do módulo Bluetooth trabalham com nível de sinal de 3.3V, e o Arduino com 5V. Se ligarmos diretamente, isso pode danificar o módulo. Você também pode usar um divisor de tensão com resistores, como no esquema abaixo, onde utilizei resistores de 480 ohms e 680 ohms no pino RX do módulo Bluetooth:

Circuito Arduino Uno e HC-05 com divisor de tensão

Se você não tiver esses valores de resistência, pode usar a calculadora deste link e adaptar aos valores de resistores que tiver em mãos.

Criando um projeto no Blynk


Depois de montar o circuito, vamos para a parte do software, baixando o Blynk no seu smartphone. Ele está disponível neste link, ou na loja de aplicativos do seu celular. Como estou usando um celular com Android, basta fazer uma procura por Blynk na Play Store:

Blynk Play Store

Com o aplicativo instalado, a primeira coisa que temos que fazer é criar uma conta no servidor do Blynk, já que dependendo da conexão utilizada no seu projeto você pode controlar o seu dispositivo de qualquer lugar do mundo, e para isso é necessário uma conta protegida por senha. Simplesmente clique em Create New Account na tela inicial do Blynk. O processo é bem simples e exige apenas um email e uma senha.

Blynk Criar Conta

Após a criação do login, você estará na tela principal do aplicativo. Selecione a opção New Project e na tela seguinte (Create New Project), dê um nome ao seu projeto e escolha o tipo de dispositivo que vai usar. No meu caso, utilizei como nome de projeto Arduino BT, selecionei a placa Arduino Uno e logo depois o tipo de conexão, Bluetooth:

Blynk Novo Projeto

Clique em create e você verá uma tela como essa abaixo, informando que o token de autorização (Auth Token) foi enviado para o seu email. Essa informação é importante pois devemos usar esse token posteriormente dentro do sketch do Arduino.

Token enviado para o email

A tela seguinte já é a tela de layout, onde vamos criar os botões para o nosso aplicativo de teste. Nesta tela, clique no sinal de + na parte superior do aplicativo, e em seguida selecione o widget Button (botão). Repare que o botão "custa" 200 itens de energia, que serão debitados do seu total inicial (2000), mostrados na parte superior da tela. Esse botão será então adicionado ao layout do seu projeto. Faça isso mais 2 vezes e você terá 3 botões na tela. Segure o widget para redimensionar e reposicionar o botão no layout:

Blynk - Projeto e Botões

Vamos agora colocar o widget do Bluetooth na nossa tela. É com ele que vamos selecionar o HC-05 conectado ao Arduino e permitir que o programa faça a conexão com ele quando estiver rodando. Clique no sinal de + novamente e selecione a opção Bluetooth, será criado então um novo botão no nosso layout, que eu coloquei abaixo dos botões de acionamento:

Blynk - Widget Bluetooth

Clique no botão bluetooth que você acabou de criar para configurar a conexão. Lembre-se de que você já deve ter pareado o seu smartphone com o HC-05 anteriormente para que ele apareça na lista, ok? Selecione Connect Bluetooth Device, depois selecione o dispositivo pareado anteriormente. No meu caso, o HC-05 está nomeado como ARDUINOECIA:

Blynk - Configuração Bluetooth

Retorne para a tela anterior e note que o ícone do bluetooth agora está azul, indicando que foi configurado corretamente. Vamos agora configurar os botões para acionar as portas do Arduino. 

Selecione o primeiro widget do botão que você criou, na parte superior da tela, e será exibida a tela de propriedades. Nesta tela, você configura o nome do botão, o pino que deseja usar (selecionei o pino digital D6), ao lado dele o valor que será enviado com o botão desligado (no caso, o valor 0), e também o valor que será enviado quando o botão for pressionado (valor 1). Por fim, selecione se você deseja um botão estilo push button ou uma chave. Repita o procedimento para as portas 7 e 13. Minha tela ficou assim:

Blynk - Configuração botões

Com isso finalizamos a configuração do aplicativo Blynk. Vamos agora carregar o sketch no Arduino que vai reconhecer essa configuração.

Programa Blynk no Arduino


O programa que vamos carregar no Arduino é muito simples, pois todo o controle de recepção e portas é feito pela biblioteca Blynk. Instale a biblioteca à partir da própria IDE do Arduino, no menu Sketch -> Incluir Biblioteca -> Gerenciar bibliotecas:

Biblioteca Blynk IDE Arduino

Com a biblioteca instalada, carregue o programa abaixo no Arduino, substituindo o token na linha 14 pelo token de autorização que você recebeu por email:

 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
//Programa: Arduino e bluetooth HC-05 com Blynk
//Autor: Arduino e Cia

//Emula a serial nos pinos digitais 4 e 5
#include <SoftwareSerial.h>
SoftwareSerial SerialBT(4, 5); // RX, TX

//Configuracoes biblioteca Blynk
#define BLYNK_PRINT SerialBT
#define BLYNK_USE_DIRECT_CONNECT
#include <BlynkSimpleSerialBLE.h>

//Token de autorizacao
char auth[] = "7b0f4572ea13250021348b42bca5e69f";

void setup()
{
  //Inicializa a comunicacao serial com o modulo HC-05
  SerialBT.begin(9600);
  Blynk.begin(SerialBT, auth);
}

void loop()
{
  //Aguarda conexao e interpreta os comandos enviados
  Blynk.run();
}

Para testar tudo isso, abra o projeto criado no Blynk e execute-o selecionando o ícone (play) no canto superior direito da tela:


Acione os botões e observe como o seu smartphone controla o Arduino via bluetooth acendendo e apagando os 2 leds que colocamos no circuito, e também o led onboard ligado na porta 13.

18 comentários:

  1. Parabéns pelo artigo muito bom cada vez mais este local se torna referencia em aprendizado de novas tecnologias.

    ResponderExcluir
    Respostas
    1. Muito obrigado! Aguardo o seu retorno aqui no Arduino e Cia sempre que possível. :)

      Abraço!

      Adilson

      Excluir
    2. funciona com hc-06 tbm???

      Excluir
  2. Muito obrigado por disponibilizar o post.
    Este site é minha referência para projetos
    no arduino.
    Parabéns pelo trabalho.

    ResponderExcluir
  3. Amigo se eu ligar uma lampada e sair do aplicativo a lampada continuará acesa

    ResponderExcluir
    Respostas
    1. Bom dia,

      Continua sim, pois o comando já foi enviado para o Arduino.

      Abraço!

      Adilson

      Excluir
  4. Show de bola funcionou perfeito para arduino uno R3 com HC05, obrigado!

    ResponderExcluir
  5. Comunicação Bluetooth com Modulo HC-05

    Ola amigos boa tarde
    É possível realizar uma comunicação entre o PC Bluethoo, modulo HC-05 e um equipamento com comunicação RS232

    Estou tentando realizar um TCC com este tema gostaria de saber se pode ser realizado, não tenho muita experiencia.

    Desde já agradeço

    ResponderExcluir
    Respostas
    1. Oi Antonio,

      Para comunicação com o equipamento com serial RS232, muito provavelmente você vai precisar de um hardware auxiliar. Que tipo de equipamento é?

      Abraço!

      Adilson

      Excluir
  6. amigao boa noite em qual aplicativo voce montou o esquema eletrico ??
    pode passar

    ResponderExcluir
    Respostas
    1. Boa noite,

      No Fritzing: fritzing.org

      Abraço!

      Adilson

      Excluir
  7. Respostas
    1. Bom dia,

      Ainda não tenho nenhum tutorial nesse sentido, mas providenciarei em breve. ;)

      Abraço!

      Adilson

      Excluir
  8. Muito interessante, gostaria de saber como fazer para o arduino enviar dados pro bluetooth e aparecer no APP

    ResponderExcluir
    Respostas
    1. Oi Gustavo,

      Obrigado. O processo é praticamente o mesmo, mas vou postar em breve um artigo mostrando como enviar os dados de sensores para o Android usando Blynk.

      Abraço!

      Adilson

      Excluir