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

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:

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:

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

https://www.instructables.com/id/AT-command-mode-of-HC-05-Bluetooth-module/?ALLSTEPS
https://www.linotux.ch/arduino/HC-0305_serial_module_AT_commamd_set_201104_revised.pdf
https://realterm.sourceforge.net/
https://www.thalin.se/2013/01/fritzing-veroboard-and-breadboard.html
https://github.com/RafaGS/Fritzing