Le contexte
Tech Race est un projet réalisé en équipe au sein de l'école HETIC. L'objectif est de développer une application mobile permettant de contrôler un véhicule à distance via un réseau sans fil : pilotage en temps réel, prise de vidéos, visualisation de la télémétrie (vitesse, orientation) et participation à des courses, avec un mode où le véhicule suit une ligne au sol de manière autonome.
Le projet repose sur plusieurs dépôts (API backend, application mobile, programme embarqué du véhicule, modèle 3D). En équipe, j'ai participé au backend en Golang, au frontend en React Native, à la programmation du véhicule et j'ai mis en prod l'API pour réaliser une démo devant le jury : firmware en C++ sur microcontrôleur ESP32 pour la conduite, les capteurs et la communication avec l'application.
Côté véhicule, le firmware (Open Source, développé avec PlatformIO) fait se connecter l'ESP32 à un réseau WiFi existant. Une fois connecté, il reçoit les ordres en WebSocket et renvoie la télémétrie en MQTT vers le broker. Les commandes sont des JSON avec un identifiant de type (cmd) et une donnée associée (data), ce qui permet de piloter roues, LEDs, buzzer, flux vidéo, etc. sans détailler chaque ordre dans le protocole. La configuration réseau (WiFi, IP de la voiture, gateway, netmask) et le point d'accès WebSocket sont centralisés dans le code pour faciliter l'adaptation à un autre environnement.
Les enjeux pédagogiques étaient de s'adapter à des technologies nouvelles en intégrant un objet physique pour nous forcer à faire preuve d'adaptation car nos compétences sont habituellement axées sur le web pur. Ce projet a permis de mesurer les enjeux de l'intégration entre logiciel et matériel (MQTT, temps réel, télémétrie). Il ne faut pas oublier l'intérêt du travail en équipe sur une architecture multi-repos.
Mes réalisations :
- Contexte et objectifs :
- Projet final HETIC réalisé en équipe ; contrôle à distance du véhicule depuis l'application mobile
- Télémétrie en temps réel (vitesse, orientation) et deux modes de course : pilotage manuel et suiveur de ligne autonome
- Architecture multi-dépôts : API, app mobile, programme du véhicule, modèle 3D
- Backend (en équipe) :
- Golang : API de contrôle, relais de commandes et gestion des flux (MQTT, vidéo)
- MQTT (Mosquitto) : communication temps réel entre l'app, l'API et le véhicule
- PostgreSQL : persistance des données ; Docker pour l'environnement de développement
- Intégration Cloudinary pour l'upload et le partage des vidéos de course
- Application mobile (en équipe) :
- React Native : interface de pilotage et visualisation de la télémétrie
- Communication temps réel avec le véhicule via l'API et MQTT
- Véhicule et embarqué :
- Firmware C++ sur ESP32 (PlatformIO, projet Open Source) : connexion au WiFi puis réception des ordres en WebSocket, envoi de la télémétrie en MQTT vers le broker
- Protocole de commandes : JSON avec cmd (type d'ordre) et data (payload), couvrant roues, visage/ tête, LEDs, buzzer, activation du flux vidéo, etc.
- Configuration centralisée (WiFi, IP de la voiture, gateway, netmask, endpoint WebSocket) pour adapter le véhicule à un autre réseau
- Pilotage des 4 roues motrices, capteurs (distance, suivi de ligne), caméra embarquée
