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

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Komponenten und Zubehör

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
Arduino UNO
× 1
Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
SG90 Micro-Servomotor
× 1
Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
SparkFun Ultraschallsensor - HC-SR04
× 1
Roboter-Chassis-Kit - 2WD mit DC-Motoren
× 1
Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
Jumper Wires (generic)
× 1
Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
Arduino MotorShield Rev3
× 1

Notwendige Werkzeuge und Maschinen

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
Lötkolben (generic)

Apps und Online-Dienste

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
Arduino IDE

Über dieses Projekt

Alles über das Projekt

Ich bin Student der Media Arts Design an der Multimedia University, Cyberjaya, Malaysia. Dies ist mein Gamma-Jahr im Studium Media Art, Interaction Design ist das Fach, das Studenten beibringt, wie man Arduino-Komponenten verwendet und wie sie funktionieren. Für meine Abschlussarbeit habe ich den Hindernisvermeidungs-Roboter als eigenes Projekt gewählt und gelernt, wie jede Komponente funktioniert.

Schritt 1:

Bereiten Sie Ihr Roboter-Chassis vor und bauen Sie es zusammen. Im Paket befinden sich einige Komponenten: Chassis, zwei Motoren, zwei Räder, ein Vorderrad, ein Batteriehalter, einige Schrauben, ein Schalter und Jumper-Wires. Foto unten:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 2:

Bevor Sie die Jumper-Wires an beide Motoren löten, empfehle ich, jede Komponente zu testen, um sicherzustellen, dass alles gut funktioniert: beide DC-Motoren, Arduino-Board, Motor Shield, Servomotor und Ultraschallsensor. Dann beginnen wir, die roten und schwarzen Drähte an beiden Motoren zu löten, Beispielbild unten:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 3:

Kommen wir zum Batterie-Chassis und Schalter. Wir müssen nur die Hälfte des schwarzen Drahts vom Batterie-Chassis abschneiden und eine Drahtseite an ein Loch löten, den anderen schwarzen Draht an das andere Loch. Unser Schalter ist bereit!

Schritt 4:

Wir müssen Arduino-Board und Motor Shield-Board stapeln, das Motor Shield wird auf das Arduino-Board gesteckt. Beispiel unten:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 5:

Wir widmen uns dem Motor Shield Board. Dieser Shield liefert Strom für die Motoren und den Servomotor; die Motoren benötigen viel Strom, und dieser Shield kann bis zu 600 mA pro Motor liefern. Wir müssen die DC-Motorkabel am Motor Shield Board verlöten/fixieren. Wenn Ihre DC-Motorkabel lang genug sind, um den Motor Shield zu erreichen, ist das super; wenn nicht, benötigen Sie möglicherweise externe Jumper-Wires (egal ob Male/Female), schneiden Sie den Jumper-Wire-Kopf ab und stellen Sie sicher, dass der Kupferleiter sichtbar wird. Dann löten Sie die externen Drähte an die DC-Motorkabel. Beispiel:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Verbinden Sie dann das linke Motorkabel mit dem M1-Anschluss des Motor Shields. Das rechte Motorkabel wird mit dem M3-Anschluss des Motor Shield Boards verbunden. Beispiel:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 6:

Dann müssen wir die Batterie-Schalter-Kabel (rot und schwarz) mit dem Motor Shield Board verbinden.

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Danach benötigen wir Male- und Female-Jumper-Wires, um sie an 5V, GND, Analog Pin 4 und Analog Pin 5 zu löten. Zuvor müssen wir gleichfarbige Male- und Female-Jumper-Wires finden und sie halbieren. Warum gleiche Farbe? Erstens, um leicht zu erkennen, welches Kabel für welchen Teil ist. Zweitens: Weißer Male-Jumper-Wire wird mit weißem Female-Jumper-Wire verlötet, der an 5V angeschlossen wird. Schwarzer Male-Jumper-Wire wird mit Female-Jumper-Wire verlötet und der Male-Jumper-Wire an GND. Oranger Male-Jumper-Wire wird mit orangenem Female-Jumper-Wire verlötet, der orangene Male-Jumper-Wire wird an Analog Pin 5 gelötet. Zuletzt, aber nicht weniger wichtig: Brauner Male-Jumper-Wire wird mit braunem Female-Jumper-Wire verlötet, dann wird der braune Male-Jumper-Wire an Analog Pin 4 gelötet. Beispiel:

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 7:

Sie können doppelseitiges Klebeband oder eine Heißklebepistole verwenden, um beide Shields am Roboter-Chassis zu befestigen.

Schritt 8: Ultraschallsensor

Von den Female- & Male-Jumper-Wires, die wir gerade verlötet haben, wird der weiße Jumper-Wire (5V) (Female-Seite) mit dem VCC-Pin des Ultraschallsensors verbunden. Schwarzer Jumper-Wire (GND) (Female-Seite) wird an GND-Pin angeschlossen. Brauner Jumper-Wire (Analog Pin 4) (Female-Seite) wird an Echo-Pin angeschlossen. Oranger Jumper-Wire (Analog Pin 5) (Female-Seite) wird an TRIG-Pin angeschlossen.

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Schritt 9:

Zuletzt wird der Servomotor an den servo_2-Steckplatz angeschlossen. Hinweis* (Es gibt verschiedene Arten von Servomotoren. Sie müssen eventuell online nachschauen, wie sie in den servo_2-Slot gesteckt werden). Unten ist meine eigene Version des Servo-Slots.

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Letzter Schritt: Code

