M1 Rover: Robô Autônomo para Terrenos Acidentados
Componentes e Materiais
| Driver de Motor Dual H-Bridge L298 (SparkFun) | 1 |
| Motor DC (genérico) | 4 |
| Arduino UNO | 1 |
| LED (genérico) | 8 |
| Resistor 220 Ω | 8 |
| Servo Tower Pro MG996R | 1 |
| Sensor Ultrassônico HC-SR04 | 1 |
Aplicações e Serviços Online
- Arduino IDE
- Microsoft Visual Studio 2015
- Microsoft Windows 10 IoT Core
Sobre o Projeto
Após construir vários robôs para ambientes internos, decidi criar um robô capaz de navegar em terrenos acidentados ao ar livre. Chamei-o de M1-Robot.
O M1-Robot utiliza quatro motores DC controlados por um Arduino, tornando-o ideal para projetos de robótica mais potentes. Projetei do zero este robô 4x4 off-road.
Não é apenas um carro controlado por rádio: pode ser programado para seguir instruções de forma autônoma, ser controlado remotamente via computador ou operado com controles de jogo e joysticks personalizados.
Passo 1: Projeto
Projetar o próprio produto é divertido, mas torna-se complexo em escala real. Utilizei o Google SketchUp 2017, que permite exportar plantas para corte a laser ou impressão 3D.
Gastei três semanas projetando e construindo a estrutura do robô. O material base foi uma chapa de madeira de 3 mm. A fiação final não ficou perfeita devido ao tempo limitado, mas tudo foi acomodado no chassi.
O nome M1Rover foi escolhido pensando em futuras versões (M2, M3, etc.). O design é modular tipo kit, bastando parafusos para montagem.
Passo 2: Componentes e Características
- Até 3 horas de autonomia
- Compatível com Arduino Uno, Mega e Nano
- Tensão de operação: 5V-9V DC
- Chassi de madeira 3 mm
- Rodas de 68 mm de diâmetro
- Driver L298N Dual H-Bridge
- Baterias 9V para motores e Arduino
- 7 LEDs (4 frontais brancos, 2 traseiros vermelhos) com resistores 220 Ω
- Módulo Bluetooth HC-06
- Arduino Sensor Shield v5.0
- Sensor ultrassônico HC-SR04
Passo 3: Controlador de Motor
As pontes H controlam velocidade e direção dos motores. Pontos importantes:
- Una todos os GNDs: Arduino, fonte de alimentação e controlador de motor.
- Pinos PWM são opcionais se não houver controle de velocidade.
Passo 4: Montagem do Chassi
O chassi foi cortado a laser em peças que se encaixam como um kit. Na frente, 4 LEDs brancos com resistores 220 Ω; atrás, 2 LEDs vermelhos. Todos controláveis pela aplicação.
Passo 5: Circuitos
A fiação exige atenção à sequência dos componentes. Principais conexões:
- Arduino Sensor Shield 5.0
- Arduino Uno R3 + L298N
- Bateria 9V para motores DC
- 7 LEDs (4 frontais, 2 traseiros)
- Módulo Bluetooth HC-06
- Sensor ultrassônico HC-SR04
- Servo motor 9g
- Buzzer ativo
- 4 motores DC com rodas
Passo 6: Software
O código considera diversos aspectos e permite monitoramento via interface gráfica. O código básico para controle via Bluetooth (celular ou laptop):
int frontled = 3;
int rearled = 4;
int outPin1 = 5;
int outPin2 = 6;
int outPin4 = 11;
int outPin3 = 12;
char bt = 0;
int buzzerPin = 2;
const int pingPin = 9;
const int echoPin = 8;
void setup() {
Serial.begin(9600);
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
pinMode(outPin3, OUTPUT);
pinMode(outPin4, OUTPUT);
pinMode(frontled, OUTPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
bt = Serial.read();
digitalWrite(frontled, HIGH);
long duration, inches, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
if (cm > 10) {
if (bt == 'F') { // frente
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW);
} else if (bt == 'B') { // trás
digitalWrite(outPin1, LOW); digitalWrite(outPin2, HIGH);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, HIGH);
} else if (bt == 'S') { // para
digitalWrite(outPin1, LOW); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, LOW);
} else if (bt == 'R') { // direita
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, LOW);
} else if (bt == 'L') { // esquerda
digitalWrite(outPin1, LOW); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW);
} else if (bt == 'I') { // frente-direita
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, HIGH);
} else if (bt == 'G') { // frente-esquerda
digitalWrite(outPin1, LOW); digitalWrite(outPin2, HIGH);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW);
}
} else {
digitalWrite(buzzerPin, HIGH); delay(500);
digitalWrite(buzzerPin, LOW); delay(500);
}
}
}
long microsecondsToInches(long microseconds) {
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}
O código é compatível com qualquer controlador que envie comandos seriais (Bluetooth, PC, celular). Inclui também uma aplicação em C# (captura de tela anexa).
Passo 7: Pacotes Disponíveis
STARTER
Componentes básicos com placa superior para montagem fácil de sensores, hardware de manipulação ou computação.
EXPLORER
Funcionalidade autônoma básica indoor/outdoor. Usa câmera de celular via IP em vez de IP camera dedicada.
MAPPING
Rastreamento GPS em tempo real para uso externo.
MANIPULATION
Braço robótico com garra de dois dedos (50 mm) para interação com o ambiente.
Dica importante sobre servos: Nem todos têm rotação completa de 180°. Use servo.writeMicroseconds (faixa 1000-2000) para encontrar limites mecânicos e evite "queimar" o servo mantendo-o no fim de curso. Use constrain() para limitar o ângulo no código:
servo.write(constrain(angle, 10, 160));
Peças Personalizadas e Gabinetes
Arquivo DXF: m1rover_dxf_hackaday_4o7WTGHUGE.dxf
Esquemáticos
Disponível na seção de esquemáticos do projeto original.
Processo de manufatura
- Motores de Relutância Variável: Tipos, Operação e Aplicações
- Raspoulette: Protótipo de Sistema Autônomo de Porta de Galinheiro Alimentado por Energia Solar
- Construa um Rover Windows IoT Core com Raspberry Pi 2 – Guia do Iniciante ao Avançado
- Simple Pi Robot – Construa Rover Autônomo 2-WD com Raspberry Pi
- Construa seu Próprio Jogo UFO Attack com Arduino UNO e Display MAX7219
- Relógio 3D RGB Arduclock – Bluetooth, LEDs Endereçáveis e RTC
- Biblioteca Completa para Motor de Passo Bipolar com Arduino
- Palheta Motorizada e Pedal Stomp para Guitarra – DIY com Impressão 3D e Arduino
- Entendendo Motores Lineares: Da Energia Elétrica ao Movimento Linear Preciso
- Motores Servo Explicados: Como Funcionam e Por Que Importam