Testando comandos Bluetooth AT

Testando comandos Bluetooth AT

Bluetooth é um padrão popular de tecnologia sem fio projetado para troca de dados em curtas distâncias. O Bluetooth é tão comum que agora faz parte dos smartphones e está presente em muitos dispositivos incorporados. Muitos dispositivos vestíveis também usam Bluetooth para emparelhar com seus acessórios ou co-dispositivos. A interface Bluetooth usa ondas de rádio UHF na banda ISM de 2,4 GHz a 2,485 GHz. Foi inventado pelo fornecedor de telecomunicações Ericsson em 1994 e desenvolvido pelo Bluetooth Special Interest Group. Uma conexão Bluetooth tem um alcance de 10 M a 100 M.
Tornar dispositivos incorporados habilitados para Bluetooth é uma tendência popular. O módulo Bluetooth HC-05 é um módulo Bluetooth comumente usado e amplamente disponível que pode ser adicionado a um projeto incorporado para torná-lo habilitado para Bluetooth. O módulo pode funcionar tanto como Master quanto como Slave. O módulo se conecta a um microcontrolador por meio de comunicação serial. É basicamente um transceptor de rádio de 2,4 GHz com taxa de dados V 2.0+ aprimorada de modulação de 3 Mbps. O módulo pode operar em dois modos –
1. Modo de trabalho de conexão automática
2. Modo de trabalho de resposta de pedido
No modo de trabalho automático, o módulo pode funcionar em qualquer uma das três funções – Mestre, escravo e Loopback. Neste modo, o módulo segue o caminho padrão para estabelecer conexão e trocar dados. No modo de resposta de pedido, o usuário pode definir parâmetros de controle enviando comandos AT. Para entrar no modo AT, o 34º pino do módulo precisa estar conectado à fonte de alimentação.
Os módulos possuem seis pinos comumente usados, além dos quais existem pinos de entrada/saída programáveis ​​e pinos para comunicação através de UART, SPI, USB e PCM síncrono. O 34º pino é um pino de entrada/saída programável designado como pino chave.
Para configurar o módulo no modo AT, o pino chave do módulo precisa ser conectado ao microcontrolador. Deve ser definido inicialmente para lógica LOW e, uma vez ligado o módulo, deve ser definido para lógica HIGH para entrar no modo AT. Se o pino da chave estiver inicialmente na lógica HIGH, a taxa de transmissão para comunicação serial com o módulo será definida para 38.400 bits por segundo, mesmo antes do módulo estar pronto para entrar no modo de trabalho de resposta de pedido. A taxa de transmissão desejada para a inicialização do módulo é de 9600 bits por segundo e é definida para o valor quando o pino da chave é definido como ALTO após a alimentação do módulo.
Neste projeto, o Arduino Pro Mini é utilizado para passar os comandos AT para o módulo Bluetooth. A placa Arduino se conecta ao módulo Bluetooth e à porta serial virtual de um computador desktop. Os comandos AT são passados ​​de um aplicativo hiperterminal para o Arduino Pro Mini. A placa Arduino grava esses comandos no módulo Bluetooth. As respostas do módulo Bluetooth são lidas em série e repassadas para o aplicativo hiperterminal na área de trabalho.
O esboço do Arduino simplesmente cria e abre duas portas de comunicação serial para troca de dados entre o módulo Bluetooth e o computador desktop. O código do Arduino é escrito no Arduino IDE e gravado na placa usando o AVR Dude.

Componentes necessários –

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

Ferramentas de software necessárias –

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

Conexões de Circuito –

Sistema de automação residencial baseado na Internet
Figura 1: Protótipo de projeto de teste de comandos Bluetooth AT baseado em Arduino
O Arduino Pro Mini gerencia a troca de dados entre a aplicação serial no computador desktop e o módulo Bluetooth. O circuito é montado da seguinte maneira –
Fonte de alimentação – O circuito é alimentado por uma 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 estão conectados aos pinos 10 e 11 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 –

