← Sair
Robô Seguidor de Linha com 2 Sensores Infravermelhos
RoboFeed · aula plugada

Robô Seguidor de Linha com 2 Sensores Infravermelhos

Robô autônomo · Sensores IV · Ponte H · Decisão por leitura múltipla

2h 30min (idealmente em 2 encontros) 🎓 8º ano · 9º ano 🧭 EF89CO01🧭 EF89CO02🧭 EF89CO03
Capa da aula
🎯 Nossa missão hoje

O que vamos conseguir fazer

1

Construir um robô móvel autônomo capaz de seguir uma linha preta no chão.

2

Programar a lógica de decisão com base na leitura de 2 sensores simultâneos.

3

Compreender o princípio do sensor TCRT5000 (reflexão de luz infravermelha).

4

Controlar motores DC com a ponte H L298N (sentido + velocidade).

🧰 O que temos na bancada

Peças e materiais · parte 1

Arduino Uno + cabo USB Arduino Uno + cabo USB
Sensores infravermelhos TCRT5000 (módulo) Sensores infravermelhos TCRT5000 (módulo)
Módulo Ponte H L298N Módulo Ponte H L298N
Motores DC com caixa de redução + rodas Motores DC com caixa de redução + rodas
Roda boba (3ª roda traseira) Roda boba (3ª roda traseira)
Chassi (acrílico, MDF ou papelão duro) Chassi (acrílico, MDF ou papelão duro)
Suporte de 4 pilhas AA (6V) — alimenta a Ponte H Suporte de 4 pilhas AA (6V) — alimenta a Ponte H
Jumpers macho-macho e macho-fêmea Jumpers macho-macho e macho-fêmea
🧰 O que temos na bancada

Peças e materiais · parte 2

Fita isolante PRETA (pra fazer a pista) Fita isolante PRETA (pra fazer a pista)
Cartolina branca grande (base da pista) Cartolina branca grande (base da pista)
🔌 Como as peças se ligam

O mapa do nosso robô

⬇ baixar SVG
🔧 Montagem do robôPlaca: Arduino Uno · 5 componentes · 12 ligações detectadas do códigoLEGENDAAnalógico (leitura)PWM (velocidade)DigitalSaída de motor5VGND ON L TX RX   DIGITAL (PWM ~) AREF GND 13 12 ~11 ~10 ~9 8 7 ~6 ~5 4 ~3 2 TX→1 RX←0   POWER ANALOG IN IOREF RESET 3.3V 5V GND GND Vin A0 A1 A2 A3 A4 A5 ARDUINO UNO TCRT5000LM393PWROUTSENSIB.VCCGNDOUTTCRT5000LM393PWROUTSENSIB.VCCGNDOUTL298NSAÍDA ASAÍDA B+12VGND+5VENAIN1IN2IN3IN4ENBMOTOR TTMOTOR TTLi-ion 186503.7V 2600mAh+Li-ion 186503.7V 2600mAh2×18650 · 7.4VOUT1OUT2OUT3OUT4Seguidor de Linha (TCRT5000) esquerdoSeguidor de Linha (TCRT5000) direitoPonte H (L298N)Motor DC esquerdoMotor DC direitoBateria 2×18650 (7,4 V)
🧰 Montagem do robôArduino Unoplaca controladoraTCRT5000LM393PWROUTSENSIB.VCCGNDOUTSeguidor de Linha…A0TCRT5000LM393PWROUTSENSIB.VCCGNDOUTSeguidor de Linha…A1L298NSAÍDA ASAÍDA B+12VGND+5VENAIN1IN2IN3IN4ENBPonte H (L298N)D5D2D3D6D4D7Motor DC esquerdoOUT1OUT2Motor DC direitoOUT3OUT4

cada fio colorido é uma ligação de verdade — o diagrama completo está na página da aula

Momento 1 de 5

Introdução

Ponte H (L298N / L293D)

Mostre vídeos curtos de robôs seguidores de linha em competições e fábricas (AGVs). Discuta a diferença entre 'pré-programado' (faz sempre a mesma coisa) e 'autônomo' (decide em tempo real). Apresente os componentes na bancada: sensor IV (mostra a luz vermelha que ele emite quando ligado), Ponte H (explique a expressão 'ponte' — permite inverter o sentido), motores DC.

Princípio do sensor IV: emite luz IV e mede o quanto reflete. Superfície preta absorve → pouco retorna → leitura 0. Superfície branca reflete → muito retorna → leitura 1. Mostre o trimpot do sensor pra calibrar o limiar. Explique a Ponte H: 4 pinos de controle (IN1-IN4) decidem o sentido, 2 pinos PWM (ENA, ENB) decidem a velocidade. Mostre como combinações de HIGH/LOW invertem o motor.

Momento 2 de 5

Montagem / Hardware

Peça impressa em 3D

AULA 1 (sem sensores ainda):

1. Monte o chassi com os 2 motores e a roda boba.

2. Conecte os motores aos terminais OUT1/OUT2 e OUT3/OUT4 da Ponte H.

Momento 2 de 5

Montagem / Hardware

Peça impressa em 3D

3. Ligue o suporte de pilhas (6V) na entrada VCC da Ponte H, e a chave de alimentação.

4. Ligue GND da Ponte H ao GND do Arduino.

5. Conecte IN1, IN2, IN3, IN4, ENA, ENB nos pinos do Arduino conforme código.

Momento 2 de 5

Montagem / Hardware

Peça impressa em 3D

AULA 2 (sensores):

6. Fixe os 2 sensores na FRENTE do chassi, a ~1 cm do chão, separados por ~3 cm.

