← Todos os projetos
Intermediário ⏱ 90 min 05 de julho de 2026

Carrinho robô 2WD com Arduino que desvia de obstáculos

Este é o projeto que todo mundo quer fazer: um carrinho robô que se move sozinho e desvia dos obstáculos no caminho. Usando o chassi 2WD, o Motor Shield L293D e um sensor ultrassônico montado num servo (que "olha" para os lados), você monta um robô autônomo de verdade. É a porta de entrada para a robótica.

Projeto Arduino: Carrinho robô 2WD com Arduino que desvia de obstáculos — A2 Robotics

Como funciona

O carrinho tem duas rodas motorizadas (uma de cada lado) e uma roda boba na frente para equilíbrio. Os dois motores são controlados pelo Motor Shield L293D, que permite girar cada roda de forma independente — é assim que o carrinho vira: acelerando uma roda mais que a outra. Na frente, um sensor ultrassônico mede a distância até os obstáculos, o mesmo princípio do sonar. Ele fica montado sobre um servo motor, que gira o sensor para a esquerda e para a direita, permitindo ao carrinho "olhar" os dois lados antes de decidir para onde desviar. A lógica é simples: anda para frente; se detectar um obstáculo perto, para, olha para os dois lados, e vira para o lado com mais espaço livre.

O que você vai precisar

Todos os componentes disponíveis na A2 Robotics — clique em cada item para comprar

Kit chassi 2WD (motores, rodas e suporte de pilhas)

1 kit

Ver produto ↗

Arduino Uno R3

1 unidade

Ver produto ↗

Motor Shield L293D

1 unidade

Ver produto ↗

Sensor ultrassônico HC-SR04

1 unidade

Ver produto ↗

Micro servo SG90

1 unidade

Ver produto ↗

Jumpers (cabos de ligação)

1 kit

Ver produto ↗

Montagem

Chassi 2WD (vista de cima) Motor E (M1) Motor D (M2) ARDUINO + Shield L293D Servo Ultrassônico (frente) roda boba
Motores → M1 e M2 do shield Ultrassônico → A0/A1 Servo → pino 10
Sobre a alimentação Use o suporte de pilhas ligado no borne de alimentação do shield para dar força aos motores. O Arduino pode ser alimentado pelo mesmo conjunto. Assim o carrinho fica sem fios, livre para andar.

Bibliotecas necessárias

Instale três bibliotecas pelo Gerenciador de Bibliotecas da IDE: AFMotor (Adafruit Motor Shield, para os motores), Servo (que já vem instalada) e NewPing (para o sensor ultrassônico). No código abaixo usamos a NewPing, que deixa a leitura do sensor mais simples.

O código

O carrinho anda para frente enquanto o caminho está livre. Ao detectar um obstáculo perto (menos de 20 cm), ele para, gira o servo para olhar à esquerda e à direita, compara as distâncias e vira para o lado com mais espaço. Ajuste a distância de reação e os tempos de curva conforme o seu carrinho.

// Carrinho robô 2WD que desvia de obstáculos — A2 Robotics
#include <AFMotor.h>
#include <Servo.h>
#include <NewPing.h>

// Motores nos terminais M1 e M2 do shield
AF_DCMotor motorEsq(1);
AF_DCMotor motorDir(2);

Servo radar;  // servo que gira o ultrassônico

// Sensor ultrassônico (pinos livres A0 e A1)
#define TRIG A0
#define ECHO A1
#define DIST_MAX 200
NewPing sonar(TRIG, ECHO, DIST_MAX);

const int DIST_MIN = 20;   // distância de reação (cm)
const int VELOCIDADE = 180; // 0 a 255

void setup() {
  radar.attach(10);   // servo no pino 10 do shield
  radar.write(90);    // olha para frente
  motorEsq.setSpeed(VELOCIDADE);
  motorDir.setSpeed(VELOCIDADE);
  delay(1000);
}

void loop() {
  int distancia = medir();

  if (distancia > 0 && distancia < DIST_MIN) {
    parar();
    delay(200);

    radar.write(20);   // olha para a direita
    delay(400);
    int distDir = medir();

    radar.write(160);  // olha para a esquerda
    delay(400);
    int distEsq = medir();

    radar.write(90);   // volta para frente
    delay(300);

    if (distEsq >= distDir) {
      virarEsquerda();
    } else {
      virarDireita();
    }
  } else {
    frente();
  }
}

// Mede a distância em cm
int medir() {
  delay(50);
  int cm = sonar.ping_cm();
  return (cm == 0) ? DIST_MAX : cm;
}

void frente() {
  motorEsq.run(FORWARD);
  motorDir.run(FORWARD);
}

void parar() {
  motorEsq.run(RELEASE);
  motorDir.run(RELEASE);
}

void virarEsquerda() {
  motorEsq.run(BACKWARD);
  motorDir.run(FORWARD);
  delay(400);
}

void virarDireita() {
  motorEsq.run(FORWARD);
  motorDir.run(BACKWARD);
  delay(400);
}

Passo a passo

  1. Monte o chassi

    Fixe os dois motores nas laterais do chassi, encaixe as rodas e a roda boba na frente. Passe os fios dos motores para cima.

  2. Instale o Arduino e o shield

    Encaixe o Motor Shield L293D no Arduino e fixe o conjunto no chassi. Ligue o motor esquerdo no M1 e o direito no M2.

  3. Monte o "radar"

    Fixe o servo na frente do carrinho e prenda o sensor ultrassônico sobre ele. Assim o sensor pode girar para os lados.

  4. Ligue os fios do sensor e servo

    Ultrassônico: TRIG no A0, ECHO no A1, VCC no 5V, GND no GND. Servo no pino 10 do shield.

  5. Alimente com as pilhas

    Ligue o suporte de pilhas no borne de alimentação do shield. Agora o carrinho está sem fios.

  6. Envie o código e solte no chão

    Instale as bibliotecas, carregue o código, desconecte o USB e ligue as pilhas. O carrinho vai andar e desviar dos obstáculos sozinho.

Vá além

Este carrinho é uma plataforma para muita diversão. Você pode adicionar controle por Bluetooth para dirigir pelo celular, um sensor seguidor de linha para ele percorrer um trajeto, LEDs e buzina, ou até uma câmera. Ajustando os tempos das curvas e a distância de reação, dá para deixar o comportamento mais esperto. É o começo da sua jornada na robótica.

Gostou do projeto? Monte o seu Todos os componentes disponíveis com entrega para todo o Brasil
Ver produtos →