Construye tu Primer Robot con Arduino: Guía Completa para Principiantes
Componentes y Suministros
- Arduino UNO × 1
- Shield Motor Adafruit L293D × 1
- Sensor ultrasónico HC-SR04 × 1
- Módulo Bluetooth HC-05 × 1
- Motores con reductor (geared) × 2
- Ruedas × 2
- Ruedas locas (caster) × 2
- Batería 9V (genérica) × 3
- Conector batería 9V × 3
- Cables hembra-hembra × 8
- Caja de plástico × 1
Herramientas y Máquinas Necesarias
- Soldador (genérico)
- Pistola de silicona (genérica)
- Destornillador
Aplicaciones y Servicios Online
- App Bluetooth Electronics (control smartphone)
- Arduino IDE
- Librería Adafruit Motor Shield
Sobre el Proyecto
Si eres principiante en Arduino y planeas hacer tu primer robot, este es tu tutorial. Mira las imágenes de lo que vas a construir hoy.


En este tutorial mostraré cómo hacer un robot Arduino con diferentes funcionalidades. Aprenderemos el uso de diferentes programas para distintas funciones: robot controlado por smartphone, evitador de obstáculos, seguidor de paredes y solucionador de laberintos. O puedes hacer solo una función.
Materiales y Herramientas

Paso 2: Construcción del Chasis
- Taladra dos agujeros para los motores.
- Conecta los dos motores.
- Haz tres agujeros para las ruedas locas.
- Conecta las ruedas locas.
- Mide y marca el diámetro correcto, luego instala motores y ruedas locas.


Baterías
Conecta las baterías en paralelo con un interruptor según el diagrama.

Pega las baterías dentro de la caja. Monta dos baterías de 9V sobre las ruedas locas, cableadas en paralelo con interruptor.
Conexión Arduino y Motor Shield
- Coloca el motor shield sobre el Arduino.
- Conecta los cables de batería a los terminales PWR del shield.
- Conecta los motores al shield: Motor izquierdo → M1, Motor derecho → M3.
- Retira el jumper del puerto de alimentación externa.
- Conecta el cable de batería a ext pwr del shield.

Alimentación del Arduino
Haz dos agujeros para acceder al puerto USB y entrada DC del Arduino. Toma otra batería de 9V, conecta un clip a un jack DC macho, conéctalo a la entrada DC del Arduino para alimentarlo. Coloca la batería entre los motores y el Arduino.
Módulo Bluetooth e Interruptor
Conecta el módulo Bluetooth al Arduino como se muestra en el diagrama y colócalo dentro de la caja. Haz un agujero para montar el interruptor en la parte trasera.
Cableado Bluetooth:- TX del Bluetooth → RX del Arduino
- RX del Bluetooth → TX del Arduino
- VCC del Bluetooth → 5V del Arduino
- GND del Bluetooth → GND del Arduino
- Pines State y Key sin usar
Diagrama General de Conexiones

