Aller au contenu principal

FTEX

Une solution unique pour la configuration des contrôleurs de vélos électriques

QT, Python, Développement en intégration continue avec GitHub Actions
e-Bike sur une montagne

Le contexte

Notre client FTEX est une entreprise montréalaise qui conçoit des solutions avancées de gestion de l’énergie et un système d’exploitation pour vélos électriques. Son objectif? Fabriquer des contrôleurs de moteur efficaces et intelligents ainsi que des modules de communication IoT pour les marques de vélos électriques qui les intégreront dans le design des cadres de leurs vélos électriques. Ces micro-ordinateurs contrôlent le comportement du véhicule : marche avant ou arrière du moteur, fonctionnement des feux avant et arrière, réglage de la vitesse et de la tension, réaction à la batterie, etc. La programmation exige beaucoup de codage et de mathématiques, même pour des choses aussi simples que le réglage de la luminosité des phares.

Auparavant, la programmation des contrôleurs de moteur connectés de FTEX était une tâche compliquée et chronophage. Chacun d’entre eux nécessitait la configuration manuelle de plus de 200 paramètres par un ingénieur en matériel informatique. Une seule valeur omise (par exemple un zéro) pouvait perturber le comportement du véhicule électrique. On nous a donc demandé de développer une application de bureau pour semi-automatiser la configuration de ces contrôleurs afin que les clients puissent le faire eux-mêmes (sans connaissances techniques).

Voici comment nous avons procédé.

Exemple d’écran FTEX Configurator

L’enjeu

Jusque-là, FTEX et ses clients devaient s’expédier réciproquement les contrôleurs pour les tester et en modifier la programmation jusqu’à ce que le comportement soit idéal. FTEX souhaitait en finir avec ces pertes de temps en expédiant des contrôleurs en masse grâce à l’application de bureau prévue, baptisée « FTEX Configurator ». Les clients de FTEX avaient besoin d’un dispositif supplémentaire, un lecteur-scripteur, pour permettre à l’application de bureau de communiquer avec le contrôleur. Ce dispositif « renifle » le bus de données CAN (Controller Area Network), c’est-à-dire le support de communication physique servant à transmettre des messages entre les différents nœuds du réseau. Le CAN est souvent utilisé dans les systèmes embarqués pour le débogage et le diagnostic afin de trouver les erreurs de communication, d’identifier les nœuds défectueux et de déboguer les problèmes au niveau du système. De nombreux appareils convenaient, mais nous avons conçu l’application avec un analyseur de SeeedStudio pour qu’elle fonctionne avec un analyseur CAN,, un dispositif facile à acheter en ligne à un prix raisonnable. Le défi à relever était que la documentation sur l’analyseur CAN est très limitée et qu’il n’existe aucun exemple de mise en œuvre concrète. Nous avons dû apprendre à l’utiliser par essais et erreurs, et nous avons rencontré des problèmes de contrôle de qualité avec le matériel. Avec l’aide des ingénieurs de FTEX, nous avons résolu ces problèmes et trouvé un moyen de faire de cet appareil un dispositif convivial et prêt à l’emploi. Autre point à souligner : ce projet nous a donné l’occasion d’utiliser une nouvelle technologie, soit QT pour Python. Il s’agit d’un cadre d’applications (très répandu dans l’industrie automobile) qui repose sur un code base unique, ce qui signifie que le produit peut fonctionner sur Mac, Linux, iOS ou Android. QT pour Python n’est pas très courant dans notre secteur d’activité (applications Web, éditeurs de logiciels, etc.). Les occasions d’apprentissage ont donc été nombreuses.

La mission

