Ruta de construcciónPrincipianteUna tarde

Construye un robot controlado por móvil con Bluetooth o Wi-Fi

Un coche robot conducido desde tu smartphone vía Bluetooth o Wi-Fi, que frena automáticamente en cuanto se interrumpe la comunicación inalámbrica.

Esquema técnico de Construye un robot controlado por móvil con Bluetooth o Wi-FiCLEARANCE FIELD

Qué vas a construir

Un coche robot que manejas directamente desde tu teléfono móvil: vía Bluetooth empleando un módulo HC-05, o vía Wi-Fi mediante un microcontrolador ESP32 que aloja su propia página web de control táctil.

Es el proyecto más amigable y accesible del catálogo: sin formulaciones matemáticas complejas ni algoritmos de control críticos, donde las causas de fallo son inmediatamente visibles. Además, enseña una lección de seguridad que todo robot autónomo necesita: cómo reaccionar cuando se pierde el control de la comunicación.

Comparativa de las dos tecnologías de radio

Parámetro HC-05 (Bluetooth) ESP32 (Wi-Fi)
Hardware adicional Módulo externo y divisor resistivo en RX Ninguno: el transceptor está integrado en el SoC
Software en el smartphone App de terminal serie Bluetooth Cualquier navegador web estándar
Alcance en línea de visión Aprox. 10 m Más de 30 m en exteriores
Acceso a Internet en el móvil Se mantiene activo Se pierde al conectarse al punto de acceso local
Escenario recomendado Primera incursión en robótica inalámbrica Demostraciones públicas y proyectos compartidos

Ambas alternativas son válidas. El HC-05 representa el camino más rápido para ver el robot en movimiento; el ESP32 ofrece una experiencia de usuario superior, ya que basta con decir “conéctate a esta red Wi-Fi y abre esta dirección” sin requerir la instalación de ningún software en el dispositivo del usuario.

Lista de materiales (BOM)

Existen dos rutas constructivas y solo precisas escoger una de ellas. Opta por Bluetooth si ya dispones de un Arduino Uno; elige Wi-Fi si vas a adquirir los componentes desde cero.

Componente Opción Bluetooth Opción Wi-Fi Coste aprox.
Microcontrolador Arduino Uno ESP32 5–8 $
Transceptor de radio Módulo HC-05 Integrado en el chip 4 $ / 0 $
Adaptación de niveles 1 kΩ + 2 kΩ en pin RX del módulo Divisor para sensores de 5 V 0.10 $
Controlador de motores 1 unidad 1 unidad 2–4 $
Motorreductores TT 2 unidades 2 unidades 4 $
Chasis 2WD 1 unidad 1 unidad 6–10 $
Pack de batería 1 unidad 1 unidad 6 $
Aplicación requerida en el móvil Sí (terminal serie Bluetooth) No (cualquier navegador) —

Coste total estimado: aproximadamente 25–35 $ en cualquiera de las dos configuraciones.

La diferencia decisiva no es económica, sino de experiencia de usuario. El HC-05 establece un flujo de bytes serie continuo, exigiendo un emulador en el smartphone capaz de enviar caracteres. El ESP32 funciona como servidor web HTTP, de forma que cualquier persona con un navegador web moderno puede interactuar con una botonera visual sin configuraciones previas.

Orden de montaje recomendado

1 — Valida la tracción en banco de trabajo. Conecta motores, controlador y portapilas con las ruedas suspendidas en el aire, sin módulos de radio. Sigue el tutorial de control de motores CC con PWM y verifica avance, retroceso y ambos giros con instrucciones fijas en el código. Depurar simultáneamente la radio y la electrónica de potencia complica innecesariamente la resolución de problemas.

2 — Conecta la radio y comprueba el eco. Cablea el HC-05 o levanta el punto de acceso en el ESP32, y confirma la transmisión bidireccional de texto antes de asociarla al movimiento mecánico.

3 — Define un protocolo de control unificado. Emplea una estructura simple de comando y parámetro delimitada por salto de línea (\n). Procesa el comando solo cuando el terminador haya llegado; suponer que recibir un byte inicial equivale al mensaje completo genera errores de lectura frecuentes.

