Difference between revisions of "CarLoRA"

From air
Jump to navigation Jump to search
Line 43: Line 43:
   
 
3 Spécifications techniques
 
3 Spécifications techniques
  +
 
3.1 Appareil ELM327 et norme ODB2
 
3.1 Appareil ELM327 et norme ODB2
   
Line 53: Line 54:
   
 
D’autres modes existe pour par exemple effacer des codes d’erreurs.
 
D’autres modes existe pour par exemple effacer des codes d’erreurs.
  +
  +
3.2 Carte Pycom LoPy et Pytrack
  +
  +
Pycom est une société hollandaise fabriquant des cartes de prototypage. La carte LoPy est particulièrement innovante dans le fait qu'elle intègre dans une seule carte 3 radios de communication (Wifi, Bluetooth et LoRa).
  +
Les spécifications partielles de la carte LoPy sont:
  +
  +
512KB de RAM
  +
4MB de Flash
  +
Accélération matériel pour les calculs en virgule flottante
  +
Support de MicroPython
  +
Multi-threading (sous MicroPython)
  +
WiFi 802.1b/g/n 16mbps
  +
Bluetooth Low Energy et classique (mais aucune bibliothèque n’est disponible pour la version classique)
  +
LoRa – Semtech LoRa transceiver SX1272
  +
Dual processor + WiFi radio System on chip
  +
24 broches GPIO
  +
Power – Input: 3.3V – 5.5V
  +
  +
Les bibliothèques fournies pour MicroPython sont encore en cours de développement, Certaines fonctionnalités ne sont pas encore disponible pour la programmation d'applications utilisateur. Toutefois, ces fonctionnalités devraient être implémentées prochainement.
  +
  +
MicroPython est un langage dérivé de Python 3.5 conçu pour fonctionner sur des micro-controlleur. Il permet théoriquement de développer des applications plus rapidement et plus simplement en comparaison au langage C couramment utilisé dans ce domaine.
  +
  +
4 Projet original (LoPy et ELM327)
  +
  +
4.1 Premi`ere r ́ealisation
  +
  +
Nous avons commencé par vérifier le fonctionnement de l’appareil ELM327 à l’aide d’une application Android. Ceci nous a notamment permis de nous familiariser avec la norme ODB2 et de choisir diverses métriques à retenir dans le cadre de notre projet.
  +
  +
Ayant reçu la carte LoPy neuve, nous avons dû mettre à jour le firmware de la carte LoPy et de PyTrack avec les firmwares récupérés sur le site de Pycom à l’aide de l’utilitaire DFUTools.
  +
  +
  +
Nous avons ensuite installé et configureé le plugin “Pymakr Plugin” pour Visual Code.
  +
Le plugin nous a permis d’exporter nos programmes en python vers la carte LoPy.
  +
  +
Il était nécessaire d’importer les diverse bibliothèques souhaitée dans l’espace de travail. Les bibliothèques sont disponible sur le GitHub de PyCom [https://github.com/pycom/pycom-libraries]
  +
  +
4.2 Interface de visualisation Jyse
  +
  +
Le logiciel Jyse nous a permis de créer un dashboard représentant les différentes mesures relevées en temps réel par l’utilisation de 3 sujets MQTT.
  +
  +
Nous avons représenté les valeurs en temps réel des 3 métriques de conduites que nous avions sélectionné (vitesse, rotation et RPM moteur). L’historique de la vitesse par rapport au braquage du volant a également été représenté.
  +
  +
4.3 Problème rencontré
  +
  +
Nous nous sommes aperçu tardivement, suite à des résultats incohérents, que les normes BLE et Bluetooth classique n'était pas compatible. Le problème étant que l'appareil ELM327 fourni ne fonctionnait qu'en Bluetooth classique avec "pairing" et la carte LoPy ne supportant pour l'instant que le BLE.
  +
  +
Le BLE ou Bluetooth à basse consommation a été développée par Nokia en 2006 pour devenir un standard ouvert. Il fonctionne dans sur la même plage de fréquence que le Bluetooth classique (2.4 - 2.5Ghz) et est davantage orienté vers l'IOT. Le BLE est moins adapté pour le transfert de fichiers de taille importante.
  +
  +
La modulation de la fréquence diffère entre le Bluetooth et de BLE de même que le nombre et type de canaux de communication. La taille des messages (les messages sont plus volumineux pour le Bluetooth classique) varie également. De ce fait il n'est pas possible d'associer deux périphériques BLE et Bluetooth classique, il est nécessaire que les deux périphériques utilisent la même norme.
  +
  +
Nous n'avons donc pas pu poursuivre notre projet en utilisant la carte LoPy et le module ELM327 pour récupérer les informations de conduite.

Revision as of 21:14, 8 April 2018

1 Introduction

Nous avons choisi de participer à la réalisation du projet CarLoRa. L’objectif de ce projet était de traiter des données de conduites.Nous avons utilisé une board Pycom LoPy sur une carte d’extension Pytrackmunie d’un GPS notamment. Les données de conduites ont ́et ́e récupérées par unappareil ODB2 ELM 327.Nous n’avons pas pu réaliser ce projet en raison de problèmes techniques. En effet, les technologies Bluetooth de la carte LoPy et de l’ELM327 sont incompatible.Une solution a ́et ́e de simuler les données retournées par la carte LoPy en LoRa et de les traiter, puis les stocker dans une blockchain Ethereum.

2 Présentation du projet

2.1 Motivations

L’idée du projet CarLora est de récupérer, analyser et stocker les données de conduite d’un utilisateur. L’usage principal de telles données est la personnalisation du contrat d’assurance d’un utilisateur. Si la conduite est jugée plus risquée alors sa prime d’assurance est augmentée et inversement dans le cas d’une ”bonne”conduite. Il s’agit du concept de ”Pay how you drive” utilisé dans les assurances outre-atlantique principalement.La principale limite de cette méthode est le respect de la vie privée des utilisa-teurs dans la mesure o`u leurs déplacements sont enregistrés.

