El contexto
Tech Race es un proyecto en equipo en la escuela HETIC. El objetivo es desarrollar una aplicación móvil para controlar a distancia un vehículo por red inalámbrica: pilotaje en tiempo real, captura de vídeo, visualización de telemetría (velocidad, orientación) y participación en carreras, con un modo en el que el vehículo sigue de forma autónoma una línea en el suelo.
El proyecto se reparte en varios repositorios (API backend, app móvil, firmware del vehículo, modelo 3D). En equipo, participé en el backend en Golang, el frontend en React Native, la programación del vehículo y desplegué la API para una demo ante el jurado: firmware en C++ en microcontrolador ESP32 para la conducción, los sensores y la comunicación con la aplicación.
En el vehículo, el firmware (código abierto, desarrollado con PlatformIO) conecta el ESP32 a una red WiFi existente. Una vez conectado, recibe órdenes por WebSocket y envía la telemetría en MQTT al broker. Las órdenes son JSON con un identificador de tipo (cmd) y un dato asociado (data), lo que permite pilotar ruedas, LEDs, zumbador, flujo de vídeo, etc. sin detallar cada orden en el protocolo. La configuración de red (WiFi, IP del coche, gateway, máscara) y el endpoint WebSocket están centralizados en el código para facilitar la adaptación a otro entorno.
El reto pedagógico era adaptarse a tecnologías nuevas integrando un objeto físico para obligarnos a ser flexibles, porque nuestras competencias suelen orientarse al web puro. El proyecto permitió valorar los retos de la integración software–hardware (MQTT, tiempo real, telemetría). No hay que olvidar el valor del trabajo en equipo sobre una arquitectura multi-repositorio.
Lo que aprendí :
- Contexto y objetivos:
- Proyecto final HETIC en equipo; control remoto del vehículo desde la aplicación móvil
- Telemetría en tiempo real (velocidad, orientación) y dos modos de carrera: pilotaje manual y seguidor de línea autónomo
- Arquitectura multi-repositorio: API, app móvil, firmware del vehículo, modelo 3D
- Backend (en equipo):
- Golang: API de control, retransmisión de órdenes y gestión de flujos (MQTT, vídeo)
- MQTT (Mosquitto): comunicación en tiempo real entre la app, la API y el vehículo
- PostgreSQL: persistencia de datos; Docker para el entorno de desarrollo
- Integración con Cloudinary para subir y compartir vídeos de carrera
- Aplicación móvil (en equipo):
- React Native: interfaz de pilotaje y visualización de telemetría
- Comunicación en tiempo real con el vehículo vía API y MQTT
- Vehículo y embebido:
- Firmware C++ en ESP32 (PlatformIO, proyecto open source): conexión WiFi, recepción de órdenes por WebSocket, envío de telemetría en MQTT al broker
- Protocolo de órdenes: JSON con cmd (tipo de orden) y data (payload), cubriendo ruedas, cabeza, LEDs, zumbador, activación del flujo de vídeo, etc.
- Configuración centralizada (WiFi, IP del coche, gateway, máscara, endpoint WebSocket) para adaptar el vehículo a otra red
- Tracción en las cuatro ruedas, sensores (distancia, seguimiento de línea), cámara embarcada
