Connecteur de diagnostic OBD-II comme interface pour l'IoT

Il était une fois, vers le milieu des années 90, lors de l'avènement du processeur Pentium Pro, l'un des fondateurs d'Intel Gordon Moore a noté que: «Si l'industrie automobile s'est développée au rythme de l'évolution de l'industrie des semi-conducteurs, Rolls-Royce pourrait aujourd'hui conduire un demi-million miles par gallon d'essence, et il serait moins cher de le jeter que de payer le stationnement. " Mais, peut-être, déjà aujourd'hui, l'industrie automobile fait un pas de géant dans le sens d'un changement fondamental dans le type de carburant et la technologie pour conduire une voiture. Presque récemment, des voitures électriques commerciales et des voitures à hydrogène sont présentées, et le pilote automatique devient le composant souhaité du «remplissage» électronique du véhicule. Pour l'essentiel, une percée rapide dans l'industrie automobile est due à l'émergence de solutions fiables et sûres basées sur une électronique intelligente pour les systèmes de contrôle embarqués automobiles. Mais où est Internet dans la voiture au quotidien, où est la technologie de l'Internet des objets (IoT), ainsi que le concept bien connu d'une voiture connectée au réseau (voiture connectée)?


La Rolls-Royce 103EX. Rolls-Royce dévoile un concept-car électrique sans conducteur, complet avec une causeuse en soie - The Telegraph .

En fait, toutes les technologies ci-dessus existent déjà et ne sont cependant utilisées que dans des solutions suffisamment séparées. La raison en est les exigences de sécurité strictes qui doivent certainement être mises en œuvre lors du lancement de toute nouvelle technologie ou solution dans le transport. Par conséquent, on ne peut pas dire que lorsque vous montez dans une voiture avec un smartphone, vous pouvez automatiquement obtenir une solution IoT ou voiture connectée. Dans la plupart des pays, et cela est très logique, il est interdit d'utiliser un smartphone ou d'autres gadgets pendant la conduite, et si nous parlons des assistants vocaux, dans la plupart des cas, ils sont maintenant ennuyeux et distrayants, à la fois pour le conducteur et les passagers. À son tour, le centre multimédia, des écrans vidéo supplémentaires et une excellente acoustique, bien sûr, sont des composants très attrayants d'une voiture moderne. Mais je veux m'attraper sur le mot et noter qu'il est bon d'étouffer la musique et de regarder par la fenêtre les rues ou la nature qui passe. Bien sûr, il y a des embouteillages, mais dans cette publication, le but est de noter non pas quelques composants éthiques ou de considérer les problèmes de surabondance d'informations des usagers de la route, mais de considérer ces composants "invisibles" des technologies IoT qui sont déjà utilisés dans les véhicules et sont disponibles pour une utilisation généralisée.



Aujourd'hui, une solution intéressante et très prometteuse pour l'IoT automobile est la plate-forme Open Connected Car de Mojio. Cette plateforme avec une interface ouverte (API) fournit un service cloud pour les voitures "connectées" et des offres commerciales sont déjà disponibles. Par exemple, le géant des télécommunications T-Mobile, basé sur cette plateforme, fournit le service SyncUP DRIVE. Il s'agit d'une solution matérielle-logicielle basée sur un appareil portable connecté à la voiture via le connecteur de diagnostic OBD-II et l'application mobile correspondante. Grâce à cette approche, il est possible d'effectuer efficacement une surveillance continue des paramètres de fonctionnement de votre voiture et à tout moment d'obtenir sa position actuelle. L'application peut parler des styles de conduite, avertir de l'entretien préventif et également informer le propriétaire des problèmes avec le véhicule. De plus, SyncUP DRIVE déploie un point d'accès Wi-Fi dans la voiture en utilisant l'accès via le protocole haut débit de la norme LTE mobile.


La plate-forme de voiture connectée ouverte - Mojio

Un connecteur de diagnostic OBD-II standard est utilisé pour se connecter au véhicule. La plupart des voitures de production produites après 1996 ont déjà ce connecteur. Bien qu'un tel connecteur de diagnostic soit normalisé, il prend en charge plusieurs protocoles de différents systèmes de contrôle moteur (différents contacts sur le connecteur sont physiquement utilisés) que le module de communication IoT doit connaître. En conséquence, dans différentes marques de voitures, il peut y avoir différents bus internes pour obtenir des données de diagnostic à partir de l'unité de commande du moteur (ECU - Unité de commande électronique). Pour fonctionner avec le service SyncUP DRIVE, une solution basée sur le module ZTEWelink VM6200S est proposée.

