RoboFeed
Robótica

Robô Seguidor de Linha com 2 Sensores Infravermelhos

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

por Weslley Barros Plataforma RoboFeed 8º ano9º ano 2h 30min (idealmente em 2 encontros) Plugada 2
Apresentar slide interativo · tela cheia, pra projetar 🔧 Modo Bancada · passo a passo, pro aluno no tablet

🎯 Objetivos de aprendizagem

  • Construir um robô móvel autônomo capaz de seguir uma linha preta no chão.
  • Programar a lógica de decisão com base na leitura de 2 sensores simultâneos.
  • Compreender o princípio do sensor TCRT5000 (reflexão de luz infravermelha).
  • Controlar motores DC com a ponte H L298N (sentido + velocidade).

📚 Objetos de conhecimento

Robôs autônomos · Sensores infravermelhos (TCRT5000) · Ponte H (L298N) · Motores DC · PWM pra velocidade · Lógica condicional com múltiplas variáveis · Arquitetura completa: percepção → decisão → ação

Habilidades BNCC Computação (6)
Pensamento Computacional
EF89CO01 Desenvolver projetos computacionais que integrem decomposição, abstração, generalização e avaliação crítica da solução proposta.
EF89CO02 Implementar algoritmos com funções/sub-rotinas, listas/arrays e leitura de sensores, em linguagens de blocos ou textuais (C++, Python).
Mundo Digital
EF89CO03 Projetar e construir sistemas integrados que combinem hardware (placa, sensores, atuadores) e software (algoritmo) para resolver problemas reais.
EF89CO04 Avaliar arquiteturas de hardware (processador, memória, periféricos) e modelos de comunicação (cliente-servidor, IoT) em soluções tecnológicas.
Cultura Digital
EF89CO05 Discutir aspectos éticos do uso de inteligência artificial (viés algorítmico, automação, direitos autorais, deepfakes) e propor princípios de uso responsável.
EF89CO06 Compreender legislações de proteção de dados (LGPD) e aplicar boas práticas de segurança digital, autoria e propriedade intelectual em produções escolares.

Habilidades dos anos selecionados (8º ano, 9º ano) — Resolução CNE/CP nº 1/2022. Em turmas de Ensino Médio, mapear para EM13CO.

Materiais e componentes

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
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)
🪜 Desenvolvimento da aula
Introdução / Contextualização

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.

Montagem do Circuito / Hardware

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. 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. 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.

Programação / Codificação

1. Compile o código. 2. Antes de enviar, eleve o robô do chão (rodas no ar) — vai ser teste. 3. Envie pro Arduino. 4. Com o robô no ar, abra o Monitor Serial pra ver as leituras dos sensores. 5. Passe fita preta na frente de um sensor de cada vez — confira se a roda do lado certo para. 6. Ajuste o limiar dos sensores girando o trimpot até funcionar bem.

Teste, Depuração e Ajustes

1. Construa a pista: fita isolante PRETA sobre cartolina BRANCA, com curvas suaves. 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. 5. Variação: faça curvas em zigue-zague e cruzamentos.

Encerramento / Socialização

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.

Montagem do robô

Placa: Arduino Uno

⬇ 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
as peças reagem: LED acende, botão é clicável, serial abaixo
🖥️ Monitor serial

📋 Tabela de ligações (fio a fio)
Sistema motor
Ponte H (L298N)
fio D5 ENA (vel. A)
fio D2 IN1
fio D3 IN2
fio D6 ENB (vel. B)
fio D4 IN3
fio D7 IN4
Motor DC esquerdo
fio OUT1 (Ponte H) tração esq
fio OUT2 (Ponte H) tração esq
Motor DC direito
fio OUT3 (Ponte H) tração dir
fio OUT4 (Ponte H) tração dir
Outros
Seguidor de Linha (TCRT5000) esquerdo
fio A0 leitura da linha
Seguidor de Linha (TCRT5000) direito
fio A1 leitura da linha

Código

aula.ino
// 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);
}

Fluxograma do algoritmo

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

Algoritmo em blocos

quando @greenFlag for clicado
sempre
  se <ambos os sensores livres> então
    seguir em frente
  senão
    se <sensor esquerdo na linha> então
      virar à esquerda
    senão
      se <sensor direito na linha> então
        virar à direita
      senão
        parar
      end
    end
  end
end

✅ Avaliação

Esta é a aula MAIS COMPLEXA do trilho. Avalie em 3 dimensões: (1) Montagem física (chassi correto, fiação organizada); (2) Programação (entendeu PWM, condicionais com 2 variáveis); (3) Calibração e debug (conseguiu ajustar o trimpot e mudar valores). Trabalho em equipe é crítico — observe quem dirige o grupo e quem fica passivo. A competição final é evidência rica do que cada grupo dominou.

🤖 Quer essa aula do SEU jeito?

O Co-professor adapta esta aula pro seu ano e contexto — ou a estica numa sequência didática de 2 a 4 encontros — e gera um PDF pronto pra você. A estrutura da aula é preservada. Cadastre-se grátis pra usar.

✨ Adaptar e gerar PDF

💬 Comentários

Entre na sua conta ou crie uma grátis pra comentar.

Seja o primeiro a comentar.

Gostou desta aula?

Monte aulas como esta em minutos, com ajuda da IA — e compartilhe com professores do Brasil todo. É grátis.

Criar minha conta grátis
Compartilhar no WhatsApp

Explorar mais aulas · RoboFeed — robótica e computação na escola, alinhado à BNCC.