Emparelhar dois módulos Bluetooth HC-05 e compartilhar dados entre eles

Do projeto anterior já foi aprendido a configurar os parâmetros de controle de um Módulo Bluetooth. Neste projeto, será demonstrado como dois módulos Bluetooth podem ser emparelhados e permitir o compartilhamento de dados entre eles. Para emparelhar dois módulos Bluetooth, um deles precisa ser configurado para a função Master e o outro para a função Slave. Além disso, ambos os módulos devem estar no modo de trabalho de resposta de pedido para que os comandos AT possam ser passados ​​para eles. A taxa de transmissão dos dois módulos também precisa ser a mesma e o SPP e o INQ devem ser iniciados em ambos os módulos. Para iniciar o compartilhamento de dados entre os módulos, ambos os módulos devem ter o modo de comunicação habilitado configurando o parâmetro CMODE definido como 1.
Neste projeto são utilizados dois módulos Bluetooth. Os módulos Bluetooth fazem interface com diferentes placas Arduino Pro Mini que estão conectadas a diferentes computadores executando o aplicativo Arduino Serial Monitor. Qualquer aplicativo hiperterminal pode ser usado para passar comandos AT e dados a serem compartilhados entre os módulos. O esboço do Arduino usado neste projeto foi projetado para trocar comandos e dados de forma ininterrupta. O código do Arduino é escrito no Arduino IDE e gravado nas placas usando o AVR Dude.

Componentes necessários –

1. Arduino Pro Mini – 2
2. Módulo Bluetooth HC-05 – 2
3. Computador desktop ou laptop – 2
4. Cabo USB – 2

Ferramentas de software necessárias –

1. ArduinoIDE
2. Qualquer aplicativo Hyper Terminal Desktop, como Arduino Serial Monitor

Conexões de Circuito –

Protótipo de emparelhamento Bluetooth baseado em Arduino
Figura 1: Protótipo de emparelhamento Bluetooth baseado em Arduino
As placas Arduino Pro Mini gerenciam a troca de dados entre a aplicação serial do computador desktop e o respectivo módulo Bluetooth. O circuito nos lados mestre e escravo é montado da mesma maneira da seguinte maneira –
Fonte de alimentação – O circuito é alimentado pela bateria que alimenta diretamente a placa Arduino e o módulo Bluetooth.
Módulo Bluetooth HC-05 – O módulo Bluetooth HC-05 é um módulo de protocolo de porta serial. Opera na banda ISM 2,4 GHz com V2.0 + EDR (taxa de dados aprimorada). Pode funcionar nos modos Master e Slave. O módulo Bluetooth possui seis pinos – Enable, VCC, Ground, Transmit Data (TxD), Receive Data (RxD) e State. Os pinos Enable e State não são utilizados e, portanto, não estão conectados ao circuito. Os pinos VCC e Terra são conectados ao VCC e Terra comuns. Os pinos TxD e RxD do módulo são conectados aos pinos 3 e 2 do Arduino Pro Mini respectivamente. Essas conexões estão resumidas na tabela abaixo –
Tabela listando conexões de circuito entre o módulo Bluetooth HC-05 e o Arduino Pro Mini
Fig. 2: Tabela listando as conexões do circuito entre o módulo Bluetooth HC-05 e o Arduino Pro Mini
Além dessas conexões, o 34º pino do módulo está conectado ao pino 9 do Arduino Pro Mini.
Computador Desktop – O computador é conectado à placa Arduino por meio de um cabo USB e transfere dados seriais para a placa por meio de comunicação serial virtual usando um aplicativo hiperterminal.

Como funciona o projeto –

