Componente · Comunicação
Módulo Bluetooth HC-05
O HC-05 adiciona serial Bluetooth a um robô—pareie-o com o celular para controlá-lo ou transmitir dados usando os mesmos pinos TX/RX de uma conexão com fio.
O que é
O HC-05 é a forma mais simples de tornar um robô sem fio. É um módulo Bluetooth que funciona
como um cabo serial sem cabo: seu microcontrolador lê e escreve bytes nos pinos TX/RX
exatamente como faria por USB, mas a outra ponta é um celular ou notebook pareado via Bluetooth.
Envie um F de um aplicativo no celular e o robô avançará—sem Wi-Fi, rede ou contas.
Como funciona
O HC-05 implementa o Serial Port Profile (SPP) do Bluetooth. Depois do pareamento, tudo o que
o módulo recebe pelo ar aparece em seu pino TX, e tudo o que você envia ao RX é transmitido
pelo ar ao dispositivo pareado. Seu código usa apenas a porta serial—Serial.read() /
Serial.print()—e a conexão sem fio fica invisível. A configuração (nome, taxa de baud, função
mestre/escravo) é feita com comandos AT em um modo separado, mas, na maioria dos robôs, os padrões
funcionam sem alterações.
Quando usar
Use um HC-05 quando quiser comandar ou monitorar um robô sem um cabo:
- Robôs controlados pelo celular — um aplicativo Bluetooth envia comandos de movimento que o robô lê pela serial e converte em controle de motores.
- Telemetria ao vivo — transmita valores de sensores ou odometria a um notebook enquanto o robô funciona.
- Ajuste sem fio — modifique parâmetros durante a execução, em vez de regravar o firmware.
Se o robô já usa um ESP32, você não precisa de um HC-05—o ESP32 já tem Bluetooth e Wi-Fi integrados. O HC-05 é o complemento que oferece a mesma solução sem fio a um Arduino Uno.
Conexões e armadilhas
- Cruze as linhas seriais: TX do módulo → RX da placa e RX do módulo → TX da placa. Invertê-las é a principal causa de “não conecta”.
- Reduza o sinal no pino RX de uma placa de 5 V, como o Uno, para 3,3 V.
- Libere a porta serial de hardware durante a gravação ou use um par de pinos de serial por software — o módulo e o programador USB não podem compartilhar a única UART do Uno.
- Faça o pareamento primeiro (o PIN costuma ser 1234/0000); o LED integrado mostra o estado da conexão.
Pinagem
| Pino | Nome | O que faz |
|---|---|---|
| 1 | EN / KEY |
Mantido em HIGH na energização para entrar no modo de comandos AT |
| 2 | VCC |
3,6–6 V. A placa adaptadora regula internamente para 3,3 V |
| 3 | GND |
Massa |
| 4 | TXD |
O módulo transmite. Vai para o RX do microcontrolador |
| 5 | RXD |
O módulo recebe. Lógica de 3,3 V — reduza um sinal de 5 V |
| 6 | STATE |
HIGH quando há um dispositivo conectado. É realmente útil, mas costuma ser ignorado |
O pino STATE merece mais atenção do que recebe. Um robô que o lê sabe quando o celular saiu do
alcance, o que é a diferença entre parar com segurança e bater em uma parede enquanto espera um
comando que nunca chegará.
Conectando a um Arduino
Os dois erros aqui respondem pela maioria dos relatos de “não vai conectar”.
| HC-05 | Arduino Uno | Observação |
|---|---|---|
| VCC | 5 V | O regulador integrado trata disso |
| GND | GND | |
| TXD | Pino 10 (RX do SoftwareSerial) | TX do módulo → RX da placa. Cruze-os |
| RXD | Pino 11 por divisor (TX do SoftwareSerial) | TX da placa → RX do módulo, por um divisor 2:1 |
| EN | Deixe aberto | Necessário apenas no modo AT |
| STATE | Qualquer pino digital | Verificação opcional da conexão |
Cruze as linhas seriais
TX transmite e RX recebe. Dois dispositivos que tentam transmitir pelo mesmo fio não conseguem fazer nada, e não há erro — o pareamento funciona normalmente, o LED fica aceso e nenhum dado trafega. O TX do módulo vai para o RX da placa. O RX do módulo vai para o TX da placa.
Reduza a linha RX
RXD é uma entrada de 3,3 V, e um Arduino Uno gera 5 V. Dois resistores resolvem:
Arduino TX ──── 1 kΩ ──┬── HC-05 RXD
│
2 kΩ
│
GND
TXD não precisa de divisor no outro sentido — a saída de 3,3 V do módulo supera o limiar alto
de 3,0 V do Uno.
Não use os pinos 0 e 1
O Uno tem uma UART de hardware, e o programador USB já tem esse recurso reservado. Conecte o módulo ali e os
envios falharão enquanto ele estiver conectado, a saída do monitor serial irá para o módulo e a
depuração será impossível. Use SoftwareSerial em outros dois pinos.
Código mínimo funcional
#include <SoftwareSerial.h>
SoftwareSerial bt(10, 11); // RX (from module TX), TX (to module RX)
const int STATE_PIN = 8;
void setup() {
Serial.begin(115200); // USB, for debugging
bt.begin(9600); // HC-05 default in data mode
pinMode(STATE_PIN, INPUT);
}
void loop() {
// Lose the link, stop the robot. Do this before reading commands.
if (digitalRead(STATE_PIN) == LOW) { stopMotors(); }
if (bt.available()) {
char c = bt.read();
switch (c) {
case 'F': driveForward(); break;
case 'B': driveBackward(); break;
case 'L': turnLeft(); break;
case 'R': turnRight(); break;
case 'S': stopMotors(); break;
}
Serial.print("cmd: "); Serial.println(c); // echo to USB for debugging
}
}
A verificação de conexão no início do laço é a parte que a maioria dos tutoriais omite, e é justamente o que impede um robô descontrolado. O alcance do Bluetooth é de cerca de 10 m, e paredes o reduzem bruscamente; um robô que continua executando o último comando depois de perder o conexão seguirá em frente até colidir com algo.
Modo de comandos AT
Alterar o nome, a taxa de transmissão ou o PIN do módulo exige o modo AT, e entrar nele tem uma sequência específica que o módulo não torna evidente.
- Desligue a alimentação do módulo.
- Mantenha
ENem HIGH (ou pressione e segure o pequeno botão, se a placa tiver um). - Ligue a alimentação enquanto
ENestiver pressionado. - O LED agora pisca lentamente — aproximadamente uma vez a cada dois segundos — em vez de piscar rapidamente.
- Comunique-se com ele a 38400 baud, não 9600, enviando quebra de linha e retorno de carro.
AT -> OK
AT+NAME=LineBot -> OK set the name shown when pairing
AT+PSWD="1234" -> OK set the pairing PIN (quotes on newer firmware)
AT+UART=115200,0,0 -> OK data-mode baud rate
AT+ROLE=0 -> OK 0 = slave (normal), 1 = master
AT+ADDR? -> +ADDR the module's own address
Duas armadilhas: o modo AT sempre usa 38400, independentemente do baud do modo de dados, e a frequência do LED é a única indicação confiável de que você está nele. Uma piscação rápida indica modo de dados, e seus comandos AT serão simplesmente transmitidos pelo ar ao dispositivo que estiver pareado.
HC-05 ou HC-06?
Eles parecem idênticos e são vendidos de forma intercambiável, mas existe uma diferença real.
| HC-05 | HC-06 | |
|---|---|---|
| Papel | Mestre ou escravo | Somente escravo |
| Pode iniciar uma conexão | Sim | Não |
| Modo AT | Pelo pino EN, a 38400 |
A qualquer momento enquanto não pareado, no baud de dados |
| Preço | Um pouco mais caro | Um pouco mais barato |
Se o módulo sempre precisar apenas aceitar a conexão de um celular, um HC-06 é suficiente. Se você quiser que dois robôs conversem ou que um robô se conecte a um módulo, em vez de esperar para ser conectado, precisa da função mestre do HC-05.
Solução de problemas
| Sintoma | Causa provável | Solução |
|---|---|---|
| O pareamento funciona, mas nenhum dado trafega | TX/RX não cruzados | TX do módulo → RX da placa, RX do módulo → TX da placa |
| Caracteres corrompidos | Baud divergente | Use 9600 nas duas pontas ou configure o mesmo valor nas duas |
| A gravação falha enquanto o módulo está conectado | Módulo nos pinos 0/1 | Mude para pinos do SoftwareSerial |
| Os comandos AT não fazem nada | O módulo não está realmente no modo AT | Mantenha EN durante a energização; confirme a piscação lenta |
| O modo AT não responde | Está usando o baud de dados | O modo AT é sempre 38400 |
| Não há pareamento | PIN errado | Tente 1234 e depois 0000 |
| A conexão cai a alguns metros | Alcance da classe 2 mais paredes | Esperado; use o pino STATE para parar com segurança |
| O robô continua andando após desconectar | Nenhuma verificação da conexão | Leia STATE e pare quando estiver LOW |
| Funciona com USB, mas não com bateria | Queda de tensão da fonte | As rajadas de transmissão do rádio exigem 5 V estáveis |
HC-05 ou ESP32?
Se você está escolhendo componentes, em vez de usar o que já tem, esta é a decisão real.
| HC-05 + Arduino | ESP32 | |
|---|---|---|
| Sem fio | Bluetooth Classic SPP | Wi-Fi e Bluetooth, integrados |
| Hardware adicional | Um módulo, um divisor e dois pinos | Nenhum |
| Interface de controle | Um fluxo de bytes seriais | Uma página na Internet servida pelo próprio robô |
| Alcance | ~10 m | ~50 m por Wi-Fi, ou qualquer lugar com rede |
| Aplicativo para celular necessário | Sim — um terminal Bluetooth genérico | Não — qualquer navegador |
| Valor didático | Protocolos seriais e a conexão mais simples possível | Redes, que são um assunto muito maior |
O HC-05 é a resposta certa quando você já tem um Arduino e quer o caminho mais curto para um robô sem fio. Ele é realmente simples: um byte entra, um byte sai, sem conceitos de rede. Em um projeto novo com requisito sem fio, um ESP32 faz mais por menos e não precisa de peças extras — e um robô que serve sua própria página de controle não exige aplicativo instalado no celular de ninguém.
Explore o grafo
Usado nestas montagens
Projetos, caminhos de aprendizagem e simuladores que incluem Módulo Bluetooth HC-05.
Comparar
Alternativas
Perguntas
Perguntas frequentes sobre Módulo Bluetooth HC-05
O que é um HC-05?
O HC-05 é um módulo Bluetooth que transforma uma conexão sem fio em uma conexão serial (UART) comum. Para o seu microcontrolador, ele funciona exatamente como um cabo serial—você lê e escreve bytes em TX/RX—exceto que a outra ponta é o celular ou o PC via Bluetooth. É a maneira mais fácil de controlar um robô sem fio.
Como conectar um HC-05 a um Arduino?
Alimente VCC e GND e depois cruze as linhas seriais — TX do módulo no RX do Arduino e RX do módulo no TX do Arduino. Como o pino RX do HC-05 usa 3,3 V, reduza o TX de 5 V do Arduino com um divisor de tensão. Assim, tudo o que você imprime na serial é enviado sem fio ao celular pareado, e vice-versa.
Qual é o alcance do HC-05?
Cerca de 10 metros em linha de visão—é um dispositivo Bluetooth Classe 2. Paredes e interferência reduzem esse alcance. Isso basta para controlar um robô em uma sala pelo celular, mas, para longo alcance, use Wi-Fi ou um rádio dedicado.
Como parear módulos HC-05?
Para parear com um celular, alimente o módulo, abra as configurações de Bluetooth do celular, selecione o HC-05 e digite o PIN (normalmente 1234 ou 0000). Para parear dois HC-05 entre si, defina um como mestre e outro como escravo com comandos AT e faça o pareamento pelo endereço.
Como programar o HC-05?
O HC-05 tem dois modos. No modo de dados, ele simplesmente repassa bytes seriais. Para alterar o nome, a taxa de transmissão ou a função de mestre/escravo, coloque-o no modo de comandos AT—mantenha o pino EN/KEY em nível alto na energização—e envie comandos AT pela serial.
Leitura complementar