Guia Passo a Passo: Parear Módulos Bluetooth HC‑05 como Mestre e Escravo usando Comandos AT
Neste tutorial Arduino, aprenderemos a configurar e parear dois módulos Bluetooth HC-05 como dispositivos Mestre e Escravo. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.
Visão Geral
Nos meus dois tutoriais anteriores, já aprendemos como conectar o módulo Bluetooth HC-05 ao Arduino e fazer uma comunicação entre um smartphone Android e o Arduino. Naqueles tutoriais, usamos o módulo Bluetooth HC-05 com sua configuração padrão, como dispositivo escravo.
Configurando o Módulo Bluetooth HC-05 – Comandos AT
Para este tutorial, precisamos configurar ambos os módulos. Para fazer isso, precisamos alternar para o Modo de Comando AT. Aqui está como faremos isso. Primeiro, precisamos conectar o módulo Bluetooth ao Arduino conforme o esquema do circuito explicado nos tutoriais anteriores. O que precisamos fazer adicionalmente é conectar o pino "EN" do módulo Bluetooth a 5 volts e também trocar os pinos TX e RX na placa Arduino.

Então, o pino RX do Arduino precisa ser conectado ao pino RX do módulo Bluetooth, através do divisor de tensão, e o pino TX do Arduino ao pino TX do módulo Bluetooth. Agora, enquanto seguramos o pequeno botão sobre o pino "EN", precisamos alimentar o módulo e é assim que entraremos no modo de comando. Se o LED do módulo Bluetooth piscar a cada 2 segundos, significa que entramos com sucesso no modo de comando AT.
Após isso, precisamos fazer upload de um sketch vazio para o Arduino, mas não se esqueça de desconectar as linhas RX e TX durante o upload. Em seguida, precisamos executar o Monitor Serial e lá selecionar "Both NL and CR", bem como "38400 baud", que é a taxa de baud padrão do módulo Bluetooth. Agora, estamos prontos para enviar comandos e seu formato é o seguinte.

Todos os comandos começam com "AT", seguidos do sinal "+", depois um <Nome do Parâmetro> e terminam com o sinal "?" que retorna o valor atual do parâmetro ou o sinal "=" quando queremos inserir um novo valor para esse parâmetro.
Configuração do Escravo
Por exemplo, se digitarmos apenas "AT", que é um comando de teste, devemos receber de volta a mensagem "OK". Então, se digitarmos "AT+UART?", devemos receber a mensagem que mostra a taxa de baud padrão, que é 38400. Então, se digitarmos "AT+ROLE?", receberemos uma mensagem "+ROLE=0", o que significa que o dispositivo Bluetooth está no modo escravo. Se digitarmos "AT+ADDR?", receberemos o endereço do módulo Bluetooth e deve parecer algo como: 98d3:34:905d3f.

Agora, precisamos anotar este endereço, pois precisaremos dele ao configurar o dispositivo mestre. Na verdade, isso é tudo o que precisamos ao configurar o dispositivo escravo, obter seu endereço, embora possamos alterar muitos parâmetros diferentes como seu nome, taxa de baud, senha de pareamento, etc., mas não faremos isso para este exemplo.
Configuração do Mestre
Ok, agora vamos configurar o outro módulo Bluetooth como dispositivo mestre. Primeiro, verificaremos a taxa de baud para garantir que seja a mesma 38400 do dispositivo escravo. Então, digitando "AT+ROLE=1", definiremos o módulo Bluetooth como dispositivo mestre. Após isso, usando "AT+CMODE=0", definiremos o modo de conexão para "endereço fixo" e, usando o comando "AT+BIND=", definiremos o endereço do dispositivo escravo que anotamos anteriormente.

Note aqui que, ao escrever o endereço, precisamos usar vírgulas em vez de dois-pontos. Note também que poderíamos ter pulado a etapa anterior se tivéssemos inserido "1" em vez de "0" no comando "AT+CMODE", o que faz o mestre conectar a qualquer dispositivo em seu alcance de transmissão, mas essa é uma configuração menos segura. Aqui você pode encontrar uma lista completa de comandos e parâmetros: Lista de Comandos AT HC-05
No entanto, isso é tudo o que precisamos para uma configuração básica dos módulos Bluetooth para funcionarem como dispositivos mestre e escravo. Agora, se os reconectarmos no modo normal, de dados, e re-alimentarmos os módulos, em questão de segundos o mestre se conectará ao escravo. Ambos os módulos começarão a piscar a cada 2 segundos, indicando uma conexão bem-sucedida.
Exemplo de Comunicação Entre Dois Módulos Bluetooth HC-05
Ok, agora estamos prontos para fazer o exemplo prático deste tutorial. Aqui está o esquema do circuito. Usaremos um potenciômetro, no mestre, para controlar um servo motor no escravo. E vice-versa, usaremos um botão, no escravo, para controlar um LED no mestre.

