Notícias & Blog

Como usar o Arduino Bluetooth HC-05 em modo mestre
Por Agosto 14, 2018 0 Comentário

Como usar o Arduino Bluetooth HC-05 em modo mestre

Os módulos arduino bluetooth são divididos em dois tipos: os que trabalham no modo escravo (slave), ou seja, apenas aceitam conexões de outros dispositivos, e os que trabalham tanto no modo escravo como no modo mestre (master), permitindo que se conectem à outros dispositivos bluetooth.

Nesse tutorial, vamos mostrar como interligar 2 módulos bluetooth: um Arduino Bluetooth HC-05 em modo master, e um HC-06 em modo slave. Você pode utilizar também, se preferir, dois módulos HC-05, já que ele aceita tanto o modo mestre como o modo escravo.

Os módulos em si são muito parecidos, o que muda é a versão do firmware, e geralmente os módulos arduino bluetooth HC-06 possuem apenas 4 pinos, e o HC-05 tem 6 pinos. Na dúvida, consulte a documentação do módulo que você tem em mãos.

Um dos pinos adicionais é o pino Status/Key, que vamos utilizar para programar o HC-05 em modo master, pareando-o com o HC-06.

O processo é um pouco extenso e recomendamos não pular nenhum passo, pois cada etapa depende da correta execução da etapa anterior.

O material que vamos utilizar é o seguinte :

  • Arduino Uno (podem ser utilizadas outras placas)
  • 1 módulo Arduino Bluetooth HC-05
  • 1 módulo Arduino Bluetooth HC-06
  • 4 resistores para montagem do divisor de tensão
  • 1 led de qualquer cor
  • 1 resistor limitador de corrente para o led

Antes de iniciarmos a ligação dos componentes, vamos relembrar que esses módulos trabalham com nível de sinal de 3.3v, o que significa que vamos precisar de um divisor de tensão para evitar a queima do módulo.

O divisor de tensão é composto por dois resistores, e você pode calcular a tensão de saída acessando o calculador desse link. Na página, digite 5 para a tensão de entrada (Input Voltage), digite os valores dos resistores (R1 e R2) que você possui, e pressione o botão Compute para verificar no campo Output Voltage qual será a tensão de saída, lembrando que por segurança esta deve ser, no máximo, de 3.3v.

Configurando Arduino Bluetooth HC-05 em modo mestre:

Circuito HC-05 - Master

Monte primeiro o circuito acima, que será usado para programar o HC-05 em modo master. Agora, carregue o seguinte programa no segundo Arduino antes de montar o circuito do módulo escravo:

//Armazena o caracter recebido
char buf;

void setup()
{
  //Define o pino 13 como saida
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  while(Serial.available() > 0)
  {
    buf = Serial.read();
    //Caso seja recebido o caracter L, acende o led
    if (buf == 'L')
    {
      digitalWrite(13, HIGH);
    }
    //Caso seja recebido o caracter D, apaga o led
     if (buf == 'D')
    {
      digitalWrite(13, LOW);
    }
  }
}

Configurando Arduino Bluetooth HC-06 em modo escravo:

Circuito HC-06 - Escravo

Efetue a ligação dos componentes no segundo Arduino e utilize uma fonte externa para alimentação. Note que no primeiro circuito estamos utilizando os pinos 10 e 11 do Arduino como pinos RX e TX de uma porta serial. Isso é possível pois vamos utilizar a biblioteca Software Serial. No Arduino desse circuito, carregue o seguinte programa:

//Programa : Modulo Arduino Bluetooth HC-05 - Programacao


//Carrega a biblioteca SoftwareSerial
#include <SoftwareSerial.h>
   
//Define os pinos para a serial   
SoftwareSerial mySerial(10, 11); // RX, TX  
String command = ""; // Stores response of bluetooth device  
            // which simply allows n between each  
            // response.  
   
void setup()   
{  
  //Inicia a serial  
  Serial.begin(115200);  
  Serial.println("Digite os comandos AT :");  
  //Inicia a serial configurada nas portas 10 e 11
  mySerial.begin(38400);  
}  
   
