M1 Rover: Autonomer Outdoor-Roboter für unwegsames Gelände
Komponenten und Materialien
| SparkFun Dual H-Bridge Motor Driver L298 | 1× |
| DC-Motor (Standard) | 4× |
| Arduino UNO | 1× |
| LED (Standard) | 8× |
| Widerstand 220 Ω | 8× |
| Servo (Tower Pro MG996R) | 1× |
| Ultraschallsensor HC-SR04 | 1× |
Software und Online-Dienste
- Arduino IDE
- Microsoft Visual Studio 2015
- Microsoft Windows 10 IoT Core
Projektbeschreibung
Nach dem Bau mehrerer Indoor-Roboter wollte ich einen Outdoor-Roboter entwickeln, der sich in unwegsamem Gelände bewegen kann – den M1-Rover.
Das Herzstück bildet ein Arduino UNO, der über einen L298N Dual H-Bridge Treiber vier DC-Motoren steuert. Damit eignet sich die Plattform ideal für leistungsstarke Robotik-Projekte. Der M1-Rover ist mehr als ein ferngesteuertes Auto: Er kann autonom nach vorgegebenen Anweisungen navigieren, per Fernsteuerung (Gamecontroller, Joystick) bedient oder von einem entfernten Computer aus gesteuert werden.
Schritt 1: Design
Das Design erfolgte in Google SketchUp 2017, da es leistungsfähig, einfach zu bedienen ist und Exportmöglichkeiten für Lasercutter oder 3D-Drucker bietet. Drei Wochen wurden für die Konstruktion des Chassis aufgewendet. Als Material diente eine 3 mm starke Holzplatte. Die Verkabelung im Inneren ist – bedingt durch Zeitdruck – eher improvisiert.
Der Name „M1Rover“ wurde gewählt, da weitere Versionen (M2, M3, …) geplant sind. Das Design ist als Bausatz konzipiert: Alle Teile lassen sich mit Schrauben zusammenbauen.
Schritt 2: Komponenten und Features
- Bis zu 3 Stunden Laufzeit
- Kompatibel mit Arduino Uno, Mega und Nano
- Betriebsspannung 5–9 V DC
- 3 mm starkes Holz-Chassis
- 68 mm Räder, L298N Dual H-Bridge Motor/Stepper Treiber
- 9 V-Batterien für Motoren und Arduino
- 7 LEDs (4 front weiß, 2 hinten rot) mit je 220 Ω Vorwiderstand
- HC-06 Bluetooth-Modul
- Arduino Sensor Shield V5.0
- Ultraschallwandler HC-SR04
Schritt 3: Motorsteuerung
H-Brücken dienen der Drehzahl- und Richtungssteuerung von Motoren. Wichtig: Alle Ground-Verbindungen (Arduino, Stromquelle, Motorsteuerung) müssen zusammengefasst werden. PWM-Pins sind nur nötig, wenn Pulsweitenmodulation genutzt wird.
Schritt 4: Chassis-Montage
Das Chassis wurde per Lasercutter in wenigen Teilen gefertigt. Der Zusammenbau erfolgt schraubbasiert gemäß Anleitung. Front- und Rückleuchten sind bereits integriert: 4 weiße LEDs vorne, 2 rote LEDs hinten – alle per Applikation steuerbar.
Schritt 5: Schaltplan
Die Schaltung ist etwas komplexer, da viele elektronische Bauteile gleichzeitig angesteuert werden. Hauptkomponenten:
- Arduino Sensor Shield 5.0
- Arduino Uno R3 + L298N
- 9 V-Batterie für Motoren
- 7 LEDs (4 vorne, 2 hinten)
- HC-06 Bluetooth
- HC-SR04 Ultraschallsensor
- Servomotor 9 g
- Aktiver Summer
- 4 DC-Motoren mit Rädern
Schritt 6: Software
Der Code ermöglicht Steuerung per Mobilgerät oder Laptop via Bluetooth. Eine C#-Windows-Anwendung (Screenshot im Original) dient als GUI. Der Arduino-Code arbeitet über serielle Befehle und ist damit mit beliebigen Controllern kompatibel.
// Basiscode für Starter-Kit – Steuerung via Bluetooth
int frontled = 3, rearled = 4;
int outPin1 = 5, outPin2 = 6, outPin3 = 12, outPin4 = 11;
char bt = 0;
int buzzerPin = 2;
const int pingPin = 9, 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, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW); delayMicroseconds(2);
digitalWrite(pingPin, HIGH); delayMicroseconds(10);
digitalWrite(pingPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
cm = duration / 29 / 2;
if (cm > 10) { // Hindernisabstand > 10 cm
switch (bt) {
case 'F': // vorwärts
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW); break;
case 'B': // rückwärts
digitalWrite(outPin1, LOW); digitalWrite(outPin2, HIGH);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, HIGH); break;
case 'S': // stop
digitalWrite(outPin1, LOW); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, LOW); break;
case 'R': // rechts
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, LOW); break;
case 'L': // links
digitalWrite(outPin1, LOW); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW); break;
case 'I': // vorwärts-rechts
digitalWrite(outPin1, HIGH); digitalWrite(outPin2, LOW);
digitalWrite(outPin3, LOW); digitalWrite(outPin4, HIGH); break;
case 'G': // vorwärts-links
digitalWrite(outPin1, LOW); digitalWrite(outPin2, HIGH);
digitalWrite(outPin3, HIGH); digitalWrite(outPin4, LOW); break;
}
} else {
// Hindernis zu nah: Summer warnen
digitalWrite(buzzerPin, HIGH); delay(500);
digitalWrite(buzzerPin, LOW); delay(500);
}
}
}
Schritt 7: Ausbaustufen (Pakete)
STARTER
Basiskomponenten; obere Platte ermöglicht einfache Montage zusätzlicher Sensoren, Manipulatoren oder Computerhardware.
EXPLORER
Ermöglicht grundlegende autonome Indoor/Outdoor-Funktionalität. Statt IP-Kamera wird eine Smartphone-Kamera per IP-Adresse genutzt.
MAPPING
GPS-Tracking im Außenbereich mit Echtzeit-Koordinatenanzeige.
MANIPULATION
Roboterarm mit Zwei-Finger-Greifer (50 mm) für Interaktion mit der Umwelt.
Wichtiger Hinweis zu Servos: Nicht alle Servos bieten volle 180°. Mechanische Grenzen testen, servo.writeMicroseconds() (Bereich 1000–2000 µs) nutzen und Endanschläge per constrain() im Code begrenzen, um Überhitzung zu vermeiden.
CAD-Dateien
m1rover_dxf_hackaday_4o7WTGHUGE.dxf
Schaltplan
Schaltplan als Bild verfügbar (Original-Link im Quellprojekt).
Herstellungsprozess
- Variabler-Reluktanz-Motoren: Typen, Betrieb und Anwendungen
- Raspoulette: Solar-betriebenes autonomes Hühnerklappen-System Prototyp
- Windows IoT Core Rover mit Raspberry Pi 2 bauen – Anfänger bis Fortgeschritten
- Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
- UFO Attack: Eigenes Arduino-Spiel mit MAX7219 Matrix & Joystick
- 3D RGB Arduclock – Bluetooth-LED-Uhr mit Echtzeituhr
- Umfassende Bipolar-Schrittmotor-Bibliothek für Arduino
- DIY Guitar Speed Pick & Stomp Pedal – 3D-gedruckter motorisierter Plektrum
- Linearmotoren verstehen: Von elektrischer Energie zur präzisen Linearbewegung
- Servomotoren: Funktionsweise und Bedeutung