Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY Mensch-verfolgender Roboter mit Arduino UNO & Motor Shield

Komponenten & Zubehör

Bauteil Menge
Arduino UNO 1
Adafruit Motor Shield (L293D-basiert) 1
SG90 Mikro-Servo 1
IR-Hindernissensoren (Generic) 2
Ultraschallsensor HC-SR04 1
DC-Getriebemotoren 12 V + Räder 4
Jumper-Wires 1 Satz
9-V-Blockbatterie + Clip 1
Schalter (Rocker SPST) 1

Projektbeschreibung

Ein kleiner Differentialdrive-Roboter, der einer Person folgt. Zwei seitliche IR-Sensoren erkennen, ob sich ein Objekt links oder rechts befindet – der Roboter dreht entsprechend. Ein auf einem Servo montierter Ultraschallsensor misst die Distanz zum Objekt: Bei 10–30 cm fährt er vorwärts, bei < 5 cm rückwärts, dazwischen stoppt er. Der Servo schwenkt den Ultraschallsensor beim Start kurz über 180° (Selbsttest).

Mechanischer Aufbau

  1. Chassis aus Pappe / Karton: 4 Motoren mit Rädern befestigen.
  2. Zwei IR-Sensoren vorne links/rechts anbringen.
  3. Servo auf Chassis kleben, Ultraschallsensor in einem kleinen Gehäuse auf Servo-Horn montieren.
  4. Arduino + Motor Shield auf Chassis platzieren.
  5. Verkabelung gemäß Schaltplan.
  6. 9-V-Batterie + Schalter an Motor Shield (externer Motorstrom).
  7. IR-Sensor-Empfindlichkeit per Potentiometer justieren.

Schaltplan

DIY Mensch-verfolgender Roboter mit Arduino UNO & Motor Shield

Pin-Belegung:

Arduino-Code

#include <Servo.h>
#include <AFMotor.h>

#define LEFT A0
#define ECHOPIN A1
#define TRIGPIN A2
#define RIGHT A3

AF_DCMotor Motor1(1, MOTOR12_1KHZ);
AF_DCMotor Motor2(2, MOTOR12_1KHZ);
AF_DCMotor Motor3(3, MOTOR34_1KHZ);
AF_DCMotor Motor4(4, MOTOR34_1KHZ);

Servo myservo;
int pos = 0;
long duration;

void setup() {
  Serial.begin(9600);
  myservo.attach(10);
  // Servo-Selbsttest: 90° → 180° → 0° → 90°
  for (pos = 90; pos <= 180; pos++) { myservo.write(pos); delay(15); }
  for (pos = 180; pos >= 0; pos--) { myservo.write(pos); delay(15); }
  for (pos = 0; pos <= 90; pos++) { myservo.write(pos); delay(15); }

  pinMode(RIGHT, INPUT);
  pinMode(LEFT, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(ECHOPIN, INPUT);
}

void loop() {
  unsigned int dist = read_cm();
  int rv = digitalRead(RIGHT);
  int lv = digitalRead(LEFT);

  Serial.print("R="); Serial.print(rv);
  Serial.print(" L="); Serial.print(lv);
  Serial.print(" D="); Serial.println(dist);

  if (rv == 1 && lv == 1 && dist >= 10 && dist <= 30) forward();
  else if (rv == 0 && lv == 1) turnRight();
  else if (rv == 1 && lv == 0) turnLeft();
  else if (rv == 1 && lv == 1) stopMotors();
  else if (dist > 5 && dist < 10) stopMotors();
  else if (dist < 5) backward();

  delay(50);
}

unsigned int read_cm() {
  digitalWrite(TRIGPIN, LOW); delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);
  duration = pulseIn(ECHOPIN, HIGH);
  return duration / 29 / 2; // cm
}

void forward() { setAll(120, FORWARD); }
void backward() { setAll(120, BACKWARD); }
void turnRight() { Motor1.setSpeed(200); Motor1.run(FORWARD); Motor2.setSpeed(200); Motor2.run(FORWARD); Motor3.setSpeed(100); Motor3.run(BACKWARD); Motor4.setSpeed(100); Motor4.run(BACKWARD); }
void turnLeft() { Motor1.setSpeed(100); Motor1.run(BACKWARD); Motor2.setSpeed(100); Motor2.run(BACKWARD); Motor3.setSpeed(200); Motor3.run(FORWARD); Motor4.setSpeed(200); Motor4.run(FORWARD); }
void stopMotors() { setAll(0, RELEASE); }
void setAll(int sp, uint8_t dir) { Motor1.setSpeed(sp); Motor1.run(dir); Motor2.setSpeed(sp); Motor2.run(dir); Motor3.setSpeed(sp); Motor3.run(dir); Motor4.setSpeed(sp); Motor4.run(dir); }

Fazit & Verbesserungsideen

Ein klassisches Einsteigerprojekt für autonomes Fahren. Die IR-Sensoren sind anfällig für Umgebungslicht; ein Upgrade auf VL53L0X (ToF) oder eine Kamera (OpenMV) würde die Robustheit erhöhen. Auch ein PID-Regler für sanfteres Folgen wäre eine lohnende Erweiterung.

Herstellungsprozess

  1. Variabler-Reluktanz-Motoren: Typen, Betrieb und Anwendungen
  2. Raspoulette: Solar-betriebenes autonomes Hühnerklappen-System Prototyp
  3. Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
  4. UFO Attack: Eigenes Arduino-Spiel mit MAX7219 Matrix & Joystick
  5. Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
  6. 3D RGB Arduclock – Bluetooth-LED-Uhr mit Echtzeituhr
  7. Umfassende Bipolar-Schrittmotor-Bibliothek für Arduino
  8. DIY Guitar Speed Pick & Stomp Pedal – 3D-gedruckter motorisierter Plektrum
  9. Linearmotoren verstehen: Von elektrischer Energie zur präzisen Linearbewegung
  10. Servomotoren: Funktionsweise und Bedeutung