Aproveitando o gancho do último artigo sobre display LCD 20×4, no post de hoje vou mostrar como utilizar o módulo bluetooth HC-05 para realizar uma comunicação Arduino e Android, enviando textos (strings) à partir de um smartphone, mostrando esses dados no display.
Quando enviamos dados do Android para o módulo bluetooth, esses dados são transmitidos para o Arduino via serial. É o mesmo processo utilizado quando interagimos com o Arduino usando o Serial Monitor: o Serial Monitor pode tanto receber como enviar informações.
No projeto desse post, eu tenho um celular com Android e bluetooth, e o programa Bluetooth SPP instalado. Nesse programa, eu vou digitar uma string e enviá-la para o módulo blueooth do Arduino.
O Arduino vai receber essa informação, e ao detectar o caracter de controle “n”, indicando o final da string, vai mostrá-la no display.
Material utilizado
Para esse experimento vamos utilizar o seguinte material:
- Módulo BT HC-05
- 2 resistores para montagem do divisor de tensão
- Display LCD 20×4
- Celular com Android e Bluetooth
- Potenciômetro de 10 K
A ligação do display 20×4, como eu comentei no post Display LCD 20×4, é a mesma dos displays LCD 16×2 que já usamos anteriormente. O que muda é apenas o comando
lcd.begin(20 , 4);
que informa ao Arduino que agora estamos controlando um display com 20 colunas e 4 linhas. Assim, você pode tranquilamente montar esse circuito com um display 16×2, se preferir.
O módulo bluetooth HC-05 que eu utilizei trabalha com nível de sinal de 3.3v (não confundir com a tensão de alimentação, que é de 5 volts), e o Arduino Uno trabalha com nível de sinal de 5v, por isso não podemos ligar diretamente o módulo BT ao Arduino. Foi necessária a montagem de um divisor de tensão usando dois resistores. Eu utilizei dois de 330 ohms, o que me deu um nível de sinal de 2.5v, suficiente para os testes.
Para cálculo do divisor de tensão, use o calculador desse link. Na página, digite 5 para a tensão de entrada, digite os valores dos resistores (R1 e R2) que você possui, e pressione o botão Calcular para verificar a tensão de saída no campo correspondente, lembrando que por segurança esta deve ser, no máximo, de 3.3v.
Circuito Arduino e módulo HC-05
Com os valores dos resistores devidamente calculados, monte o circuito abaixo, lembrando-se de deixar por último a ligação do Vcc do módulo bluetooth, pois só vamos ligá-lo após carregar o programa no Arduino, evitando problemas na comunicação serial, pois tanto o computador como o módulo bluetooth usam esse mesmo caminho para se comunicar com o Arduino:
Com o Vcc do módulo bluetooth desligado, carregue o programa abaixo no Arduino. Por ser comunicação serial, você também pode utilizar este programa para testar a comunicação sem o módulo BT. Basta abrir o serial monitor e escolher a opção Nova Linha na parte inferior da tela para que seja enviado o caracter de controle n ao final da string:
// Programa : LCD 20x4 Arduino com modulo bluetooth HC-05 // Autor : Arduino e Cia // Carrega a biblioteca do LCD #include <LiquidCrystal.h> #include <VirtualWire.h> // Inicializa o LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int incomingByte = 0; char buf[20]; int num = 0; String dados; void setup() { // Define o LCD com 20 colunas e 4 linhas lcd.begin(20, 4); // Mostra informacoes no display lcd.setCursor(3,0); lcd.print("Arduino e Cia"); lcd.setCursor(2,1); lcd.print("Display LCD 20x4"); lcd.setCursor(1,3); lcd.print("arduinoecia.com.br"); Serial.begin(9600); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Aguardando..."); } void loop() { while(Serial.available() > 0) { buf[num] = Serial.read(); lcd.clear(); if (buf[num] == '\n') { Serial.println(buf); String dados = buf; dados.trim(); int tamanho_string = dados.length(); lcd.setCursor(0,0); lcd.print(dados); lcd.setCursor(0,2); lcd.print("Caracteres : "); lcd.print(tamanho_string); // apaga o buffer for (int ca =0; ca<20; ca++) { buf[ca]=0; } num=0; break; } num++; } }
Desconecte o cabo usb do seu Arduino e utilize uma fonte externa para alimentação, assim você evita os problemas de conflito de serial citados anteriormente.
Testando a comunicação Arduino e Android
Conecte agora o pino Vcc do módulo bluetooth e no seu smartphone com Android carregue o programa Bluetooth SPP, que pode ser encontrado no Google Play, nesse link.
Na tela inicial do programa, selecione o dispositivo ao qual você quer se conectar. No exemplo abaixo, o módulo tem o nome de HC-05, que já foi pareado anteriormente:
Na próxima tela, escolha Command Line (linha de comando):
O programa agora irá perguntar qual o caracter a ser enviado no final da string. Selecione o segundo item, char:(n):
Na próxima tela, digite na caixa de texto a string que você deseja que seja mostrada no display, e aperte OK:
O display mostrará tanto a string pelo celular, como também a quantidade de caracteres que foram recebidos.
Quer mais exemplos de utilização do Arduino com bluetooth ? É só clicar aqui.