Le contexte
Un constructeur d’instrumentation pour ULM développe un affichage tête haute : les données de vol — assiette, vitesse, altitude — sont projetées dans des lunettes connectées, pour que le pilote garde les yeux dehors plutôt que sur son tableau de bord.
Le matériel existait : une sonde qui produit les données de vol, et deux modèles de lunettes de fabricants différents. Il manquait l’application qui fait tenir l’ensemble.
L’enjeu
Ce projet cumulait trois difficultés qu’on rencontre rarement ensemble.
Trois périphériques Bluetooth, simultanément. La sonde émet, les lunettes reçoivent, et les trois doivent être découverts, appairés et reconnectés sans que le pilote ait à s’en occuper. Un appairage manuel avant chaque vol aurait suffi à disqualifier le produit.
Aucune bibliothèque existante pour l’affichage. Un horizon artificiel — le niveau à bulle du pilote — n’existe pas en Flutter. Il fallait le construire à partir des données brutes d’attitude fournies par la sonde.
Un contexte où le bug se paie cher. Un affichage figé ou une donnée fausse en vol n’est pas un incident de confort.
Ce que nous avons fait
Le projet a commencé par une phase de cadrage réelle : comprendre le matériel, reprendre la documentation existante, et surtout redéfinir le périmètre avec le client avant d’écrire du code. Les fonctionnalités attendues ont été retravaillées ensemble, puis avec les designers.
Ensuite seulement :
- Une architecture MVVM avec gestion d’état réactive, choisie parce que l’application est fondamentalement un flux de données temps réel qui doit être redistribué vers le bon périphérique selon la configuration en cours.
- Une phase de validation technique avant engagement. Avant de bâtir sur une bibliothèque Bluetooth, nous avons développé une maquette fonctionnelle pour vérifier sa compatibilité réelle avec la sonde et les deux modèles de lunettes. Découvrir une incompatibilité au bout de trois mois aurait coûté le projet.
- Découverte et connexion automatiques des trois types de périphériques dès le lancement : le pilote allume, ça se connecte.
- Un horizon artificiel développé sur mesure à partir des données d’attitude, puisque rien d’existant ne convenait.
- Un routage des données configurable, l’application décidant vers quel modèle de lunettes envoyer quoi selon la mise en page choisie.
Autour de l’application, nous avons également livré une API et un serveur de mise à jour à distance du firmware.
Le résultat
L’application est développée en continu depuis 2024 et reste en évolution active.
Ce qui a rendu ce projet possible, c’est la séquence : cadrage, maquette de validation, puis développement. Sur un projet où le matériel impose ses règles, c’est l’ordre qui protège le budget — la maquette Bluetooth de la première semaine a validé un choix dont dépendait tout le reste.
Aperçus
Client couvert par un accord de confidentialité