K2017 est le nom d'un des projets que j'ai pu réaliser dans le cadre de ma formation à l'école IN'TECH Sud en semestre 2.
Commandité par la SAS Genius Project, nous étions une équipe de 3 étudiants, et notre but était de créer un tableau de bord de véhicule pour que les conducteurs adoptent une conduite plus écoresponsable.
Comme nous le savons, les transports que nous utilisons tous les jours polluent, et le nombre de véhicules présents sur la route ne cesse d'augmenter.
M. Samson, directeur de la SAS, a eu une idée pour réduire la consommation de ces véhicules : connaître la vitesse permettant de ne pas s'arrêter au prochain feu rouge.
En effet, le fait de s'arrêter à un feu rouge veut dire qu'il faut ensuite redémarrer. Cela implique une forte consommation d'énergie pour redonner une certaine vitesse au véhicule, et donc une pollution non négligeable.
M. Samson avait pour idée d'utiliser un boîtier OBD2 pour récupérer les informations du véhicule, puis calculer et proposer au conducteur la vitesse idéale pour ne pas s'arrêter au prochain feu rouge. En plus de réduire la pollution, ne pas s'arrêter au feu rouge est fort possiblement une source de frustration en moins pour le conducteur.
Il avait pour vision d’avoir un tableau de bord personnalisé permettant d’indiquer au conducteur, par exemple, la vitesse à adopter pour avoir le prochain feu de circulation au vert et donc ne pas s'arrêter.
Notre but premier était de réaliser un Proof of Concept (PoC) pour démontrer que l'idée de M. Samson était réalisable. Son idée était d'avoir ce PoC afin de pouvoir démontrer sa solution et la présenter à des potentiels investisseurs pour avoir des fonds et commencer le développement de la solution réelle.
Le boîtier OBD2 que M. Samson voulait utiliser est un boîtier se branchant généralement sous le volant du véhicule (le port de branchement peut être placé différemment selon le modèle). Il est utilisé par les techniciens pour récupérer les informations sur l'état du véhicule.
Pour notre solution, nous avons opté pour l'utilisation d'un Raspberry Pi 3, qui est un nano-ordinateur, car un membre de notre équipe en possédait déjà un, et sa taille était un plus pour nous aider à tester nos développements. Nous avons connecté le Raspberry au boîtier OBD2 par Bluetooth afin de récupérer ces données sur l'ordinateur réduit.
Données que nous avons ensuite pu envoyer au format JSON via une connexion Wi-Fi à un serveur sur lequel nous avons réalisé un site en PHP qui faisait office de tableau de bord.
Pour la réalisation du site faisant office de tableau de bord, un de nos principaux blocages a été la partie visuelle, car nous avons fait en sorte que cette interface soit responsive, mais aussi personnalisable, avec la possibilité d'interchanger les différents indicateurs.
Cette personnalisation a été compliquée à réaliser, surtout sur le déplacement de ces derniers.
Etant chargé en CSS, il était difficile de faire en sorte que les indicateurs restent sans modifications visuelles non voulues après les avoir déplacés.
Durant le développement, les indicateurs agissaient bizarrement.
Par exemple en déplacer un faisait se déplacer un autre, ou encore il se déposait par-dessus celui avec lequel on voulait changer au lieu de faire en sorte que les deux changent de place.
C'est avec l'aide d'un de nos professeurs que nous avons finalement réussi à faire un glisser-déposer fonctionnel en JavaScript entièrement fait à la main.
Il nous aura fallu plusieurs semaines au total pour rendre cette personnalisation fonctionnelle et efficace.
Notre expérience en PHP à ce moment a aussi amené quelques autres blocages mineurs, que nous avons réussi à résoudre, comme la gestion du compte pour l’utilisateur. En effet, nous avons développé un système de compte, où les utilisateurs peuvent enregistrer leurs véhicules avec certaines spécifications, comme la consommation du véhicule, afin d’avoir les informations les plus précises possibles sur la conduite. Ces blocages étaient principalement liés à l’enregistrement des données dans une base de données, étant la première fois que nous en utilisons une sur nos projets. Mais avec notre compréhension qui fut assez aisée de la manipulation des bases de données, nous avons réussi à contrer ces problèmes.
La partie la plus compliquée pour nous était la connexion entre le boîtier OBD2 et le Raspberry.
La documentation sur l'utilisation du boîtier est quasiment introuvable et toujours obsolète, et nous ne connaissions rien à la partie technique sur la connexion Bluetooth entre deux appareils.
Les conditions de tests étaient plutôt difficiles, car nous devions utiliser une voiture pour tester le transfert des données entre le boîtier et le Raspberry.
Comme on peut le voir sur la photo ci-dessous, nous avons dû faire passer des rallonges par la fenêtre et développer en extérieur.
Après plusieurs jours de recherches pour essayer d'avancer, nous avons trouvé une première piste, qui est un projet JavaScript permettant de se connecter par Bluetooth à un boîtier OBD2.
Ce projet a permis de nous débloquer et est devenu indispensable au bon déroulement du projet.
Cette partie était néanmoins extrêmement intéressante. Travailler sur un point aussi technique en plus de renforcer nos compétences de recherche et de compréhension était enrichissant.
Après plusieurs semaines à faire des essais de différentes solutions auxquelles nous pensions, nous avons finalement réussi à connecter les deux comme nous le voulions et à avoir un cycle d'échange de données fonctionnel.
La suite et fin du projet s'est très bien passée. Il ne restait plus qu'à finir le site pour qu'il affiche les données du boîtier que l'on récupérait.
Malgré les difficultés techniques rencontrées lors de ce projet, nous avons tout de même réussi à réaliser un PoC qui récupère les informations du véhicule et les affiche sur notre site, et ce en temps réel.
Nous avons pu tester la solution sur plusieurs voitures, ce qui nous a permis de voir la compatibilité des voitures avec le boîtier.
Comme on peut le voir dans le tableau ci-dessous, ce sont les voitures les plus récentes qui ont renvoyé le plus d'informations.
Nous avons aussi fait une vidéo de démonstration de l'application afin que M. Samson puisse avoir une preuve de fonctionnement du PoC pour ensuite pouvoir démarcher des investisseurs pour le développement de la solution complète.
Nous avons aussi listé les prochaines grandes parties du projet à réaliser, notamment la détection des feux de signalisation, pour que M. Samson sache quels sont les futurs développements à faire afin d'avoir un PoC le plus complet possible.
J’ai beaucoup aimé le projet. Je trouve l'idée de M. Samson très intéressante et utile pour l’environnement, et développer ce PoC m’a permis d’approfondir mes connaissances sur plusieurs sujets en plus du langage PHP qui était le langage que nous apprenions à ce moment. Cependant, le projet me semble extrêmement compliqué et très coûteux à mettre en place dans sa totalité. La détection des feux de signalisation, par exemple, va ajouter beaucoup de charge en R&D et pourrait ralentir l'application si le développement final est mal optimisé.
M. Samson était très satisfait de notre travail, et nous étions tous les 3 très satisfaits d'avoir pu travailler sur ce projet en retour. Nous avons aussi pu acquérir des compétences techniques touchant à différents aspects de l'informatique, comme l'IoT, qui ne sont pas forcément apprises lors du cursus scolaire.