Le module VM6200S prend en charge la connexion via le protocole mobile LTE, contient un capteur d'accélération 3 axes intégré et un gyroscope 3 axes, un récepteur de signal GPS, une puce OBD-II, avec prise en charge des protocoles ISO 15765-4 (CAN), ISO 14230-4 KWP (Keyword Protocol 2000), ISO 9141-2 (Chrysler, Euro et automobiles asiatiques), SAE J1850 PWM (véhicules Ford), SAE J1850 VPW (véhicules GM). Ainsi, le module vous permet de déployer un point d'accès Wi-Fi 802.11 b / g / n /, d'enregistrer des événements pendant la conduite, d'effectuer des diagnostics moteur, d'évaluer l'économie de carburant, etc. Et comme les partenaires de Mojio sont les projets Amazon Alexa, le service IFTTT et autres, toutes les perspectives s'ouvrent pour les développeurs et intégrateurs de solutions jusqu'à la création d'un IoT social basé sur une voiture «connectée», dans le cadre d'une telle infrastructure.


Dispositif OBD VM6200S4G - ZTEWelink Corporation

Mais non seulement SyncUP DRIVE est maintenant sur le marché, par exemple, de nombreuses entreprises proposent quelque chose de similaire. Bien sûr, le dispositif automatique Samsung Connect récemment introduit est l'une de ces propositions intéressantes qui transforment la voiture en un appareil connecté. La solution de Samsung utilise le réseau mobile 4G LTE de la même manière et déploie un point d'accès Wi-Fi à l'intérieur de la voiture: 802.11 a / b / g / n. Connect auto device prend en charge Bluetooth v4.1, contient un récepteur GPS, un capteur d'accélération, un gyroscope et est basé sur un processeur à 4 cœurs avec une fréquence de 1,2 GHz et le système d'exploitation Tizen. Il convient de noter que le géant électronique coréen Samsung parle de la sécurité du système grâce à l'utilisation de Samsung Knox - une solution mobile avec une protection au niveau de l'entreprise. En fait, Samsung Knox est une solution logicielle et matérielle pour améliorer la protection du système d'exploitation Android.


Samsung Connect auto

Ainsi, les informations obtenues par la lecture des données de l' OBD-II , les coordonnées actuelles de la position du récepteur GPS et les paramètres de la dynamique du véhicule, obtenus à partir des capteurs gyroscopiques, à l'heure actuelle et de facto, sont devenus la base pour transformer tout véhicule en Appareil IoT. De plus, vous pouvez envisager des scénarios d'utilisation des informations agrégées reçues des voitures, appliquer diverses techniques de traitement du Big Data, et vous ne devez pas oublier les perspectives de combiner ces données avec des informations provenant de l'infrastructure des routes intelligentes. Mais avant de commencer à traiter les données, vous devez d'abord les obtenir, donc dans cette publication, nous nous concentrerons sur le composant matériel de la mise en œuvre des scénarios de travail au niveau du connecteur de diagnostic OBD-II.

D'une manière ou d'une autre, mais toutes les solutions discutées précédemment sont des produits industriels plus avancés, par rapport à un lecteur de code de diagnostic conventionnel basé sur la puce ELM327 de la société canadienne Elm Electronics. ELM327 est un convertisseur universel de protocoles utilisés dans les bus de diagnostic automobile en un protocole série comme RS-232.


Schéma fonctionnel d'une puce ELM327 v2.2 - Elm Electronics

L'interaction avec ELM327 est effectuée par des commandes AT standard prises en charge par la puce. Il vous suffit d'organiser l'échange de SMS en utilisant le protocole RS-232 , qui est déjà devenu un classique (ou plutôt UART , car nous ne parlons que de flux de données, pas de niveaux de signal). Et la connexion physique de bas niveau elle-même via USB, Bluetooth ou Wi-Fi est simplement implémentée à l'aide de puces UART de protocole de conversion série. Il s'avère que pour transformer la voiture en un appareil IoT, il suffit, sans oublier de coordonner les niveaux de tension, de connecter la puce ELM327 au connecteur de diagnostic OBD-II et, par exemple, de mettre le convertisseur d'interface série en Bluetooth ou Wi-Fi à la sortie de cette puce. Ensuite, vous pouvez «lire» les diagnostics du véhicule depuis votre smartphone. Cependant, il existe de nombreux modules ou blocs prêts à l'emploi sur le marché. Et leur prix sur AliExpress varie de 2,50 $ US à 10 $ US. Bien que le module ne doive pas consommer beaucoup d'énergie, il sera très pratique si le bouton de mise hors tension est déjà présent dessus. Soit dit en passant, du point de vue de la sécurité - ce n'est pas mal non plus.


