Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Robot seguidor de personas DIY con Arduino UNO y Motor Shield

Componentes y materiales

ComponenteCantidad
Arduino UNO1
Adafruit Motor Shield (o L293D)1
Servomotor SG901
Sensor IR (genérico)2
Sensor ultrasónico HC-SR041
Cables jumpers1 set
Motores DC 12V con ruedas4
Kit ruedas y motores micro (Pimoroni)4
Batería 9V1
Interruptor basculante SPST1

Aplicaciones y servicios

Sobre el proyecto

Durante la pandemia, construí un robot seguidor de personas (Human Following Bot). Utiliza dos sensores IR para detectar y seguir a una persona u objeto, y un sensor ultrasónico para evitar colisiones y retroceder si se acerca demasiado.

Pasos de construcción

  1. Reúne los componentes: Arduino, motores DC con ruedas, 2 sensores IR, sensor ultrasónico, servomotor, cartón, shield de motor L293D, batería 9V, interruptor, jumpers.
  2. Corta una base de cartón y fija los 4 motores con ruedas.
  3. Coloca los sensores IR en la parte frontal del chasis.
  4. Fija el servomotor en la base.
  5. Monta el sensor ultrasónico en una caja pequeña con un asa y fíjala al servomotor.
  6. Coloca el Arduino y el shield de motor sobre el chasis.
  7. Realiza las conexiones según el esquema.
  8. Sube el código, conecta el interruptor y la batería al shield.
  9. Ajusta la sensibilidad de los sensores IR (potenciómetro integrado).
  10. ¡Listo! El robot seguirá a quien tenga delante y retrocederá si se acerca a menos de 5 cm.

Código

// 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);
  // Barrido del servo para montaje del ultrasónico
  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)) {
    forward();
  } 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) {
    backward();
  }
  delay(50);
}

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

void forward() {
  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 backward() {
  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);
}

Esquemático

Robot seguidor de personas DIY con Arduino UNO y Motor Shield

Proceso de manufactura

  1. Raspoulette: Sistema autónomo de puerta de gallinero alimentado por energía solar – Prototipo
  2. Simple Pi Robot: Construye un Rover Autónomo 2‑WD con Raspberry Pi
  3. Construye tu Juego "UFO Attack" con Arduino UNO y Pantalla MAX7219
  4. Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
  5. Reloj 3D RGB Arduclock – Bluetooth, LED NeoPixel y RTC
  6. Librería Completa para Motor Paso a Paso Bipolar en Arduino
  7. Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
  8. Púa de Velocidad y Pedal Stomp para Guitarra DIY – Construye tu Propia Púa Motorizada Impresa en 3D
  9. Entendiendo los Motores Lineales: De Energía Eléctrica a Movimiento Lineal Preciso
  10. Motores servo: funcionamiento, tipos y por qué son importantes
  11. Motores de Relectancia Variable: Tipos, Funcionamiento y Aplicaciones