Caminho de construçãoInicianteUma tarde

Construa um carro-robô para celular via Bluetooth ou Wi-Fi

Um carro-robô que você controla pelo celular via Bluetooth ou Wi-Fi e que para sozinho no instante em que a conexão cai, em vez de continuar se movendo descontroladamente.

Esquema técnico de Construa um carro-robô para celular via Bluetooth ou Wi-FiCLEARANCE FIELD

O que você está construindo

Um carro-robô que você controla pelo celular — por Bluetooth com um HC-05, ou por Wi-Fi com um ESP32 servindo sua própria página de controle.

É o robô mais acessível deste site: sem teoria de controle, sem algoritmo que precise ser acertado e com modos de falha visíveis em vez de matemáticos. É também aquele que ensina uma lição que todos os outros robôs precisam — o que fazer quando você deixa de ter o controle.

Os dois rádios

HC-05 (Bluetooth) ESP32 (Wi-Fi)
Componentes adicionais Um módulo, mais um divisor em RX Nenhum — o rádio está no controlador
No celular Um aplicativo serial Bluetooth Qualquer navegador
Alcance Aproximadamente 10 m Mais de 30 m ao ar livre
O celular mantém o acesso à internet Sim Não, no modo ponto de acesso
Melhor para A primeira construção sem fio Um robô que você queira disponibilizar para outra pessoa

Nenhum dos dois está errado. O HC-05 é o caminho mais curto para um robô que se move; o ESP32 oferece uma experiência melhor depois que funciona, porque “conecte-se a este Wi-Fi e abra um navegador” não precisa de explicação.

Lista de materiais

Há dois caminhos, e você só precisa de um. Construa a versão Bluetooth se já tiver um Arduino; construa a versão Wi-Fi se estiver comprando componentes agora.

Peça Caminho Bluetooth Caminho Wi-Fi Custo aproximado
Controlador Arduino Uno ESP32 US$ 5–8
Rádio Módulo HC-05 Integrado US$ 4 / US$ 0
Conversão de nível 1 kΩ + 2 kΩ no RX do módulo Necessária em qualquer entrada de sensor de 5 V US$ 0,10
Driver de motores 1 1 US$ 2–4
Motorredutor TT 2 2 US$ 4
Chassi 2WD 1 1 US$ 6–10
Pacote de bateria 1 1 US$ 6
Aplicativo de celular necessário Sim — um terminal serial Bluetooth Não — qualquer navegador —

Total: aproximadamente US$ 25–35 em qualquer caminho.

A diferença decisiva não é o custo; é a interface de controle. Um HC-05 fornece um fluxo de bytes, então o celular precisa de um aplicativo que envie bytes. Um ESP32 serve sua própria página web, então o celular precisa de um navegador — o que significa que qualquer pessoa pode controlar o robô abrindo uma URL, sem instalar nada. Para um robô que você queira disponibilizar para outra pessoa, essa é uma diferença enorme sem custo adicional.

O caminho Bluetooth é a melhor opção quando você já tem um Arduino ou quando quer a conexão mais simples possível, sem conceitos de rede envolvidos. Um byte entra, um byte sai.

Ordem de construção

1 — Controle-o na bancada. Motores, driver, bateria, rodas fora do chão e nenhum rádio. Siga controlar motores CC com PWM e confirme avanço, ré e cada direção com comandos fixos. Depurar um rádio e um driver de motores ao mesmo tempo faz as tardes desaparecerem.

2 — Adicione o rádio e o retorno. Conecte o HC-05 ou ative o ponto de acesso do ESP32 e faça texto circular nas duas direções antes de ligar o controle dos motores.

3 — Una os dois com um protocolo. Uma letra mais um valor, terminados por uma quebra de linha. Leia até o terminador em vez de agir a cada byte, porque “alguns bytes chegaram” não significa “a mensagem chegou”.

4 — Torne-o seguro contra falhas. Esta é a etapa que as pessoas pulam, e é a que importa.

O tempo limite de segurança

Um robô sem fio continua fazendo a última coisa que você mandou. Se isso era “avançar em velocidade máxima” e você acabou de sair do alcance, o robô não para — ele continua obedecendo ao último comando.

