Utilizando Módulo Bluetooth no Arduino

modulo-bluetooth-HC-05
Font Size

Olá, tudo bem? Hoje, vamos utilizar o módulo bluetooth HC-05 com o Arduino através do celular. Certamente você deve conhecer e também já tenha utilizado ele.

Por isso, esta será apenas uma introdução ao nosso projeto de aplicativo do blog, onde colocaremos muitos projetos dentro dele. Vamos nessa?

Módulo Bluetooth HC-05

Este módulo tem a capacidade de transmitir e receber dados através de comunicação sem fio. Além disso, ele pode ser utilizado para criação de uma comunicação wireless, para realizar a troca de informações entre dispositivos.

Módulo Bluetooth HC-05
Fonte: AutoCore Robótica

Então, para retratar isso, vamos desenvolver uma aplicação utilizando App Inventor. Através dele, vamos criar nosso aplicativo para receber dados de um sensor de umidade DHT11 e poder ligar um led.

Mas agora, vamos a alguns detalhes importantes sobre o nosso módulo bluetooth:

Contudo, caso tenha outras dúvidas relacionadas a sua configuração, basta acessar o seu datasheet clicando no botão abaixo.

Ligação do Módulo no Arduino

Antes de começar a estudar as ligação, temos de prestar muita atenção ao nível de sinal utilizado pelo módulo para a comunicação serial. Por que? Pois alguns módulos trabalham com 5v, outros com 3.3v, como o módulo usado neste tutorial.

Pinagem Módulo HC-05
Fonte: AutoCore Robótica

Então, nós precisamos utilizar um divisor de tensão para evitar de danificar o componente, mas essa é tarefa tranquila, basta utilizar 2 resistores ligados ao pino RX do módulo Bluetooth.

No  circuito do projeto usamos um de 220 e outro de 330, o que gerou um nível de sinal de aproximadamente 3v, suficiente para os testes. Show?

Componentes do Projeto

Montagem do Circuito

Por fim, basta conectar os componentes de acordo com a imagem abaixo. Fique ligado quando ao divisor de tensão no pino RX.

Esquema de Ligação do Circuito no Arduino
Fonte: AutoCore Robótica

Código do Projeto Comentado

Antes de apresentar o código, será necessário baixar o aplicativo que utilizaremos por enquanto antes de criarmos o nosso. Para isso, instale o aplicativo para sistemas Android clicando no link abaixo.

<code>/* ==================================================================================================

Projeto: Comunicação Bluetooth com o Arduino
Autor: Danilo Nogueira
Data: 9/07/2019
Domínio Público.

// ==================================================================================================*/
// --- Declaração Bibliotecas ---
#include &lt;SoftwareSerial.h&gt; 

// ==================================================================================================
// --- Declaração das Variaveis ---

int pinoRX = 2; // RX ligado ao pino digital 2
int pinoTX = 3; // TX ligado ao pino digital 3

int pinoLed = 12;       // Led ligado ao pino digital 12
int dadoBluetooth = 0;  // variavel p/ armazenar os dados enviados pelo bluetooth

boolean loopLED = false; // variavel para controlar o estado do led

// Passando os parâmetros para as funções             
SoftwareSerial bluetooth(pinoRX, pinoTX);

// ==================================================================================================
// --- Configurando void setup() ---

void setup()
{
  Serial.begin(9600);
  pinMode(pinoLed, OUTPUT); // Definindo o led como saída
  
  // Aguarda 1 seg antes de acessar as informações do sensor
  delay(1000);
  bluetooth.begin(9600); // Iniciando a serial do bluetooth para enviar dados
  
  // Imprime o caractere como teste
  bluetooth.print("$"); 
  bluetooth.print("$"); 
  bluetooth.print("$"); 
}

