🤖 RoboFeed
Explorar aulas Entrar Comece grátis
🧠 Pensamento Computacional
🧩 PROJETO DE ROBÔ

Robô de Sumô Autônomo

👤 Equipe RoboFeed 📶 Avancado ⏱ 4 a 6 aulas 8º ano9º ano1º ano (EM)2º ano (EM)3º ano (EM) ⚡ Plugada ❤️ 1
🔧 Modo Bancada · passo a passo, pro aluno no tablet
🧭 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, 1º ano (EM), 2º ano (EM), 3º ano (EM)) — Resolução CNE/CP nº 1/2022. Em turmas de Ensino Médio, mapear para EM13CO.

🧰 Materiais e componentes

Arduino Uno
Arduino Uno
Ponte H (L293D)
Ponte H (L293D)
Motor DC com caixa de redução
Motor DC com caixa de redução
Sensor de distância Sharp
Sensor de distância Sharp
Sensor infravermelho de borda
Sensor infravermelho de borda
Bateria/fonte (LiPo)
Bateria/fonte (LiPo)
Chassi + cobertura + rodas (impressão 3D)
Chassi + cobertura + rodas (impressão 3D)
Jumpers e parafusos (opcional)
Jumpers e parafusos (opcional)

🎯 O desafio

Construir e programar um robô autônomo que detecta o oponente com sensores de distância e evita sair do ringue usando sensores de borda — desenvolvendo algoritmo, depuração e trabalho em equipe.

📶 Avancado · ⏱ 4 a 6 aulas

🪜 Passo a passo

1) Montar o chassi 3D, fixar motores e rodas. 2) Ligar a ponte H L293D ao Arduino (motor A: D3/D4/D5 · motor B: D7/D8/D9). 3) Conectar os 4 sensores Sharp (A2–A5) e os 2 sensores de borda (A0/A1). 4) Carregar o código e ajustar o limiar de detecção e as velocidades. 5) Testar no ringue: evitar a borda branca e atacar o oponente. 6) Depurar a estratégia em equipe.

🔌 Montagem do robô

Placa: Arduino Uno

⬇ baixar SVG
🧰 Montagem do robôPlaca: Arduino Uno · 9 componentes · 30 ligações detectadas do códigoUSBATMEGA328PLARDUINO UNOAREFGND131211109876543210DIGITAL (PWM ~)IOREFRESET3V35VGNDGNDVINPOWERA0A1A2A3A4A5ANALOG INArduino Uno⚡ Barramento de alimentação · 5V (+) / GND (–)D3 · IN1 (motor A)D4 · IN2 (motor A)D5 · PWM velocidade AD7 · IN3 (motor B)D8 · IN4 (motor B)D9 · PWM velocidade BPonte H (L293D)OUT1·OUT2Motor DC esquerdoOUT3·OUT4Motor DC direitoA2 · distânciaSensor Sharp (lateralesq)A3 · distânciaSensor Sharp (frontalesq)A4 · distânciaSensor Sharp (frontaldir)A5 · distânciaSensor Sharp (lateraldir)A0 · bordaSensor de borda (dir)A1 · bordaSensor de borda (esq)LEGENDA DOS FIOSAlimentação (+5V)Terra (GND)Analógico (leitura)PWM (velocidade)Saída de motor
🧰 Montagem do robôArduino Unoplaca controladoraSensor Sharp (lateral esq)A25VGNDSensor Sharp (frontal esq)A35VGNDSensor Sharp (frontal dir)A45VGNDSensor Sharp (lateral dir)A55VGNDSensor de borda (dir)A05VGNDSensor de borda (esq)A15VGNDPonte H (L293D)D3D4D5D7D8D95VGNDMotor DC esquerdoOUT1OUT2Motor DC direitoOUT3OUT4
as peças reagem: LED acende, botão é clicável, serial abaixo
🖥️ Monitor serial

