Gesteuerter Roboter selbst bauen: Arduino, MPU-6050 & Bluetooth
Komponenten & Materialien
- 1 × Arduino UNO (Fahrzeug-Einheit)
- 1 × Arduino Nano (Fernbedienung / Transmitter)
- 2 × HC-05 Bluetooth Modul (eines als Master, eines als Slave)
- 1 × MPU-6050 (3-Achsen Gyroskop + Beschleunigungssensor)
- 2 × DC-Motor 12 V + Räder
- 1 × L293D Dual H-Bridge Motortreiber
- 2 × 9-V-Blockbatterie (je Einheit eine)
- 1 × Gummireifen-Set
- Steckbrett, Jumper-Kabel, Lötzubehör, Schraubendreher, Klebeband
- Optional: PCB (Bestelllink im Projekt zu PCBWay)
Software & Bibliotheken
- Arduino IDE
- Bibliotheken:
I2Cdev,MPU6050_6Axis_MotionApps20,Wire,SoftwareSerial - Download: gesture_control_robot.rar (enthält Bibliotheken & Quellcode)
Projektbeschreibung
Ein Roboter-Auto wird durch Handbewegungen gesteuert. Der MPU-6050 an der Fernbedienung (Nano) erfasst Neigung (Pitch/Roll) und sendet die Befehle per Bluetooth an das Fahrzeug (UNO mit L293D). Zwei HC-05 Module werden so konfiguriert, dass sie sich automatisch verbinden (Master ↔ Slave).
Bluetooth-Konfiguration (AT-Befehle)
Beide Module zunächst in AT-Modus versetzen (Taster gedrückt halten beim Einschalten → langsames Blinken). Baudrate 38400, Both NL & CR.
Slave (Fahrzeug-Empfänger)
AT+ORGL // Werkseinstellungen
AT+RMAAD // Alte Pairings löschen
AT+UART=38400,0,0
AT+ROLE=0 // Slave
AT+ADDR? // Adresse notieren (z. B. 98d3:31:fc5a7b)
Master (Fernbedienung-Sender)
AT+ORGL
AT+RMAAD
AT+UART=38400,0,0
AT+ROLE=1 // Master
AT+CMODE=0 // Nur ein Gerät verbinden
AT+BIND="98d3,31,fc5a7b" // Adresse des Slaves (Doppelpunkte durch Kommas ersetzen!)
Nach Neustart verbinden sich beide automatisch (schnelles Blinken = verbunden).
Verkabelung
Fahrzeug (UNO):
- L293D: IN1=8, IN2=9, IN3=10, IN4=11
- HC-05: RX→Pin 10, TX→Pin 11 (SoftwareSerial), VCC→5V, GND→GND
- Motoren an OUT1/2 & OUT3/4, 9 V Batterie an L293D VS & Arduino Vin
Fernbedienung (Nano):
- MPU-6050: SDA→A4, SCL→A5, VCC→3,3V, GND→GND, INT→D2
- HC-05: RX→Pin 10, TX→Pin 11 (SoftwareSerial), VCC→5V, GND→GND
- Taster an Pin 8 (Umschaltung Aktiv/Standby)
- 9 V Batterie an Vin
Code: Fahrzeug-Einheit (UNO)
// Gesture_controled_Robot__car_unit_
int lm1=8, lm2=9, rm1=10, rm2=11;
char d=0;
void setup() {
pinMode(lm1,OUTPUT); pinMode(lm2,OUTPUT);
pinMode(rm1,OUTPUT); pinMode(rm2,OUTPUT);
Serial.begin(38400);
sTOP();
}
void loop() {
if(Serial.available()>0) {
d=Serial.read();
if(d=='F') ForWard();
else if(d=='B') BackWard();
else if(d=='L') Left();
else if(d=='R') Right();
else if(d=='S') sTOP();
}
}
void ForWard() { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void BackWard() { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void Left() { digitalWrite(lm1,LOW); digitalWrite(lm2,HIGH); digitalWrite(rm1,HIGH); digitalWrite(rm2,LOW); }
void Right() { digitalWrite(lm1,HIGH); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,HIGH); }
void sTOP() { digitalWrite(lm1,LOW); digitalWrite(lm2,LOW); digitalWrite(rm1,LOW); digitalWrite(rm2,LOW); }
Code: Fernbedienung (Nano) – Auszug
// Hauptloop: DMP-Daten lesen, Yaw/Pitch/Roll berechnen
if((ypr[1]*180/M_PI) <= -25) BTSerial.write('F'); // Vorwärts
else if((ypr[1]*180/M_PI) >= 25) BTSerial.write('B'); // Rückwärts
else if((ypr[2]*180/M_PI) <= -25) BTSerial.write('L'); // Links
else if((ypr[2]*180/M_PI) >= 20) BTSerial.write('R'); // Rechts
else BTSerial.write('S'); // Stopp
Der komplette Code nutzt die DMP (Digital Motion Processor) des MPU-6050 für stabile Orientierungsdaten. Gyro-Offsets müssen kalibriert werden (setXGyroOffset etc.).
Aufbau & Test
- Beide Arduinos per USB programmieren (Bluetooth-Module dabei abgesteckt lassen!).
- Slave-Modul auf Fahrzeug, Master-Modul auf Fernbedienung stecken.
- Batterien anschließen, einschalten.
- Fernbedienung: Taster drücken → Aktivierung (x toggelt). Hand neigen → Roboter fährt.
Tipps & Tricks
- MPU-6050 Offset-Kalibrierung verbessert Genauigkeit enorm.
- Bluetooth-Reichweite: ca. 10 m im Freien.
- Für stabilere Stromversorgung: LiPo-Akkus statt 9-V-Blöcke.
- PCB-Design (Link im Projekt) macht Aufbau sauberer und robuster.
Herstellungsprozess
- Arduino-Roboter mit Raspberry Pi bauen: Schritt-für-Schritt-Anleitung
- DIY Hausaufgaben-Schreibmaschine zu Hause bauen
- Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
- Autonomer Linienfolger-Roboter mit Arduino UNO
- Selbstbau: Schlagbare, anpassbare Tasten mit Arduino und Piezo-Element
- Autonomer Hausassistent-Roboter bauen: Komplette Teileliste & Setup-Anleitung
- Musikalische Töne mit Arduino erzeugen: Schritt-für-Schritt-Anleitung
- Automatische Tür mit Arduino & Ultraschallsensor bauen
- Arduino Roboterarm per Android-App & Bluetooth steuern
- Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte