Robot seguidor de personas DIY con Arduino UNO y Motor Shield
Componentes y materiales
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Adafruit Motor Shield (o L293D) | 1 |
| Servomotor SG90 | 1 |
| Sensor IR (genérico) | 2 |
| Sensor ultrasónico HC-SR04 | 1 |
| Cables jumpers | 1 set |
| Motores DC 12V con ruedas | 4 |
| Kit ruedas y motores micro (Pimoroni) | 4 |
| Batería 9V | 1 |
| Interruptor basculante SPST | 1 |
Aplicaciones y servicios
- Arduino IDE
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
- 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.
- Corta una base de cartón y fija los 4 motores con ruedas.
- Coloca los sensores IR en la parte frontal del chasis.
- Fija el servomotor en la base.
- Monta el sensor ultrasónico en una caja pequeña con un asa y fíjala al servomotor.
- Coloca el Arduino y el shield de motor sobre el chasis.
- Realiza las conexiones según el esquema.
- Sube el código, conecta el interruptor y la batería al shield.
- Ajusta la sensibilidad de los sensores IR (potenciómetro integrado).
- ¡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

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