Domine Bluetooth Arduino: Tutorial do Módulo HC‑05 para Controle via Smartphone e PC
Neste tutorial Arduino Bluetooth, aprenderemos a usar o módulo HC-05 para controlar Arduino via comunicação Bluetooth. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo para mais detalhes.
Visão Geral
Para este tutorial, fiz dois exemplos: controlar o Arduino usando um smartphone e controlar o Arduino usando um laptop ou PC. Para não sobrecarregar este tutorial, no meu próximo tutorial, aprenderemos como podemos configurar o módulo Bluetooth HC-05 e fazer uma comunicação Bluetooth entre duas placas Arduino separadas como dispositivos mestre e escravo.

Antes de começarmos com o primeiro exemplo, controlando um Arduino usando um smartphone, vamos dar uma olhada mais de perto no módulo Bluetooth HC-05. Comparando-o com o módulo HC-06, que só pode ser definido como Escravo, o HC-05 pode ser definido como Mestre também, o que permite fazer uma comunicação entre duas placas Arduino separadas. Existem várias versões diferentes deste módulo, mas recomendo a que vem em uma placa breakout, porque assim é muito mais fácil de conectar. O módulo HC-05 é um módulo Bluetooth SPP (Serial Port Protocol), o que significa que ele se comunica com o Arduino via Comunicação Serial.
Você pode obter os componentes necessários para este tutorial Arduino em qualquer um dos sites abaixo:
- Módulo Bluetooth HC-05
- Placa Arduino
- Protoboard e Jumpers
Esquemas do Circuito
Aqui está como precisamos conectar o módulo à placa Arduino.

O módulo específico que tenho pode ser alimentado de 3,6 a 6 volts, porque vem em uma placa breakout que contém um regulador de tensão. No entanto, o nível lógico de tensão dos pinos de dados é 3,3V. Portanto, a linha entre o Arduino TX (Pino de Transmissão, que tem saída 5V) e o RX do módulo Bluetooth (Pino de Recepção, que suporta apenas 3,3V) precisa ser conectada através de um divisor de tensão para não queimar o módulo. Por outro lado, a linha entre o pino TX do módulo Bluetooth e o pino RX do Arduino pode ser conectada diretamente porque o sinal de 3,3V do módulo Bluetooth é suficiente para ser aceito como nível lógico alto na placa Arduino.
Código Fonte do Exemplo de Comunicação Bluetooth Arduino
Agora, estamos prontos para fazer o código Arduino para habilitar a comunicação entre a placa Arduino e o smartphone. Faremos um exemplo simples, apenas ligando e desligando um LED, mas será bom o suficiente para entender a comunicação.
#define ledPin 7
int state = 0;
void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(38400); // Taxa de comunicação padrão do módulo Bluetooth
}
void loop() {
if (Serial.available() > 0) {
state = Serial.read();
}
if (state == '0') {
digitalWrite(ledPin, LOW); // Desliga LED
Serial.println("LED: OFF"); // Envia de volta, para o telefone, a String "LED: ON"
state = 0;
} else if (state == '1') {
digitalWrite(ledPin, HIGH);
Serial.println("LED: ON");
state = 0;
}
}
Descrição: Primeiro, precisamos definir o pino ao qual nosso LED será conectado e uma variável na qual armazenaremos os dados vindos do smartphone. Na seção setup, precisamos definir o pino do LED como saída e defini-lo como baixo imediatamente. Como mencionado anteriormente, usaremos a comunicação serial, então precisamos iniciar a comunicação serial a 38400 baud rate, que é a taxa de baud padrão do módulo Bluetooth. Na seção loop, com a função Serial.available(), verificaremos se há dados disponíveis na porta serial para serem lidos. Isso significa que, quando enviarmos dados para o módulo Bluetooth, essa declaração será verdadeira, então, usando a função Serial.read(), leremos esses dados e os colocaremos na variável "state". Então, se o Arduino receber o caractere '0', ele desligará o LED e, usando a função Serial.println(), enviará de volta ao smartphone, via porta serial, a String "LED: OFF". Além disso, resetaremos a variável "state" para 0 para que as duas linhas acima sejam executadas apenas uma vez. Note aqui que a variável "state" é inteira, então, quando recebemos o caractere '0' que vem do smartphone, o valor real da variável inteira "state" é 48, que corresponde ao caractere '0', de acordo com a tabela ASCII. É por isso que na declaração "if" estamos comparando a variável "state" a um caractere '0'. Por outro lado, se o caractere recebido for '1', o LED acenderá e a String "LED: ON" será enviada de volta.
Agora, o código está pronto para ser enviado, mas, para fazer isso, precisamos desconectar as linhas TX e RX porque, ao fazer upload, o Arduino usa a comunicação serial, então os pinos RX (pino digital 0) e TX (pino digital 1) estão ocupados. Podemos evitar esta etapa se usarmos os outros pinos TX e RX da placa Arduino, mas, nesse caso, teremos que usar a biblioteca SoftwareSerial.h para a comunicação serial.
Relacionado: Como Configurar e Parear Dois Módulos Bluetooth HC-05 como Mestre e Escravo | Comandos AT
Conectando o Smartphone ao Módulo Bluetooth HC-05 e ao Arduino
Agora, estamos prontos para conectar o smartphone ao módulo Bluetooth e ao Arduino. O que precisamos fazer aqui é ativar o Bluetooth e o smartphone encontrará o módulo Bluetooth HC-05.

