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:

Circuito Arduino LCD 20x4 e módulo blueooth

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:

Bluetooth SPP - Tela inicial

Na próxima tela, escolha Command Line (linha de comando):

Configurando a comunicação Arduino e Android

O programa agora irá perguntar qual o caracter a ser enviado no final da string. Selecione o segundo item, char:(n):

Bluetooth SPP - Last char

Na próxima tela, digite na caixa de texto a string que você deseja que seja mostrada no display, e aperte OK:

Comunicação Arduino e Android usando bluetooth

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.

Avalie este post!