2.2 Choix Techniques

Le projet CarLora consiste donc à récupérer des informations de conduite par le biai d’un appareil ODB2 ELM327, de les envoyer par bluetooth à une carte Pycom LoPy pour être envoyée en Lora à un broker située hors de la voiture.

2.2.1 Appareil ELM327 ODB2

Cet appareil se branche à la prise ODB2 de la voiture. Il est principalement utilisé pour effectuer un diagnostic de la voiture. En effet le protocole OBD2 défini l'interface standard d'accès au système de diagnostics embarqués. Plus récemment la norme est utilisée pour contrôler les différentes données relatives à la pollution et à la consommation du véhicule. Il existe de nombreuses applications Android permettant d'analyser les valeurs retournées par l'appareil ELM327. Ces applications permettent de réaliser un diagnostic ou de surveiller certaines valeurs

Dans le cas du projet certaines métriques retournées peuvent être utilisées pour analyser la conduite utilisateur, comme par exemple la vitesse ou l'accélération.

2.2.2 Carte Pycom LoPy et Pytrack

La carte PyCom Lopy dispose d'une connexion Bluetooth Low Energy et d'une antenne Lora pour émettre des informations vers un broker Lora. L'idée était ici de connecter la carte LoPy au module ELM327 en Bluetooth et d'envoyer les informations jugées utiles à l'analyse de la conduite en Lora à un Broker.

Par ailleurs, la carte LoPy et sa board Pytrack offrent également d'autres fonctionnalités exploitable pour analyser la conduite. On pourra par exemple citer un module GPS ou un accéléromètre pour détecter les changements brutaux de trajectoire.

2.2.3 Métriques de conduites retenues

Nous avons sélectionné 3 métriques représentant la conduite d’un utilisateur:

La vitesse: De manière générale, plus un véhicule vas vite, plus le risque d’accident augmente (Même si ceci est faux sur autoroute).

La rotation du volant: De manière générale un grand nombre de coup de volant brusque ne sont pas signe d’une conduite souple et sécuritaire.

Le nombre de rotation par minute du moteur : Le nombre de RPM est relativement lié à l'accélération du véhicule. Un nombre de RPM élevé signifie probablement une brusque accélération.

Ces paramètres sont également analysables de manière simultanée par exemple accélérer en tournant le volant n'est pas recommandé et signe d'une conduite peu sûr.

Nous nous sommes limité à trois valeurs analysées en raison principalement des contraintes de temps. 

Il aurait été par exemple intéressant d'analyser le type de route sur lesquelles l'utilisateur conduit grâce à la position gps.

3 Spécifications techniques

