Módulo Bluetooth HC-05: controle seu Arduino pelo celular
Como ligar o módulo Bluetooth HC-05? Pinos e divisor de tensão, pareamento com o celular, controle de LED e relé, comandos AT, HC-05 vs HC-06 vs HM-10, compatibilidade com iPhone, ESP32 e Pico.
O HC-05 é um módulo Bluetooth barato e muito comum que adiciona comunicação serial sem fio a projetos com Arduino. Com ele você acende um LED pelo celular, liga e desliga uma lâmpada com um relé, dirige um carrinho de controle remoto ou envia dados de sensores para o celular. Neste artigo você vai ver passo a passo como ligar o HC-05 de forma correta e segura, pareá-lo com o celular, escrever o seu primeiro código e usar os comandos AT que mudam as configurações do módulo.

Como funciona o HC-05?
O HC-05 usa o SPP (Serial Port Profile) do Bluetooth clássico e se comporta como um “cabo serial sem fio”. Depois que o celular é pareado e conectado, cada caractere enviado pelo celular chega ao Arduino pelo pino TXD do módulo, e tudo o que o Arduino escreve no pino RXD vai para o celular. Do lado do Arduino você não precisa saber nada de Bluetooth: você usa Serial.print() e read() como se estivesse conversando com o Monitor Serial.
| Característica | Valor |
|---|---|
| Versão do Bluetooth | 2.0 + EDR (clássico, SPP) |
| Alcance | ~10 m em espaço aberto |
| Tensão de alimentação | 3,6–6 V (a placa do módulo tem regulador) |
| Nível lógico | 3,3 V |
| Baud rate padrão | 9600 baud (38400 no modo AT) |
| PIN padrão | 1234 ou 0000 |
| Papel | Mestre e escravo |
HC-05 vs HC-06 vs HM-10
| Módulo | Bluetooth | Papel | Pinos | iPhone |
|---|---|---|---|---|
| HC-05 | 2.0 clássico | Mestre e escravo | 6 | Não funciona |
| HC-06 | 2.0 clássico | Só escravo | 4 | Não funciona |
| HM-10 | 4.0 BLE | Mestre e escravo | 6 | Funciona |