Energia: o Arduino alimenta os sensores (5V e GND). Os motores são movidos por uma bateria de 6 a 9V ligada à Ponte H — e o GND da bateria precisa ser comum com o GND do Arduino.
📋 Tabela de ligações (fio a fio)
Sensores
Sensor Sharp (lateral esq)
Sinal (amarelo) A2 distância
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sensor Sharp (frontal esq)
Sinal (amarelo) A3 distância
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sensor Sharp (frontal dir)
Sinal (amarelo) A4 distância
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sensor Sharp (lateral dir)
Sinal (amarelo) A5 distância
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sensor de borda (dir)
Sinal (amarelo) A0 borda do ringue
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sensor de borda (esq)
Sinal (amarelo) A1 borda do ringue
VCC (vermelho) 5V alimentação
GND (preto) GND terra
Sistema motor
Ponte H (L293D)
IN1 D3 IN1 (motor A)
IN2 D4 IN2 (motor A)
ENA D5 PWM velocidade A
IN3 D7 IN3 (motor B)
IN4 D8 IN4 (motor B)
ENB D9 PWM velocidade B
+5V 5V alimentação lógica
GND GND terra
Motor DC esquerdo
terminal + OUT1 (Ponte H) tração esq
terminal − OUT2 (Ponte H) tração esq
Motor DC direito
terminal + OUT3 (Ponte H) tração dir
terminal − OUT4 (Ponte H) tração dir
🔧 Passo a passo de ligação
  1. Comece pela energia: leve o 5V do Arduino ao trilho vermelho (+) da protoboard e o GND ao trilho azul (−). Todo mundo vai buscar 5V e GND nesses trilhos.
  2. Sensores Sharp (os 4): em cada um, o fio vermelho (VCC) vai no trilho +, o preto (GND) no trilho −, e o amarelo (sinal) no pino do Arduino — A2, A3, A4 e A5, um por sensor.
  3. Sensores de borda (os 2): a mesma coisa — vermelho no +, preto no −, e o sinal em A0 (direito) e A1 (esquerdo).
  4. Ponte H L293D: ligue +5V no trilho + e GND no trilho − (o terra PRECISA ser comum com o Arduino!). Depois os controles: IN1→D3, IN2→D4, IN3→D7, IN4→D8; e a velocidade ENA→D5, ENB→D9.
  5. Motores: o motor esquerdo nas saídas OUT1 e OUT2 da Ponte H; o direito nas OUT3 e OUT4. Se algum girar ao contrário, é só inverter os dois fios daquele motor.
  6. Bateria (6 a 9V): o + na entrada de potência dos motores da Ponte H (VS/Vmotor) e o − no trilho − (o mesmo GND de tudo). ⚠️ Conecte a bateria só no final, com tudo já conferido.
  7. Antes de energizar, confira: todos os GND no mesmo trilho? A bateria está só nos motores (nunca no 5V do Arduino)? Se sim, ligue o Arduino ao computador e envie o código.

💻 Código

aula.ino
// === Pines del L293D ===
// Motor A (izquierdo)
const int motorA1 = 3;
const int motorA2 = 4;
const int enableA = 5;  // Control de velocidad PWM

// Motor B (derecho)
const int motorB1 = 7;
const int motorB2 = 8;
const int enableB = 9;  // Control de velocidad PWM

// === Pines sensores Sharp ===
const int sharpIzq = A2;     // Sensor lateral izquierdo
const int sharpFront1 = A3;  // Sensor frontal izquierdo
const int sharpFront2 = A4;  // Sensor frontal derecho
const int sharpDer = A5;     // Sensor lateral derecho

// === Sensores de piso digitales ===
const int pisoDer = A0; // Sensor de piso derecho
const int pisoIzq = A1; // Sensor de piso izquierdo

// === Parámetros de movimiento ===
int velocidadMax = 200;       // Velocidad máxima del robot
int velocidadCurva = 160;     // Velocidad al girar
int umbralOponente = 400;     // Valor analógico que indica proximidad (menor = más cerca)

