top of page

Envio de ‘Chars’ para o Arduino via bluetooth HC-05

Materiais utilizados:

Arduino NANO;

HC-05;

Resistores:1k Ω, 220 Ω e 200 Ω;

LED;

Protoboard;

Celular com Bluetooth;

Jumpers;

Montagem:

Tudo será montado numa protoboard, os primeiros a serem conectados são o Arduino e o modulo HC-05, que devem ser propriamente alimentados a partir de uma fonte de tensão, atenção para voltagem, o HC-05 pode ser conectado até 6v, enquanto o Arduino suporta até 20v(mas no caso não é preciso alimentar o Arduino externamente, pois usaremos o cabo USB). O LED será conectado no pino D9 com um resistor de 220 Ω, para que não danifique o componente. Os pinos TX, RX programados são os D10 e D11, o pino 10 que atua como o RX do Arduino pode ser conectado diretamente no TX do módulo, porém o pino 11 do Arduino funciona em 5v e o RX do modulo até 3.3v, então fazemos um divisor de tensão com um resistor de 1k Ω e 200 Ω.

Programação:

Antes de fazermos o programa, vamos configurar o módulo bluetooth. Para configurar a velocidade de transmissão do HC-05 vamos usar o Arduino como interface de envio de comandos, pra isso precisamos de um programa que envie esses comando, também precisamos entrar no modo de configuração do HC-05, para isso, retire a alimentação do módulo, mantenha o botão pressionado, e conecte a alimentação novamente, o módulo deve começar a piscar de uma forma diferente.

A programação da configuração AT:

#include <SoftwareSerial.h>

SoftwareSerial bluetooth(10, 11); // RX, TX

String comm = "";

void setup()

{

Serial.begin(115200);

Serial.println("Digite os comandos AT :");

bluetooth.begin(38400);

}

void loop()

{

if (bluetooth.available())

{

while(bluetooth.available())

{

comm += (char)bluetooth.read();

}

Serial.println(comm);

comm = "";

}

if (Serial.available())

{

delay(10);

bluetooth.write(Serial.read());

}

}

Após carregar o programa, entrar em modo AT no módulo, já podemos abrir o console na IDE do Arduino. A velocidade configurada para o Arduino é de 115200 bps, ao lado da velocidade deve selecionar “Ambos, NL e CR”. Já podemos enviar nosso primeiro comando, que será simplesmente “AT”, e deve retornar “OK”, caso essa não seja a resposta do comando, verifique as conexões na protoboard, se tudo estiver correto e ainda assim o módulo não responde, ou a resposta é de erro, provavelmente a velocidade de transmissão do módulo está errada. Por padrão os módulos HC-05 saem de fabrica com a velocidade de 38400, porém caso seu módulo não seja novo, talvez a velocidade dele já tenha sido alterada, para mudar a velocidade basta alterar o valor da linha “bluetooth.begin(38400)”, alterando pelos valores suportados: 9600,19200,38400,57600,115200,230400,460800.

Já que o módulo está respondendo, podemos alterar a velocidade dele, com o comando “AT+UART=<Param1>,<Param2>,<Param3>”. Os três parâmetros significam respectivamente: Baud rate, stop bit e parity. No caso o nosso programa estará configurado com a velocidade de 38400, para essa configuração no módulo digite “AT+UART=38400,0,0”. Nós usaremos essa velocidade nesse programa, mas pode-se usar qualquer velocidade suportada em futuros programas. Para finalizar a configuração do módulo apenas reinicie ele, digitando o comando “AT+RESET”, ele irá piscar rapidamente, indicando que está aguardando conexão.

Para a programação do Arduino, precisamos que ele receba as informações que o celular envia para o bluetooth, e então acenda o LED. Ainda antes da configuração do programa incluímos a biblioteca do software serial, definimos onde o LED será conectado e criamos a variável que armazenará os dados do bluetooth. Até aqui o programa deve se parecer com isso:

#include <SoftwareSerial.h> //biblioteca comunicação serial por software

#define led 9; //led no pino 9