Ambos os módulos recebem os comandos AT inseridos pelo usuário do aplicativo hiperterminal nos respectivos computadores. Os comandos são lidos serialmente por meio de comunicação serial virtual e passados ​​para os módulos Bluetooth. Os módulos Bluetooth respondem aos comandos AT e as respostas são novamente lidas em série e transferidas para o aplicativo de desktop.
Primeiro, um dos módulos precisa ser configurado para a função Master, para a qual as seguintes etapas precisam ser executadas –
Passo 1: Entre no modo de comando AT.
Passo 2: inicie o SPP.
Passo 3: Consulte os dispositivos disponíveis.
Passo 4: se o endereço estiver disponível na lista, emparelhe-o.
Passo 5: Após o emparelhamento, estabeleça um link de comunicação.
Passo 6: Envie dados para compartilhar.
Imagem do emparelhamento Bluetooth baseado em Arduino
Fig. 3: Imagem do emparelhamento Bluetooth baseado em Arduino
Essas etapas podem ser implementadas executando os comandos AT e alterando os seguintes parâmetros de configuração –
Tabela listando comandos AT do Módulo Bluetooth HC-05
Fig. 4: Tabela listando comandos AT do Módulo Bluetooth HC-05
O outro módulo precisa ser configurado como escravo. Para configurar o outro módulo como escravo, as seguintes etapas precisam ser executadas –
Passo 1: Entre no modo de comando AT.
Passo 2: inicie o SPP.
Passo 3: Consulte os dispositivos disponíveis.
Passo 4: Verifique o status emparelhado ou não.
Passo 5: Após estabelecer o link de comunicação Receba os dados do mestre e se necessário, envie os dados para compartilhar.
Imagem do módulo Bluetooth escravo baseado em Arduino
Fig. 5: Imagem do Módulo Bluetooth Escravo baseado em Arduino
Essas etapas podem ser implementadas executando os comandos AT e alterando os seguintes parâmetros de configuração –
Tabela listando comandos AT e seus parâmetros de configuração
Fig. 6: Tabela listando comandos AT e seus parâmetros de configuração
Portanto, para emparelhar os dois módulos, os seguintes parâmetros de configuração devem ser alterados e anotados.
– Ambos os módulos devem estar no modo de comando AT.
– O nome, a senha e o endereço dos módulos devem ser definidos de forma exclusiva e bem conhecidos. A taxa de transmissão de ambos os módulos deve ser a mesma, definida como 9600, 0, 0 na demonstração do projeto.
– O modo SPP deve ser inicializado em ambos os módulos usando o comando AT+STATE.
– Um dos módulos deve ser definido como mestre e o outro deve ser definido como escravo. Para configurar um módulo para função mestre, AT+ROLE deve ser definido como 1 em um dos módulos. A função padrão a é escravo com valor 0 que não precisa ser alterado no outro módulo.
– O modo de comunicação deve ser habilitado em ambos os módulos configurando CMODE para 1.
– No módulo mestre, o modo de consulta deve ser definido como 0, 5, 5, onde o primeiro parâmetro é o modo de acesso de consulta que, se definido como 0, configura o modo de consulta_padrão e se definido como 1, configura o modo de consulta_rssi, o segundo parâmetro é o número de resposta do dispositivo Bluetooth permitida e o terceiro parâmetro é o tempo máximo de consulta limitado em segundos.
– O módulo configurado como escravo deve estar livre para o qual o comando RMAAD deve ser passado. Agora o módulo escravo estará livre para emparelhar com o módulo mestre.
– O módulo mestre deve ser configurado para consultar os dispositivos disponíveis para emparelhamento configurando o modo de consulta e se o endereço do escravo for mostrado disponível, o nome do módulo escravo deve ser verificado pelo comando RNAM.
– Se o nome do dispositivo escravo disponível for o mesmo do módulo escravo configurado, ele pode ser emparelhado enviando o comando AT+PAIR= . Após o emparelhamento bem-sucedido com o módulo escravo, o módulo mestre responderá com OK. O status do emparelhamento pode ser verificado passando AT+STATE? comando em ambos os módulos.
– A ligação entre os módulos pode ser definida passando AT+LINK? comando.
– Se ambos os módulos enviarem uma resposta OK, os módulos estarão prontos para compartilhar dados.
– Se os dois módulos não estiverem emparelhados, a inicialização do SPP e INQ no escravo pode ter sido negligenciada ou o módulo escravo pode não estar no modo AT. A taxa de transmissão de ambos os módulos pode não ser a mesma ou um PIN errado pode ter sido inserido. Também pode haver a possibilidade de o módulo escravo não ter sido configurado para a função de escravo e ter definido o parâmetro de função como 1 por engano. Essas configurações deveriam ter sido verificadas antes de tentar emparelhar os dispositivos.
Portanto, configure ambos os módulos com as configurações adequadas, inicie o emparelhamento e tente compartilhar alguns dados.

