Heim Der Blog Blog Details

Wie verwende ich Arduino, um einen kompletten Hindernisvermeidungsroboter zu entwerfen?

January 03 2025
Ampheo

Anfrage

Globaler Lieferant elektronischer Komponenten AMPHEO PTY LTD: Umfangreiches Inventar für One-Stop-Shopping. Einfache Anfragen, schnelle, individuelle Lösungen und Angebote.

SCHNELLE ANFRAGE
ZUR RFQ-LISTE HINZUFÜGEN
Wir bauen einen hindernisvermeidenden Roboter mit Ultraschallsensor unter Verwendung von Arduino. Dies ist ein gängiger, anfängerfreundlicher Ansatz mit einem guten Gleichgewicht zwischen Einfachheit und Effektivität.

Wir bauen einen hindernisvermeidenden Roboter mit Ultraschallsensor unter Verwendung von Arduino. Dies ist ein gängiger, anfängerfreundlicher Ansatz mit einem guten Gleichgewicht zwischen Einfachheit und Effektivität.

Wie verwende ich Arduino, um einen kompletten Hindernisvermeidungsroboter zu entwerfen? - Blog - Ampheo


📋 1. Benötigte Komponenten:

Elektronik:

  • 🧠 Arduino Uno (oder kompatibler Mikrocontroller)
  • 📡 Ultraschallsensor (z.B. HC-SR04)
  • 🔌 Motortreiber-Modul (L298N)
  • 🚗 2 Gleichstrommotoren mit Rädern
  • 🔄 Stützrad (für Balance)
  • 🔋 Batteriepack (9V oder 12V)
  • 📦 Chassis/Gehäuse-Set
  • 🪛 Breadboard und Jumperkabel

Optional:

  • ⚡ Ein-/Ausschalter
  • 🔊 Summer (für akustische Signale)
  • 💡 LEDs (zur Statusanzeige)

🛠️ 2. Schaltplan und Verbindungen:

Ultraschallsensor (HC-SR04):

  • VCC: 5V am Arduino
  • GND: GND am Arduino
  • Trigger-Pin: Digitaler Pin 9
  • Echo-Pin: Digitaler Pin 10

Motortreiber (L298N):

  • IN1 & IN2 (Motor 1): Digitaler Pin 4, 5
  • IN3 & IN4 (Motor 2): Digitaler Pin 6, 7
  • ENA & ENB: An PWM-Pins anschließen (z.B. 3, 11)
  • VCC: Batterie Pluspol
  • GND: Batterie Minuspol & Arduino GND

Gleichstrommotoren:

  • Motor 1: Linkes Rad
  • Motor 2: Rechtes Rad

💻 3. Arduino-Code:

Hier ist ein einfaches Beispiel für einen hindernisvermeidenden Roboter:

 
cpp
 
// Pin Definitions
const int trigPin = 9;
const int echoPin = 10;
const int motorLeft1 = 4;
const int motorLeft2 = 5;
const int motorRight1 = 6;
const int motorRight2 = 7;
const int motorSpeedLeft = 3;
const int motorSpeedRight = 11;
 
// Variables
long duration;
float distance;
 
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(motorLeft1, OUTPUT);
pinMode(motorLeft2, OUTPUT);
pinMode(motorRight1, OUTPUT);
pinMode(motorRight2, OUTPUT);
pinMode(motorSpeedLeft, OUTPUT);
pinMode(motorSpeedRight, OUTPUT);
}
 
float getDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
return duration * 0.034 / 2; // Convert to centimeters
}
 
void moveForward() {
analogWrite(motorSpeedLeft, 150);
analogWrite(motorSpeedRight, 150);
digitalWrite(motorLeft1, HIGH);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, HIGH);
digitalWrite(motorRight2, LOW);
}
 
void moveBackward() {
digitalWrite(motorLeft1, LOW);
digitalWrite(motorLeft2, HIGH);
digitalWrite(motorRight1, LOW);
digitalWrite(motorRight2, HIGH);
delay(500);
}
 
void turnRight() {
digitalWrite(motorLeft1, HIGH);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, LOW);
digitalWrite(motorRight2, HIGH);
delay(500);
}
 
void turnLeft() {
digitalWrite(motorLeft1, LOW);
digitalWrite(motorLeft2, HIGH);
digitalWrite(motorRight1, HIGH);
digitalWrite(motorRight2, LOW);
delay(500);
}
 
void stopMotors() {
digitalWrite(motorLeft1, LOW);
digitalWrite(motorLeft2, LOW);
digitalWrite(motorRight1, LOW);
digitalWrite(motorRight2, LOW);
}
 
void loop() {
distance = getDistance();
Serial.println(distance);
if (distance < 20) { // Obstacle detected within 20 cm
stopMotors();
delay(200);
moveBackward();
delay(500);
turnRight();
delay(500);
  } else {
moveForward();
}
}

🔄 4. Funktionsweise:

  1. Der Ultraschallsensor sendet Schallwellen aus, um Hindernisse zu erkennen.
  2. Wenn ein Hindernis innerhalb von 20 cm erkannt wird, führt der Roboter folgende Aktionen aus:
    • Stoppt
    • Fährt rückwärts
    • Dreht sich (z.B. nach rechts)
  3. Wenn kein Hindernis erkannt wird, fährt der Roboter vorwärts.

📊 5. Kalibrierung und Testen:

  1. Lade den Code auf den Arduino hoch.
  2. Versorge den Roboter mit dem Batteriepack.
  3. Platziere Hindernisse vor dem Roboter und beobachte, wie er reagiert.
  4. Passe die Motorgeschwindigkeit und den Distanzschwellenwert bei Bedarf an.

🧠 6. Verbesserungen (Optional):

  • Füge mehrere Ultraschallsensoren (vorne, links und rechts) für bessere Abdeckung hinzu.
  • Integriere einen IR-Sensor für die Erkennung auf kürzere Distanzen.
  • Füge einen Summer oder LEDs für Warnsignale hinzu.
  • Verwende KI oder kamerabasierte Bildverarbeitung für intelligente Navigation.

 

Ist es nicht einfach? Haben Sie es gelernt?

Ampheo