Construa um robô seguidor de linha: do simulador à pista real
Um robô seguidor de linha funcional, compreendido de ponta a ponta — da leitura da linha ao laço PID que o orienta — construído com peças que você ajustou primeiro na simulação.
Um robô seguidor de linha é o melhor primeiro robô: ele sente, decide e se move, mas todas as suas partes são simples o bastante para serem compreendidas por completo. Este caminho de construção trata dele exatamente assim — como um caminho. Em vez de uma lista de peças e uma foto de fiação para copiar, você desbloqueia um nó de cada vez, aprendendo o mecanismo por trás de cada etapa antes de construí-la.
Você começa entendendo como uma fileira de sensores de infravermelho (IR) se transforma em um único erro de direção e como um laço Proporcional-Integral-Derivativo (PID) transforma esse erro em movimento suave. Cinco sensores são o ponto ideal para uma primeira construção: três funcionam em baixa velocidade, mas dão uma posição grosseira; oito oferecem resolução mais fina em alta velocidade, mas complicam a fiação e a calibração. A média ponderada que reduz essas leituras a um único número com sinal — negativo quando a linha está à esquerda, positivo quando está à direita — é o único sinal que o laço de direção vê, e é por isso que obter esse número corretamente importa mais do que escolher uma placa específica.
Esse sinal então precisa se tornar duas velocidades de roda diferentes. A direção diferencial permite que o robô esterce fazendo as rodas girarem em taxas diferentes, e a árvore tecnológica leva você do driver de motores bruto, passando por modulação de largura de pulso (PWM) e pela cinemática que transformam uma única correção em comandos para a esquerda e a direita. Você também verá onde a odometria se encaixa: contar o movimento das rodas informa quanto você percorreu e por que essa estimativa deriva sem uma referência externa — um tema que retorna em todos os robôs de labirinto.
Antes de gastar dinheiro ou arriscar uma fiação errada, você ajusta o comportamento no simulador do navegador, desenhando uma pista, alterando a quantidade e o espaçamento dos sensores e arrastando os ganhos Proporcional, Integral e Derivativo enquanto observa o erro, o tempo de volta e o tempo sobre a linha. O simulador é um modelo didático, não um protótipo: ele pressupõe uma pista plana, binária e de alto contraste, calibração ideal, nenhuma mudança de luz ambiente e um laço perfeitamente periódico, sem deslizamento das rodas. Os ganhos encontrados aqui são um ponto de partida próximo, mas você ainda precisará calibrar a matriz real e ajustar novamente na sua fita.
Só então você conecta o robô real: saídas dos sensores de refletância para pinos compatíveis com sinal analógico, PWM e direção para o L298N (pinos lógicos não podem fornecer corrente de motor — a ponte H dupla comuta a corrente real), uma alimentação separada dos motores em seu próprio trilho e um terra comum que una todos os módulos. O nó final é a montagem e a iteração em um percurso real com fita, onde você transfere os ganhos do simulador e ajusta para a superfície, a tensão da bateria e o tempo do laço. A mesma estrutura reaparece depois no solucionador de labirintos de linhas, que adiciona uma camada de decisão sobre este seguidor; portanto, consolidar esta base economiza tempo duas vezes.
Siga a árvore tecnológica abaixo de cima para baixo. Cada nó é liberado quando seus pré-requisitos são concluídos, e seu progresso é salvo neste dispositivo, para que você possa construir o robô durante um fim de semana sem perder o progresso.
Lista de materiais
| Peça | Qtd. | Custo aproximado | Observações |
|---|---|---|---|
| Arduino Uno ou Nano | 1 | US$ 5–8 | Um Nano é a melhor opção aqui: ele expõe A6 e A7, então cabe uma matriz de 8 canais |
| Matriz de refletância IR | 1 | US$ 4–10 | 5 canais para aprender; 8 se quiser velocidade depois. Exija saída analógica |
| L298N ou TB6612FNG | 1 | US$ 2–4 | TB6612FNG se estiver comprando — ele não dissipa os ~1,5 V que o L298N perde como calor |
| Motorredutor TT | 2 | US$ 4 | Os amarelos. As versões com encoder custam US$ 2 a mais e evitam uma reconstrução |
| Chassi 2WD com rodas e rodízio | 1 | US$ 6–10 | Geralmente vendido como kit com os motores |
| Pacote de bateria | 1 | US$ 3–8 | 6×AA NiMH ou 2×18650 com suporte protegido. Não use um bloco de 9 V |
| Fios jumper, fita, interruptor | — | US$ 5 | Fita elétrica fosca de 19 mm para a pista |
Total: aproximadamente US$ 30–45. A melhoria mais valiosa dessa lista são motores com encoders — não para este projeto, que não precisa deles, mas porque um robô seguidor de linha quase sempre se transforma em um solucionador de labirintos de linhas, e esse precisa deles.
Para a pista: fita preta fosca sobre um piso claro fosco. Fita brilhante reflete como branca no ângulo errado, e um piso brilhante faz o mesmo; isso produz um robô que funciona em uma superfície e não em outra por motivos que parecem software.
Como tudo se conecta
| De | Para | Por que importa |
|---|---|---|
Matriz VCC, GND |
Arduino 5 V, GND | Os emissores são o consumo de corrente aqui — 100–200 mA em uma matriz de 8 canais |
Matriz OUT1–8 |
A0–A7 | Analógico, um canal cada. É por isso que um Nano supera um Uno |
Driver PWMA, PWMB |
D9, D3 | Pinos precisam ter capacidade PWM |
| Pinos de direção do driver | D8, D7, D5, D4 | Quaisquer pinos digitais |
STBY do driver (somente TB6612FNG) |
D12, acionado em HIGH | Se ficar flutuando, nada acontece, silenciosamente |
+ da bateria |
VM / +12V do driver |
Nunca o pino de 5 V do Arduino |
− da bateria |
GND do driver, GND do Arduino, GND da matriz | Um terra comum, com ligação em estrela a um único ponto |
Duas falhas explicam a maioria dos problemas na primeira execução, e nenhuma produz mensagem de erro. A falta de terra comum faz com que os sinais de direção não tenham referência, então nada se move enquanto tudo parece corretamente conectado. A corrente dos motores passando pelo Arduino faz o trilho de 5 V cair, reinicia a placa e aparece como uma falha de software.
Construa em marcos
Não conecte o robô inteiro e só depois depure. Cada etapa abaixo tem um teste, e uma etapa que não passa no teste fica escondida dentro da seguinte.
| # | Marco | O teste | Uma aprovação parece |
|---|---|---|---|
| 1 | Os motores giram | Dirija cada roda para a frente e para trás com ciclo de trabalho 200, sobre blocos | Ambas giram nos dois sentidos; anote o ciclo de trabalho em que cada uma começa |
| 2 | Zona morta medida | Varra o ciclo de trabalho de 0 em passos de 5 | Você tem dois números, e eles diferem — frequentemente de 5 a 10 |
| 3 | Linha reta | Dirija as duas rodas para a frente por 2 m no piso | Menos de 10 cm de deriva; se não, ajuste um motor no software |
| 4 | Sensores fazem a leitura | Imprima todos os canais sobre a linha e sobre o piso | As duas leituras de cada canal diferem em centenas de contagens |
| 5 | Calibração | Passe pela linha durante 3 s e imprima os valores normalizados | 0 no piso, perto de 1000 na linha, em todos os canais |
| 6 | Posição | Mova o robô sobre a linha com a mão e imprima a posição ponderada | Suave e monótona — sem saltos quando a linha cruza a fronteira de um sensor |
| 7 | Somente P | Conduza apenas com ganho proporcional, sem I nem D | Acompanha uma curva suave, com uma pequena oscilação. A oscilação é esperada aqui |
| 8 | Adicione D | Aumente o derivativo até a oscilação ser amortecida | Acompanhamento suave em retas e curvas suaves |
| 9 | Pista completa | Execute um laço fechado com uma curva fechada | Completa voltas sem perder a linha |
| 10 | Recuperação após perda da linha | Retire o robô da linha no meio do teste | Ele vira na direção em que já estava virando, em vez de seguir em linha reta |
O marco 6 é aquele que as pessoas pulam e não deveriam. Se o sinal de posição salta quando a linha cruza dois sensores, nenhum laço de controle pode ser ajustado — a descontinuidade parece um erro súbito e enorme, e o robô dá um solavanco exatamente nesse ponto a cada volta. Um salto ali significa que a matriz não foi calibrada por canal, ou que o limiar de um canal está excluindo-o cedo demais.
Como fica um bom resultado
| Medição | Construção de iniciante | Bem ajustada |
|---|---|---|
| Velocidade nas retas | 0,15–0,25 m/s | 0,4–0,6 m/s |
| Amplitude da oscilação em uma reta | ±15 mm | Menos de ±5 mm |
| Curva mais fechada que ele acompanha | raio de ~30 cm | raio de ~15 cm |
| Taxa do laço | 50 Hz | 200 Hz ou mais |
| Voltas antes de perder a linha | Poucas | Indefinidamente, até a bateria cair |
A taxa do laço merece atenção porque limita silenciosamente todo o restante. Um laço de controle a 50 Hz vê a linha a cada 20 ms e, a 0,5 m/s, isso são 10 mm de deslocamento entre decisões. Remover todos os delay() do laço e ler apenas os sensores que você usa normalmente leva a primeira construção de 50 Hz para várias centenas, e o acompanhamento melhora sem tocar em nenhum ganho.
Solução de problemas
| Sintoma | Causa provável | Correção |
|---|---|---|
| Nada se move | Não há terra comum, ou STBY está baixo |
Una todos os terras; acione STBY em HIGH |
| A placa reinicia quando começa a dirigir | Corrente dos motores passando pelo Arduino | Use uma alimentação separada para os motores; compartilhe apenas o terra |
| Segue em frente e ultrapassa a linha | Matriz sem calibração, ou muito alta | Recalibre nesta superfície; defina a altura a 3–8 mm |
| Acompanha, mas oscila muito | P muito alto, ou D muito baixo | Divida P por dois e depois aumente D |
| Oscila cada vez mais rápido | P muito alto | Reduza até estabilizar e depois ajuste a partir daí |
| Sai da pista nas retas | Motores diferentes | Ajuste no software e verifique novamente na velocidade de uso |
| Desvia apenas em baixa velocidade | Dois limiares de atrito estático diferentes | Meça a zona morta de cada motor e compense separadamente |
| Perde a linha em curvas fechadas | Velocidade alta demais, ou matriz perto demais das rodas | Reduza; mova a matriz para frente para ganhar mais antecipação |
| Sai de rumo ao perder a linha | Erro definido como 0 quando a linha é perdida | Mantenha o último erro — zero significa “centralizado” |
| Funciona e piora durante uma execução | A bateria cai, então os ganhos deixam de servir | É esperado; feche um laço de velocidade ou aceite uma execução mais curta |
| Falha perto de uma janela | Infravermelho ambiente | Subtraia a leitura com o emissor desligado ou proteja a matriz |
Para onde seguir
O robô seguidor de linha é deliberadamente uma base, e três caminhos partem diretamente dele.
Adicione detecção de junções e ele se transforma em um solucionador de labirintos de linhas — o mesmo laço PID por baixo, com uma camada fina de decisão por cima que classifica os ramos e lembra a rota. Este é o melhor próximo projeto, porque reutiliza tudo aqui e acrescenta apenas uma ideia realmente nova.
Adicione encoders e você poderá manter uma velocidade comandada em vez de um ciclo de trabalho comandado, o que elimina completamente o problema de “piorar conforme a bateria descarrega” e torna o ajuste estável durante toda a execução.
Aumente a velocidade, o que é mais difícil do que parece e ensina mais. A velocidade expõe todas as aproximações: a taxa do laço passa a ser o limite, a matriz precisa ficar mais à frente para haver antecipação, é preciso desacelerar antes das curvas, não depois, e os pneus começam a deslizar. Esse último ponto é a parede — veja deslizamento das rodas e tração para saber onde ele aparece.
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 / 15 concluídos
Componentes
- ControladorArduino UnoA placa de 8 bits que tolera erros de ligação, pela qual a maioria das pessoas começa na robótica.
- SensorMatriz de sensores IRUma fileira de olhos infravermelhos que informa ao robô onde está a linha.
- DriverDriver de motor L298NA ponte H dupla que transforma pinos lógicos fracos em potência para motores.
- AtuadorMotorredutor CC (motor TT)O motorredutor amarelo que transforma um chassi nu em um carro robô móvel.
- ChassiChassi de robô 2WDA plataforma onde se fixam dois motores, uma rodinha livre e toda a eletrônica.
- AlimentaçãoBateria e fonte de alimentação do robôA diferença entre um robô que funciona e outro que fica reiniciando.
Tutoriais deste caminho
- Iniciante · 20 min de leituraConstrua um robô seguidor de linha: dos sensores ao controle PIDDos sensores de reflectância infravermelha ao erro ponderado e ao controle PID: como funciona de fato um robô seguidor de linha.
- Iniciante · 20 minMatriz de sensores infravermelhos para robô seguidor de linhaTransforme uma fileira de sensores infravermelhos em uma posição suave da linha para comandar a direção do robô.
- Iniciante · 18 min de leituraControle de motores CC com PWM e uma ponte HLigue e controle com segurança um motor CC com escovas usando PWM, uma ponte H e limites de corrente realistas.
- Intermediário · 20 min de leituraOdometria de acionamento diferencial a partir de encoders de rodaIntegre o movimento das rodas esquerda e direita na pose de um robô móvel e identifique e calibre a deriva.
- Iniciante · 18 min de leituraComo ajustar um controlador PID: guia práticoUma ordem prática para ajustar os ganhos P, I e D sem tentativas aleatórias — e como testar cada etapa ao vivo.
Pratique antes de fazer a fiação
Ajuste no simulador ao vivo
O caminho de construção passa por um laboratório no navegador. Acerte o comportamento aqui e depois transfira suas configurações para o robô real.
Perguntas frequentes
Preciso comprar peças antes de começar este projeto?
Não. Toda a parte de medição e controle do projeto roda no simulador do navegador, então você pode entender como um robô seguidor de linha lê a linha e ajustar seus ganhos de PID antes de comprar qualquer coisa. Apenas as etapas finais de construção — fiação e montagem — precisam do Arduino físico, da matriz IR e do driver de motores.
Quanto tempo leva para construir um robô seguidor de linha?
Se você já tem as peças, um primeiro robô seguidor de linha funcional é um projeto de fim de semana: uma tarde para aprender a medição e o controle e ajustá-los no simulador, depois algumas horas para conectar o Arduino, a matriz IR e o driver de motores e iterar em uma pista com fita. O ajuste feito na simulação é transferido diretamente, o que elimina a maior parte da tentativa e erro.
Qual é a parte mais difícil de construir um robô seguidor de linha?
Quase sempre o laço de controle, não a fiação. Fazer o robô acompanhar curvas suaves sem oscilar exige ajustar os ganhos de PID para seus motores específicos, altura dos sensores e velocidade. É exatamente por isso que este caminho de construção pede que você ajuste primeiro no simulador — para que os ganhos já estejam próximos antes de o robô tocar o chão.
Por que meu robô seguidor de linha oscila ao redor da linha?
Oscilação normalmente significa que o ganho proporcional está alto demais, o amortecimento derivativo está baixo demais ou o robô está se movendo mais rápido do que a taxa de atualização dos sensores permite. Reduza primeiro a velocidade básica e depois diminua Kp em cerca de 20% e adicione um pouco de Kd. No protótipo, um delay() longo no laço acrescenta tempo morto que torna o termo derivativo ineficaz, por mais alto que você o ajuste — mantenha o intervalo de controle fixo.
Quantos sensores IR um robô seguidor de linha precisa?
Cinco é um ponto de partida prático: suficiente para calcular uma posição ponderada suave e ver para que lado a linha curva, mantendo a fiação e o cálculo de posição fáceis de inspecionar. Três sensores funcionam em uma pista de treino lenta e com uma linha larga; robôs de competição muitas vezes usam oito para obter resolução mais fina em alta velocidade, mas cada sensor adicional é outra calibração e outro fio para acertar.
Como calibro a matriz de refletância IR?
Antes de um teste, passe lentamente a matriz pela fita preta e pelo quadro branco e registre a leitura mínima e máxima de cada sensor; depois normalize as leituras ao vivo com base nessa faixa. A calibração importa porque a altura do sensor, a refletividade da superfície e a iluminação do ambiente alteram os valores brutos, e uma matriz sem calibração desloca a posição ponderada mesmo quando o robô está centralizado.