Pinos e ligação do HC-05
O módulo pode ser alimentado pelo 5V porque há um regulador na placa, mas os pinos de dados trabalham em 3,3 V. O Arduino lê sem problemas o sinal de 3,3 V do pino TXD do HC-05. No sentido contrário, em vez de ligar o sinal TX de 5 V do Arduino direto no pino RXD do módulo, use um divisor de tensão: TX do Arduino → 1 kΩ → RXD, RXD → 2 kΩ → GND. Assim chegam cerca de 3,3 V ao RXD.
| Pino do HC-05 | Função | Arduino Uno |
|---|---|---|
| EN (KEY) | Entrar no modo AT | Desconectado (3,3 V para o modo AT) |
| VCC | Alimentação | 5V |
| GND | Terra | GND |
| TXD | Saída de dados do módulo | D10 (RX do SoftwareSerial) |
| RXD | Entrada de dados do módulo (3,3 V) | D11, por um divisor de 1 kΩ / 2 kΩ |
| STATE | HIGH quando conectado | Desconectado, ou um pino de entrada se você quiser |
Estados do LED e pareamento com o celular
Quando você alimenta o módulo, o LED pisca rápido: isso significa que ele está esperando uma conexão. Nas configurações de Bluetooth do seu celular Android, encontre o dispositivo chamado “HC-05” e faça o pareamento usando 1234 (ou 0000, se não funcionar) como PIN. Só o pareamento não abre uma conexão; quem faz isso é um app de terminal serial Bluetooth. Depois de conectado, o LED dá duas piscadas curtas a cada 2 segundos. Se o LED fica aceso 2 segundos e apagado 2 segundos, o módulo está no modo de comandos AT.
Primeira comunicação com o celular
O código abaixo transforma o Arduino em uma ponte entre o celular e o computador: cada caractere vindo do celular vai para o Monitor Serial, e tudo o que você digita no Monitor Serial vai para o celular. É o melhor ponto de partida para testar a conexão:
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11); // RX, TX → HC-05 TXD, RXD
4
5void setup() {
6 Serial.begin(9600);
7 bt.begin(9600); // veri modu hızı / data mode baud rate
8}
9
10void loop() {
11 if (bt.available()) {
12 Serial.write(bt.read()); // telefondan bilgisayara / phone to PC
13 }
14 if (Serial.available()) {
15 bt.write(Serial.read()); // bilgisayardan telefona / PC to phone
16 }
17}Carregue o código e abra o Monitor Serial em 9600 baud. No celular, conecte-se ao HC-05 com um app do Google Play como o Serial Bluetooth Terminal e digite alguma coisa: o que você digitar vai aparecer no Monitor Serial. O texto que você digita no Monitor Serial também aparece no celular. Se isso funcionar, sua conexão, sua ligação e o baud rate estão todos certos.
Controlando um LED e um relé pelo celular
Agora vamos agir de acordo com os caracteres que vêm do celular: quando chega 1, o LED acende, e quando chega 0, apaga. O Arduino também envia uma resposta para o celular depois de cada comando:
1#include <SoftwareSerial.h>
2
3SoftwareSerial bt(10, 11); // RX, TX
4const int LED = 13;
5
6void setup() {
7 pinMode(LED, OUTPUT);
8 bt.begin(9600);
9 bt.println("Ready");
10}
11
12void loop() {
13 if (bt.available()) {
14 char c = bt.read();
15 if (c == '1') {
16 digitalWrite(LED, HIGH); // LED'i yak / turn the LED on
17 bt.println("LED ON");
18 } else if (c == '0') {
19 digitalWrite(LED, LOW); // LED'i söndür / turn the LED off
20 bt.println("LED OFF");
21 }
22 }
23}Muitos apps de Bluetooth permitem associar qualquer caractere a um botão, então você pode montar no celular um pequeno controle com botões “Ligar” e “Desligar”. Se você ligar um módulo relé no lugar do LED, o mesmo código controla uma lâmpada ou um ventilador pelo celular. Encaminhar os caracteres F, B, L e R, para frente, trás, esquerda e direita, a um driver de motor L298N também é a base de um carrinho controlado por Bluetooth.
Mudando as configurações do módulo com comandos AT
Você pode mudar o nome, o PIN e o baud rate do HC-05 com comandos AT. Para entrar no modo AT, alimente o módulo segurando o botãozinho dele (ou com o pino EN ligado em 3,3 V); o LED começa a piscar devagar, uma vez a cada 2 segundos. No código da ponte, escreva bt.begin(38400), defina o final de linha no Monitor Serial como Ambos, NL e CR e envie os comandos:
| Comando | Função |
|---|---|
| AT | Teste de conexão, responde OK |
| AT+NAME=BlueGrays | Muda o nome visível do módulo |
| AT+PSWD="4321" | Muda o PIN (sem aspas nas versões antigas) |
| AT+UART=9600,0,0 | Define o baud rate no modo de dados |
| AT+ROLE=0 | Torna o módulo escravo (1 o torna mestre) |
| AT+VERSION? | Mostra a versão do firmware |
| AT+ORGL | Restaura as configurações de fábrica |
Bluetooth com ESP32 e Raspberry Pi Pico
O ESP32 clássico tem Bluetooth clássico e BLE embutidos; com a biblioteca BluetoothSerial você se conecta ao celular sem um HC-05. Já o ESP32-S3 e o ESP32-C3 só suportam BLE. O Raspberry Pi Pico W também tem Bluetooth embutido. No Raspberry Pi Pico comum, sem Bluetooth, você liga o HC-05 nos pinos da UART; como o Pico funciona em 3,3 V, desta vez não precisa de divisor de tensão. Alimente o módulo pelo pino VBUS (5V):
1from machine import UART, Pin
2
3bt = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1)) # GP0 → RXD, GP1 ← TXD
4led = Pin("LED", Pin.OUT) # kart üstü LED / onboard LED
5
6while True:
7 if bt.any():
8 c = bt.read(1)
9 if c == b'1':
10 led.on()
11 bt.write(b'LED ON\n')
12 elif c == b'0':
13 led.off()
14 bt.write(b'LED OFF\n')Ideias de projetos com HC-05
- Carrinho controlado por Bluetooth: um robô dirigido pelo celular com um driver de motor L298N e dois motores CC.
- Interruptor de casa inteligente: ligue e desligue lâmpadas e tomadas pelo celular com um módulo relé.
- Luminária com seletor de cores: defina a cor de um LED RGB com valores enviados pelo celular.
- Display de sensor sem fio: envie para o terminal no celular a temperatura e a umidade lidas por um DHT11.
- Braço robótico: controle servo motores com controles deslizantes no celular.
- Comunicação entre dois Arduinos: faça de um HC-05 o mestre e do outro o escravo para enviar dados sem fio.
Erros comuns e como corrigir
- O celular não encontra o módulo: você está usando um iPhone, o módulo está conectado a outro aparelho ou ficou preso no modo AT.
- Chegam caracteres embaralhados: os baud rates não batem; o modo de dados costuma usar 9600, e o modo AT, 38400.
- Nenhuma resposta aos comandos AT: o módulo não está no modo AT, o baud rate não é 38400 ou o final de linha não está em Ambos, NL e CR.
- O código não carrega: o módulo está ligado nos pinos 0 e 1; desconecte-o durante o carregamento ou use SoftwareSerial.
- A conexão cai quando os motores ligam: os motores perturbam a alimentação; alimente-os por uma fonte separada e coloque um capacitor na alimentação do módulo.
- O módulo queimou depois de um tempo: talvez tenham chegado 5 V ao pino RXD sem divisor; use sempre um divisor de 1 kΩ / 2 kΩ.
O HC-05 é o jeito mais fácil de levar seus projetos com fio para o mundo sem fio; junte-o com controle de motores e você está pronto para montar o seu primeiro robô controlado à distância. No app BlueGrays você encontra um carrinho controlado por Bluetooth com L298N e um robô que desvia de obstáculos, com esquemas do circuito e código.
Perguntas frequentes
O HC-05 funciona com iPhone?
Não. O iOS não deixa apps comuns abrirem a conexão serial por Bluetooth clássico usada pelo HC-05 e pelo HC-06. Para iPhone, use um módulo BLE como o HM-10 ou um ESP32 com BLE.
Qual é o alcance do HC-05?
Cerca de 10 metros em espaço aberto. Paredes, superfícies metálicas e outros aparelhos sem fio reduzem essa distância. Em ambientes internos, ele funciona de forma confiável no mesmo cômodo ou no cômodo ao lado.
Qual é a diferença entre o HC-05 e o HC-06?
Os dois usam Bluetooth clássico. O HC-05 pode ser mestre ou escravo e tem 6 pinos; o HC-06 é só escravo e costuma ter 4 pinos. Qualquer um basta para conversar com um celular; para ligar dois Arduinos você precisa de pelo menos um HC-05.
Qual é o PIN padrão do HC-05?
É 1234 na maioria dos módulos e 0000 em alguns. Você pode mudá-lo no modo AT com o comando AT+PSWD; se não quer que outras pessoas controlem o seu projeto, mudar o PIN padrão é uma boa ideia.
Dá para fazer dois Arduinos conversarem com HC-05?
Sim. Torne um HC-05 mestre com AT+ROLE=1 e passe a ele o endereço do outro módulo com o comando AT+BIND; o segundo módulo continua escravo. Ao ligar, o mestre se conecta ao escravo automaticamente, e os dois Arduinos conversam pela porta serial.
O divisor de tensão no pino RXD é mesmo necessário?
É recomendado. Os pinos de dados do HC-05 trabalham em 3,3 V; muitos módulos aguentam 5 V por um tempo, mas podem queimar com o tempo. Um divisor simples com resistores de 1 kΩ e 2 kΩ elimina esse risco. O pino TXD não precisa de divisor.
Projetos para montar depois desta leitura
Ver todos os projetos
Carrinho controlado por Bluetooth com L298N
Transforme seu celular em um controle remoto e dirija seu próprio carrinho robô. O Arduino recebe os comandos de um aplicativo de controle remoto no celular por meio de um módulo Bluetooth e aciona as

Robô que desvia de obstáculos
Que tal construir um veículo inteligente que encontra seu próprio caminho? O robô que desvia de obstáculos monitora o ambiente constantemente com o sensor ultrassônico na parte da frente. Ao encontrar
Mais artigos
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