Mini ELM327 Bluetooth OBD-II adaptateur de diagnostic de voiture V1.5

Vous pouvez maintenant connecter le module Bluetooth OBD-II V1.5 Mini ELM327 standard (il est intéressant de noter que dans de nombreuses sources, il est conseillé d'utiliser des modules avec l'ancienne version 1.5 du firmware, et non des nouveaux avec la version 2.2, c'est-à-dire comme argument un fonctionnement plus stable du module sur l'ancien). firmware et support pour plus de voitures, mais cela est très subjectif) et expérimentez la connexion du smartphone au module sélectionné, par exemple, pour la plate-forme Android, vous pouvez utiliser l'un des programmes de diagnostic les plus populaires Torque Lite (OBD2 & Car) ou Torque Pro (OBD 2 & Car) ainsi que quoi que ce soit n plus facile à utiliser, ou leurs réalisations.


L'application Torque Pro fonctionne sur Android.

Soit dit en passant, je tiens à noter un service MockUPhone très pratique avec une maquette gratuite de gadgets modernes, qui a été très utile pour préparer une capture d'écran du programme Torque. Mais cela s'écarte légèrement du sujet de la publication. Il convient de noter que dans la plupart des cas, le connecteur OBD-II, auquel le module de diagnostic est connecté, est situé sous la colonne de direction de la voiture.


Premiers pas avec OBD-II - SparkFun Electronics

Il est clair qu'il existe de nombreuses solutions toutes faites. Mais si nous parlons de développer un service basé sur l'IoT ou plus spécifiquement - le concept de voiture connectée est en cours de mise en œuvre, il est très pratique d'utiliser l'émulateur de réseau d'information embarqué de la voiture afin de ne pas courir à la voiture à chaque fois. Par exemple, Mojio propose un simulateur de voiture en ligne pour travailler avec son API, et en utilisant le service cloud IBM Watson IoT Platform comme exemple, dans l'article: « Envoi de données de véhicule à la plateforme IBM Watson IoT - IBM developerWorks Recipes » est proposé pour l'envoi vers le cloud de données à partir d'un transport signifie utiliser une application mobile, par exemple, « IBM IoT for Automotive - OBDII Fleet Management App for Android », qui interagit avec le service cloud déployé « IBM IoT for Automotive (Bluemix) - Fleet Management Starter Application », mais si vous n'êtes pas distrait par ces projets, vous pouvez utilisez simplement un émulateur de données: " Car Simulator ". Certes, toutes ces solutions, essentiellement, émulent des données déjà reçues, et nous nous intéressons à l'émulateur du réseau d'information embarqué. La solution la plus connue est ECUsim 2000, dont le coût commence à 200 $ US et dépend du nombre de protocoles émulés pris en charge.


ECUsim 2000 OBD Simulator - ScanTool

Bien sûr, un émulateur professionnel ne peut pas être remplacé, mais les amateurs et les geeks pourraient bien être intéressés par la mise en œuvre indépendante d'un projet moins complexe sur un Arduino ou un Raspberry Pi. Par exemple, vous pouvez vous limiter à l'interface CAN (Controller Area Network) la plus courante. À un moment donné, la norme CAN proposée par Bosch a fait des progrès significatifs dans le développement de systèmes pour l'électronique automobile. Si une voiture sur Internet n'est apparue que récemment, le concept de réseau à l'intérieur d'une voiture existe depuis le milieu des années 80. L'idée est très simple, et comme Ethernet a fait une percée dans les réseaux informatiques, CAN est devenu la base de communications fiables à l'intérieur de la voiture.


Un réseau de bus CAN basé sur Arduino - Henry's Bench

Auparavant, dans une voiture, en règle générale, les bus et les fils de divers modules et appareils connectés «coulaient» vers l'unité centrale de commande du moteur. Le bus CAN série à deux fils a permis de mettre en œuvre des modules intelligents déjà indépendants, par exemple, la centrale de commande n'est devenue qu'un de ces modules qui «communiquent» entre eux via le protocole réseau. Cela réduit considérablement la quantité de câblage à l'intérieur de la voiture.

