You are on page 1of 22

26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Pesquisar Laboratorio de Ga Procurar

Registre-se
Acessar

Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

#42

Início
Perfil
Garagistas
Área Técnica
Fórum
Blog
Galeria
Grupos
Sobre

Todas as Discussões
Meus tópicos
Adicionar

Tutorial: Controlando o Arduino via Bluetooth


Publicado por Marcelo Rovai em 31 janeiro 2016 às 19:45 em Geral
Exibir tópicos

Uma rede sem fio local (e pessoal) porreta é sem dúvida a Bluetooth (BT). Hoje em nosso dia-a-dia é comum encontrar-nos com celulares, aparelhos de som,
cameras, etc., entrelaçados com a ajuda da famosa “luzinha azul”

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 1/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

No mundo do IoT e da automação em geral, é muito comum deparar-nos com controles remotos via celulares utilizando tecnologia BT. Isso é devido a
3 componentes básicos mas muito importantes:

1. Plataforma de desenvolvimento para Android


2. Módulos BT baratos e acessíveis (Como por exemplo o HC-06)
3. E claro, o velho e bom Arduino....

Neste tutorial, vou desenvolver algumas idéias de como controlar as saídas de um Arduíno através de um celular de maneira a mover um Robot, acionar
lâmpadas em uma casa, etc.

No mercado é comum encontrar módulos de BT 3.0 “Master-Slave” como o HC-05 e “Slaves” como o HC-06.
Já mais recentemente, apareceram os HC-08 e HC-10 que trabalham com tecnologia BT 4.0 ou BLE (“Bluetooth Low Energy”). Os módulos BLE são os únicos
que podem ser conectados a um Iphone, pois infelizmente a Apple não fornece suporte a ao BT 3.0.

Para os projetos discutidos aqui, usarei um HC-06 que é bem popular e barato (Bye, bye, Iphone, vamos de Android!). O Módulo é alimentado com 5V o que
faz com que ele seja facilmente conectado a um Arduino UNO por exemplo, para receber e transmitir informações a outros dispositivos como um PC ou um
telefone celular. Seus pinos de transmissão e recepção podem ser conectados diretamente ao UNO, não havendo a necessidade de se utilizar divisores de tensão
como vimos no caso do ESP8266.

Na prática, o HC-06 deve ser ligado diretamente aos pinos 0 e 1 do Arduino (Serial):

HC06-Tx ao Arduino pin 0 (Rx)


HC06-Rx ao Arduino pin 1 (Tx)

Ao se usar a entrada serial por HW do UNO é muito importante lembrar-se que o HC-06 não pode estar fisicamente conectado aos pinos 0 e 1 durante a carga
do programa, isso porque o USB também usa essa mesma serial. Uma maneira simples de se contornar esse probleminha (se seu projeto não utiliza muitos

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 2/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

GPIOs do UNO) é usar uma porta serial por SW através da library SoftwareSerial (a mesma que usamos no caso do ESP8266). Em nosso caso aqui, usaremos
os pinos 10 e 11 do UNO (Tx, Rx respectivamente).

O passo seguinte será escrever um codigo bem simples para se poder testar, programar e inicializar o HC-o6:

Para iniciar, incluir a Library Software Serial, definindo a variável “BT” como a nova porta serial.

#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11); // RX, TX
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 3/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

String command = ""; // Stores response of bluetooth device

void setup()
{
Serial.begin(9600);
Serial.println("Type AT commands!");
BT.begin(9600); // HC-06 usually default baud-rate
}

Em seguida vem o corpo principal do código que simplesmente espera por dados vindos do BT e uma vez que eles chegem, os mesmos são escritos no Serial
Monitor. Da mesma maneira, se podem enviar comandos AT desde o monitor serial até o módulo HC-06.

void loop()
{
if (BT.available()) // Read device output if available.
{
while(BT.available()) // While there is more to be read, keep reading.
{
delay(10); //Delay added to make thing stable
char c = BT.read(); //Conduct a serial read
command += c; //build the string.
}
Serial.println(command);
command = ""; // No repeats
}
if (Serial.available())
{
delay(10); // The DELAY! ********** VERY IMPORTANT *******
BT.write(Serial.read());
}
}

