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

Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter

Komponenten und Zubehör

Arduino UNO × 1
Ultraschallsensor HC-SR04 (Generic) × 1
Li-Ion Akku 1000mAh × 2
RGB Diffus Common Cathode × 1
Summer (Buzzer) × 1
Widerstand 330 Ohm × 3
USB-A auf B Kabel × 1
Jumper Kabel (generic) × 20

Benötigte Werkzeuge und Maschinen

Apps und Online-Dienste

Projektbeschreibung

Zusammenfassung

Die Arbeit stellt den Entwurf eines Hindernisvermeidungs-Roboters vor, der Objekte in seinem Kurs erkennt und durch richtige Entscheidungen um diese navigiert. Es demonstriert eine Roboter-Einheit basierend auf Arduino UNO und Adafruit Motor Shield, programmiert in Arduino IDE. Hindernisvermeidung ist ein Schlüsselfaktor für mobile Roboter. Die Implementierung des Ultraschall-Distanzsensors auf einem Micro-Servo-Motor ermöglichte präzisere Umgebungsdetektion. Dieser Roboter unterscheidet sich durch Integration eines magnetischen Summers und einer Common-Cathode RGB-LED, wodurch er Hinderniserkennung anzeigt und DC-Getriebemotor-Geschwindigkeit in 4 Situationen steuert. Als autonomer Roboter manövriert er durch unbekannte Bedingungen ohne Kollision. Technologie erweiterbar für Militäroperationen und humanitäre Hilfe durch verbesserte Objekterkennung in diversen Umgebungen.

Multimedia

Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter
Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter
Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter
Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter
Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter
Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter

Interpretation

Eingebundene Libraries:

AFMotor.h
Servo.h

Definierte Pin-Belegungen:

#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25

Programm-Architektur:

Alle Operationen autonom ohne externe Steuerung.

Projekt präsentiert Details für mobilen Roboter mit Hindernisvermeidung, autonomer Navigation und Bewegungsanzeige der DC-Getriebemotoren durch farbselektive RGB-LED in 4 Situationen. Roboter unterscheidet sich durch Licht/Sound-Indikation, Motorgeschwindigkeitssteuerung und intensive Manövriertechnik durch 180°-Erkennung vor dem Roboter – programmatisch anspruchsvoll. Basis: Arduino UNO Rev3, Arduino IDE v1.8.5. Integration ermöglichte autonomes Arbeiten mit hoher Genauigkeit. Erweiterung um Kamera und Funktechnik → militärische Aufklärung; Basiseinheiten → Unterstützung seh-/hörbehinderter Menschen bei Objekterkennung.

Pathfinder: Arduino UNO Projekt-Kit – Hindernisvermeidender Roboter

Youth Zest Project Showcase

Code

Programm (Arduino)

Assembler-Programm für den Aufbau dieser autonomen Maschine.

#include <AFMotor.h> // Adafruit Motor Shield Library
#include <Servo.h>   // Servo Motor Library

#define BuzzPIN A0  // Buzzer "+" Pin
#define TrigPIN A1  // Ultraschall Sensor "Trig" Pin
#define EchoPIN A2  // Ultraschall Sensor "Echo" Pin
#define LEDBPIN A3  // RGB LED Blau Pin
#define LEDGPIN A4  // RGB LED Grün Pin
#define LEDRPIN A5  // RGB LED Rot Pin
#define DCMROFF 25  // Offset für Unterschiede zwischen den zwei DC-Motoren

AF_DCMotor M1(1, MOTOR12_64KHZ); // DC Motor #1, 64kHz PWM
AF_DCMotor M2(2, MOTOR12_64KHZ); // DC Motor #2, 64kHz PWM
Servo SER1;                       // Servo Objekt

int Search(void) {
  float Duration = 0.0;
  float CM = 0.0;
  digitalWrite(TrigPIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPIN, LOW);
  Duration = pulseIn(EchoPIN, HIGH);
  CM = (Duration / 58.8); // Distanz in cm
  return CM;
}

int RightDistance, LeftDistance;
float Distance = 0.00;

void setup() {
  pinMode(BuzzPIN, OUTPUT);
  pinMode(TrigPIN, OUTPUT);
  pinMode(EchoPIN, INPUT);
  pinMode(LEDBPIN, OUTPUT);
  pinMode(LEDGPIN, OUTPUT);
  pinMode(LEDRPIN, OUTPUT);
  SER1.attach(10); // Servo an Pin 10 (Adafruit Shield)
}

void loop() {
  SER1.write(80);          // Servo nach vorne (80°)
  delay(100);
  Distance = Search();     // Distanz messen
  
  if (Distance < 30) {           // Hindernis < 30cm
    digitalWrite(BuzzPIN, HIGH);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, HIGH);   // Rot = Gefahr
    M1.setSpeed(100);
    M2.setSpeed(100);
    ChangePath();
  }
  else if (Distance >= 30 && Distance < 60) { // 30-60cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH);   // Blau = Vorsicht
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(150);
    M2.setSpeed(150);
    Forward();
  }
  else if (Distance >= 60 && Distance < 90) { // 60-90cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, HIGH);   // Grün = OK
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(200);
    M2.setSpeed(200);
    Forward();
  }
  else {                         // > 90cm frei
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH);   // Weiß (alle an) = Frei
    digitalWrite(LEDGPIN, HIGH);
    digitalWrite(LEDRPIN, HIGH);
    M1.setSpeed(250);
    M2.setSpeed(250);
    Forward();
  }
}

void ChangePath() {
  Stop();
  Backward();
  Stop();
  SER1.write(12);        // Rechts prüfen
  delay(500);
  RightDistance = Search();
  delay(500);
  SER1.write(160);       // Links prüfen
  delay(1000);
  LeftDistance = Search();
  delay(500);
  SER1.write(80);        // Zurück zur Mitte
  delay(500);
  CompareDistance();
}

void CompareDistance() {
  if (RightDistance > LeftDistance) TurnRight();
  else if (LeftDistance > RightDistance) TurnLeft();
  else TurnAround();
}

void Forward() {
  M1.run(FORWARD);
  M2.run(FORWARD);
}

void Backward() {
  M1.run(BACKWARD);
  M2.run(BACKWARD);
  delay(500);
}

void TurnRight() {
  M1.run(BACKWARD);
  M2.run(FORWARD);
  M1.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnLeft() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnAround() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(700);
}

void Stop() {
  M1.run(RELEASE);
  M2.run(RELEASE);
  delay(100);
}

Custom Parts & Enclosures

Chassis

Roboter-Chassis für den Aufbau dieser autonomen Maschine.

Schaltpläne

Schaltplan für den Aufbau dieser autonomen Maschine.

Herstellungsprozess

  1. SPICE Netlist-Syntax: Bauteilbenennung, passive & aktive Elemente, Quellen
  2. Integrierte Schaltkreise (ICs): Kompakte, leistungsstarke Chips, die moderne Elektronik antreiben
  3. Temperatur- und Luftfeuchtedaten zwischen zwei Arduinos via Firebase übertragen
  4. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  5. Multi-Position Temperatursensor-System für Smart-Home-Integration
  6. DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
  7. MOSMusic: Musik-synchronisierte Lichtsteuerung mit CoolMOS MOSFET & Arduino
  8. Mikroelektronik: Die Wissenschaft winziger Elektronikbauteile
  9. Bohrmaschinen-Komponenten: Aufbau und Funktion im Detail
  10. Wesentliche Komponenten eines Verbrennungsmotors