Comunicação entre Módulos Bluetooth HC-05 e HC-06

HC-05

Olá pessoal! Hoje vamos tratar de dois módulos interessantes, o HC-05 e o HC-06. Ambos são módulos bluetooth comuns e fáceis de se encontrar no mercado. Neste artigo faremos uma comunicação serial entre estes dois módulos.

Requisitos

  • Certifique-se que você tenha em mãos uma peça de cada um dos módulos comentados acima;
  • Instale o software RealTerm, disponível aqui. Este software será utilizado para o envio dos comandos AT.

Conhecendo os Módulos HC-05 e HC-06

O módulo HC-05 é o módulo Master. O início da conexão sempre parte deste módulo. Já o HC-06 é o módulo Slave, que se conecta quando o Master desejar. Visualmente é fácil de identifica-los: o HC-05 tem 6 pinos e o HC-06 tem 4. O modelo HC-05 possui algumas variações no mercado, podendo apresentar o controle do pino KEY através de um botão na placa ou um pino externo. A função deles é praticamente a mesma: inicializar o módulo para a entrada de comandos AT. Este comportamento será aprofundado ao longo deste artigo.

Ambos os módulos interpretam como comandos os dados recebidos no período de 1 segundo. Portanto, digitar caractere por caractere é praticamente impossível neste curto espaço de tempo. Para facilitar a comunicação, foi escolhido o terminal RealTerm por ter a opção de mandar pacotes de caracteres de uma única vez, possibilitando assim a comunicação com os módulos. Cuidado ao ligar os módulos em interfaces seriais, pois os níveis lógicos de comunicação são 3,3V.

Configurando o módulo SLAVE (HC-06)

01-Bluetooth-modulo-hc-06
Figura 1 – Módulo Bluetooth  HC-06

Para iniciar, alimente o módulo com a tensão indicada para o seu modelo (geralmente de 3,6V a 6V) e conecte-o a uma interface serial. Para este tutorial foram utilizados adaptadores seriais com saída TTL (0V – 5V). Logo, há a necessidade de atenuar o sinal lógico para 3,3V, a fim de não danificar os módulos. Para isto, pode-se utilizar um divisor resistivo para o pino RX do módulo:

HC-05 e HC-06: Circuito para teste do módulo usando divisor resistivo
Figura 2 – Circuito para teste do módulo usando divisor resistivo

Assim que o módulo estiver alimentado, seu LED piscará. Se o mesmo continuar piscando rápido significa que o módulo não está em comunicação com nenhum dispositivo. Caso ele permaneça ligado isso significa que o módulo está conectado a outro dispositivo; assim a configuração do módulo não poderá ser feita. Verificado isso, vamos testar a comunicação com este módulo. Para isto, abra o RealTerm, vá na guia ‘Port’, selecione o BaudRate 9600 e a porta na qual está conectado o módulo e por fim clique em ‘Open’.

HC-05 e HC-06: Configuração do terminal
Figura 3 – Configuração do terminal

Agora, vamos facilitar a visualização dos comandos no terminal. Seria interessante visualizar tudo que está sendo enviado e recebido, certo? Para isto, vá na guia ‘Display’ e marque a opção ‘Half Duplex’.

HC-05 e HC-06: Selecionando a opção Half duplex
Figura 4 – Selecionando a opção Half duplex

 

Pronto! Agora podemos enviar os comandos para o módulo. Como todos os dados devem chegar em menos de 1 segundo, utilizaremos a guia ‘Send’, que mandará vários caracteres em uma só transmissão. Digite o comando a ser enviado e clique no botão ‘Send ASCII’. Primeiramente vamos testar a conexão, mandando os caracteres “AT” (sem aspas):

HC-05 e HC-06: Enviando comandos
Figura 5 – Enviando comandos

Em verde vemos o comando enviado e em amarelo a mensagem recebida. Assim confirmamos a correta comunicação com o módulo. Caso não consiga a resposta ‘OK’, tente outros BaudRates (o módulo pode vir com alguma configuração diferente). Lembre-se também de verificar se o módulo não está conectado a outro dispositivo.

Agora vamos configurar as propriedades do módulo. Podemos alterar nome de descoberta do dispositivo, a senha de conexão e o BaudRate de comunicação. Para alterar a senha usamos o comando “AT+PINX” onde X deve ser um número de 4 dígitos. Já para a configuração de  BaudRate deve-se utilizar o comando “AT+BAUDX” onde X é parametrizado segundo a tabela 1 a seguir:

Tabela 1 – BaudRates

bluetooth-tabela1-baudrates

OBS: Maiores velocidades não são indicadas pois pode ocorrer incompatibilidade com alguns adaptadores seriais.

Nos comandos a seguir vamos fazer as seguintes configurações:

  • BaudRate: 9600;
  •  PIN: 0123.
HC-05 e HC-06: Comandos para configuração do Baudrate e senha
Figura 6 – Comandos para configuração do Baudrate e senha

Pronto! Seu módulo Slave já está configurado!

Configurando o módulo MASTER (HC-05)

07-bluetooth-modulo-hc05
Figura 7 – módulo Bluetooth  HC-05

Análogo ao módulo Slave o módulo Master também trabalha com nível lógico 3,3V. Faça o mesmo circuito atenuador para a conexão com a interface serial TTL. Nos módulos em que o pino KEY existe, ligue este pino a uma tensão de 3,3V. Dica: se você tiver em mãos apenas uma fonte 5V, utilize o mesmo divisor resistivo do atenuador exibido na figura 2 . O tutorial será baseado no módulo com botão.

HC-05 e HC-06: Esquema de ligação para o módulo HC-05
Figura 8 – Esquema de ligação para o módulo HC-05

Antes de ligar o módulo, pressione e segure o botão. Ligue a alimentação e apenas depois solte o botão. O LED deve começar a piscar lentamente, indicando que está pronto para receber os comandos.

Diferente dos módulos Slave este módulo finaliza os comandos com a inserção dos caracteres \r\n. Você não precisa escrevê-los no comando, o RealTerm faz isto automaticamente. Basta selecionar esta opção na aba ‘Send’:

HC-05 e HC-06: Configurando os caracteres \r\n para envio automático
Figura 9 – Configurando os caracteres \r\n para envio automático

Inicialmente este módulo entra com o BaudRate em 38400. Configure o BaudRate e envie o comando de teste “AT”:

HC-05 e HC-06: Enviando o comando AT
Figura 10 – Enviando o comando AT

Recebeu um OK? Ótimo, seu módulo está funcionando corretamente! Agora vamos resetar as configurações e começar do zero, para evitar erros. Usaremos os seguintes comandos:

  • AT+ORGL: reseta o módulo para as configurações originais;
  • AT+UART=38400,0,0: configura o BaudRate para 38400;
  • AT+NAME=EmbarcadosMASTER: altera o nome de exibição. Você poderá vê-lo através de seu smartphone por exemplo;
  • AT+PSWD=0123: configura PIN para 0123;
  • AT+ROLE=1: coloca o módulo para operar como MASTER;
  • AT+CMODE=1: configura o módulo para se conectar com qualquer dispositivo com o mesmo PIN;
  • AT+INIT: inicia a aplicação.
HC-05 e HC-06: comandos bluetooth
Figura 11 – Comandos

Após o INIT não há resposta, a menos que você segure o botão pressionado ao enviar o comando. Notou que a senha utilizada foi a mesma do dispositivo Slave? Isto faz com que ambos se conectem automaticamente quando ligados. Após o comando INIT o LED piscará rapidamente até se conectar com o dispositivo Slave. Já o Slave, quando conectar-se com o Master, manterá seu LED ligado.

Pronto! Podemos agora desfrutar de uma comunicação serial sem fio.

HC-05 e HC-06: Comunicação entre os terminais
Figura 12 – Comunicação entre os terminais

Referências

http://www.instructables.com/id/AT-command-mode-of-HC-05-Bluetooth-module/?ALLSTEPS
http://www.linotux.ch/arduino/HC-0305_serial_module_AT_commamd_set_201104_revised.pdf
http://realterm.sourceforge.net/
http://www.thalin.se/2013/01/fritzing-veroboard-and-breadboard.html
https://github.com/RafaGS/Fritzing
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comunicações » Comunicação entre Módulos Bluetooth HC-05 e HC-06
Comentários:
Notificações
Notificar
guest
14 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
THIAGO LEITE
THIAGO LEITE
25/06/2020 20:41