Uma vez carregado o programa, faça alguns testes básicos. Por exemplo:,

Envie “AT“, o módulo deverá responder “OK“.


Pergunte a versão do Firmware: “AT+VERSION”, o módulo deverá responser, por exemplo: “linvorV1.8“.
Com o HC-06 é possível definir um nome para o módulo por exemplo: “AT+NAMEMJRoBot_BT_HC06“. Mas diferente de outros módulos, voce não
conseguirá saber qual é o nome que está definido para o módulo. Ao se enviar o comando anterior, o HC-06 responderá simplesmente: “OKsetname”.
Em geral, o HC-o6 vem de fábrica com o password (ou PIN): 1234. Voce poderá definir um novo com o comando AT: AT+PINxxxx onde ‘xxxx‘ serão 4
números.
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 4/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

OK! Módulo conectado ao UNO e funcionando. Hora de lançar mão do velho e bom celular Android!!!

Existem muitas apps na loja da Google que podem ser utilizadas. Vou sugerir duas delas, por serem as que usarei em meus tutoriais. Essas apps foram
desenvolvidas por mim utilizando o MIT Application2 tool (ver projeto aqui) e estão disponíveis sem custo na loja da Google:

1. MJRoBoT II BT Control
2. MJRoBot BT Digital Analog Voice Control

O App MJR0Bot II foi desenvolvido para comandar Robots. Ele basicamente envia um caracter para cada comando de direção, modos
AUTO/MANUAL, velocidade + e velocidade-. Alem de permitir o envio de mensagens em modo texto.

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 5/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 6/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

O App. MJRoBot Digital Analog Voice Control, envia comandos para acionamento digitais (ligar/desligar) tanto por botões como por voz e comandos
numéricos para controle de PWMs (0-255).

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 7/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 8/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Faça o Download de qualquer uma das duas Apps, vá ao set-up do celular e procure o modulo BT fazendo a conexão (entre com o PIN 1234 ou algum
outro definido por você). Isso deverá ser feito uma única vez, pois o celular guardará os dados de conexão. Uma vez que o celular e o HC-06 estão
conversando, é só usar as APPs.

A partir da segunda vez, ao lançar-se a app, o modulo BT estará desconectado.

Acione o botão de BT, para que o app informe dos modulos disponíveis:

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 9/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Selecione o nome do módulo (No caso é esse com o HC-06 ao final).

O App então mostrará “CONNECTED”, informando que está “pared” com o HC-06

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 10/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

A partir daí, é só ir acionando os botões do APP e observar no Monitor Serial, o que é que o APP está enviando.

Por exemplo, acionando “ON” e “OFF” sequencialmente para os 4 devices, no caso da APP MJRoBot Digital Analog Voice Control, o resultado seria:

dev1on
dev1off
dev2on
dev2off
dev3on
dev3off
dev4on
dev4off

Agora que já temos um App para o Android e sabemos como funciona um modulo BT, vamos colocar a mão na massa e criar algo de util!

Controlando as saídas do Arduino.

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 11/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Vamos construir o circuito abaixo:

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 12/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 13/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

A idéia será usar o App MJRoBot Digi/Ana/Voice Ctrl para acender e apagar os LEDS e também controlar a intensidade dos mesmos usando PWM.

Estaremos relacionando:

Device 1: "dev1on/dev1off" ==> LED Red ==> Pin 3 do UNO

Device 2: "dev2on/dev2off" ==> LED Yellow ==> Pin 5 do UNO

Device 3: "dev3on/dev3off" ==> LED Green==> Pin 6 do UNO

Device 4: "dev4on/dev4off" ==> LED Blue==> Pin 9 do UNO

Ou seja, ao acionar o botão “ON” relacionado ao “Device 1”, a mensagem de texto “dev1on”será enviada ao Arduino. Ao receber essa mensagem, o LED
vermelho deverá acender e assim por diante.

Observe que os 4 pinos são pinos com capacidade de gerar PWM. Isso é importante para a utilização dos “sliders” da App, que enviarão valores para controlar a
intensidade dos LEDs via PWM:

