Diferença entre os módulos bluetooth HC-05 e HC-06
Muita gente fica na dúvida entre adquirir um módulo bluetooth HC-05 ou um HC-06. Mas afinal, qual é a diferença entre eles, já que geralmente os módulos são muito parecidos visualmente?
A diferença básica entre os módulos é que o HC-05 pode ser configurado nos modos Master (mestre), Slave (escravo) e Loopback, e o HC-06 apenas no modo Slave.
- Modo Master (Mestre) : O módulo pode se conectar à outros dispositivos bluetooth
- Modo Slave (Escravo) : O módulo apenas recebe conexões de outros dispositivos bluetooth
- Modo Loopback : O módulo recebe os dados do módulo Master e envia de volta esses mesmos dados. É um modo utilizado geralmente para testes.
Em quais situações devo utilizar os modos Master ou Slave?
Tudo vai depender do seu projeto, mas imagine um circuito em que exista um sensor de temperatura, e que você necessite de um aviso quando a temperatura atingir determinado valor. Nesse caso, seria mais indicado um HC-05 no modo Master, que faria a conexão com algum outro dispositivo, como celular, um computador ou outro módulo bluetooth, e daria o alerta sem a necessidade de checar o sensor à todo instante.
Por outro lado, em circuitos onde você precisa enviar comandos ao Arduino e apenas checar o estado de sensores esporadicamente, pode ser utilizado o HC-06 ou o próprio HC-05 em modo Slave.
Diferenças de configuração entre o bluetooth HC-05 e HC-06
Tanto o HC-05 como o HC-06 podem ser configurados por meio de comandos AT, à partir de programas de controle serial como o Serial Monitor,o Termite e o TeraTerm.
Por ter mais recursos o HC-05 possui mais comandos AT do que o HC-06. Eu elaborei uma tabela mostrando os principais comandos disponíveis para cada um:
Arrisco a dizer que para o HC-06 os únicos comandos disponíveis são esses da tabela. Como são muitos tipos de firmware disponíveis, podemos ter algum tipo de comando diferente ou não documentado, mas basicamente no HC-06 você configura o nome, senha e velocidade da serial. Já no HC-05 além dos comandos básicos temos comandos para configuração do modo master/slave, comando para pareamento, rastreamento de dispositivos, etc.
Uma lista completa dos comandos aceitos pelo HC-05, com exemplos de utilização, você encontra aqui.
Configuração do módulo bluetooth com comandos AT
Como eu comentei anteriormente, os módulos são configurados utilizando-se uma série de comandos AT, enviados ao módulo via porta serial.
O módulo HC-06 é um pouco mais simples de configurar. Resumidamente, basta conectar o HC-06 ao Arduino, carregar o programa e enviar os comandos AT.
No caso do HC-05, para enviar esse comandos temos que utilizar um pino adicional do HC-05, o pino KEY , que deve estar em estado ALTO (HIGH). Esse procedimento coloca o módulo em “modo AT”. Alguns módulos vem até mesmo com um pequeno botão para colocar esse pino em nível HIGH.
Conexão do HC-05 no Arduino
Para configurar o HC-05 utilizando um Arduino Uno, faça a ligação abaixo, utilizando um divisor de tensão no pino RX do módulo.
ATENÇÃO: Nunca é demais lembrar, e aqui no blog eu já comentei isso várias vezes. Os módulos bluetooth mais comuns trabalham com nível de sinal de 3.3V (não confundir com a alimentação do módulo, que pode ser de 3.6 à 6V). Assim, para usar o módulo com as placas Arduino que trabalham com nível de sinal de 5V, utilize sempre um divisor de tensão para evitar danos ao módulo bluetooth.
Para calcular o valor dos 2 resistores que formam o divisor de tensão, acesse este link. Preencha os campos R1 e R2 com o valor dos resistores que você possui, coloque a tensão de entrada como 5V e clique em Calcular para calcular a tensão de saída, que não deve exceder 3.3V.
Na imagem abaixo está uma simulação desse cálculo, com o uso de resistores de 470 ohms e 680 ohms:
Vamos utilizar os pinos 6 e 7 como RX e TX usando a biblioteca SoftwareSerial, que permite o uso de outros pinos do Arduino como interface serial. O pino 3.3V do Arduino será conectado ao pino KEY do módulo:
Para programar o módulo, primeiramente carregue este programa no Arduino:
// Programa : Modulo BT HC-05 - Programacao // Autor : Arduino e Cia // Carrega a biblioteca SoftwareSerial #include <SoftwareSerial.h> // Define os pinos para a serial SoftwareSerial MinhaSerial(6, 7); // RX, TX String command = ""; void setup() { // Inicia a serial Serial.begin(115200); // Mensagem inicial Serial.println("Digite os comandos AT :"); // Inicia a serial configurada nas portas 6 e 7 MinhaSerial.begin(38400); } void loop() { // Verifica se ha comunicacao com o modulo // e efetua a leitura if (MinhaSerial.available()) { while(MinhaSerial.available()) { command += (char)MinhaSerial.read(); } Serial.println(command); command = ""; } // Envio de comandos if (Serial.available()) { delay(10); MinhaSerial.write(Serial.read()); } }
Abra o serial monitor e selecione a velocidade de comunicação para 115200 e também os parâmetros NL (New Line) e CR (Carriage Return), conforme destacado. Em alguns segundos a mensagem Digite os comandos AT aparecerá na tela:
Digite os comandos AT na parte superior do Serial Monitor e clique em ENVIAR. Se o comando for aceito pelo módulo, você receberá a mensagem OK após cada um deles.
Utilize os comandos AT abaixo para as principais tarefas:
- AT para testar o módulo
- AT+VERSION? para mostrar a versão do firmware
- AT+NAME=<nome_do_modulo> para alterar o nome do módulo. Exemplo : AT+NAME=ARDUINO_E_CIA
- AT+PSWD=<senha> para alterar a senha. Exemplo : AT+PSWD=1234
Gostou deste post sobre as diferenças entre os módulos bluetooth HC-05 e HC-06? Pesquise outros posts sobre o assunto aqui mesmo no Arduino e Cia!
Olá, segui todos os passos a risca e nada retornou no Serial Monitor.
O que pode estar acontecendo?
Boa tarde,
Voce setou a velocidade da serial corretamente ? Veja se o pino "key" do modulo está conectado corretamente. É ele que determina se o módulo bluetooth vai entrar em modo de programação.
Abraço !
Eu também estou com o mesmo problema e meu pino "Key" está conectado a 3,3 v conforme descrito na imagem do esquemático acima.
O que poderia ser?
Boa noite David,
Por favor reveja as conexões e não se esqueça de usar o divisor de tensão para evitar a queima do módulo.
Abraço !
Se o HC 05 é mais versátil que o modelo 06, por que o 05 é mais barato????
Boa tarde,
Nem sempre. Eles estão com os preços bem parecidos, pelo que eu vi.
Abraço!
Boa noite, para que posso fazer uma programação com o arduino e bluetooth h-05 para movimentação de motores como eu faço
Você tem que estudar programação de microcontroladores, no caso aqui o atmega por meio do Arduino, então estudar os datasheets dos módulos e realizar os comandos corretos. Ou então pagar alguém que já estudou tudo isso pra fazer o que você deseja.
Olá, estou com uma dúvida na linha que esta o comando: "command += (char)MinhaSerial.read(); ".
Para que serve o "+=" ? Procurei sobre isso mas não encontrei nada :/
Obrigado!
Boa noite,
É uma das operações matemáticas disponíveis na programação do Arduino. Esse link explica como funciona :
http://arduino.cc/en/Reference/IncrementCompound
Abraço !
Veja o comando Serial.begin(115200) no SETUP()
Olá boa noite.
Parabéns pelas ótimas explicações.
Preciso de um código para o Arduino enviar um comando a cada 1s para um módulo Bluetooth transmitir um comando. Estou usando conjunto (Arduino + HC-05).
Muito obrigado.
Boa tarde Guilherme,
Não tenho esse código pronto, mas você pode utilizar esse artigo como base:
http://www.arduinoecia.com.br/2014/06/texto-android-arduino-bluetooth.html
Abraço !
AMIGO, o meu modulo HC-05 está respondendo de forma estranha os comandos AT ! Parece que ele responde palavras árabes ou hieroglifos. Sabe o motivo ? É de extrema urgência amigo.
Boa tarde Wendell,
Tente alterar a velocidade de comunicacao serial com o modulo, provavelmente é isso, talvez o seu módulo não tenha vindo setado com a velocidade padrao, que se eu não me engano é de 9600.
Tente alterar a linha 18 do programa de 38400 para 9600.
Abraço e espero que ajude. 🙂
Estou com o mesmo problema do amigo acima. Alterei a velocidade mas agora aparece erro. Obrigado
Estou com o mesmo problema do amigo acima, porém alterei a velocidade e não deu certo ainda. Poderia me informa o que pode ser? Obrigado
Boa noite Thiago,
O seu módulo é o mesmo que eu utilizo no post ?
Abraço.
ola amigo eu fiz a mudança do nome do modulo com o arduino ,mas eu quero experimentar fazer um projeto com o pic esta mudança fica gravada no modulo ?
Boa tarde,
Fica gravada sim, pode usar tranquilamente.
Abraço !
Boa tarde amigao, excelente post!!
Estou prestes a comprar um modulo HC-05, vou utiliza-lo com PIC e não com arduino…. devo utilizar algum divisor de tensão em algum pino TX/RX?? grato desde já!!
Boa tarde Rodrigo,
Não conheço direito o PIC, mas o HC-05 tem nível de tensão suportado de 3.3V. Qualquer valor acima disso exige o divisor de tensão.
Abraço !
Aos colegas que conseguiram fazê-lo funcionar, que versão da IDE estão a usar?
Boa noite,
Aqui no Arduino e Cia usamos a versão 1.6.1 da IDE nesse post.
Abraço !
Tenho a IDE 1.6.5, e não funciona, chega a mostrar a mensagem "DIGITE OS COMANDOS AT:
é possível fazer uma comunicação full duplex entre dois módulos do hc-06?
Boa noite,
Não, o HC-06 funciona apenas em modo escravo (aceita pareamento).
Abraço!
Tem como disponibilizar o link de download da biblioteca???
Bom dia Bruno,
A biblioteca Software Serial já está incluída na IDE do Arduino.
Abraço!
tem como enviar o arquivo zip hc05.LIB e hc06.LIB para usar no proteus ?? .. quero montar uns projetos …desde ja agradeco …… meu e mail [email protected]
Bom dia,
Eu não tenho esses arquivos. Vamos ver se o pessoal do blog consegue te ajudar.
Abraço!
Boa tarde, segui todos os passos e somente retorna "Digite os comandos AT :"
Uso o Arduino Mega ADK com o módulo bluetooth HC-05
Também usei dois resistores de 150 ohms.
O que pode ser?
Bom Dia,
Sou Técnico em Eletrônica, Domino um pouco informática, estou entrando na área de programação e acompanhando seu curso, Poderia descrever um método de realizar esse procedimento de gravar comandos no Arduino UNO usando um celular Android para programar via Bluetooth, usando o modulo Bluetooth hc-05, só que seria sem a conexão via cabo pela COM1 e sim um modo de configuração do Arduino uno pelo Smartphone Galaxy sem cabo, tudo feito pelo Bluetooth do celular para o modulo Bluetooth do Arduino UNO ??? ( Tudo Portátil, sem PC, usando uma fonte externa alimentando a placa de Arduino )
Toda essa dificuldade surgiu porque o modelo do meu celular é Samsung Galaxy Grand Duo 2 e ele não tem conexão Via OTG, para usar o cabo, por esse motivo que eu gostaria de programar e copilar meu Arduíno uno via Bluetooth ;
Ligações Físicas;
De um lado eu teria o meu celular com o App ArduinoDroid instalado pareado via Bluetooth e do outro a minha placa Arduino Uno ligado a um modulo Bluetooth e usando uma fonte de 5v ou 03 Baterias de 1,5v, ou 9v …
Poderia descrever a parte física e o código..
De ante mão, já agradeço…
Olá tudo bem?! Eu tenho uma dúvida. Comprei um bt Shield 2.2 que trabalha tanto em modo mestre como escravo. Para acionar lâmpadas por bluetooth, eu teria que usar o modo mestre ou escravo?? E como eu coloco em modo mestre e/ou escravo?
Boa noite,
Eu não conheço esse módulo, especificamente, mas para o exemplo do Bluetooth, coloque-o em modo escravo.
Abraço!
Bom dia!
Faço um curso técnico de eletrônica e em meu trabalho de conclusão de curso pretendo desenvolver um circuito que ligue/desligue lâmpadas por um aplicativo de celular via bluetooth e para isso comprei o módulo bluetooth HC-06, consigo fazer o circuito com o mesmo ou devo trocar para o HC-05?
Bom dia Pedro,
Consegue fazer com o HC-06 sim. Siga o mesmo esquema.
Abraço!
Amigo, eu estou referenciando seu site em meu tcc, mas para isso preciso do nome de quem escreveu o artigo, acho que isso ajudaria a mim e muitos outros.
Bom dia Will,
O autor do artigo é Adilson Thomsen. Qualquer dúvida, entre em contato utilizando o formulário de contato no lado direito da página.
Abraço e obrigado!
Bom dia.. estou com problema em meu modulo Bluetooth e gostaria de ajuda.. fiz toda a ligação só que quando ligo a placa de arduino ele demora a ligar (luz vermelha fik piscando) e não consigo conectar o celular ele não fica visível e quando coloco para pesquisar bluetooth no meu celular não aparece… antes ele funcionava legal e agora esta com esse problema..
Bom dia,
Você alterou alguma configuração do módulo ?
Abraço.
Bom dia.
não esta aparecendo os comandos AT no serial monitor.
Esta tudo conferido oque pode ser?
Boa noite.
Gostaria de saber se consigo comunicar com um fone bluetoth utilizando o modulo HC-05????
Boa Noite.
Gostaria de saber se consigo comunicar um fone buetooth motorola HK1110 utilizando o modulo HC-05??? o modulo esta ok pois testei e comuniquei com celular. tb habilitei a configuração do modulo para master.
Quem puder ajudar agradecido..
Bom dia Anderson,
Os módulos BT, pelo menos os que eu testei, não tem os protocolos de comunicação para funcionar dessa maneira.
Abraço!
obrigado pela informação.
oi bom dia estou pesquisando para utilizar em comunicaçao dmx sendo 1 master e varios slave, vc sabe se isso é possivel linkar varios modulos para receber sinal e ter apenas 1 transmissor
abraços
olá
estou montndo um carrinho controlado por bluethoth pelo android, estou usando o motor shield e modulo hc-05 mas estou com problema na programacão
#include //Inlcui a biblioteca SoftwareSerial.h
// carrega a biblioteca AFMotor
#include
// Define o motor1 ligado a conexao 1
AF_DCMotor motor1(1);
// Define o motor2 ligado a conexao 2
AF_DCMotor motor2(2);
#define RxD 10 //Define RxD como 10
#define TxD 11 //Define TxD como 11
SoftwareSerial blueToothSerial(RxD,TxD); //Instância a biblioteca SoftwareSerial.h
void setup()
{
// Define a velocidade maxima para os motores 1 e 2
motor1.setSpeed(255);
motor2.setSpeed(255);
}
void loop()
{
char letra; //Variável char para armazenar o caractere recebido
if(blueToothSerial.available()) //Se algo for recebido pela serial do módulo bluetooth
{
letra = blueToothSerial.read(); //Armazena o caractere recebido na variável letra
if(letra == 'F') //Se o caractere recebido for a letra 'F'
{
// Aciona o motor 1 no sentido horario
motor1.run(FORWARD);
// Aciona o motor 2 no sentido horario
motor2.run(FORWARD);
//==================
}
else if (letra == 'B') //Se o caractere recebido for a letra 'B'
{
// Aciona o motor 1 no sentido anti-horario
motor1.run(FORWARD);
// Aciona o motor 2 no sentido anti-horario
motor2.run(FORWARD);
//==================
}
else if(letra == 'R') //Se o caractere recebido for a letra 'R'
{
// Aciona o motor 2 no sentido horario
motor2.run(FORWARD);
// Desliga o motor 1
motor1.run(RELEASE);
//==================
}
else if (letra == 'L') //Se o caractere recebido for a letra 'L'
{
// Aciona o motor 1 no sentido horario
motor1.run(FORWARD);
// Desliga o motor 2
motor2.run(RELEASE);
//==================
}
else if(letra == 'S') //Se o caractere recebido for a letra 'S'
{
// Desliga os 2 motores
motor1.run(RELEASE);
motor2.run(RELEASE);
//==================
}
}
}
void parear_dispositivo()
{
blueToothSerial.begin(9600); //Configura o baud rate do bluetooth como 9600
blueToothSerial.print("AT");
delay(400);
blueToothSerial.print("AT+DEFAULT"); // Restaura configuração de fabrica do Bluetooth
delay(2000);
blueToothSerial.print("AT+NAMELabDeGaragem"); // Configura o nome do disopsitivo bluetoothpara "WANDERSON RENATO3" , a legenda do bluetooth não pode passar de 12 caracteres
delay(400);
blueToothSerial.print("AT+PIN1234"); // Muda o codigo de acesso para "1234"
delay(400);
blueToothSerial.print("AT+AUTH1");
delay(400);
blueToothSerial.flush(); // Dá um flush na serial do módulo bluetooth
}
Olá ! eu possuo dois módulos HC 05. Eles não vem com o pino "Key", vem com o tal pino "En". Todavia, eu consigo entrar no modo AT. A questão é que quando configuro ambos como "slave", qualquer dispositvo android detecta os meus módulos. Mas como "master" , eles ficam "invisíveis", eles não são encontrados por nenhum dispositivo android. Estou correndo atrás de ajuda por vários fóruns por aí. Queria que os dispositivos androids que possuo, reconhecessem meus módulos como "master". Pois tenho uma aplicação para controlar o teclado do android, via Arduino. Você poderia tentar me orientar sobre o que devo fazer ? muito obrigado por sua atenção !
Oi Sawadee,
Nesse caso, é o seu módulo que vai se conectar com o Android, certo ? e não o contrário… Dê uma olhada nesse post que eu fiz para o blog FILIPEFLOP, sobre o HC-05 em modo master: http://blog.filipeflop.com/wireless/tutorial-arduino-bluetooth-hc-05-mestre.html
Abraço!
eu consigo utilizar o modo slave e master na mesma programação ??
Oi Giulia,
Infelizmente não. Ou um modo, ou outro, mas os dois ao mesmo tempo não.
Abraço!
Estou tendo um problema com a comunicação bluetooth do arduino e um galaxy tab2 10,1. Ele pareia certinho, mas depois dá erro e não funciona mais. O que pode ser? Será alguma programação errada ou o tablet?
Bom dia,
Pode ser alguma incompatibilidade entre o tablet e o módulo… Com outros aparelhos o módulo funciona normalmente ? Com um celular, por exemplo.
Abraço!
Olá, gostaria de enviar a informação de um sensor para um PIC. Para isso, disponho de 2módulos hc-05. queria saber se seria suficiente programá-los (usando o arduino) em modo slave para que um envie o sinal e o outro o capture para transferir ao PIC.
Boa noite Artur,
Sim, você pode configurar os módulos no Arduino, do jeito que você precisa. Como depois a comunicação é serial, é relativamente fácil adaptar para uso com o PIC.
Abraço!
Boa noite
E possível deixar o modulo HC 05 invisível obrigado jorge
Boa noite, como eu faço para controlar os motores de um projeto de uma ponte rolantes com o arduino uno e o bluetooth h-06 qual a biblioteca que eu posso usar e o passo é o meu primeiro projeto sobre arduino
Boa tarde, esses modulos podem parear até quantos dispostivos ao memso tempo? Obrigado.
Muito bom, direto e bem explicativo, além de ajudar o pessoal nos comentários. Sucesso meu mano!
Valeu!!! 🙂