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)

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:
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’.

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’.

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):

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
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.

Pronto! Seu módulo Slave já está configurado!
Configurando o módulo MASTER (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.
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’:

Inicialmente este módulo entra com o BaudRate em 38400. Configure o BaudRate e envie o comando de teste “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.
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.

Referências








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?
bom dia, eu consigo parear varios arduinos com um celular so?
creio que não, acredito que a conexão bluetooth seja de 1 para 1.
Posso estar errado
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?
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….
bem legal o artigo! até agora só tinha usado o módulo slave. Vou comprar um master e tentar seguir o artigo.
Obrigado, Giovanni! Ótimo, é sempre interessante ter em mãos uma serial sem fio. Se conseguires seguir o artigo deixe um comentário!
Boa tarde! Ótimo artigo. Uma dúvida, com módulo hc-05 é possivel eu conectar um controle de VR Box, segue a imagem :
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
Não consigo receber os comandos AT, o que faço, ja tentei de tudo, será que queimou o RX?
Não encontro o sinal no meu celular, configurei tudo certinho e nada. O que eu faço?
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
Olá,
Acredito que seja pelo adaptador. Os adaptadores que tenho utilizado criam apenas uma porta. Tente utilizar um outro. Abraço!
É possível conectar dois módulos slave em apenas um módulo master ??
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.