Contrairement à Ethernet, le réseau CAN est beaucoup plus fiable, ce qui a conduit à son utilisation non seulement dans l'industrie automobile, mais aussi dans les systèmes d'automatisation industrielle, les solutions de maison intelligente, etc. Au niveau physique, CAN utilise une ligne à deux fils, CAN Lo et CAN Hi, qui transmettent bit à bit les données emballées dans un paquet. Aux extrémités du bus, il existe des résistances correspondantes de 120 ohms, et un faisceau de câbles doit également être utilisé pour supprimer les interférences. Le taux de transfert de données peut atteindre 1 Mbps.


Un réseau de zone de contrôleur (bus CAN)

Le transfert de données vers le bus CAN rappelle quelque peu le modèle éditeur-abonné, où chaque appareil sur le bus a un identifiant unique et lorsqu'un appareil transmet des données, tout le monde écoute et prend une décision en fonction de cet identifiant - ont-ils spécifiquement besoin de ces données à recevoir et à traiter ou non. En général, le protocole est assez compliqué, mais pour un microcontrôleur ou un microprocesseur, il est peu probable qu'il doive écrire une implémentation CAN, ainsi que réfléchir aux caractéristiques du support de transfert de données physiques. Pour résoudre ces problèmes, il existe déjà des contrôleurs de bus matériels prêts à l'emploi et pour l'adaptation de niveau, des convertisseurs intégrés sont souvent utilisés. Par exemple, le contrôleur MCP2515 avec SPI et l'émetteur-récepteur (puce de niveau correspondant) MCP2551. C'est sur la base de ces microcircuits que le projet Arduino OBD2 Simulator, publié sur la plateforme Instructable , a été proposé. Pour l'implémenter, vous n'avez besoin que de la carte Arduino UNO et du blindage CAN-BUS, par exemple, Seeed Technology.


Expériences utilisant Arduino OBD2 Simulator

En principe, pour le développement d'un émulateur de données OBD-II, une alimentation DC 12V pour le module ELM327, ainsi qu'un connecteur OBD-II, ne feront pas de mal. Cependant, le convertisseur sans nom DC-DC-USB-TO-12V peut bien résoudre le problème, car plusieurs alimentations pour 5V, peut-être, seront à la portée de tout développeur pour l'Internet des objets et pas seulement. Pour se connecter à OBD-II, deux fils d'information CAN_H et CAN_L seront nécessaires, ainsi que la présence d'une alimentation 12 V, mais comme indiqué précédemment, le 12 V n'est nécessaire que pour garantir le fonctionnement du module ELM327.


Bouclier CAN-BUS V1.2 - Seeed Development Limited Wiki

Sur la carte d'extension CAN-BUS Shield, il est très pratique d'utiliser non pas le connecteur D-SUB, mais simplement un bornier pour deux contacts (CAN_H, CAN_L). Du point de vue du développement de code logiciel, il convient de noter que les passionnés de prototypes ont posté sur GitHub . Maintenant, les cartes Seeed ont changé, et dans tous les cas, pour le contrôleur MCP2515, il est préférable d'utiliser de nouveaux pilotes du même Seeed-Studio . Bien sûr, le programme d'origine devra être légèrement modifié pour les nouveaux pilotes, mais cela prend quelques minutes.


Travailler avec CAN-BUS dans un IDE Arduino basé sur un simulateur ECU OBD2 à faible coût

Cependant, l'exemple considéré est très primitif, car tous les paramètres envoyés via le protocole OBD-II sont simplement générés de manière aléatoire, il n'y a pas de connexion entre les paramètres de fonctionnement du moteur, etc. Dans la continuité du projet, le développement d'une application similaire à l'interface graphique de l'émulateur Freematics OBD-II est évident. Il s'agit d'un shell graphique open source utilisé dans la solution matérielle de l' émulateur Freematics OBD-II .


Interface graphique de l'émulateur Freematics OBD-II - Freematics

Ainsi, après avoir assemblé un module basé sur Arduino qui permet de travailler avec CAN, il est tout à fait possible de créer un émulateur OBD-II, car le protocole de diagnostic est bien décrit et il n'est pas difficile à mettre en œuvre. Il convient de noter que l'interaction entre le microcontrôleur et le bus CAN embarqué est une tâche complètement différente et vous devez comprendre que les protocoles internes de haut niveau de ce bus ne sont pas documentés par les constructeurs automobiles, et d'autre part, ils ne doivent pas être intégrés dans le dispositif interne de l'électronique automobile, de sorte qu'en aucun cas réduire la sécurité des véhicules. Si nous parlons de CAN en général, il est tout à fait possible d'utiliser le protocole CANopen ouvert de haut niveau pour développer vos appareils sur la base de ce bus.