4 — Implementa la parada de seguridad (deadman). Es el mecanismo más frecuentemente omitido y el más importante para la integridad del robot.

Temporizador de seguridad (deadman timeout)

Un robot inalámbrico mantiene el último estado ordenado indefinidamente. Si la consigna previa era “avance a máxima velocidad” y el operador sale del radio de cobertura, el robot continuará avanzando sin supervisión hasta colisionar.

Diagrama temporal. Se emite un tren de pulsos periódicos cada 100 ms mientras se presiona un botón, deteniéndose en la línea discontinua de pérdida de señal. Sin temporizador, la barra roja permanece en marcha descontrolada indefinidamente. Con temporizador de 400 ms, el robot cambia a estado detenido poco después del último comando recibido.
El flujo de órdenes cesa cuando se degrada el enlace, no cuando el usuario suelta el botón en pantalla: por ello el robot debe contar con un mecanismo de apagado autónomo por inactividad. Descargar SVG

La implementación de seguridad involucra dos condiciones simultáneas:

  • Retransmisión periódica desde el emisor. La interfaz móvil envía el comando activo recurrentemente cada 100 ms mientras el usuario sostiene pulsado el control.
  • Vigilancia temporal en el receptor. Si el robot no recibe ningún paquete válido durante ~400 ms, detiene los motores de inmediato:
if (millis() - lastCommandAt > 400) stop();

Con este esquema, soltar la pantalla, cerrar la pestaña del navegador, agotar la batería del teléfono o alejarse fuera del rango de alcance desencadenan el mismo comportamiento preventivo sin depender de un paquete de parada que podría no recibirse nunca.

Utiliza siempre millis() para esta lógica de control; un simple delay(200) en el bucle principal bloquea la recepción e impide verificar periódicamente la caducidad del enlace.

Consideraciones fundamentales de hardware

Alimentación limpia e independiente para la radio. Los transceptores inalámbricos demandan picos bruscos de corriente durante la transmisión. Compartir un raíl con motores genera caídas de tensión que reinician el microcontrolador, manifestándose como falsos cuelgues de software. Alimenta los motores directamente desde la batería a través del driver, manteniendo la lógica en un circuito estable.

Diagrama de conexionado. Un Arduino Uno conecta la línea TXD al pin D10 de un HC-05 de forma directa. La línea de retorno desde D11 al pin RXD del módulo pasa por un divisor resistivo con resistencias de 2 y 3.3 kilohmios para evitar aplicar 5 voltios a una entrada de 3.3 voltios.
La adaptación resistiva es imprescindible: aplicar 5 V directamente al pin RXD del módulo degrada su receptor de forma gradual e imperceptible hasta provocar fallos intermitentes. Descargar SVG

Protección de entradas de 3.3 V. El pin RX del HC-05 y todos los pines GPIO del ESP32 operan exclusivamente a 3.3 V. Conectar salidas de 5 V de Arduino sin un divisor resistivo provoca un daño térmico lento que deteriora la fiabilidad de la comunicación.

Validez del puente en H L298N en este entorno. La caída de tensión interna inherente a los transistores bipolares del L298N es crítica en robots seguidores de línea competitivos, pero en un vehículo controlado manualmente el conductor compensa la velocidad de manera intuitiva desde el mando, haciendo de este driver una opción económica y accesible.

Parámetros característicos de rendimiento

Parámetro evaluado Bluetooth (HC-05) Wi-Fi (ESP32)
Latencia de respuesta 20–60 ms 30–100 ms en red local
Alcance en línea de visión despejada ~10 m ~50 m (o la cobertura de la red)
Alcance atravesando una pared interior 3–5 m 15–25 m
Tiempo de enlace inicial tras encendido ~2 s tras vinculación ~5 s al conectar a la red Wi-Fi
Reconexión tras caída momentánea Manual en la mayoría de apps Automática por protocolo
Margen recomendado de deadman 300–500 ms 300–500 ms

El ajuste del temporizador de parada requiere equilibrio: si es excesivamente largo (por ejemplo, 1 segundo a 0.3 m/s), el vehículo recorrerá 30 cm descontrolado antes de frenar; si es excesivamente reducido (inferior a 250 ms), la fluctuación habitual de la red inalámbrica provocará microdetenciones no deseadas durante la conducción.