Guia de programação –

O esboço do Arduino gerencia a comunicação de dados entre o computador e o módulo Bluetooth. Após o emparelhamento, os módulos Bluetooth poderão compartilhar dados. No dispositivo mestre, para habilitar a comunicação serial virtual, o SoftwareSerial.h precisa ser importado. Um objeto do tipo serial Software é instanciado e mapeado nos pinos 2 e 3 do Arduino. Uma variável para armazenar os dados a serem compartilhados é declarada.
#include0
SoftwareSerial BTserial(2, 3); //RX Texas
caractere c = ' ';
A função setup é chamada e a taxa de transmissão para comunicação com o PC é definida como 9600 bits por segundo. Algumas mensagens iniciais são enviadas serialmente para o aplicativo hiperterminal e a taxa de transmissão da porta serial do software é definida como 38.400 bits por segundo para comunicação com o módulo Bluetooth.
A função loop é chamada na qual os dados do módulo escravo são verificados quanto à disponibilidade e, se disponíveis, são lidos e gravados na porta serial. Da mesma forma, se algum dado do computador for verificado quanto à disponibilidade e se disponível, ele será armazenado na variável e passado ao módulo Mestre para transmissão.
Isso completa o Arduino Sketch para o lado Master.
No lado escravo, novamente SoftwareSerial.h precisa ser importado. Um objeto do tipo serial Software é instanciado e mapeado para os pinos 2 e 3 do Arduino.
A função setup é chamada e a taxa de transmissão para comunicação com o PC é definida como 9600 bits por segundo. Algumas mensagens iniciais são enviadas serialmente para o aplicativo hiperterminal e a taxa de transmissão da porta serial do software é definida como 38.400 bits por segundo para comunicação com o módulo Bluetooth.
A função loop é chamada na qual os dados do módulo mestre são verificados quanto à disponibilidade e, se disponíveis, são lidos e gravados na porta serial. Da mesma forma, se algum dado do computador for verificado quanto à disponibilidade e, se disponível, for passado ao módulo escravo para transmissão.
Isso completa o Arduino Sketch para o lado Slave. Você pode obter os detalhes completos da programação na seção de código.

Código fonte do projeto

###

//Program to 
#include 0

SoftwareSerial BTserial(2, 3); // RX   TX

char c=" ";

void setup  

{

    Serial.begin(9600);

    Serial.println("__________Engineers Garage______________");

    Serial.println("---------------Master------------------");

    // HC-05 default serial speed for AT mode is 38400

    BTserial.begin(38400);  

}

void loop 

{

    // Keep reading from HC-05 and send to Arduino Serial Monitor

    if (BTserial.available )

    {  

        c = BTserial.read ;

        Serial.write(c);

    }

    // Keep reading from Arduino Serial Monitor and send to HC-05

    if (Serial.available )

    {

        c =  Serial.read ;

        BTserial.write(c);  

   }

}

#include 

SoftwareSerial BTSerial(2, 3); // RX   TX

void setup  

{

    Serial.begin(9600);

    Serial.println("__________Engineers Garage______________");

    Serial.println("---------------Slave------------------");

    // HC-05 default serial speed for AT mode is 38400

    BTserial.begin(38400);  

}

void loop 

{

  // Keep reading from HC-06 and send to Arduino Serial Monitor

  if (BTSerial.available )

    Serial.write(BTSerial.read );

  // Keep reading from Arduino Serial Monitor and send to HC-06

  if (Serial.available )

  BTSerial.write(Serial.read );

}

###

Vídeo do projeto

Related Content

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.