"MyCam" Episode 3 : Internet et OBD-II

Mobilité

Préambule – Synthèse vocale et connexion Internet

Dans le dernier épisode, je présentais l’installation du nouvel autoradio et j’expliquais qu’il servirait de base pour l’affichage des différentes applications à venir. J’ai oublié de parler du module de synthèse vocale géré par l’ordinateur. Je ne sais pas encore si ce module aura une utilité par la suite – mais les enfants qui montent à bord de la Camaro (notamment lors du dernier Téléthon) me demandent souvent si la voiture peut parler… je leur ai promis pour 2014, promesse tenue donc :)

Rien de particulier à dire sur le système, j’utilise une API en ligne avec un système de cache local pour n’utiliser la connexion Internet que lorsque nécessaire. La synthèse vocale ne sera fonctionnelle qu’en mode auxiliaire sur le Pioneer. Je réserverai ce mode pour les manifestations : Affichage direct du son et de la vidéo en provenance de l’ordinateur. J’utiliserai un écran de meilleure résolution pour les applications (voir § suivants).

Le second point que je n’ai pas détaillé, c’est la connexion Internet disponible dans l’habitacle grâce à l’ordinateur embarqué, un modem 3G et un switch WiFi. L’ordinateur est configuré en routeur pour offrir un accès Internet diffusé par le switch Wifi. Les passagers et périphériques « connectés » de la voiture disposent ainsi d’une connexion à Internet illimitée, dans la mesure de la couverture offerte par l’opérateur.

Les équipements internes de la voiture peuvent donc communiquer avec l’ordinateur :

  • Par câble USB (La caméra, le radar…),
  • Par liaison Bluetooth (Le module OBD-II…),
  • Par réseau WiFi (L’iPad…)

Wifi

Côté sécurité… il va falloir blinder tout ça, on en reparlera !

Traitement temps réel des données moteurs - Interface OBD-II

J’ai eu l’occasion de remonter le manque de standardisation dans les connecteurs électriques du véhicule. Heureusement, dans le domaine du diagnostique automobile, les constructeurs se sont mis d’accord sur le standard OBD : « On-board Diagnostics ».

OBDCe standard définit un certain nombre de paramètres identifiés par un code. Les codes sont transmis au véhicule par l’intermédiaire d’un connecteur OBD-II généralement situé sous le tableau de bord.

Cela permet aux techniciens automobiles d’avoir, en utilisant un logiciel OBD-II, un état des lieux immédiats sur l’état général de nos voitures, bardées de capteurs depuis la fin des années 90. Plus d’infos ici : http://en.wikipedia.org/wiki/OBD-II_PIDs.

Le principe est le suivant :

  •  On envoi un code au véhicule (le PID, pour « Parameter ID »)
  • Le véhicule renvoi alors la valeur associée au PID.