Então, precisamos parear os dispositivos e a senha padrão do módulo HC-05 é 1234. Após parearmos os dispositivos, precisamos de um aplicativo para controlar o Arduino. Existem muitos aplicativos na Play Store para esse propósito que funcionarão com o código Arduino que escrevemos. No entanto, fiz meu próprio aplicativo personalizado para este tutorial usando o aplicativo online MIT App Inventor. Este é um aplicativo ótimo e fácil de usar para construir aplicativos Android e, no meu próximo tutorial, você pode encontrar um guia detalhado passo a passo de como construir seu próprio aplicativo Android personalizado para seu projeto Arduino.

Você pode baixar o app que fiz para este exemplo aqui:
Com o botão de conexão, conectaremos o smartphone ao módulo Bluetooth e o texto de status abaixo do botão nos dirá se conectamos com sucesso. Usando os botões "Turn ON" e "Turn OFF", podemos ligar e desligar o LED. O texto acima dos botões é o que o Arduino envia de volta ao smartphone quando um botão particular é pressionado.
Controlando Arduino Usando Laptop ou PC via Comunicação Bluetooth
Vamos ver como podemos controlar o Arduino via Bluetooth usando um Laptop ou PC. Primeiro, precisamos parear nosso laptop ao módulo Bluetooth HC-05 e podemos fazer isso nas Configurações de Bluetooth do Laptop. O laptop descobrirá o módulo HC-05 e, usando a senha '1234', parearemos os dispositivos.

Uma vez que parearmos os dispositivos, no Gerenciador de Dispositivos do Laptop, em Portas (COM e LPT), duas novas entidades aparecerão nomeadas "Standard Serial over Bluetooth link". A partir daqui, podemos ver o número da porta COM da porta serial através da qual os dispositivos se comunicarão.