Dev A0: "r/ 0-255" ==> LED Red ==> Pin 3 do UNO

Dev A1: "y/ 0-255" ==> LED Yellow ==> Pin 5 do UNO

Dev A2: "g/ 0-255" ==> LED Green==> Pin 6 do UNO

Dev A3: "b/ 0-255" ==> LED Blue==> Pin 9do UNO

No caso dos controles deslizantes (“sliders”), antes dos valores para controle do PWM (0 a 255), um caracter será enviado para que o Arduino saiba de que
“slider” estará chegando o comando.

O Código:

Setup inicial:

#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11); //TX, RX respectively


String device;

const int dev1 = 3; //PWM


const int dev2 = 5; //PWM
const int dev3 = 6; //PWM
const int dev4 = 9; //PWM
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 14/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

void setup()
{
BT.begin(9600);
Serial.begin(9600);

pinMode(dev1, OUTPUT);
pinMode(dev2, OUTPUT);
pinMode(dev3, OUTPUT);
pinMode(dev4, OUTPUT);
}

Podemos dividir a parte principal do programa em 4 blocos:

1. Espera dos comandos BT e construção da variável “device”


2. Acionamento dos LEDS a partir dos botões
3. Acionamento dos LEDS a partir de comandos de voz
4. Controle do intensidade dos LEDs via Sliders

void loop()
{
while (BT.available()) //Check if there is an available byte to read
{
delay(10); //Delay added to make thing stable
char c = BT.read(); //Conduct a serial read
device += c; //build the string.
}
if (device.length() > 0)
{
Serial.println(device);
// Button control:
if (device == "dev1on") {digitalWrite(dev1, HIGH);}
else if (device == "dev1off") {digitalWrite(dev1, LOW);}
else if (device == "dev2on") {digitalWrite(dev2, HIGH);}
else if (device == "dev2off") {digitalWrite(dev2, LOW);}
else if (device == "dev3on") {digitalWrite(dev3, HIGH);}
else if (device == "dev3off") {digitalWrite(dev3, LOW);}
else if (device == "dev4on") {digitalWrite(dev4, HIGH);}
else if (device == "dev4off") {digitalWrite(dev4, LOW);}

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 15/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

// Voice control:
else if (device == "ligar um" || device == "Ligar 1") {digitalWrite(dev1, HIGH);}
else if (device == "desligar um" || device == "desligar 1") {digitalWrite(dev1, LOW);}
else if (device == "ligar som" || device == "Ligar som") {digitalWrite(dev2, HIGH);}
else if (device == "desligar som" || device == "Desligar som") {digitalWrite(dev2, LOW);}
else if (device == "ligar TV" || device == "Ligar TV") {digitalWrite(dev3, HIGH);}
else if (device == "desligar TV" || device == "Desligar TV") {digitalWrite(dev3, LOW);}
else if (device == "ligar quarto" || device == "Ligar quarto") {digitalWrite(dev4, HIGH);}
else if (device == "desligar quarto" || device == "Desligar quarto") {digitalWrite(dev4, LOW);}

// Slider control:
char colour = device[0];
int value = device[2];
Serial.print(" ");
Serial.println(value);
if ( colour == 'r')
{
analogWrite(dev1, value); // use value to set PWM for LED brightness
}
if ( colour == 'y')
{
analogWrite(dev2, value); // use value to set PWM for LED brightness
}
if ( colour == 'g')
{
analogWrite(dev3, value); // use value to set PWM for LED brightness
}
if ( colour == 'b')
{
analogWrite(dev4, value);
}
device=""; //Reset the variable
}
}

Deixo aqui o link para os códigos usados neste tutorial:

Link para os códigos Arduino

No vídeo abaixo, uma demonstração da porção programa acima (botões & Slider):
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 16/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Vídeo demo comando por botões e Slider

O controle de dispositivos IoT por voz é uma tendência nos dias de hoje. Conseguir este tipo de controle com o conjunto Arduino/HC-06/Android é
extremamente simples. Os dispositivos Android já possuem essa característica “de fábrica”. No App que desenvolvi, apenas acrescentei um botão que faz com
que o Android “escute” um comando e o envie em formato texto para o Arduino. O codigo se encarrega de “ler” a string que chega.