7. VCC dos sensores → 5V do Arduino. GND → GND. OUT esquerdo → A0. OUT direito → A1.

Momento 3 de 5 · parte 1/2

Programação

1

Compile o código.

2

Antes de enviar, eleve o robô do chão (rodas no ar) — vai ser teste.

Rodas + Eixos plásticos
3

Envie pro Arduino.

Placa Arduino (Uno / Nano / Mega)
4

Com o robô no ar, abra o Monitor Serial pra ver as leituras dos sensores.

Momento 3 de 5 · parte 2/2

Programação

5

Passe fita preta na frente de um sensor de cada vez — confira se a roda do lado certo para.

Rodas + Eixos plásticos
6

Ajuste o limiar dos sensores girando o trimpot até funcionar bem.

Momento 4 de 5 · parte 1/2

Teste e ajustes

1

Construa a pista: fita isolante PRETA sobre cartolina BRANCA, com curvas suaves.

Fita isolante / Cola quente
2

Coloque o robô na pista com os sensores sobre a linha.

3

Espera-se que ele siga a linha — corrigindo quando sai pra um lado.

4

Erros comuns: sensores muito altos (não detectam), motores invertidos (anda pra trás), velocidade muito alta (ele 'pula' a linha). Diminua VELOCIDADE pra 100 pra estabilizar.

Momento 4 de 5 · parte 2/2

Teste e ajustes

5

Variação: faça curvas em zigue-zague e cruzamentos.

Momento 5 de 5

Encerramento

Competição: cada equipe corre seu robô na mesma pista. Cronometre. Discussão final: 'O que faria seu robô melhor?'. Anotem ideias: mais sensores, PWM dinâmico, PID. Conexão com a realidade: AGVs em armazéns Amazon, robôs Mars Rover, Roomba — todos usam o mesmo princípio (sensor → decisão → atuador), só com sensores mais sofisticados.

🔀 O plano do robô

Como ele decide o que fazer

flowchart TD A(["Início"]) --> B{"Sensor esquerdo na linha?"} B -->|Sim| C{"Sensor direito na linha?"} C -->|Sim| D["Seguir em frente"] C -->|Não| E["Virar à direita"] B -->|Não| F{"Sensor direito na linha?"} F -->|Sim| G["Virar à esquerda"] F -->|Não| H["Parar"] D --> A E --> A G --> A H --> A
💻 O cérebro do robô

O código da aula

// Robô seguidor de linha
// 2 sensores IV: pinos A0 (esquerdo) e A1 (direito)
// Ponte H L298N: motor esquerdo (IN1=2, IN2=3, ENA=5)
//                motor direito  (IN3=4, IN4=7, ENB=6)

// Sensores: leitura digital — 0 = linha preta, 1 = fora da linha
const int SENSOR_ESQ = A0;
const int SENSOR_DIR = A1;

// Motor esquerdo
const int M_ESQ_IN1 = 2;
const int M_ESQ_IN2 = 3;
const int M_ESQ_PWM = 5;  // ENA

// Motor direito
const int M_DIR_IN3 = 4;
const int M_DIR_IN4 = 7;
const int M_DIR_PWM = 6;  // ENB

const int VELOCIDADE = 150;  // 0–255 (PWM)

void setup() {
  pinMode(SENSOR_ESQ, INPUT);
  pinMode(SENSOR_DIR, INPUT);
  pinMode(M_ESQ_IN1, OUTPUT);
  pinMode(M_ESQ_IN2, OUTPUT);
  pinMode(M_DIR_IN3, OUTPUT);
  pinMode(M_DIR_IN4, OUTPUT);
  Serial.begin(9600);
}

void frente() {
  digitalWrite(M_ESQ_IN1, HIGH); digitalWrite(M_ESQ_IN2, LOW);
  digitalWrite(M_DIR_IN3, HIGH); digitalWrite(M_DIR_IN4, LOW);
  analogWrite(M_ESQ_PWM, VELOCIDADE);
  analogWrite(M_DIR_PWM, VELOCIDADE);
}

void viraEsquerda() {
  digitalWrite(M_ESQ_IN1, LOW);  digitalWrite(M_ESQ_IN2, LOW);  // para esq
  digitalWrite(M_DIR_IN3, HIGH); digitalWrite(M_DIR_IN4, LOW);  // dir frente
  analogWrite(M_DIR_PWM, VELOCIDADE);
}

void viraDireita() {
  digitalWrite(M_ESQ_IN1, HIGH); digitalWrite(M_ESQ_IN2, LOW);  // esq frente
  digitalWrite(M_DIR_IN3, LOW);  digitalWrite(M_DIR_IN4, LOW);  // para dir
  analogWrite(M_ESQ_PWM, VELOCIDADE);
}

void parar() {
  analogWrite(M_ESQ_PWM, 0);
  analogWrite(M_DIR_PWM, 0);
}

void loop() {
  int esq = digitalRead(SENSOR_ESQ);
  int dir = digitalRead(SENSOR_DIR);

  // Lógica:
  // Ambos brancos (1,1) → reta → frente
  // Esq preto, dir branco (0,1) → desviou pra direita → vira esquerda
  // Esq branco, dir preto (1,0) → desviou pra esquerda → vira direita
  // Ambos pretos (0,0) → cruzamento ou fim → para

  if (esq == 1 && dir == 1) frente();
  else if (esq == 0 && dir == 1) viraEsquerda();
  else if (esq == 1 && dir == 0) viraDireita();
  else parar();

  delay(20);
}

role dentro da caixa · o código completo está na página da aula

🥊

Bora construir!

dúvidas? a página completa da aula tem tudo: montagem, código e materiais.