Robot Rover FPV Controlado por Wi-Fi con Arduino y ESP8266 – Guía DIY
Componentes y Suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| Arduino Proto Shield | 1 |
| ESP8266 ESP-01 | 1 |
| Motor Paso a Paso 28BYJ-48 | 2 |
| Driver ULN2003 para Steppers | 1 |
| Dispositivo Android (cámara IP) | 1 |
| Resistencia 1k Ω | 1 |
| Resistencia 100k Ω | 2 |
| Power Bank (alimentación) | 1 |
| Ruedas 42x19mm con banda goma | 2 |
| Rueda Omni Bola Acero 49x20x32mm | 1 |
| Tornillos/Tuercas M2, M3, 5/32" (varios) | Set completo |
| Clip Palo Selfie (soporte móvil) | 1 |
| Soportes Aluminio 3x3cm | 2 |
| Lámina Acrílico 2mm | 1 |
Herramientas Necesarias
- Taladro
- Sierra Manual
Aplicaciones y Servicios Online
- App IP Webcam (Android)
- Autodesk Fusion 360 (diseño 3D)
- DraftSight (planos 2D)
- Arduino IDE
- Notepad++
Sobre el Proyecto
Este tutorial muestra cómo diseñar un rover robótico de dos ruedas controlado remotamente vía WiFi, usando Arduino UNO + ESP8266 + 2 motores paso a paso. Control desde navegador web con interfaz HTML. Smartphone Android transmite video/audio (FPV) a la interfaz.
Muchos kits robóticos comerciales no se ajustan a necesidades específicas o son caros. Aquí también enseño a construir estructura acrílica low-cost con herramientas básicas (sin impresora 3D ni láser).
Adaptable a otros proyectos (ej. "Robô da Alegria": hackaday.io, GitHub).
Paso 1: Herramientas
Sierra manual, destornillador, regla, cúter, taladro, lija.
Paso 2: Estructura Mecánica y Materiales
Diseño en 123D Design → planos 2D en DraftSight. Materiales: acrílico 2mm, ruedas, tornillos, rueda omni, clip selfie, soportes aluminio.
Construcción: cortar base → taladrar → montar con tornillos. Nota: eje motor > orificio rueda → usar pegamento o acoplamiento (improvisé uno de madera).
Paso 3: Corte Estructura
Imprimir plano 2D en papel adhesivo → pegar en acrílico → cortar con sierra o técnica "score & snap" (cúter + regla → marcar → romper). Lijar bordes.
Paso 4: Taladrado Base
Taladrar según plano (máscara adhesiva). Acrílico fácil de taladrar; sin taladro, usar cúter. Retirar máscara.
Paso 5: Montaje Estructura
Atornillar componentes según imágenes 3D. M3 para steppers, 5/32" para rueda frontal y clip móvil. Estructura lista.
Paso 6: Electrónica
- Arduino UNO, ESP8266, Proto Shield (o protoboard)
- Resistencias: 1kΩ (x2), 10kΩ (x1)
- Cables Dupont, 2 Steppers + ULN2003
- Power Bank → USB Arduino
Conectar según esquemático. Proto shield para versión compacta.
Paso 7: Código Arduino
IDE actualizado. Librería Stepper.h. Sin librería extra para ESP8266. Verificar baudrate ESP8266.
Descargar stepperRobot.ino, reemplazar XXXXX (SSID) y YYYYY (password). Subir a Arduino.
Paso 8: Android IP Cam
Instalar IP Webcam en smartphone robot.
Paso 9: Montar Electrónica en Robot
Fijar circuitos arriba con tornillos M1. Power bank en parte trasera (cinta doble cara). Móvil en clip.
Paso 10: Interfaz Web Control
Descargar interface.rar, extraer, abrir en Firefox. Formulario para IPs: ESP8266 y servidor video (IP Webcam). Botón test (giro continuo). Teclas flechas: mover/rotar.
Paso 11: Uso
- Reiniciar Arduino → Monitor Serie para ver IP asignada al ESP8266
- Abrir HTML en Firefox → ingresar IP ESP8266
- Desconectar USB, conectar Power Bank → esperar reconexión WiFi
- Lanzar IP Webcam en móvil robot → ingresar IP video en interfaz → conectar
- Reducir resolución video en app si hay lag
- Mantener flechas pulsadas para mover/rotar ¡y explorar!
Código Arduino
#include <SoftwareSerial.h>
#include <Stepper.h>
SoftwareSerial esp8266(3, 2); // RX=3, TX=2
#define DEBUG true
const int stepsPerRevolution = 500;
int state = 5;
Stepper rightStepper(stepsPerRevolution, 8,10,9,11);
Stepper leftStepper(stepsPerRevolution, 4,6,5,7);
void setup() {
Serial.begin(9600);
esp8266.begin(19200); // Ajustar a baudrate de tu ESP8266
sendData("AT+RST\r\n", 2000, DEBUG);
sendData("AT+CWMODE=1\r\n", 1000, DEBUG);
sendData("AT+CWJAP=\"XXXXX\",\"YYYYY\"\r\n", 2000, DEBUG);
while(!esp8266.find("OK")) {}
sendData("AT+CIFSR\r\n", 1000, DEBUG);
sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);
sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
rightStepper.setSpeed(60);
leftStepper.setSpeed(60);
}
void loop() {
if (esp8266.available()) {
if (esp8266.find("+IPD,")) {
String msg;
esp8266.find("?");
msg = esp8266.readStringUntil(' ');
String command = msg.substring(0, 3);
String valueStr = msg.substring(4);
int value = valueStr.toInt();
if (DEBUG) { Serial.println(command); Serial.println(value); }
if (command == "cm1") state = 1; // Adelante
else if (command == "cm2") state = 2; // Atrás
else if (command == "cm3") state = 3; // Derecha
else if (command == "cm4") state = 4; // Izquierda
else if (command == "cm5") state = 5; // Parar
}
}
// Control motores según estado
if (state == 1) { rightStepper.step(1); leftStepper.step(-1); }
else if (state == 2) { rightStepper.step(-1); leftStepper.step(1); }
else if (state == 3) { rightStepper.step(1); leftStepper.step(1); }
else if (state == 4) { rightStepper.step(-1); leftStepper.step(-1); }
// state 5 = nada
}
String sendData(String cmd, const int timeout, boolean debug) {
String response = "";
esp8266.print(cmd);
long int time = millis();
while ((time + timeout) > millis()) {
while (esp8266.available()) {
char c = esp8266.read();
response += c;
}
}
if (debug) Serial.print(response);
return response;
}
Interfaz Web y Esquemáticos
Interfaz HTML/JS (descarga interface.rar). Esquemáticos: circuito, protoboard, archivo Fritzing (wistepper-rev1.fzz).
Archivos CAD
- Diseño 123D:
robot.123dx - Plano 2D base:
base.dwg
Proceso de manufactura
- Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
- Construya un robot con streaming de vídeo controlado por Internet con Arduino y Raspberry Pi
- Robot de Desinfección UV con Arduino Mega: Sistema Germicida Controlado Remotamente
- Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
- Integración del sensor de huella capacitivo DFRobot (ID809) con Arduino o ESP8266
- Controla tu Roomba Create 2 con Arduino y Android: Guía Completa
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
- Construye un robot controlado por voz con Arduino Nano
- Evaluación de la salud de plantas con TinyML: Guía práctica
- Control Preciso de Servo con Arduino y MPU6050 (SG90 / MG996R)