The context
Tech Race is a team project at HETIC school. The goal is to build a mobile app to remotely control a vehicle over a wireless network: real-time driving, video capture, telemetry display (speed, orientation), and races—including a mode where the vehicle autonomously follows a line on the ground.
The project spans several repositories (backend API, mobile app, vehicle firmware, 3D model). As a team, I contributed to the Golang backend, the React Native frontend, vehicle programming, and deployed the API for a jury demo: C++ firmware on an ESP32 microcontroller for driving, sensors, and communication with the app.
On the vehicle side, the firmware (open source, built with PlatformIO) connects the ESP32 to an existing WiFi network. Once connected, it receives commands over WebSocket and sends telemetry to the broker via MQTT. Commands are JSON objects with a type id (cmd) and associated data, enabling control of wheels, LEDs, buzzer, video stream, etc. without spelling out every command in the protocol. Network settings (WiFi, vehicle IP, gateway, netmask) and the WebSocket endpoint are centralized in code to make it easier to adapt to another environment.
The learning goal was to adapt to new technologies by integrating a physical device—pushing us to be flexible because our skills are usually web-focused. The project highlighted software–hardware integration (MQTT, real-time, telemetry). Teamwork on a multi-repo architecture was also valuable.
What I learn :
- Context and goals:
- Final HETIC team project; remote control of the vehicle from the mobile app
- Real-time telemetry (speed, orientation) and two race modes: manual driving and autonomous line follower
- Multi-repository architecture: API, mobile app, vehicle firmware, 3D model
- Backend (team):
- Golang: control API, command relay, and stream handling (MQTT, video)
- MQTT (Mosquitto): real-time communication between the app, API, and vehicle
- PostgreSQL: data persistence; Docker for the development environment
- Cloudinary integration for uploading and sharing race videos
- Mobile app (team):
- React Native: driving UI and telemetry visualization
- Real-time communication with the vehicle via the API and MQTT
- Vehicle and embedded:
- C++ firmware on ESP32 (PlatformIO, open source project): WiFi connection, WebSocket command reception, MQTT telemetry to the broker
- Command protocol: JSON with cmd (order type) and data (payload), covering wheels, head, LEDs, buzzer, video stream activation, etc.
- Centralized configuration (WiFi, vehicle IP, gateway, netmask, WebSocket endpoint) to adapt the vehicle to another network
- Four-wheel drive, sensors (distance, line tracking), onboard camera