Continuaremos com o mesmo exemplo anterior, ligando e desligando um LED e enviando de volta uma string para o laptop, então usaremos o mesmo código Arduino descrito anteriormente.
Código Fonte Processing IDE
Agora, usando o Processing IDE, faremos um programa para controlar o Arduino. Aqui está o código fonte.
import processing.serial.*;
Serial myPort;
String ledStatus = "LED: OFF";
void setup() {
size(450, 500);
myPort = new Serial(this, "COM5", 38400); // Inicia comunicação serial
myPort.bufferUntil('\n'); // Define até qual caractere os dados da porta serial serão lidos. O caractere '\n' ou 'Nova Linha'
}
void serialEvent(Serial myPort) {
// Verifica dados disponíveis na Porta Serial
ledStatus = myPort.readStringUntil('\n'); // Lê os dados enviados do Arduino (a String "LED: OFF/ON") e coloca na variável "ledStatus"
}
void draw() {
background(237, 240, 241);
fill(20, 160, 133); // Cor Verde
stroke(33);
strokeWeight(1);
rect(50, 100, 150, 50, 10); // Botão Turn ON
rect(250, 100, 150, 50, 10); // Botão Turn OFF
fill(255);
textSize(32);
text("Turn ON", 60, 135);
text("Turn OFF", 255, 135);
textSize(24);
fill(33);
text("Status:", 180, 200);
textSize(30);
textSize(16);
text("Programa feito por Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
text(ledStatus, 155, 240); // Imprime a string vinda do Arduino
// Se botão "Turn ON" for pressionado
if (mousePressed && mouseX > 50 && mouseX < 200 && mouseY > 100 && mouseY < 150) {
myPort.write('1'); // Envia caractere '1' e isso ligará o LED
// Destaca botões em vermelho quando pressionados
stroke(255, 0, 0);
strokeWeight(2);
noFill();
rect(50, 100, 150, 50, 10);
}
// Se botão "Turn OFF" for pressionado
if (mousePressed && mouseX > 250 && mouseX < 400 && mouseY > 100 && mouseY < 150) {
myPort.write('0'); // Envia caractere '0' e isso desligará o LED
stroke(255, 0, 0);
strokeWeight(2);
noFill();
rect(250, 100, 150, 50, 10);
}
}
Descrição: Precisamos incluir a biblioteca Serial e criar um objeto serial para habilitar a comunicação serial, bem como definir uma variável String para o status do LED. Na seção setup, precisamos definir o tamanho da janela do programa e iniciar a comunicação serial. Quanto ao número da porta COM, aqui precisamos tentar um dos dois números de porta COM que notamos anteriormente no gerenciador de dispositivos. A próxima linha define o buffer da porta serial e, no nosso caso, é até haver uma nova linha e, na verdade, há uma nova linha cada vez que o Arduino envia a String "LED: OFF" ou "LED ON" por causa da função println(). Em seguida, usando a função serialEvent(), verificamos se há dados disponíveis na porta serial para serem lidos. Se houver, usando a função readStringUntil(), leremos esses dados da porta serial que foram enviados do Arduino e, no nosso caso, é a String "LED: OFF" ou "LED: ON".
Na função principal draw(), que se repete constantemente, fazemos todos os gráficos e funções do programa. Primeiro, definimos a cor de fundo, a cor de preenchimento, o tamanho e a cor do traço e, usando a função rect(), desenhamos os dois botões. Usando a função text(), imprimimos todos os textos, incluindo a string ledStatus que vem do Arduino. O que resta agora é tornar os botões funcionais. Então, usando a primeira declaração "if", delimitamos a área do botão "Turn ON", então, quando o botão for pressionado, o caractere '1' será enviado pela porta serial para o Arduino e isso ligará o LED. As próximas quatro linhas são usadas para destacar o botão quando pressionado. O mesmo procedimento vale para o botão "Turn OFF".

Agora, o programa está pronto. Quando clicarmos no botão executar, o programa ativará automaticamente a comunicação Bluetooth entre o laptop e o Arduino. O módulo Bluetooth HC-05 começará a piscar a cada dois segundos, o que indica que o módulo está conectado e poderemos controlar o LED usando nosso Laptop.
Isso é tudo para este tutorial, mas não se esqueça de conferir meu próximo tutorial, onde aprenderemos como podemos configurar o módulo Bluetooth HC-05 e fazer uma comunicação Bluetooth entre duas placas Arduino separadas como dispositivos mestre e escravo.
Também, sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e não se esqueça de conferir minha coleção de Projetos Arduino.
Processo de manufatura
- Crie uma Fechadura RFID Segura com Arduino – Guia Passo a Passo
- Gerador de Ondas JX – Oscilador DDS Compatível com Arduino com Display OLED
- Módulo GPS u-blox LEA‑6H 02: Guia de Integração com Arduino e Python
- Sistema Avançado de Detecção de Quedas com Arduino, Windows IoT e Azure Cloud
- Controle Remoto de Carro com Arduino Uno e Bluetooth: Guia Passo a Passo
- Projeto Sensor de Impressão Digital com Arduino Nano – Tutorial Completo
- ArduRadio: Relógio Despertador DIY com Rádio FM Baseado em Arduino
- Cafeteira Inteligente com Arduino com Controle Bluetooth e Monitoramento de Temperatura
- Construa um Laptop com Raspberry Pi 3 e Arduino: Guia Passo a Passo
- Kit de Projeto Arduino Due: TFT, GPS, RTC, Sensores, Bluetooth e Joystick – Lista Completa de Componentes