Pathfinder: Kit robot evasor de obstáculos con Arduino UNO – Componentes y guía
Componentes y materiales
| Arduino UNO | ×1 |
| Sensor ultrasónico HC-SR04 | ×1 |
| Batería Li-Ion 1000 mAh | ×2 |
| LED RGB difuso cátodo común | ×1 |
| Zumbador (buzzer) | ×1 |
| Resistencia 330 Ω | ×3 |
| Cable USB-A a B | ×1 |
| Cables jumpers | ×20 |
Herramientas y máquinas
- Arduino Materia 101 (impresora 3D para chasis)
- Destornillador
Aplicaciones y servicios online
- Arduino IDE
- Autodesk Fusion 360 (diseño chasis)
Sobre el proyecto
Sinopsis
Diseño de robot autónomo evasor de obstáculos basado en Arduino UNO y Adafruit Motor Shield. Detecta objetos en su trayectoria y navega rodeándolos tomando decisiones. El sensor ultrasónico montado en micro-servo permite barrido de 180° frontal para mayor precisión. Integra zumbador y LED RGB para indicar estado y controlar velocidad de motores DC en 4 situaciones. Totalmente autónomo, sin control externo. Aplicable a operaciones militares y asistencia humanitaria mejorando detección en entornos diversos.
Multimedia






Interpretación técnica
Librerías: AFMotor.h, Servo.h
Pines definidos:
BuzzPIN A0 // Zumbador
TrigPIN A1 // Trigger ultrasónico
EchoPIN A2 // Echo ultrasónico
LEDBPIN A3 // LED Azul
LEDGPIN A4 // LED Verde
LEDRPIN A5 // LED Rojo
DCMROFF 25 // Offset calibración motores
Funciones principales:
- Detectar objetos por rangos de distancia predefinidos.
- Buscar nueva dirección libre (barrido servo 180°).
- Indicar detección (sonido/luz) y adaptar velocidad.
Todo autónomo. El robot varía de otros por: indicación luz/sonido, control velocidad motores, maniobra intensa con barrido 180°. Plataforma: Arduino UNO Rev3 + Arduino IDE v1.8.5. Con cámara y wireless futuro, útil para vigilancia o asistencia a discapacitados visuales/auditivos.

Youth Zest Project Showcase
Código
#include <AFMotor.h>
#include <Servo.h>
#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25
AF_DCMotor M1(1, MOTOR12_64KHZ);
AF_DCMotor M2(2, MOTOR12_64KHZ);
Servo SER1;
int Search() {
float Duration = 0.0, CM = 0.0;
digitalWrite(TrigPIN, LOW);
delayMicroseconds(2);
digitalWrite(TrigPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPIN, LOW);
Duration = pulseIn(EchoPIN, HIGH);
CM = Duration / 58.8;
return (int)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);
}
void loop() {
SER1.write(80); // Centro
delay(100);
Distance = Search();
if (Distance < 30) { // Obstáculo < 30 cm
digitalWrite(BuzzPIN, HIGH);
digitalWrite(LEDBPIN, LOW);
digitalWrite(LEDGPIN, LOW);
digitalWrite(LEDRPIN, HIGH); // Rojo
M1.setSpeed(100); M2.setSpeed(100);
ChangePath();
}
else if (Distance >= 30 && Distance < 60) { // 30-60 cm
digitalWrite(BuzzPIN, LOW);
digitalWrite(LEDBPIN, HIGH); // Azul
digitalWrite(LEDGPIN, LOW);
digitalWrite(LEDRPIN, LOW);
M1.setSpeed(150); M2.setSpeed(150);
Forward();
}
else if (Distance >= 60 && Distance < 90) { // 60-90 cm
digitalWrite(BuzzPIN, LOW);
digitalWrite(LEDBPIN, LOW);
digitalWrite(LEDGPIN, HIGH); // Verde
digitalWrite(LEDRPIN, LOW);
M1.setSpeed(200); M2.setSpeed(200);
Forward();
}
else { // > 90 cm libre
digitalWrite(BuzzPIN, LOW);
digitalWrite(LEDBPIN, HIGH); // Blanco (RGB todos HIGH)
digitalWrite(LEDGPIN, HIGH);
digitalWrite(LEDRPIN, HIGH);
M1.setSpeed(250); M2.setSpeed(250);
Forward();
}
}
void ChangePath() {
Stop(); Backward(); Stop();
SER1.write(12); delay(500); RightDistance = Search(); delay(500);
SER1.write(160); delay(1000); LeftDistance = Search(); delay(500);
SER1.write(80); 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); }
Piezas personalizadas
Chasis robot (diseñado en Fusion 360, imprimible en 3D)
Esquemáticos
Diagrama de conexiones del robot autónomo.
Proceso de manufactura
- Circuitos integrados (CI): chips compactos y potentes que impulsan la electrónica moderna
- Transferir datos de temperatura y humedad entre dos Arduinos usando Firebase
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
- MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
- Kit MOSMusic: Control de Iluminación de Alta Potencia Sincronizada con Música vía MOSFET y Arduino
- Componentes Esenciales de una Taladradora: Visión General Completa
- Componentes Clave del Motor de Combustión Interna
- Dominando la sintaxis de netlist SPICE: Nomenclatura de componentes, elementos pasivos y activos, y definición de fuentes
- Microelectrónica Explicada: La Ciencia de la Electrónica Miniatura