Montaje Sensor Ultrasónico
Pega una pieza plástica en forma de 'L' al sensor ultrasónico y fíjala en la parte superior de la caja. Conecta los cables jumper según el diagrama.
Cableado Sensor Ultrasónico:- VCC → +5V Arduino
- GND → GND Arduino
- Trig → Pin Analógico 1 (A1)
- Echo → Pin Analógico 0 (A0)
Último Paso: Códigos Arduino y App Bluetooth
Sube el "Final Sketch" proporcionado en la sección de código. Si hay errores, asegúrate de tener instalada la librería AFMotor.
He mostrado programas para: robot evitador de obstáculos, seguidor de paredes, controlado por Bluetooth, y al final los he combinado los tres. Mira el video para más detalles.
Inicio con la App Bluetooth
Diversión con Seguidor de Paredes y Evitador de Obstáculos
Visita mi blog: robotechmaker.com
Códigos
1. Sketch Controlado por Bluetooth
#include <AFMotor.h>
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);
char dataIn = 'S';
char determinant, det;
int vel = 0;
void setup() {
Serial.begin(9600);
motorRight.setSpeed(0); motorLeft.setSpeed(0);
motorRight.run(RELEASE); motorLeft.run(RELEASE);
}
void loop() {
det = check();
switch (det) {
case 'F': // Adelante
motorRight.setSpeed(vel); motorLeft.setSpeed(vel);
motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'B': // Atrás
motorRight.setSpeed(vel); motorLeft.setSpeed(vel);
motorRight.run(BACKWARD); motorLeft.run(BACKWARD); break;
case 'L': // Izquierda
motorRight.setSpeed(vel); motorLeft.setSpeed(vel/4);
motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'R': // Derecha
motorRight.setSpeed(vel/4); motorLeft.setSpeed(vel);
motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'I': // Adelante-Derecha
motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel);
motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'J': // Atrás-Derecha
motorRight.setSpeed(vel/2); motorLeft.setSpeed(vel);
motorRight.run(BACKWARD); motorLeft.run(BACKWARD); break;
case 'G': // Adelante-Izquierda
motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2);
motorRight.run(FORWARD); motorLeft.run(FORWARD); break;
case 'H': // Atrás-Izquierda
motorRight.setSpeed(vel); motorLeft.setSpeed(vel/2);
motorRight.run(BACKWARD); motorLeft.run(BACKWARD); break;
case 'S': // Parar
motorRight.run(RELEASE); motorLeft.run(RELEASE); break;
}
}
int check() {
if (Serial.available() > 0) {
dataIn = Serial.read();
// Mapeo de comandos: F,B,L,R,I,J,G,H,S, 0-9 (velocidad), q (max), U/u,W/w,V/v,X/x (luces/claxon)
return determinant;
}
return 'S';
}
2. Sketch Final (Combinado: Bluetooth + Evitador + Seguidor Paredes)
#include <AFMotor.h>
#define trigPin 14
#define echoPin 15
AF_DCMotor motorRight(1, MOTOR12_64KHZ);
AF_DCMotor motorLeft(3, MOTOR12_64KHZ);
char dataIn = 'S';
char determinant, det;
int vel = 255;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
motorRight.setSpeed(0); motorLeft.setSpeed(0);
motorRight.run(RELEASE); motorLeft.run(RELEASE);
}
void loop() {
det = check();
switch (det) {
case 'F': case 'B': case 'L': case 'R': case 'I': case 'J': case 'G': case 'H': case 'S':
// Control Bluetooth (igual que sketch anterior)
break;
case 'm': // Seguidor de paredes
long duration, distance;
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 30) { // Pared detectada
motorRight.setSpeed(vel); motorLeft.setSpeed(0);
motorRight.run(FORWARD); motorLeft.run(RELEASE);
delay(500);
} else { // Sin pared, girar para buscarla
motorRight.setSpeed(0); motorLeft.setSpeed(vel);
motorRight.run(RELEASE); motorLeft.run(FORWARD);
delay(15);
}
break;
case 'b': // Evitador de obstáculos
long Aduration, Adistance;
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Aduration = pulseIn(echoPin, HIGH);
Adistance = (Aduration/2) / 29.1;
if (Adistance < 25) { // Obstáculo cerca
motorRight.setSpeed(vel); motorLeft.setSpeed(vel);
motorLeft.run(BACKWARD); motorRight.run(FORWARD); // Girar
} else { // Camino libre
motorRight.setSpeed(vel); motorLeft.setSpeed(vel);
motorRight.run(FORWARD); motorLeft.run(FORWARD);
delay(15);
}
break;
}
}
3. Sketch Solo Evitador de Obstáculos
Código simplificado que solo evita obstáculos usando el sensor ultrasónico.
4. Sketch Solo Seguidor de Paredes
Código simplificado que mantiene una distancia constante con la pared.
Esquemáticos

Proceso de manufactura
- Mejores prácticas de rastreo de activos: Desbloqueando el valor de tus datos de activos
- Los mejores accesorios para aprovechar al máximo tu Raspberry Pi
- Kit de Robot de Navegación Interior Inteligente para Proyectos Arduino
- Pasos Comprobados para Construir un Prototipo IoT Robusto
- CNC Wire EDM: La Solución Definitiva de Mecanizado de Precisión para su Taller
- Cómo Elegir la Fresadora-Taladro Ideal para sus Proyectos
- Optimice su Cadena de Suministro para Resiliencia y Eficiencia Hoy
- Soportes de motor explicados: Cómo elegir el mejor material para su vehículo
- Guía Completa de Productos Industriales Agrícolas Premier
- Marcas líderes de grúas: Guía experta para profesionales de la construcción
- Guía de Compra de Impresoras 3D para Talleres de Maquinado: Consejos y Opciones Expertas