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.