Um diagrama de tempo. Uma fileira de pulsos de comando chega a cada 100 milissegundos enquanto um botão está pressionado e para em uma linha tracejada marcada como sinal perdido. Abaixo, uma barra mostrando que, sem tempo limite, permanece vermelha e o robô continua se movendo sem controle indefinidamente após a perda do sinal. Uma segunda barra com tempo limite de segurança de 400 milissegundos muda para parado pouco depois do último comando.
O fluxo de comandos para quando a conexão cai, não quando o usuário deixa de enviá-los — por isso o robô precisa atingir o tempo limite por conta própria. Baixar SVG

A correção tem duas metades e precisa das duas:

  • O controlador repete. O celular envia o comando mantido a cada 100 ms, não apenas uma vez ao apertar o botão.
  • O robô espera por ele. Se nenhum comando chegar por ~400 ms, pare.
if (millis() - lastCommandAt > 400) stop();

Agora liberar um botão, fechar um aplicativo, ficar sem bateria no celular e sair do alcance produzem o mesmo resultado. Você nunca depende de uma mensagem de parada que pode não ser enviada.

Use millis() em vez de delay() para isso. Um delay(200) em qualquer lugar do laço bloqueia o robô por 200 ms, durante os quais ele não lê nem verifica nada.

Observações dos componentes

Forneça uma alimentação limpa ao rádio. Os dois módulos puxam corrente em pulsos abruptos ao transmitir. Compartilhar um trilho que cede com os motores causa reinicializações que parecem exatamente falhas de software — o robô para de responder no meio do movimento e volta um segundo depois. Alimente os motores pelo pacote de bateria através do driver e mantenha a alimentação da lógica separada.

Um diagrama de fiação. Um Arduino Uno ou Nano conecta sua linha TXD diretamente ao pino D10 de um módulo HC-05, rotulado como seguro porque 3,3 volts de saída são lidos como HIGH em uma entrada de 5 volts. O caminho de retorno do pino D11 ao RXD do módulo passa por um divisor de tensão de 2 kΩ e 3,3 kΩ, com um aviso de que 5 volts diretamente no RXD danificam parcialmente o módulo, fazendo-o continuar pareando, mas corrompendo os dados enviados.
Três dos quatro fios são fáceis. O quarto precisa de um divisor, porque 5 V no RXD do módulo o danificam gradualmente, sem sintomas evidentes. Baixar SVG

Preste atenção aos pinos de 3,3 V. O RX do HC-05 e todos os GPIO do ESP32 são de 3,3 V. Um Arduino de 5 V transmitindo para eles precisa de um divisor. O dano é gradual e parcial, e é por isso que ele é difícil de diagnosticar.

Um L298N serve aqui. A queda de tensão dele importa em um robô que acompanha uma linha em alta velocidade; em um carro controlado manualmente, basta compensar com um comando de velocidade/PWM menor, então o driver mais barato e comum é uma escolha sensata.

Como fica um bom resultado

Medição Bluetooth (HC-05) Wi-Fi (ESP32)
Latência de comando 20–60 ms 30–100 ms em uma rede local
Alcance com linha de visão livre ~10 m ~50 m, ou qualquer lugar na rede
Alcance através de uma parede interna 3–5 m 15–25 m
Tempo até o primeiro comando após ligar ~2 s depois de parear ~5 s para entrar no Wi-Fi
Reconexão depois de uma queda Manual, normalmente Automática
Tempo limite de segurança que funciona bem 300–500 ms 300–500 ms

O tempo limite de segurança é o número que vale ajustar com cuidado, e ambos os rádios precisam dele. Se for longo demais, o robô continua se movendo por um instante perceptível depois que a conexão cai — isso representa 30 cm de percurso sem supervisão a 0,3 m/s com um tempo limite de 1 s. Se for curto demais, a variação normal dos pacotes interrompe o robô constantemente, e parece quebrado.

300–500 ms é a faixa utilizável para os dois. Abaixo de cerca de 250 ms, a variação normal do Wi-Fi começa a acioná-lo; acima de cerca de 700 ms, uma perda de conexão deixa o robô descontrolado por um tempo perceptível.

