BUILDBOT Blog

Configuração do módulo bluetooth HC-06 com Arduino

Módulo Blueooth HC-06

O módulo Bluetooth HC-06 é usado para comunicação wireless entre o Arduino e algum outro dispositivo com bluetooth, como por exemplo um telefone celular, um computador ou tablet. As informações recebidas pelo módulo são repassadas ao Arduino (ou outro microcontrolador) via serial.

O alcance do módulo segue o padrão da comunicação bluetooth, que é de aproximadamente 10 metros. Esse módulo funciona apenas em modo slave (escravo), ou seja, ele permite que outros dispositivos se conectem à ele, mas não permite que ele próprio se conecte à outros dispositivos bluetooth.

Características e ligação ao Arduino

O módulo possui 4 pinos : Vcc (alimentação de 3,6 à 6v), GND, RX e TX, os dois últimos utilizados para comunicação com o Arduino via serial.

O nível lógico dos pinos RX e TX é de 3.3v, o que significa que, para o Arduino Uno, por exemplo, vamos precisar de um divisor de tensão no pino RX para evitar que o módulo seja danificado. Isso é necessário pois o Arduino Uno trabalha com nível de sinal de 5v.

Você pode montar facilmente um divisor de tensão utilizando dois resistores e a calculadora desse link. Coloque o valor dos resistores que você possui nos campos R1 e R2, coloque a tensão de entrada (que é de 5v), e clique em COMPUTE para mostrar a tensão de saída, que deve ser de no máximo 3.3v.

Cálculo divisor de tensão

No circuito abaixo, que vamos utilizar para configurar o HC-06, utilizamos um resistor de 470 e outro de 680 ohms.

Circuito Arduino - Configuração HC-06

Nesse circuito, vamos utilizar as portas 6 e 7 do Arduino como RX e TX para comunicação com o módulo.

Configuração dos parâmetros do módulo HC-06

A configuração do módulo bluetooth se dá por uma série de comandos AT, que vamos enviar pelo serial monitor.

O serial monitor se conecta ao Arduino via porta serial, que por sua vez se conecta ao módulo bluetooth por uma segunda porta (pinos 6 e 7), que chamaremos de MinhaSerial. Essa nova serial foi criada utilizando-se a biblioteca SoftwareSerial, uma biblioteca que permite que você defina outras portas do Arduino como RX e TX.

Carregue este programa no Arduino :

 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
//Programa : Modulo bluetooth HC-06 - Configuracao
//Autor : Adilson Thomsen
 
//Carrega a biblioteca SoftwareSerial
#include <SoftwareSerial.h>
    
//Define os pinos para a serial  (RX, TX)
SoftwareSerial MinhaSerial(6,7);
String command = "";
    
void setup()  
{ 
  //Inicia a serial 
  Serial.begin(115200); 
  Serial.println("Digite os comandos AT :"); 
  //Inicia a serial configurada nas portas 6 e 7
  MinhaSerial.begin(9600); 
} 
    
void loop() 
{ 
  if (MinhaSerial.available())
  { 
     while(MinhaSerial.available())
     {
       command += (char)MinhaSerial.read(); 
     } 
   Serial.println(command); 
   command = ""; 
  } 
  
  if (Serial.available())
  { 
    delay(10);
    MinhaSerial.write(Serial.read()); 
  } 
}

 

Carregue o serial monitor e configure as caixas no rodapé para sem fim de linha, e o baud rate para 115200, conforme destacado abaixo. Aguarde a mensagem “Digite os comandos AT“:

Serial Monitor - Digitar comandos AT

Para verificar se o módulo está respondendo aos comandos, digite AT (em maiúsculas mesmo) na parte superior da tela e depois clique em ENVIAR:

Serial Monitor - AT

Ao receber a mensagem OK, é sinal de que o comando AT foi processado corretamente pelo módulo e o mesmo está respondendo. Na tabela abaixo temos os comandos AT suportados assim como a função de cada um:

Comando Resposta Função
AT OK Teste de comunicação
AT+VERSION OKlinvorV1.8 Mostra a versão do firmware
AT+NAMExyz OKsetname Altera o nome do módulo
AT+PIN1234 OKsetPIN Altera a senha do módulo
AT+BAUD1 OK1200 Seta o baud rate em 1200
AT+BAUD2 OK2400 Seta o baud rate em 2400
AT+BAUD3 OK4800 Seta o baud rate em 4800
AT+BAUD4 OK9600 Seta o baud rate em 9600
AT+BAUD5 OK19200 Seta o baud rate em 19200
AT+BAUD6 OK38400 Seta o baud rate em 38400
AT+BAUD7 OK57600 Seta o baud rate em 57600
AT+BAUD8 OK115200 Seta o baud rate em 115200
AT+BAUD9 OK230400 Seta o baud rate em 230400
AT+BAUDA OK460800 Seta o baud rate em 460800
AT+BAUDB OK921600 Seta o baud rate em 921600
AT+BAUDC OK1382400 Seta o baud rate em 1382400

Não recomendamos configurar a velocidade da serial (baud rate), com valor acima de 38400 para utilização com Arduino. Velocidades acima desse valor só devem ser utilizadas em casos específicos, com o hardware apropriado.

Testando a comunicação com o módulo bluetooth

Depois de configurado, é hora de testar o envio de comandos para acionar as portas do Arduino. Monte o circuito abaixo, composto pelo módulo bluetooth agora ligado aos pinos 0 (RX) e 1 (TX) do Arduino, e três leds nas portas 3, 4 e 5:

Circuito Arduino - HC-06 - Leds

