Proyecto: Construcción y Programación de un Robot de Evasión de Obstáculos

Clase 36 de 38Curso Fundamentos de Desarrollo de Hardware con Arduino

Resumen

Construye un robot evasor con Arduino que detecta obstáculos y cambia de trayectoria con un flujo de trabajo claro: del hardware esencial a la programación con PWM y puente H. Aprende a organizar pines, definir inputs y outputs, y estructurar funciones para el movimiento de forma simple y replicable.

¿Qué hardware se necesita y cómo se arma con Arduino?

Para el movimiento y la detección se combinan componentes accesibles. La base puede ser una placa plástica o madera con un protoboard montado. El objetivo: detectar un objeto con un sensor Pololu y evitarlo cambiando de ruta, usando tracción con caja de reducción.

  • Sensor de presencia Pololu: tres pines (alimentación, tierra y salida). Entrega 0 cuando hay objeto y 1 cuando no hay objeto.
  • Kit Tamiya de caja de reducción: multiplica el torque con engranes y lleva el movimiento a las llantas.
  • Rueda loca al frente: permite sostén y maniobra del chasis.
  • Cinta doble faz: ideal para prototipado rápido y limpio.
  • Puente H L293D: necesario para invertir el sentido de giro de los motores.
  • Batería de 9 V: suficiente para alimentar sin usar recargables.
  • Arduino y protoboard: base de conexiones y control.

La lógica de evasión se implementa en código: cuando el sensor detecta (0), el robot evita; cuando no detecta (1), mantiene la trayectoria. La “magia” está en programar movimientos y decisiones simples pero efectivos.

¿Cómo organizar pines, PWM y entradas/salidas en el sketch?

Se parte de un sketch nuevo guardado como “robotsito” en minúsculas: nombre claro, sin gritos. La configuración declara el sensor, un botón de inicio, los pines para el sentido de giro de cada motor y los pines PWM para velocidad. Se prioriza el orden: usar PWM 10 y 11 para tenerlos consecutivos y separar los pines de dirección.

  • Sensor digital en el pin 2.
  • Botón de inicio en el pin 7.
  • Dirección de motores: M1A en 3, M1B en 4, M2A en 5, M2B en 6.
  • Velocidad con PWM en 10 y 11.
  • Nota práctica: los pines PWM no se declaran como output para evitar sobredefinir.

¿Cómo declarar constantes y pines con claridad?

Se usa const int para mapear pines a nombres legibles. Luego, con pin mode se definen input y output en grupos ordenados.

// Mapeo de pines
const int sensorUno   = 2;   // Sensor Pololu: 0 si detecta, 1 si no
const int botonUno    = 7;   // Botón de inicio

// Dirección de motores con L293D
const int motorUnoA   = 3;
const int motorUnoB   = 4;
const int motorDosA   = 5;
const int motorDosB   = 6;

// Velocidad (PWM)
const int PWM1        = 10;  // PWM motor 1
const int PWM2        = 11;  // PWM motor 2

void setup() {
  // Entradas
  pinMode(sensorUno, INPUT);
  pinMode(botonUno,  INPUT);

  // Salidas: dirección de motores
  pinMode(motorUnoA, OUTPUT);
  pinMode(motorUnoB, OUTPUT);
  pinMode(motorDosA, OUTPUT);
  pinMode(motorDosB, OUTPUT);

  // PWM: se usan con analogWrite, sin pinMode OUTPUT explícito
}

void loop() {
  // Estructura principal: leer sensor/botón, mover o evadir
}

¿Qué estructura de programa conviene preparar?

Se propone un esqueleto claro: configuración en setup, ciclo en loop y funciones auxiliares. Se planifica crear funciones específicas para el movimiento: girar a la izquierda y girar a la derecha. Además, se usará una única velocidad en todo el proyecto para simplificar validaciones.

  • Leer botón para iniciar el prototipo.
  • Leer sensor Pololu y decidir: seguir o evadir.
  • Activar dirección con M1A/M1B y M2A/M2B.
  • Ajustar velocidad con PWM 10 y 11.

¿Qué habilidades y conceptos clave se refuerzan con este proyecto?

Este ejercicio concentra fundamentos de robótica y control con Arduino, útiles para prototipos funcionales y económicos.

  • Puente H L293D: invierte sentido de giro de motores de forma segura.
  • Señal digital del sensor: 0 con objeto, 1 sin objeto.
  • Organización de pines: separar dirección y PWM para claridad.
  • PWM para velocidad: una sola velocidad estable durante el desarrollo.
  • Estructura de sketch: declarar constantes, definir inputs/outputs con pin mode y crear funciones de movimiento.
  • Prototipado rápido: cinta doble faz, base rígida y rueda loca para estabilidad.
  • Ahorro práctico: batería de 9 V estándar, sin recargables.

¿Te gustaría que profundicemos en la lógica de evasión o en las funciones de giro? Comparte tus dudas o ideas para mejoras creativas del chasis y el cableado.