Für diesen Hindernisvermeidungs-Roboter benötigen wir 3 Bibliotheken: Motor Shield Library für den Motor Shield Treiber, New Ping Library für den Ultraschallsensor. Drittens die Arduino IDE. Unten sind die Download-Links für die Bibliotheken:

Ich danke euch, dass ihr euch mein Projekt anseht. Ich hoffe, die Anweisungen sind klar genug, damit ihr den Hindernisvermeidungs-Roboter selbst bauen könnt. Danke!

Video zum Test:

Code

Arduino IDE C#

Kopieren Sie den Code in die Arduino IDE und laden Sie ihn auf Ihr Arduino-Board hoch

#include 
#include 
#include 
#define TRIG_PIN A4
#define ECHO_PIN A5
#define MAX_DISTANCE_POSSIBLE 1000
#define MAX_SPEED 150
// #define MOTORS_CALIBRATION_OFFSET 3
#define COLL_DIST 20
#define TURN_DIST COLL_DIST+10
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE_POSSIBLE);
AF_DCMotor leftMotor(3, MOTOR12_8KHZ);
AF_DCMotor rightMotor(1, MOTOR12_8KHZ);
Servo neckControllerServoMotor;
int pos = 0;
int maxDist = 0;
int maxAngle = 0;
int maxRight = 0;
int maxLeft = 0;
int maxFront = 0;
int course = 0;
int curDist = 0;
String motorSet = "";
int speedSet = 0;
void setup() {
    neckControllerServoMotor.attach(10);
    neckControllerServoMotor.write(90);
    delay(2000);
    checkPath();
    motorSet = "FORWARD";
    neckControllerServoMotor.write(90);
    moveForward();
}
void loop() {
    checkForward();
    checkPath();
}
void checkPath() {
    int curLeft = 0;
    int curFront = 0;
    int curRight = 0;
    int curDist = 0;
    neckControllerServoMotor.write(144);
    delay(120);
    for(pos = 144; pos >= 36; pos-=18) {
        neckControllerServoMotor.write(pos);
        delay(90);
        checkForward();
        curDist = readPing();
        if (curDist < COLL_DIST) {
            checkCourse();
            break;
        }
        if (curDist < TURN_DIST) {
            changePath();
        }
        if (curDist > curDist) {maxAngle = pos;}
        if (pos > 90 && curDist > curLeft) { curLeft = curDist;}
        if (pos == 90 && curDist > curFront) {curFront = curDist;}
        if (pos < 90 && curDist > curRight) {curRight = curDist;}
    }
    maxLeft = curLeft;
    maxRight = curRight;
    maxFront = curFront;
}
void setCourse() {
    if (maxAngle < 90) {turnRight();}
    if (maxAngle > 90) {turnLeft();}
    maxLeft = 0; maxRight = 0; maxFront = 0;
}
void checkCourse() {
    moveBackward(); delay(500); moveStop(); setCourse();
}
void changePath() {
    if (pos < 90) {lookLeft();}
    if (pos > 90) {lookRight();}
}
int readPing() {
    delay(70);
    unsigned int uS = sonar.ping();
    int cm = uS/US_ROUNDTRIP_CM;
    return cm;
}
void checkForward() {
    if (motorSet=="FORWARD") {leftMotor.run(FORWARD); rightMotor.run(FORWARD);}
}
void checkBackward() {
    if (motorSet=="BACKWARD") {leftMotor.run(BACKWARD); rightMotor.run(BACKWARD);}
}
void moveStop() {leftMotor.run(RELEASE); rightMotor.run(RELEASE);}
void moveForward() {
    motorSet = "FORWARD";
    leftMotor.run(FORWARD); rightMotor.run(FORWARD);
    for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) {
        leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSET);
        rightMotor.setSpeed(speedSet);
        delay(5);
    }
}
void moveBackward() {
    motorSet = "BACKWARD";
    leftMotor.run(BACKWARD); rightMotor.run(BACKWARD);
    for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) {
        leftMotor.setSpeed(speedSet+MOTORS_CALIBRATION_OFFSET);
        rightMotor.setSpeed(speedSet);
        delay(5);
    }
}
void turnRight() {
    motorSet = "RIGHT";
    leftMotor.run(FORWARD); rightMotor.run(BACKWARD);
    delay(400);
    motorSet = "FORWARD";
    leftMotor.run(FORWARD); rightMotor.run(FORWARD);
}
void turnLeft() {
    motorSet = "LEFT";
    leftMotor.run(BACKWARD); rightMotor.run(FORWARD);
    delay(400);
    motorSet = "FORWARD";
    leftMotor.run(FORWARD); rightMotor.run(FORWARD);
}
void lookRight() {rightMotor.run(BACKWARD); delay(400); rightMotor.run(FORWARD);}
void lookLeft() {leftMotor.run(BACKWARD); delay(400); leftMotor.run(FORWARD);}

Schaltplan

Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04

Herstellungsprozess

  1. Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
  2. Autonomer Linienfolger-Roboter mit Arduino UNO
  3. Roomba Create 2 per Arduino & Android steuern – Schritt-für-Schritt
  4. Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R
  5. Autonomer Hausassistent-Roboter bauen: Komplette Teileliste & Setup-Anleitung
  6. DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck
  7. Arduino Roboterarm per Android-App & Bluetooth steuern
  8. Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte
  9. Servomotoren: Funktionsweise und Bedeutung
  10. Präzision maximieren: Getriebe mit Servomotoren optimal kombinieren