Cela reste le cas pour les petits - un peu de temps libre et de plaisir pour réaliser le développement de votre code. Certes, où est-ce le temps de trouver à la fin de l'année? Mais nous serons optimistes. Mais en parlant de l'utilisation d'un tel émulateur OBD-II, la direction la plus directe est le développement de son propre module pour le connecteur de diagnostic. Par exemple, vous pouvez prendre le projet ouvert Carloop comme point de départ, qui vise à créer un module pour connecter la voiture au cloud en utilisant les technologies 3G, Wi-Fi ou Bluetooth.


Carloop bluetooth

Le projet Carloop est basé sur l'utilisation de cartes: Particle Photon (basé sur le module Wi-Fi Cypress BCM43362, qui prend en charge 802.11b / g / n; la famille de contrôleurs ARM Cortex M3 - STM32F205 à une fréquence de 120 MHz, 1 Mo de mémoire flash; 128 Ko de RAM) et Electron (cartes avec prise en charge de la connexion à un réseau mobile 3G / 2G). La plateforme Particle elle-même est très intéressante car elle est basée sur le service de connexion d'appareils IoT basé sur le cloud, un IDE basé sur le cloud pour le développement, par exemple, basé sur des cartes Photon, qui utilisent un langage similaire à C / C ++ pour Arduino. En fait, Particle est un sujet distinct pour la publication, et le projet Carloop mérite certainement une attention particulière de la part des passionnés de la voiture, en tant qu'appareil IoT connecté.

En connectant la voiture aux services Internet et IoT, vous pouvez mettre en œuvre de nombreux scénarios qui contribueront sans aucun doute à la facilité d'utilisation des véhicules, augmenteront le confort et, simplement, une solution efficace aux problèmes quotidiens, bien sûr, y compris la solution de transport. Par exemple, les données sur le style de conduite, la fiabilité des composants du moteur et du véhicule pourraient bien être déjà prises en compte par les compagnies d'assurance. L'emplacement actuel de la voiture sera pertinent pour les services de taxi et la location de voitures. L'interaction des usagers de la route devient plus pratique lors de l'utilisation de l'IoT, ainsi que le problème du stationnement, de la recherche de places de stationnement disponibles, et bien plus encore.



Nous espérons que l'idée de cette publication a été réalisée - en un seul endroit, des matériaux ont été collectés pour travailler avec le connecteur de diagnostic OBD-II, à la fois au niveau de la simple lecture des codes d'erreur et de l'émulation d'une connexion physique à la voiture. Nous espérons également recevoir les commentaires des lecteurs. En conclusion, je voudrais noter que seuls quelques problèmes de développement d'appareils connectés ont été pris en compte, mais de nombreuses technologies sont restées dans les coulisses, qui, d'une manière ou d'une autre, transforment une voiture moderne en un appareil IoT et rendent les trajets plus confortables et plus sûrs. Bien sûr, nous reviendrons sur ces sujets dans nos futures publications.

Ressources et liens intéressants:


- Piratage automobile: les systèmes de sécurité automobile sont-ils si sûrs? - Habrahabr
- Le microprocesseur a 25 ans! - Computerworld
- T - Mobile SyncUP DRIVE - T-MOBILE
- ZTE et Mojio feront de presque n'importe quelle voiture une partie de l'Internet des objets - ZTE Corporation
- Samsung Knox - SAMSUNG
- Fonctionnalités du protocole CAN - Magazine STA
- Internet des objets dans votre maison - connectez-vous Ă  votre maison votre machine - IBM developerWorks
- Analyse télématique des véhicules à l'aide de Watson IoT Platform Cloud Analytics - Recettes IBM developerWorks
- Utilisation du réseau CAN et de la pile CANopen - Habrahabr
-CANopen High Level Protocol - RADIOLOCMAN Magazine - Do-it
- yourself on - board computer for cars on Arduino - Geektimes
- Wiring the MCP2515 Controller Area Network CAN BUS Diagnostics - 14CORE
- Arduino OBD2 ELM327 I2C-LCD HC05 Bluetooth - Instructables
- Android application development for working with OBDII protocol - Habrahabr

Source: https://habr.com/ru/post/fr408941/


All Articles