Evolución hacia la conducción autónoma

La arquitectura modular implementada separa con claridad el canal de recepción de órdenes de la actuación sobre los motores. Añadir un sensor de proximidad ultrasónico permite superponer una capa de seguridad donde el robot desestima órdenes que provoquen colisiones frontales, sentando las bases del robot esquivador de obstáculos.

Asimismo, disponer de un control manual fiable agiliza notablemente el desarrollo algorítmico, permitiendo posicionar el vehículo con precisión en cualquier punto del área de pruebas sin necesidad de manipularlo manualmente.

Hoja de ruta del proyecto

La ruta de construcción

Sigue el árbol tecnológico desde las piezas hasta un robot que funciona. Cada nodo se desbloquea cuando completas sus requisitos previos, y tu progreso se guarda en este dispositivo.

0 / 14 completados

100%
Componente

Añade los motores de tracción

Component

Ver componente
Componente

Añade el controlador de motores

Component

Ver componente
Ruta de aprendizaje

Control de motores

Learning path

Abrir ruta
Montaje

Hazlo seguro ante fallos (fail-safe)

Build

Objetivo

Condúcelo desde tu teléfono

Goal

Componentes

Tutoriales de esta ruta

Preguntas frecuentes

¿Debería utilizar Bluetooth o Wi-Fi para un coche robot?

El Bluetooth con un módulo HC-05 es más rápido de configurar y se empareja una sola vez, pero exige una app de terminal serie y su alcance ronda los diez metros. Un ESP32 por Wi-Fi no necesita ninguna aplicación instalada —sirve su propia web de control a cualquier navegador— y ofrece mayor cobertura, aunque el teléfono pierde el acceso a Internet móvil mientras permanezca conectado a la red local del robot. Para un primer proyecto, Bluetooth es la vía más directa; para realizar demostraciones a otras personas, la comodidad del servidor web del ESP32 compensa con creces el esfuerzo.

¿Por qué mi robot Bluetooth sigue avanzando tras soltar el botón en la pantalla?

Porque nunca recibió la orden de parada. Un robot conectado por cable se detiene al soltar el pulsador; uno inalámbrico continúa ejecutando indefinidamente la última instrucción recibida. La solución tiene dos partes: haz que el smartphone retransmita el comando activo cada 100 ms mientras se mantiene pulsado el botón, y programa el robot para detenerse automáticamente si no recibe paquetes durante unos cientos de milisegundos (temporizador deadman). De este modo, soltar el botón y perder cobertura provocan exactamente la misma detención segura.

¿Se puede dañar el HC-05 al conectarlo directamente a un Arduino?

Sí, en un pin específico. La circuitería lógica del módulo funciona a 3.3 V y su pin RX no tolera 5 V, por lo que transmitir directamente desde un pin digital de Arduino a 5 V estresa y degrada la entrada. Lo más engañoso es que el daño suele ser parcial: el módulo sigue emparejándose y enviando telemetría, pero corrompe o ignora los comandos que le transmites. Un simple divisor de tensión formado por dos resistencias en esa línea evita la avería.

¿Necesito una app móvil para controlar el robot desde mi teléfono?

Únicamente en el caso de Bluetooth. El HC-05 precisa un emulador de terminal serie Bluetooth en el móvil para abrir el puerto de comunicación. El ESP32 no requiere ninguna aplicación: genera su propio punto de acceso Wi-Fi y sirve una interfaz HTML5 responsive, permitiendo que cualquiera tome el control simplemente abriendo el navegador. Es la mayor ventaja práctica del ESP32 cuando deseas que terceros conduzcan el robot.

¿Puede un robot teledirigido por móvil conducirse también de forma autónoma?

Sí, y constituye la evolución idónea. La capa de comunicaciones inalámbricas es completamente independiente de la lógica de navegación reactiva, por lo que añadir sensores de proximidad permite que el robot desestime órdenes peligrosas (negándose a chocar contra un obstáculo aunque mantengas pulsado el botón de avance). Desarrollar primero el control manual facilita enormemente calibrar sensores más adelante al poder situar el robot en el punto exacto deseado.