char r; //varivel de dados bluetooth

SoftwareSerial bluetooth(10, 11); //portas TX e RX

Já na configuração do programa, definiremos o LED que está no D9 como uma saída, e também será iniciado a comunicação serial do bluetooth e do Arduino, atenção a velocidade de transmissão dos dados, o bluetooth vem com uma velocidade padrão, se no programa a velocidade for diferente ele transmitirá os bits errados e o sistema não funcionará. Essa parte fica assim:

void setup()

{

pinMode(9, OUTPUT); //D9 como saída

Serial.begin(38400); //habilitando comunicação serial com 38400 bps(HARDWARE)

bluetooth.begin(38400); //habilitando comunicação serial com 38400 bps(SOFTWARE)

}

A última parte do programa irá ler os dados do bluetooth e atuar no D9 para acender ou apagar o LED. Primeiro devemos verificar se há dados para o Arduino ler da porta serial, caso haja, precisamos verificar o que é esse dado recebido, e se ele é o comando correto para a ativação do LED.

No caso se o dado recebido for um “H” o LED irá acender, e caso seja “L” ele irá apagar. Assim:

void loop()

{

if (bluetooth.available() > 0) //teste se há dados para leitura

{

r = bluetooth.read(); //grava os dados serial na variavel 'r'

delay(5); //5ms

if (r == 'H' ) //teste se 'r' é igual a 'H'

{

digitalWrite(9, HIGH); //acende o LED

Serial.println(r);

}

if (r == 'L') //teste se 'r' é igual a 'L'

{

digitalWrite(9, LOW); //apaga o LED

Serial.println(r);

}

}

}

Foi adicionado logo após o comando para acender e apagar um “println(r);” assim, quando o LED mudar de estado haverá um retorno no monitor serial mostrando o que ele recebeu.

Agora, que o Arduino e o módulo estão configurados e programados, precisamos trabalhar o outro lado do nosso sistema, que no caso seria o celular. Para isso utilizei a plataforma Android, com o site do MIT, App inventor 2, é possível facilmente criar uma interface e configuração de um aplicativo através de programação em blocos.

No App Inventor 2 iremos adicionando os componentes que iremos precisar, os essenciais são o bluetooth cliente1, notifier1 e o ActivityStarter1, de resto são elementos da interface que podem ser adicionados como achar melhor.

Para que possamos acessar a função do bluetooth no Android, o aplicativo deve pedir permissão ao usuário, e para que isso aconteça no elemento ActivityStarter1 a caixa de texto Action deve conter o texto “android.bluetooth.adapter.action.REQUEST_ENABLE”, com isso já feito o aplicativo terá acesso ao bluetooth do aparelho.

A programação da plataforma não é feita em linhas, mas em blocos, o que facilita a compreensão do que estará acontecendo no nosso app. Primeiro vamos programar o aplicativo para fazer uma conexão bluetooth com outro dispositivo dentro do alcance.

Logo nos primeiros blocos o app irá identificar se o bluetooth está ativado, caso não esteja pedirá para que ative, caso tente usar o botão de conexão com o bluetooth desligado aparecerá uma mensagem de erro. Com o bluetooth ligado quando tocarmos em 'Conectar' o aplicativo irá abrir uma lista com todos os dispositivos já conectados via bluetooth com o Android, escolhemos o dispositivo que iremos usar, no caso o HC-05, e a conexão será feita.

A outra parte da programação é o envio do comando que foi programado no Arduino. Nesta outra metade da programação existem quatro botões na interface, mas não é necessário adicionar todos eles. Dois botões enviam comandos específicos pelo bluetooth, que é o botão HIGH e LOW, o botão Send text é opcional, ele precisará também de uma caixa de texto para digitação dos comandos. Pressionando o botão HIGH o LED irá acender pois foi enviado “H” e pressionando LOW irá apagar, pois foi enviado “L”.

Para instalar o app no celular Android há duas formas de fazê-lo, uma por salvar o arquivo APK no computador e transferir para o celular, outro modo mais prático é por escanear um código QR.


bottom of page