Você pode obter os componentes necessários para este tutorial Arduino em qualquer um dos sites abaixo:
- Módulo Bluetooth HC-05
- Placa Arduino
- Servo Motor
- Potenciômetro
- 3x resistores de 220 Ohms
- Protoboard e Jumpers
Códigos Fonte Arduino
Descrição: Primeiro, precisamos definir os pinos e algumas variáveis necessárias para o programa. Na seção setup, no mestre, definimos o pino do LED como saída e o definimos como baixo imediatamente, bem como iniciamos a comunicação serial a 38400 baud. Similarmente, no escravo, definimos o pino do botão como entrada, definimos o servo para qual pino está conectado e iniciamos a comunicação serial com a mesma taxa de baud.
Na seção loop, em ambos os códigos, com a função Serial.available(), verificaremos se há dados disponíveis na porta serial para serem lidos e, usando a função Serial.read(), leremos e armazenaremos os dados na variável "state". Então, se o mestre receber o caractere '1' que é enviado do escravo quando o estado do botão é alto, ou o botão é pressionado, o LED será ligado. Senão, se o caractere for '0', o LED será desligado.
Quanto ao controle do servo motor, primeiro no mestre, lemos o valor do potenciômetro e o mapeamos para uma faixa adequada para o servo, de 0 a 255. Esse valor é enviado ao escravo, que o usa para rotacionar o servo motor de acordo. Isso é tudo o que precisamos e aqui está a demonstração do exemplo.
Código do Mestre:
/*
* Como configurar e parear dois módulos Bluetooth HC-05
* por Dejan Nedelkovski, www.HowToMechatronics.com
* == CÓDIGO MESTRE ==
*/
#define ledPin 9
int state = 0;
int potValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Taxa de comunicação padrão do módulo Bluetooth
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
// Controlando o LED
if (state == '1') {
digitalWrite(ledPin, HIGH); // LED LIGADO
state = 0;
} else if (state == '0') {
digitalWrite(ledPin, LOW); // LED DESLIGADO
state = 0;
}
// Lendo o potenciômetro
potValue = analogRead(A0);
int potValueMapped = map(potValue, 0, 1023, 0, 255);
Serial.write(potValueMapped); // Envia potValue para o servo motor
delay(10);
}
Código do Escravo:
/*
* Como configurar e parear dois módulos Bluetooth HC-05
* por Dejan Nedelkovski, www.HowToMechatronics.com
* == CÓDIGO ESCRAVO ==
*/
#include <Servo.h>
#define button 8
Servo myServo;
int state = 20;
int buttonState = 0;
void setup() {
pinMode(button, INPUT);
myServo.attach(9);
Serial.begin(38400); // Taxa de comunicação padrão do módulo Bluetooth
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
// Controlando o servo motor
myServo.write(state);
delay(10);
// Lendo o botão
buttonState = digitalRead(button);
if (buttonState == HIGH) {
Serial.write('1'); // Envia '1' para o mestre ligar LED
} else {
Serial.write('0');
}
}
Isso é tudo. Se você tiver algum problema, sinta-se à vontade para pedir ajuda na seção de comentários abaixo.
Processo de manufatura
- Bluetooth LE vs. XLE: A Próxima Geração de Rastreamento e Monitoramento de Ativos
- Combinando Bluetooth e Ultrasom para Rastreamento de Localização em Tempo Real Preciso e Custo-Efetivo
- Verifique e Calibre Seu Sensor de Umidade para Medições Precisas
- Construa um Carro Controlado por Bluetooth com Arduino: Guia DIY Completo
- Cafeteira Inteligente com Arduino com Controle Bluetooth e Monitoramento de Temperatura
- Kit Robô Pick-and-Place Controlado por Bluetooth: Arduino UNO + Braço 2 GDL e Chassi Carro Inteligente
- Configurar NeoPixels com Vixen Lights e Arduino: Guia Passo a Passo
- Rastreie Orientação com Arduino e Acelerômetro ADXL345 – Guia Passo a Passo
- Aço Ferramenta Desmistificado: Composição, Fabricação e Aplicações Industriais
- Serra de Fita vs. Serra Circular: Diferenças Principais Explicadas