Les véhicules électriques légers tels que les vélos électriques sont un domaine relativement nouveau pour nous, mais Jonathan, notre développeur full stack principal pour le projet, se passionne pour la recherche et le développement et adore se faire la main sur les nouvelles technologies. C’est pourquoi il était enthousiaste à l’idée de piloter le projet. Nous avons suivi notre processus de développement caractéristique pour créer FTEX Configurator, passant beaucoup de temps dans la phase d’assurance qualité. De nombreux échanges avec les ingénieurs de FTEX ont été nécessaires pour affiner le logiciel afin d’obtenir le comportement attendu. Nous devions apporter quelques petites modifications, les tester de notre côté, puis envoyer le tout à un ingénieur de FTEX pour obtenir son avis. En fonction de la complexité de sa réponse, l’opération pouvait se répéter quelques fois par jour. Nous avons utilisé une approche AGILE pour rester très réactifs. L’une des tâches les plus lourdes pour FTEX a été de faire remplir par son ingénieur une feuille de calcul reprenant toutes les « adresses » possibles utilisées par un vélo électrique. Ces adresses sont des nombres qui représentent un réglage d’une capacité du contrôleur, par exemple la vitesse des roues, la tension du moteur ou le fonctionnement des clignotants. Nous avons ensuite appliqué une configuration de base avec des réglages minimaux et maximaux compris dans une fourchette raisonnable et sûre. Pour le déploiement du projet, nous avons utilisé le développement en intégration continue avec GitHub Actions, ce qui nous a permis de déployer chaque jour une nouvelle version de l’application de bureau. Grâce aux mises à jour automatiques, FTEX n’avait pas à attendre nos développeurs et leur équipe avait toujours accès à la dernière version.

Le résultat

Nous avons réussi à automatiser un processus très manuel qui nécessitait à l’origine un codage et des mathématiques complexes. L’application de bureau finale est dotée d’une interface utilisateur simple et accessible, permettant à l’utilisateur moyen de l’utiliser sans aucune connaissance en programmation grâce à un didacticiel intégré qui montre aux revendeurs comment configurer et personnaliser leurs contrôleurs pour leurs utilisateurs finaux. À l’heure actuelle, environ 50 paramètres peuvent être ajustés par l’utilisateur final via FTEX Configurator. Ce nombre est appelé à croître, puisque nous avons conçu l’application de manière à ce que FTEX puisse facilement mettre à jour les adresses si un nouveau client se présente avec un nouveau type de véhicule électrique doté de fonctionnalités supplémentaires. Le projet a nécessité deux sprints, soit un peu plus d’un mois de développement et de tests. FTEX Configurator est maintenant utilisé en interne par FTEX et par ses clients fabricants de vélos électriques. FTEX est très satisfait du logiciel, qui lui permet de gagner énormément de temps. Les envois aller-retour de matériel à leurs clients sont chose du passé, de même que le paramétrage manuel des valeurs pour chaque contrôleur. Il suffit désormais au client de brancher l’appareil, de cliquer sur un bouton pour appliquer automatiquement les paramètres par défaut nécessaires au contrôleur, puis de raffiner les réglages à partir de là. Les limites supérieures et inférieures peuvent être enregistrées dans un fichier de configuration, qui peut ensuite être appliqué successivement à plusieurs vélos électriques et plus tard à des scooters aussi.

La suite…

La première version de FTEX Configurator étant la preuve de concept, nous sommes impatients de travailler sur la deuxième version, qui prendra en charge encore plus de types de véhicules électriques légers comme des scooters. Nous sommes satisfaits de l’aspect précis et professionnel du logiciel, même si c’était la première fois que nous utilisions la technologie en question. En tant que développeurs, nous trouvons très gratifiant de construire quelque chose qui va au-delà de l’espace virtuel. Certes, nous créons régulièrement des applications Python, mais mettre en place des contrôleurs qui fonctionnent avec des véhicules physiques qui transportent des personnes d’un point A à un point B, c’est une autre histoire. Il n’y a rien de tel que de voir les résultats concrets du logiciel que nous créons!


Vous souhaitez développer une application sur mesure ?

Détails du projet
FTEX Configurator, 2022 - 2023 Application de bureau
Technologies utilisées
  • QT
  • Python
  • Développement en intégration continue avec GitHub Actions