// ==================================================================================================
// --- Configurando void loop() ---
void loop()
{
  // Verifica se o bluetooth está ativado
  if(bluetooth.available()){ 
       dadoBluetooth = bluetooth.read(); // Recebendo dados do bluetooth
    
    // Se for = 1 
    if(dadoBluetooth == '1'){
      Serial.println("LED LIGADO"); 
      digitalWrite(pinoLed, HIGH);
    }
    
    // Se for = 0
    if(dadoBluetooth == '0'){
      Serial.println("LED DESLIGADO"); 
      digitalWrite(pinoLed, LOW);
    }
    
  }
 
  // Nao diminuir muito o valor abaixo
  // O ideal e a leitura a cada 2 segundos
  delay(2000);
}
// ====================================== FIM ====================================================</code>

Analisando o Código a Fundo

<code>#include &lt;SoftwareSerial.h&gt;</code>

Então, observe que declaramos a função SoftwareSerial. Ela tem como função, permitir a comunicação serial em outros pinos digitais do Arduino, usando software para multiplexar a funcionalidade.

Ou seja, perceba que os pinos 2 e 3 não são TX e RX, por padrão são os pinos 1 e 0, mas e se eles por acaso queimarem? Podemos utilizar essa biblioteca para transformar os pinos digitais em pinos de troca de dados. Massa!

<code>int pinoRX = 2; // RX ligado ao pino digital 2
int pinoTX = 3; // TX ligado ao pino digital 3

int pinoLed = 12;       // Led ligado ao pino digital 12
int dadoBluetooth = 0;  // variavel p/ armazenar os dados enviados pelo bluetooth

boolean loopLED = false; // variavel para controlar o estado do led

// Passando os parâmetros para as funções     
SoftwareSerial bluetooth(pinoRX, pinoTX);</code>

Outro bloco é a declaração de variáveis e configuração das bibliotecas, Nele definimos os pinos onde estão conectados em nosso arduino.

<code>void setup()
{
  Serial.begin(9600);
  pinMode(pinoLed, OUTPUT); // Definindo o led como saída
  
  // Aguarda 1 seg antes de acessar as informações do sensor
  delay(1000);
  bluetooth.begin(9600); // Iniciando a serial do bluetooth para enviar dados
  
  // Imprime o caractere como teste
  bluetooth.print("$"); 
  bluetooth.print("$"); 
  bluetooth.print("$"); 
}</code>

Então, chegou a hora de configurar o bloco setup. Nele definimos o led como saída e inicializamos o sensor e a velocidade de comunicação da serial do arduino e do módulo bluetooth.

<code>void loop()
{
  // Verifica se o bluetooth está ativado
  if(bluetooth.available()){ 
       dadoBluetooth = bluetooth.read(); // Recebendo dados do bluetooth
    
    if(dadoBluetooth == '1'){
      Serial.println("LED LIGADO"); 
      digitalWrite(pinoLed, HIGH);
    }
    
    if(dadoBluetooth == '0'){
      Serial.println("LED DESLIGADO"); 
      digitalWrite(pinoLed, LOW);
    }
  }
  delay(2000);
}</code>

Por fim, chegamos ao void loop. Nele realizamos a leitura da temperatura e umidade, enviando os dados pela serial. Em seguida, verificamos a condição de habilitado do bluetooth para poder controlar o led e receber os dados.

Resultado do Projeto

https://youtu.be/soMu_rmkGYI

Por fim, nos próximos posts iremos iniciar o nosso estudo sobre a ferramenta App Inventor. Onde iremos desenvolveremos juntos um aplicativo para realizar diversos projetos dentro dele!

Mas e ai? Gostou do post? Caso tenha ficado algo incompleto para você, comenta abaixo 📝

Dicas? 😄 Dúvidas? 👀 Críticas? 😱 Só comentar abaixo!

Forte abraço e compartilha se gostou! 🤘

Posts relacionados

Luz automática com o Contador Johnson CD4017

por Oderlando Silva
3 anos ago

Módulo Relé

por autocore
9 anos ago

Utilizando Sensor de Cor TCS230

por Danilo Nogueira
6 anos ago
Sair da versão mobile