void loop()  
{  
  // Read device output if available.  
  if (mySerial.available()) 
  {  
     while(mySerial.available()) 
     { // While there is more to be read, keep reading.  
       command += (char)mySerial.read();  
     }  
   Serial.println(command);  
   command = ""; // No repeats  
  }  
  
  // Read user input if available.  
  if (Serial.available())
  {  
    delay(10); // The DELAY!  
    mySerial.write(Serial.read());  
  }  
}

Comandos AT:

Entre no serial monitor e selecione a velocidade de 115200 na parte inferior (destaque em vermelho), assim como o comando de fim de linha para Ambos NL & CR (destaque em azul). A mensagem “Digite os comandos AT :” será exibida:

HC-05 - Serial Monitor - Inicial

Digite o comando AT, que deve retornar com a mensagem “OK” indicando que o módulo está respondendo aos comandos. Digite AT+VERSION para exibir a versão do firmware, que pode ser diferente da imagem abaixo:

HC-05 - Serial Monitor - Versão

Digite agora os seguintes comandos na sequência. Cada um deles deve retornar “OK“, indicando que o comando foi aceito pelo módulo:

AT+ORGL (Reseta o módulo para a configuração padrão)
AT+RMAAD (remove dispositivos anteriormente pareados)
AT+ROLE=1 (define o modo de operação do módulo como MASTER)
AT+RESET (Reset do módulo após a definição do modo de operação)
AT+CMODE=1 (Permite a conexão a qualquer endereço)
AT+INQM=0,5,10 (Modo de varredura : padrão, procura por 5 dispositivos ou pára a varredura após 10 s)
AT+PSWD=1234 (define a senha do módulo mestre, que deve ser a mesma do módulo slave/escravo)
AT+INIT (inicializa o perfil para transmissão/recepção)
AT+INQ (inicializa a varredura por dispositivos bluetooth)

Essa varredura vai mostrar o endereço dos dispositivo bluetooth detectados. No nosso caso temos apenas um dispositivo escravo:

HC-05 - Serial Monitor - Varredura

A parte que nos interessa dessa tela é o endereço, que no nosso caso é 2013:7:183190. Vamos precisar dessa informação para efetuar o pareamento, trocando os símbolos de “dois pontos” por vírgulas, ficando assim: 2013,7,183190

Digite agora o comando AT+PAIR=<endereco>,<timeout>. No nosso caso, o comando ficaria assim :

AT+PAIR=2013,7,183190, 10

O serial monitor retornará “OK”.

Por fim, digite o comando AT+LINK=<endereco>, que vai conectar os dois dispositivos. Nesse momento o led do módulo HC-05 em modo master deve piscar de forma mais lenta, indicando conexão ao módulo HC-06, cujo led deve parar de piscar.

Essa série de comandos AT não precisa ser repetida a cada montagem. Uma vez configurado o módulo HC-05 em modo master, ele se conectará automaticamente ao módulo escravo todo vez que você energizar os módulos.

Programando o Arduino:

Para finalizar, desconecte o pino Key do HC-05 do pino 3.3v do Arduino, e carregue o seguinte programa no Arduino:

//Programa : Modulo Arduino Bluetooth HC-05 - Envio


//Carrega a biblioteca SoftwareSerial
#include <SoftwareSerial.h>  

//Define os pinos para a serial   
SoftwareSerial mySerial(10, 11); // RX, TX 

void setup()
{
  //Inicializa a serial nas portas 10 e 11
  mySerial.begin(38400);
}

void loop()
{
  //Envia pela serial o caracter L
  mySerial.print("L");
  delay(3000);
  //Envia pela serial o caracter D
  mySerial.print("D");
  delay(3000);
}

Esse programa envia os caracteres L (para acender o led) e D (para apagar o led) para a serial das portas 10 e 11, onde está ligado o HC-05 no primeiro Arduino. O segundo Arduino, com o HC-06, recebe esses caracteres, e acende o led ao receber o caracter L, e apaga o led ao receber o caracter D.

Deixe o seu comentário