3.1 Appareil ELM327 et norme ODB2

La norme ODB défini par défaut 10 modes de diagnostic utilisable au travers de plusieurs protocoles de transmission. Les véhicules plus récents (à partir de 2003) peuvent utiliser le protocole CAN plus rapide. Les principaux mode sont:

Mode 1: permet des lires les valeurs des sondes et capteurs du moteur (vitesse, température etc.)

Mode 3 et 7: permettent de lire les défauts moteur

D’autres modes existe pour par exemple effacer des codes d’erreurs.

3.2 Carte Pycom LoPy et Pytrack

Pycom est une société hollandaise fabriquant des cartes de prototypage. La carte LoPy est particulièrement innovante dans le fait qu'elle intègre dans une seule carte 3 radios de communication (Wifi, Bluetooth et LoRa). Les spécifications partielles de la carte LoPy sont:

   512KB de RAM
   4MB de Flash
   Accélération matériel pour les calculs en virgule flottante
   Support de MicroPython
   Multi-threading (sous MicroPython)
   WiFi  802.1b/g/n 16mbps
   Bluetooth  Low Energy et classique (mais aucune bibliothèque n’est disponible pour la version classique)
   LoRa  – Semtech LoRa transceiver SX1272
   Dual processor + WiFi radio System on chip
   24 broches GPIO
   Power  – Input: 3.3V – 5.5V

Les bibliothèques fournies pour MicroPython sont encore en cours de développement, Certaines fonctionnalités ne sont pas encore disponible pour la programmation d'applications utilisateur. Toutefois, ces fonctionnalités devraient être implémentées prochainement.

MicroPython est un langage dérivé de Python 3.5 conçu pour fonctionner sur des micro-controlleur. Il permet théoriquement de développer des applications plus rapidement et plus simplement en comparaison au langage C couramment utilisé dans ce domaine.

4 Projet original (LoPy et ELM327)

4.1 Premi`ere r ́ealisation

Nous avons commencé par vérifier le fonctionnement de l’appareil ELM327 à l’aide d’une application Android. Ceci nous a notamment permis de nous familiariser avec la norme ODB2 et de choisir diverses métriques à retenir dans le cadre de notre projet.

Ayant reçu la carte LoPy neuve, nous avons dû mettre à jour le firmware de la carte LoPy et de PyTrack avec les firmwares récupérés sur le site de Pycom à l’aide de l’utilitaire DFUTools.


Nous avons ensuite installé et configureé le plugin “Pymakr Plugin” pour Visual Code.

Le plugin nous a permis d’exporter nos programmes en python vers la carte LoPy.

Il était nécessaire d’importer les diverse bibliothèques souhaitée dans l’espace de travail. Les bibliothèques sont disponible sur le GitHub de PyCom [1]

4.2 Interface de visualisation Jyse

Le logiciel Jyse nous a permis de créer un dashboard représentant les différentes mesures relevées en temps réel par l’utilisation de 3 sujets MQTT.

Nous avons représenté les valeurs en temps réel des 3 métriques de conduites que nous avions sélectionné (vitesse, rotation et RPM moteur). L’historique de la vitesse par rapport au braquage du volant a également été représenté.

4.3 Problème rencontré

Nous nous sommes aperçu tardivement, suite à des résultats incohérents, que les normes BLE et Bluetooth classique n'était pas compatible. Le problème étant que l'appareil ELM327 fourni ne fonctionnait qu'en Bluetooth classique avec "pairing" et la carte LoPy ne supportant pour l'instant que le BLE.

Le BLE ou Bluetooth à basse consommation a été développée par Nokia en 2006 pour devenir un standard ouvert. Il fonctionne dans sur la même plage de fréquence que le Bluetooth classique (2.4 - 2.5Ghz) et est davantage orienté vers l'IOT. Le BLE est moins adapté pour le transfert de fichiers de taille importante.

La modulation de la fréquence diffère entre le Bluetooth et de BLE de même que le nombre et type de canaux de communication. La taille des messages (les messages sont plus volumineux pour le Bluetooth classique) varie également. De ce fait il n'est pas possible d'associer deux périphériques BLE et Bluetooth classique, il est nécessaire que les deux périphériques utilisent la même norme.

Nous n'avons donc pas pu poursuivre notre projet en utilisant la carte LoPy et le module ELM327 pour récupérer les informations de conduite.