Desligue a alimentação do módulo bluetooth para transferir o programa:

 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
//Programa : Modulo Bluetooth HC-06 - Leds
//Autor : Adilson Thomsen
 
//Armazena o caracter recebido
char buf;
 
void setup()
{
  //Define os pinos dos leds como saida
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  Serial.begin(9600);
}
 
void loop()
{
  while(Serial.available() > 0)
  {
    buf = Serial.read();
    //Caso seja recebido R, acende o led vermelho
    if (buf == 'R')
    {
      digitalWrite(3, HIGH);
      Serial.println("LED Vermelho ligado !");
    }
    //Caso seja recebido G, acende o led verde
    if (buf == 'G')
    {
      digitalWrite(4, HIGH);
      Serial.println("LED Verde ligado !");
    }
    //Caso seja recebido B, acende o led azul
    if (buf == 'B')
    {
      digitalWrite(5, HIGH);
      Serial.println("LED Azul ligado !");
    }

  }
}

 

Nesse ponto podemos ligar novamente a alimentação do HC-06. Vamos enviar comandos para o Arduino utilizando um celular com Android e o programa Bluetooth SPP, que você encontra nesse link.

Instale o Bluetooth SPP no seu aparelho e carregue o programa, que ao inicializar já faz uma varredura e mostra os dispositivos bluetooth detectados :

Tela inicial Bluetooth SPP

Selecione o dispositivo ao qual você quer se conectar (no nosso caso, o dispositivo BUILDBOT), e na tela seguinte clique em CONNECT :

Tela connect Bluetooth SPP

Se o dispositivo não estiver pareado, será solicitada a digitação da senha do módulo. Se a conexão estiver OK, será apresentada esta tela :

Tela seleção Bluetooth SPP

Selecione CMD line mode para entrar no modo de console, onde você poderá enviar comandos ao módulo bluetooth. Nessa tela, digite o caractere R e selecione ENVIAR, no canto inferior direito. O Arduino interpretará o caractere que foi recebido e irá acender o led correspondente:

Tela CMD Bluetooth SPP

Veja na área destacada acima que a comunicação é bidirecional, ou seja, o Arduino também envia para o celular uma string indicando que o comando foi recebido (Led Vermelho ligado !).

Envie o caractere G para acender o led verde ligado à porta 4, e B para acender o led azul ligado à porta 5.

 

Category: Artigos
  • Amando dos Santos says:

    Bom Dia!
    Tenho um projeto com arduino mega e bluetooth hc-06. Apos ligar o arduino mega tudo funciona perferitamente, o led o bluetooth fica piscando aguardando uma conexão, e permite a cenexão com o celular android e ha o trafego normal de informação entre ambos.
    O meu projeto o celular não fica o tempo todo conectado ao bluetooth, sendo assim percebi que apos um grande intervalo de tempo sem conexão o bluetooth hc-06 ele apaga o seu led e não consigo fazer conexão apos isso, para resolver tenho q desligar o arduino mega da fonte e religa-lo para o bluetooth voltar a funcionar.
    não sei se isso seria um defeito, pois me parece um tipo de economia, tipo se ficar um determinado tempo sem conexão ira desligar.
    gostaria de ter ajuda para deixar meu bluetooth pronto aguardando para se conectar durante todo o dia.

    02/05/2015 at 16:04
    • Adilson Thomsen says:

      Boa tarde,

      Eu fiz alguns testes aqui e a conexão ficou estável por bastante tempo. Fiz um teste com o dispositivo conectado por 4 horas, depois por 6 horas, sem problemas.

      De qualquer modo, o bluetooth é um pouco instável, dependendo do dispositivo que você estiver usando. No meu caso, eu notei que o sinal foi interrompido quando eu conectei o celular ao carregador, e também quando houve a atualização de algum aplicativo no aparelho.

      Abraço.

      03/05/2015 at 16:49
  • Simas says:

    Boa noite,

    Eu montei o esquema como foi explicado. Na primeira vez, quando foi digitado AT, apareceu OK e consegui seguir adiante. Depois quando tentei fazer novamente o procedimento, não apareceu mais nenhuma informação do módulo no monitor serial do arduino. Inicialmente, pensei que o módulo tinha queimado porque atrás dele está escrito “Level 3.3V” ao lado de RX e TX, mas vi que a luz vermelha continua piscando e o nome do módulo (consegui mudar na primeira vez que a conexão foi bem sucedida) aparece quando ligo o bluetooth do notebook e montei com os mesmos resistores, mas desde então o bluetooth não permitiu mais conexão com comando AT. Eu procurei informações na internet, mas não encontrei muita informação. Por isso, deixo essa mensagem para ver se existe a possibilidade de conectar novamente o módulo e fazer alterações com comando AT. Também fiz o download do aplicativo e consegui parear com o módulo, mas não consigo ligar nada. Logo na hora de conectar, o aplicativo mostra que nenhuma lista de serviço foi encontrada (a frase aparece embaixo de Service’s UUID).

    30/07/2015 at 02:31
  • Daniel Fernandes says:

    Olá amigo! Primeiramente, obrigado pelo tutorial;
    Com esse módulo, daria para controlar, ou seja, enviar mensagens (rolagem de texto) a uma matriz (ou várias) de Leds com Arduino? Obrigado

    14/08/2015 at 17:37
  • Rodrigo says:

    Boa tarde. Gostaria de saber com posso enviar uma tabela com alguns dados para o arduino(via bluetooth)e fazer o arduino armazenar essa tabela para depois poder consulta-lá.

    29/08/2015 at 15:35

Your email address will not be published. Required fields are marked *

*