Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Mensen-Volgende Robot met Arduino UNO en Motor Shield

Onderdelen en Benodigdheden

Arduino UNO×1
Adafruit Motor Shield×1
SG90 Micro Servo Motor×1
IR Transceiver (Generiek)×2
Ultrasoon Sensor HC-SR04×1
Jumper Kabels×1
DC Motor 12V×4
Micro-motoren & Wielen Set×4
9V Batterij×1
Kipschakelaar SPST×1

Apps en Online Diensten

  • Arduino IDE

Over dit Project

Hey allemaal! Tijdens deze pandemic maakte ik een nieuwe project: een Mensen-Volgende Robot (Human Following Bot).

De robot gebruikt 2 IR-sensoren om een mens of object te volgen, en een ultrasoon sensor om achteruit te rijden wanneer het te dichtbij komt.

Bouwstappen

  1. Verzamel componenten: Arduino, 4 DC motoren met wielen, 2 IR-sensoren, ultrasoon sensor, servo, karton, L293D motor shield, 9V batterij, schakelaar, jumper kabels.
  2. Monteer de 4 motoren met wielen op karton voor het chassis.
  3. Plaats de IR-sensoren op de robot.
  4. Bevestig de servo motor.
  5. Plaats de ultrasoon sensor in een doos met handvat en monteer op de servo.
  6. Monteer Arduino en motor shield op de robot.
  7. Maak de verbindingen volgens het schema.
  8. Upload de code en sluit de schakelaar met batterij aan op de motor shield.
  9. Stel de gevoeligheid van de IR-sensoren in.

Je project is klaar! Bezoek mijn YouTube kanaal voor meer projecten: "Electronics is Fun"

Code

// www.YouTube.com/Electronics is Fun
#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 time;

void setup() {
  Serial.begin(9600);
  myservo.attach(10);
  
  // Servo kalibratie: zoek centrum
  for (pos = 90; pos <= 180; pos += 1) { myservo.write(pos); delay(15); }
  for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); }
  for (pos = 0; pos <= 90; pos += 1) { myservo.write(pos); delay(15); }
  
  pinMode(RIGHT, INPUT);
  pinMode(LEFT, INPUT);
  pinMode(trigpin, OUTPUT);
  pinMode(echopin, INPUT);
}

void loop() {
  unsigned int distance = read_cm();
  int Right_Value = digitalRead(RIGHT);
  int Left_Value = digitalRead(LEFT);
  
  Serial.print("R= "); Serial.print(Right_Value);
  Serial.print(" L= "); Serial.print(Left_Value);
  Serial.print(" D= "); Serial.println(distance);
  
  if ((Right_Value == 1) && (distance >= 10 && distance <= 30) && (Left_Value == 1)) {
    forword();
  } else if ((Right_Value == 0) && (Left_Value == 1)) {
    turnRight();
  } else if ((Right_Value == 1) && (Left_Value == 0)) {
    turnLeft();
  } else if ((Right_Value == 1) && (Left_Value == 1)) {
    stop();
  } else if (distance > 5 && distance < 10) {
    stop();
  } else if (distance < 5) {
    backword();
  }
  delay(50);
}

long read_cm() {
  digitalWrite(trigpin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigpin, HIGH);
  delayMicroseconds(10);
  time = pulseIn(echopin, HIGH);
  return time / 29 / 2;
}

void forword() {
  Motor1.setSpeed(120); Motor1.run(FORWARD);
  Motor2.setSpeed(120); Motor2.run(FORWARD);
  Motor3.setSpeed(120); Motor3.run(FORWARD);
  Motor4.setSpeed(120); Motor4.run(FORWARD);
}

void backword() {
  Motor1.setSpeed(120); Motor1.run(BACKWARD);
  Motor2.setSpeed(120); Motor2.run(BACKWARD);
  Motor3.setSpeed(120); Motor3.run(BACKWARD);
  Motor4.setSpeed(120); Motor4.run(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 stop() {
  Motor1.setSpeed(0); Motor1.run(RELEASE);
  Motor2.setSpeed(0); Motor2.run(RELEASE);
  Motor3.setSpeed(0); Motor3.run(RELEASE);
  Motor4.setSpeed(0); Motor4.run(RELEASE);
}

Schema

Schema-afbeelding beschikbaar in de originele projectdocumentatie.

Productieproces

  1. Raspoulette: Zonnestroom-gevoede Autonome Koeienpoort Systeem Prototype
  2. Simple Pi Robot – Bouw een 2-WD Autonome Rover met Raspberry Pi
  3. Bouw je eigen UFO Attack Game met Arduino UNO & MAX7219 Display
  4. Arduino Uno Gebaseerde Mensendetectie Robot: Stap-voor-stap Sensorintegratie
  5. 3D RGB Arduclock – Bluetooth LED Tijdstuk met Real-Time Clock
  6. Uitgebreide bibliotheek voor bipolaire stappenmotoren met Arduino
  7. Riviergezondheidsmonitor: Arduino-gebaseerd Waterkwaliteitssysteem
  8. DIY Gitaar Speed Pick & Stomp Pedal – Bouw Je Eigen 3D-Gemotoriseerde Plektron
  9. Lineaire motoren begrijpen: Van elektrische energie naar nauwkeurige lineaire beweging
  10. Servomotoren Uitgelegd: Hoe Ze Werken en Waarom Ze Belangrijk Zijn
  11. Variabele-reluctantiemotoren: typen, werking en toepassingen