L’encodage de la valeur renvoyée dépend directement du PID interrogé. La norme SAE J1979 (https://law.resource.org/pub/us/cfr/ibr/005/sae.j1979.2002.pdf) décrit précisément les PIDs standardisés. Chaque constructeur est toutefois libre d’implémenter ses propres PID (et de documenter plus ou moins bien leur usage et leur signification :).

PIDPour le projet, nous collecterons en temps réel les paramètres du véhicule puis nous les traiterons, toujours en temps réel, avec l’ordinateur de bord.

Il existe une panoplie d’applications pour Smartphone ou ordinateur déjà toutes faites. Mais elles sont plutôt instables et pas forcément adaptées pour ce projet. Je souhaite en effet avoir des indicateurs aussi complets et personnalisables que possible.

A gauche, un screenshot du scanner de la suite HPTuners (cf. épisode 2), ça donne une idée de ce qu’il est possible de faire…

ELMUn peu calmé par les soudures et les câbles (cf. épisode 2), j’ai opté – le temps des tests – pour un adaptateur OBD-II Bluetooth. J’ai trouvé ce modèle pour quelques euros sur Internet :

Ne surtout pas sortir avec ça branché sur le port OBD-II de votre voiture, au risque de vous la faire hacker (code PIN=1234, codé en dur…).Si les tests sont concluants j’opterai plus tard pour un modèle filaire.

Depuis l’ordinateur de bord, le connecteur se configure classiquement comme n’importe quel périphérique Bluetooth. On peut dialoguer avec via une interface rfcomm. Grâce à la librairie pyobd (http://www.obdtester.com/pyobd-download) un script de test en Python s’écrit en quelques minutes pour vérifier que tout fonctionne correctement :

Code

 

La librairie est simple de prise en main et fonctionne bien, mais elle ne couvre qu’un nombre limité de PID et ne propose pas toutes les fonctionnalités nécessaires à ce projet. Je proposerai un patch aux auteurs une fois ce projet terminé (ou je proposerai une nouvelle librairie – à voir…).

La théorie ayant été présentée, il reste maintenant à développer une application embarquée. Ne sachant pas encore exactement comment sera géré l’affichage, j’ai privilégié un développement HTML afin de pouvoir visualiser l’application depuis n’importe quel navigateur Web. L’application est composée de trois modules :

  1. Un démon codé en Python
    • Il reçoit des demandes de PID sur un socket TCP
    • Il interroge le module OBD-II et renvoie directement la valeur à l’appelant  
  2. Une application Web qui génère des données JSON en interrogeant le démon Python 
  3. Une interface HTML avec des Widgets Google Chart bindés sur les données JSON

Interface OBDII

Ca fonctionne plutôt bien, le temps de réponse est satisfaisant (vous verrez dans la vidéo que c’est quand même perfectible – le ELM327 en Bluetooth n’est pas super rapide).

Les widgets pour la vitesse, la vitesse de rotation du moteur, la charge du moteur et la position de la pédale d’accélération sont rafraichis toutes les 500ms. Les widgets pour les différentes températures sont rafraichis toutes les minutes.

Voici une vidéo illustrant le fonctionnement dans la voiture, avec l’affichage sur le Pioneer : Lien vers la démo OBD-II en version béta

 Upgrade du système multimédia, le retour 

Après plusieurs tests, j’ai trouvé que l’écran du Pioneer n’était finalement pas suffisamment lisible pour toutes les applications, notamment dès qu’il s’agit d’afficher du texte.

Un second écran a donc fait son apparition dans l’habitacle : un iPad mini. Nous l’utiliserons pour afficher les informations OBD-II (d’autres vidéos à venir :-), pour la navigation et pour un premier niveau de géo-localisation.

Autoradio

L’autoradio sera finalement réservé aux caméras et radars avant / arrière et à la synthèse vocale.

Voilà pour ce troisième épisode – plutôt court, mais j’espère suffisant :) .

Un peu de visibilité sur la suite…

Dans le prochain article nous parlerons de l’installation de la caméra et du radar. Ensuite je vous présenterai les fonctionnalités de géo-localisation – en cours de test actuellement.

camera-radarAprès quelques recherches sur le fonctionnement du HUD (Head Up Display) de la Camaro, il semble que son démontage / remplacement soit tout à fait possible.

Par contre c’est fastidieux (démontage intégral de tout le tableau de bord). Donc pas certain que je m’embarque sur ce chemin dans l’immédiat.

En revanche… j’attends des nouvelles du Glass Explorer Program (http://www.google.com/glass/start/). J’espère pouvoir vous en reparler très bientôt.

 

Il ne me reste plus qu’à vous souhaiter une excellente année 2014. A bientôt !

Jérémie Jourdin

Expert sénior en Sécurité des Systèmes d'Informations, Advens

Lire l'épisode 1 : cliquez ici.

Lire l'épisode 2 : cliquez ici.

Jérémie Jourdin, Responsable R&D, Advens