O dispositivo do projeto recebe os comandos AT inseridos pelo usuário do aplicativo hiperterminal. Os comandos são lidos serialmente pela comunicação serial virtual e passados ​​para o módulo Bluetooth. O módulo Bluetooth responde aos comandos AT e as respostas são novamente lidas em série e transferidas para o aplicativo de desktop.
O módulo Bluetooth HC-05 suporta os seguintes comandos AT –
S.Não Comando Resposta Parâmetro
1 NO OK
2 AT+RESET OK
3 AT+VERSÃO? +VERSÃO: OK Parâmetro: versão do firmware
4 AT+ORGL OK
5 AT+ENDER? +ADDR: OK Parâmetro: endereço do módulo Bluetooth
6 AT+NOME= OK Parâmetro: Nome do módulo Bluetooth (Padrão: HC-05)
AT+NOME? +NOME: OK (/FALHA) Parâmetro: Nome do módulo Bluetooth (Padrão: HC-05)
7 AT+RNAME? 1. +NOME: OK 2. FALHA Param1,Param 2: o endereço do dispositivo Bluetooth
8 AT+ROLE= OK Parâmetro: 0- Escravo 1-Mestre 2-Escravo-Loop
AT+ PAPEL? +ROLE: OK Parâmetro: 0- Escravo 1-Mestre 2-Escravo-Loop
9 AT+CLASSE= OK Parâmetro: Classe do Dispositivo
AT+ CLASSE? 1. +CLASSE: OK 2. FALHA Parâmetro: Classe do Dispositivo
10 AT+IAC= 1. OK 2. FALHA Parâmetro: GIAC (Padrão: 9e8b33)
AT+IAC +IAC: OK Parâmetro: GIAC (Padrão: 9e8b33)
11 AT+INQM=,, 1. OK 2. FALHA Parâmetro: 0——inquiry_mode_standard 1——inquiry_mode_rssi Param2: Número máximo de dispositivos Bluetooth para responder ao Param3: Tempo limite (1-48: 1,28s a 61,44s)
AT+INQM? +INQM :,, OK Parâmetro: 0——inquiry_mode_standard 1——inquiry_mode_rssi Param2: Número máximo de dispositivos Bluetooth para responder ao Param3: Tempo limite (1-48: 1,28s a 61,44s)
12 AT+PSWD= OK Parâmetro: código PIN (padrão 1234)
AT+PSWD? + PSWD : OK Parâmetro: código PIN (padrão 1234)
13 AT+UART=,, OK Param1: Baud Param2: Stop bit Param3: Paridade
AT+UART? +UART=,, OK Param1: Baud Param2: Stop bit Param3: Paridade
14 AT+CMODE= OK Parâmetro: 0 – conecta endereço fixo 1 – conecta qualquer

endereço 2 – loop escravo

AT+ CMODE? + CMODE: OK Parâmetro: 0 – conecta endereço fixo 1 – conecta qualquer endereço 2 – escravo-Loop
15 AT+BIND= OK Parâmetro: Endereço fixo (padrão 00:00:00:00:00:00)
AT+ LIGAR? + LIGAR: OK Parâmetro: Endereço fixo (padrão 00:00:00:00:00:00)
16 AT+POLAR= OK Param1: 0- LED de acionamento baixo PIO8 1- acionamento alto PIO8

LED Param2: 0- LED de acionamento baixo PIO9 1- LED de acionamento alto PIO9

AT+POLAR? + POLAR=, OK Param1: 0- LED de acionamento baixo PIO8 1- LED de acionamento alto PIO8 Param2: 0- LED de acionamento baixo PIO9 1- LED de acionamento alto PIO9
17 AT+PIO=, OK Param1: Número PIO Param2: Nível PIO 0- baixo 1- alto
18 AT+IPSCAN=,,, OK Param1: Intervalo de tempo de consulta

Param2: duração da consulta Param3: intervalo de paginação Param4: duração da chamada

AT+IPSCAN? +IPSCAN:,,, OK Param1: intervalo de tempo de consulta Param2: duração da consulta Param3: intervalo de paginação Param4: duração da chamada
19 AT+SNIFF=,,, OK Param1: Tempo máximo Param2: Tempo mínimo Param3: Tempo de nova tentativa Param4: Tempo limite
AT+ SNIFF? +SNIFF:,,, OK Param1: Tempo máximo Param2: Tempo mínimo Param3: Tempo de nova tentativa Param4: Tempo limite
20 AT+SENM=, 1. OK 2. FALHA Parâmetro1:

0——sec_mode0+desligado

1——sec_mode1+ não_seguro

2——serviço sec_mode2_

3—— tinta sec_mode3_l

4——sec_mode_unconhecido

Parâmetro2:

0——hci_enc_mod e_off

1——hci_enc_mod e_pt_to_pt

2——hci_enc_mod e_pt_to_pt_and_b elenco

AT+SENM? +SENM:, OK Parâmetro1:

0——sec_mode0+desligado

1——sec_mode1+ não_seguro

2——serviço sec_mode2_

3—— tinta sec_mode3_l

4——sec_mode_unconhecido

Parâmetro2:

0——hci_enc_mod e_off

1——hci_enc_mod e_pt_to_pt

2——hci_enc_mod e_pt_to_pt_and_b elenco

21 AT+PMSAD= OK Parâmetro: Endereço do dispositivo autenticado
22 AT+ RMAAD OK
23 AT+FSAD= 1. OK 2. FALHA Parâmetro: Endereço do dispositivo
24 AT+ADCN? +ADCN: OK Parâmetro: Contagem de Dispositivos
25 AT+MRAD? + MRAD: OK Parâmetro: Endereço do dispositivo recentemente autenticado
26 AT+ ESTADO? + ESTADO: OK Parâmetro: “INICIALIZADO” “PRONTO” “PARÁVEL” “EMPARELHADO” “CONSULTA” “CONECTANDO” “CONECTADO””DESCONECTADO” “NUKNOW”
27 AT+INIT 1. OK 2. FALHA
28 AT+INQ +INQ: , , …. OK Param1:Endereço Param2: Classe do dispositivo Param3: Força do sinal RSSI
29 AT+INQC OK
30 AT+PAR=, 1. OK 2. FALHA Param1 :Endereço do dispositivo Param2:Tempo limite
31 AT+LINK= 1. OK 2. FALHA Parâmetro: Endereço do dispositivo
32 AT+DISCO 1. +DISC:SUCCESS OK 2. +DISC:LINK_LOSS OK 3. +DISC:NO_SLC OK 4. +DISC:TIMEOUT OK 5. +DISC:ERROR OK Parâmetro: Endereço do dispositivo

33 AT+ENSNIFF= OK Parâmetro: Endereço do dispositivo
34 AT+ EXSNIFF = OK Parâmetro: Endereço do dispositivo

Fig. 3: Tabela listando os comandos AT do Módulo Bluetooth HC-05 e sua resposta

Durante o teste do módulo Bluetooth, foram passados ​​​​os seguintes comandos para os quais foi recebida a resposta dada na tabela abaixo.
Tabela listando codificação de cores para terminais do servo motor
Fig. 4: Diagrama de circuito do projeto de teste de comandos Bluetooth AT baseado em Arduino
Essas respostas foram observadas no aplicativo Hyper Terminal. Se as respostas não forem recebidas no aplicativo de desktop, as conexões do circuito deverão ser verificadas e a taxa de transmissão deverá ser verificada. Durante o teste, observou-se que a taxa de transmissão precisa ser definida inicialmente para 9.600 bits por segundo, mas posteriormente precisa ser definida para 38.400 bits por segundo para executar os comandos AT.
Confira o código do Arduino para saber como a placa Arduino gerencia dados seriais entre o desktop e o módulo Bluetooth.

Guia de programação –

Para ativar a comunicação serial virtual, SoftwareSerial.h precisa ser importado. Um objeto do tipo serial Software é instanciado e mapeado para os pinos 10 e 11 do Arduino.
#include
SoftwareSerial mySerial(10, 11); //RX,TX
A função setup é chamada e a taxa de transmissão para comunicação com o PC é definida como 9600 bits por segundo. O pino 9 que está conectado ao 34º pino do Módulo Bluetooth é configurado para saída digital e configurado para lógica HIGH usando os métodos pinMode e digitalWrite . 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.
configuração vazia {
Serial.begin(9600);
pinMode(9,SAÍDA); digitalWrite(9,ALTO);
Serial.println(“Oficina de Engenheiros:”);
Serial.println(“Digite os comandos AT:”);
meuSerial.begin(38400);
}
A função loop é chamada na qual a resposta do módulo Bluetooth é verificada e, se disponível, é gravada na porta serial. Da mesma forma, se algum comando AT da área de trabalho estiver disponível, ele será lido e gravado no módulo Bluetooth.
Observação: Obtenha o código completo na seção de código.
Isso completa o esboço do Arduino para o projeto de teste do módulo Bluetooth. Pegue um computador, monte o circuito, inicie um aplicativo de hiperterminal e coloque a mão na massa. É hora de testar.

Código fonte do projeto

###

//Program to
#include 
SoftwareSerial mySerial(10, 11); // RX, TX
void setup  {
Serial.begin(9600);
pinMode(9,OUTPUT); digitalWrite(9,HIGH);
Serial.println("Engineers Garage:");
Serial.println("Enter AT commands:");
mySerial.begin(38400);
}
void loop 
{
if (mySerial.available )
Serial.write(mySerial.read );
if (Serial.available )
mySerial.write(Serial.read );
}



       
###

Vídeo do projeto

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.