Amigo, muito bom seu post.
Uma dúvida que tenho sobre o HC06: Até o momento só encontrei como alterar a senha de acesso deste dispositivo pelo computador. Mas a questão é: Estou com um projeto que preciso ficar trocando a senha de acesso deste módulo por várias vezes. Mas, para que isso seja viavel, eu teria que ter uma facilidade para trocar esta senha, com o usb de um smartphone por exemplo. Há como fazê-lo?

Rodrigo Wilton
13/09/2018 10:06

bom dia, eu consigo parear varios arduinos com um celular so?

Johnny
Johnny
Reply to  rodrigo wilton
28/02/2019 17:51

creio que não, acredito que a conexão bluetooth seja de 1 para 1.
Posso estar errado

Antonio Cenci
02/02/2018 15:43

Boa tarde. Não estou conseguindo configurar o PIN no modulo master, ele não esta aceitando o comando AT+PIN. Funciona corretamente a comunicação entre master e slave, porém com o PIN de “0000” de fabrica. Tentei o comando AT+PSWD mas também não funcionou. Teria alguma ideia de porque o modulo não esta aceitando o comando?

Valdenir Vasconcelos
Valdenir Vasconcelos
21/01/2018 15:58

Boa tarde. Muito bom o artigo, meus parabéns. Wenderson Oliveira, será que tem como eu enviar os comandos AT via Bluetooth e ele executar, tipo no caso das portas (18. Set PIO multiple port output)? É que eu queria usar ele para controlar alguma coisa sem a necessidade de um arduino ou qualquer outro microcontrolador externo. Acho que seria muito interessante. Obrigado….

Giovanni Bauermeister
Giovanni Bauermeister
02/02/2016 08:45

bem legal o artigo! até agora só tinha usado o módulo slave. Vou comprar um master e tentar seguir o artigo.

Wenderson Oliveira
Wenderson Oliveira
Reply to  Giovanni Bauermeister
02/02/2016 12:17

Obrigado, Giovanni! Ótimo, é sempre interessante ter em mãos uma serial sem fio. Se conseguires seguir o artigo deixe um comentário!

Pedro Gonçalves
Pedro Gonçalves
30/08/2017 15:23

Boa tarde! Ótimo artigo. Uma dúvida, com módulo hc-05 é possivel eu conectar um controle de VR Box, segue a imagem : http://images.tcdn.com.br/img/img_prod/276364/oculos_vr_box_2_0_realidade_virtual_3d_android_controle_10826214_3_20160729114147.jpg

Por exemplo: eu gostaria de ligar o hc-05 no arduino normal e ao ligar o mesmo parear com esse controle VR Box, e o controle possa enviar os comandos direcionais dele, para por exemplo, controlar um carrinho feito com arduino. Seria possivel com esses comandos ATs? No caso eu configuraria ele sem senha meu master para conectar no controle, que é sem senha tbm? é Possivel?

Muito obrigado, att! Pedro Gonçalves

Vinicius Lopes
Vinicius Lopes
31/07/2017 19:29

Não consigo receber os comandos AT, o que faço, ja tentei de tudo, será que queimou o RX?

Tanires
Tanires
07/07/2017 16:49

Não encontro o sinal no meu celular, configurei tudo certinho e nada. O que eu faço?

Igor ボブ
Igor ボブ
28/02/2017 19:15

Olá muito bom artigo. Uma dúvida se vc puder ajudar. Estou usando um adaptador bluetooth pois meu computador não tem o sinal de fabrica, e infelizmente não está conectando pois o mesmo cria duas porta (Saida e entrada). Isso seria por causa do adaptador ?
Obrigado

Wenderson Oliveira
Wenderson Oliveira
Reply to  Igor ボブ
03/03/2017 20:09

Olá,
Acredito que seja pelo adaptador. Os adaptadores que tenho utilizado criam apenas uma porta. Tente utilizar um outro. Abraço!

willian souza de macedo
willian souza de macedo
28/07/2016 21:28

É possível conectar dois módulos slave em apenas um módulo master ??

Wenderson Oliveira
Wenderson Oliveira
Reply to  willian souza de macedo
03/03/2017 20:09

Olá Willian,
Até onde testei é possível apenas uma conexão simultânea. De qualquer forma, você pode fazer um pooling entre as suas conexões.

Talvez você goste:

Séries

Menu