Para onde isso leva

A camada de comandos que você construiu é independente de qualquer camada de comportamento, e é exatamente isso que faz dela uma boa base. Adicione um sensor ultrassônico e o robô poderá recusar-se a avançar contra uma parede mesmo enquanto você mantém o comando para a frente — o começo do robô com desvio de obstáculos.

Essa combinação, um robô que você pode controlar e que pode assumir o controle quando necessário, também é a maneira mais fácil de desenvolver autonomia: você pode posicionar o robô exatamente onde um erro acontece sem precisar caminhar até ele e pegá-lo.

Roteiro do projeto

O caminho de construção

Siga a árvore tecnológica das peças até um robô funcionando. Cada nó é desbloqueado quando seus pré-requisitos são concluídos, e seu progresso fica salvo neste dispositivo.

0 / 14 concluídos

100%
Componente

Adicione os motores de tração

Componente

Ver componente
Componente

Adicione uma conexão Bluetooth

Componente

Ver componente
Caminho de aprendizagem

Controle de motores

Caminho de aprendizagem

Abrir caminho
Tutorial

Adicione uma camada de comportamento

16 min

Abrir tutorial
Montagem

Torne-o seguro em caso de falha

Construção

Objetivo

Controle-o pelo celular

Objetivo

Componentes

Tutoriais deste caminho

Perguntas frequentes

Devo usar Bluetooth ou Wi-Fi em um carro-robô?

O Bluetooth com um HC-05 é mais simples de fazer funcionar e precisa ser pareado uma vez, mas exige um aplicativo de terminal serial e o alcance é de aproximadamente dez metros. Um ESP32 por Wi-Fi não exige aplicativo algum — ele serve sua própria página de controle para qualquer navegador — e alcança mais longe, mas o celular perde a conexão com a internet enquanto estiver conectado à rede do robô. Para a primeira construção, o Bluetooth é o caminho mais curto; para um projeto que você queira demonstrar, a página de controle sem aplicativo do ESP32 vale a hora extra.

Por que meu robô Bluetooth continua se movendo depois que libero o botão?

Porque ele não recebeu o comando de soltar o botão. Um robô com fio para quando você solta; um robô sem fio continua fazendo a última coisa que foi mandado. A correção tem dois lados: faça o celular repetir o comando atual a cada 100 ms enquanto um botão estiver pressionado e faça o robô parar automaticamente se nada chegar por alguns centenas de milissegundos. Assim, liberar o botão e perder o sinal produzem o mesmo resultado seguro, e você nunca depende de uma mensagem de parada que pode nunca chegar.

Posso danificar o HC-05 conectando-o diretamente ao Arduino?

Sim, em um pino. A lógica do módulo é de 3,3 V e seu pino RX não tolera 5 V, então um Arduino transmitindo diretamente para ele submete essa entrada a uma tensão excessiva. O que torna o problema confuso é que o dano costuma ser parcial — o módulo ainda pareia e ainda transmite, mas corrompe silenciosamente ou ignora os dados enviados. Dois resistores formando um divisor nessa linha evitam isso.

Preciso de um aplicativo para controlar o robô pelo celular?

Somente para Bluetooth. Um HC-05 precisa de algum terminal serial Bluetooth no celular para abrir a porta. Um ESP32 não precisa de nada: cria sua própria rede Wi-Fi e serve uma página HTML, então você se conecta e abre um navegador. Esse é o argumento prático mais forte para o ESP32 em um robô que você quer que outras pessoas possam controlar.

Um robô controlado por celular também pode se mover de forma autônoma?

Sim, e esse é o próximo passo natural. A camada de comandos que você construiu aqui é separada da camada de comportamento, então adicionar sensores permite que o robô assuma o controle e sobreponha o comando remoto — recusando-se a avançar contra uma parede mesmo quando você mantém o comando para a frente. Construa primeiro a camada manual: é muito mais fácil depurar um sensor quando você pode colocar o robô exatamente na posição necessária sem precisar caminhar até ele.