void setup() {
  // Configurar pines de motores como salida
  pinMode(motorA1, OUTPUT);
  pinMode(motorA2, OUTPUT);
  pinMode(enableA, OUTPUT);

  pinMode(motorB1, OUTPUT);
  pinMode(motorB2, OUTPUT);
  pinMode(enableB, OUTPUT);

  // Configurar sensores de piso como entrada
  pinMode(pisoDer, INPUT);
  pinMode(pisoIzq, INPUT);

  // No es necesario configurar los pines analógicos de los sensores Sharp
  // Puedes habilitar Serial.begin(9600); si deseas monitorear sensores
}

void loop() {
  // Leer sensores de piso (devuelven HIGH o LOW)
  int sueloDer = digitalRead(pisoDer);
  int sueloIzq = digitalRead(pisoIzq);

  // Leer sensores Sharp (valores entre 0 y 1023)
  int valIzq = analogRead(sharpIzq);
  int valFront1 = analogRead(sharpFront1);
  int valFront2 = analogRead(sharpFront2);
  int valDer = analogRead(sharpDer);

  // === 1. Evitar salirse del ring ===
  // Si algún sensor detecta el borde (LOW = borde blanco o sin línea)
  if (sueloIzq == LOW || sueloDer == LOW) {
    retroceder();         // Retrocede rápidamente
    delay(300);           // Espera un poco
    girarDerecha();       // Gira para cambiar de dirección
    delay(300);           
    detener();            // Pausa antes de seguir
    return;               // Finaliza esta iteración del loop
  }

  // === 2. Estrategia de ataque ===
  if (valFront1 < umbralOponente || valFront2 < umbralOponente) {
    avanzar();            // Oponente detectado al frente
  } else if (valIzq < umbralOponente) {
    girarIzquierda();     // Oponente a la izquierda
  } else if (valDer < umbralOponente) {
    girarDerecha();       // Oponente a la derecha
  } else {
    buscar();             // No se detecta nada, buscar girando
  }
}

// === Funciones de movimiento ===

// Avanza recto
void avanzar() {
  digitalWrite(motorA1, HIGH);
  digitalWrite(motorA2, LOW);
  analogWrite(enableA, velocidadMax);

  digitalWrite(motorB1, HIGH);
  digitalWrite(motorB2, LOW);
  analogWrite(enableB, velocidadMax);
}

// Retrocede
void retroceder() {
  digitalWrite(motorA1, LOW);
  digitalWrite(motorA2, HIGH);
  analogWrite(enableA, velocidadMax);

  digitalWrite(motorB1, LOW);
  digitalWrite(motorB2, HIGH);
  analogWrite(enableB, velocidadMax);
}

// Gira hacia la izquierda
void girarIzquierda() {
  digitalWrite(motorA1, LOW);
  digitalWrite(motorA2, HIGH);
  analogWrite(enableA, velocidadCurva);

  digitalWrite(motorB1, HIGH);
  digitalWrite(motorB2, LOW);
  analogWrite(enableB, velocidadCurva);
}

// Gira hacia la derecha
void girarDerecha() {
  digitalWrite(motorA1, HIGH);
  digitalWrite(motorA2, LOW);
  analogWrite(enableA, velocidadCurva);

  digitalWrite(motorB1, LOW);
  digitalWrite(motorB2, HIGH);
  analogWrite(enableB, velocidadCurva);
}

// Detiene los motores
void detener() {
  analogWrite(enableA, 0);
  analogWrite(enableB, 0);
}

// Búsqueda: gira hacia la izquierda buscando oponente
void buscar() {
  girarIzquierda();
  delay(400);
  detener();
}

🖨️ Modelos 3D para impressão

Toque para ver em 3D · gire com o dedo.

Chassi 📥 Baixar
Cobertura 📥 Baixar
Rodas 📥 Baixar

🤖 Transforme este projeto em aula

O Co-professor gera um plano de aula completo — ou uma sequência didática de 2 a 4 encontros — adaptado à sua turma. Cadastre-se grátis pra usar.

✨ Gerar aula ou sequência com IA

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