Em vermelho, ressalto no código alguns possíveis comandos de voz. Ao receber por “Ligar TV” por exemplo, o LED verde (correspondente ao device 3)
acenderá (em vez do LED podíamos ter uma relé que ligaria a TV).

No vídeo abaixo, uma pequena demonstração do controle por voz:

Vídeo demo de comandos por voz.

Bom, acredito que já é possível ver o enorme potencial do controle de “coisas” usando BT/Android/Arduino. Em meus próximos posts estarei desenvolvendo
Robots que poderão ser controlados remotamente como vimos aqui.

Para mais tutoriais, demos, vídeos, etc. visite meu blog:

MJRoBot.org

Um abraço e até mais!

Curtir
3 membros curtem isto

Tweetar
Compartilhar Facebook

Curtir 2

Exibições: 29742
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 17/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

▶ Responder esta

Respostas a este tópico

Permalink Responder até José Antonio do Nascimento em 1 fevereiro 2016 at 6:34

Marcelo, bom dia,

Muito bom post, parabéns.

Mais uma matéria muito boa para os Garagistas.

J.Antonio

▶ Responder

Permalink Responder até Marcelo Rovai em 1 fevereiro 2016 at 8:09


Obrigado José Antônio. Minha ideia é ir passando para a frente o que vou descobrindo nesse mundo maravilhoso da eletrônica!!!! O duro é que tem tanta
coisa faxinaste que é difícil escolher o que estudar!!!!!!!! ;-)

▶ Responder

Permalink Responder até Juliano Oliveira em 16 setembro 2016 at 11:30

Bom dia, Parabéns pelo post me ajudou muito. Você sabe quala distância que pega o Hc-08?

Neste anuncio diz aproximadamente 100m. Pode me dar sua opinião Obrigado.

http://www.vinitronica.com.br/pd-1db7d9-modulo-bluetooth-ble-4-0-hm...

▶ Responder
http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 18/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Permalink Responder até Vinicius Lopes em 4 agosto 2017 at 22:51

Não consigo receber de volta os comandos AT...

TEM ALGUMA IDEIA DO QUE SEJA, ELE PISCA NORMALMENTE

▶ Responder

Permalink Responder até Eduardo Sertório em 31 março 2018 at 18:46

Boa tarde, Marcelo !

Excelente trabalho !!

Estou usando seu artigo como referencia para o carrinho de controle remoto

que estou montando junto com meu sobrinho Felipe (7 anos).

Muitíssimo obrigado por compartilhar seu (honestíssmo) app Android (MJRoBot BT Remote Control (Beta))

que cumpre seu objetivo sem abusar das permissões =]

[ ]´s

▶ Responder

Permalink Responder até Higor Bavier em 22 agosto 2018 at 15:30

Marcelo, Boa tarde!

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 19/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Seu conteúdo é excelente parabéns!

O aplicativo que mencionou no teste, com o controle de voz, não acho mais. Tem com indicar outro para esses testes?

Obrigado

▶ Responder

Permalink Responder até Rene Javier Arraya Aviles em 25 agosto 2018 at 16:49

Marcelo, bom dia,

Tenho um projeto de TCC da faculdade, envolvendo o Bluetooth. Vai ser comando a distancia (Smartphone) de um micro-ondas. A tecla matricial do
micro-ondas deve ser acionada a partir do meu smartphone. Gostaria de umas dicas, para tornar este trabalho perfeito. Desde já agradeço, Rene.

▶ Responder

RSS

Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Registre-se
ou acesse

Or sign in with:

Destaques

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 20/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Registre-se no
Lab de Garagem
Clicando aqui

Não é
cliente?
Então vem.

Invista na
Previdência para ter
um futuro tranquilo

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 21/22
26/02/2019 Tutorial: Controlando o Arduino via Bluetooth - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Convide um
amigo para fazer
parte

© 2019 Criado por Marcelo Rodrigues. Ativado por

Badges | Relatar um incidente | Termos de serviço

Entrar no bate-papo

http://labdegaragem.com/forum/topics/tutorial-controlando-o-arduino-via-bluetooth 22/22