Table des matières:

DragonBoard et OBD2 : 12 étapes
DragonBoard et OBD2 : 12 étapes

Vidéo: DragonBoard et OBD2 : 12 étapes

Vidéo: DragonBoard et OBD2 : 12 étapes
Vidéo: ЛЕГКОЕ ИСПРАВЛЕНИЕ — на порт данных OBD ​​II не подается питание. 2024, Novembre
Anonim
DragonBoard et OBD2
DragonBoard et OBD2

En lisant les données qui sortent du port OBD2 de votre voiture, il est possible de collecter des informations étonnantes à partir de celui-ci. En utilisant la DragonBoard 410c, nous avons travaillé sur ce projet et l'avons détaillé ici afin que vous puissiez le faire vous-même.

Ce projet n'a été possible que grâce au partenariat avec #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora qui nous a permis d'avoir accès au meilleur matériel du marché, ainsi qu'au contact avec les meilleurs professionnels pour accompagner le développement.

L'équipe était composée de ces gars:

Nous sommes très désireux de vous aider à atteindre votre objectif et de vous assurer de mener à bien votre projet, alors faites-nous savoir si vous avez besoin d'aide au-delà des instructions ci-dessous.

Para seguir este projeto em Português, clique aqui:

www.instructables.com/id/DragonBoard-Com-OBD

Pour ce projet, nous avons utilisé les éléments suivants:

  • Qualcomm DragonBoard 410c
  • Interface OBD2 Bluetooth ELM327
  • Clé USB 3G/4G
  • Chargeur de voiture à onduleur de tension (110v)

Étape 1: Exécution de la configuration initiale de la DragonBoard 410c**

Exécution de la configuration initiale de la DragonBoard 410c**
Exécution de la configuration initiale de la DragonBoard 410c**
Exécution de la configuration initiale de la DragonBoard 410c**
Exécution de la configuration initiale de la DragonBoard 410c**
Exécution de la configuration initiale de la DragonBoard 410c**
Exécution de la configuration initiale de la DragonBoard 410c**

En utilisant Qualcomm DragonBoard 410c, nous avons commencé le projet en installant la distribution Linux appelée Linaro, nous permettant de configurer tous les appareils nécessaires.

Pour créer une image de Linaro pour le DragonBoard, utilisez Ubunto sur VirtualBox, vous pouvez donc utiliser FastBoot (c'est une application basée sur Linux). Donc, fondamentalement, ce que vous devez faire est d'ouvrir le terminal sur la VM Ubuntu et d'entrer:

sudo apt-get android-tools-fastboot

Pour installer Linaro, nous devons passer par 2 étapes importantes:

1) Installation du BOOTLOADER

Nom du fichier: dragonboard410c_bootloader_emmc_linux-79.zip

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Décompressez les fichiers et sélectionnez le dossier:

cd /FolderName (chemin vers le dossier décompressé)

Saisissez le code suivant:

périphériques de démarrage rapide sudo

Retour attendu:

démarrage rapide (hexadécimal)

Tapez ensuite:

sudo./flashall

Retour attendu:

fini. temps total 1.000s (sans erreurs)

Installation du SYSTÈME OPÉRATIONNEL

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Téléchargez ces 2 fichiers:

boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

Il s'agit de la dernière version disponible à ce jour (17 juin), donc le nom pourrait changer à l'avenir. Le modèle que vous recherchez est "boot-linaro-VersionName". Celui-ci s'appelle "Stretch" et le précédent était "Jessie".

linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz

Il s'agit de la dernière version en date (17 juin) et le nom pourrait changer à l'avenir. Recherchez le modèle "linaro-VersionName-alip".

Décompressez les fichiers du. GZ

Accéder au dossier "root", en relation avec les fichiers décompressés

exemple: "/Téléchargements" qui est l'endroit où les fichiers téléchargés sont stockés.

Commencez maintenant par les commandes suivantes:

périphériques de démarrage rapide sudo

démarrage flash sudo fastboot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img

Rendement attendu (en se souvenant que le temps peut varier):

fini. temps total: 100,00s

Connectez une souris, un clavier et un moniteur/téléviseur à l'aide du port HDMI

Ayez ceci à portée de main:

utilisateur: linaro

mot de passe: linaro

Ouvrez l'application Lxterminal et procédez au téléchargement de la liste des mises à jour disponibles, concernant les packages installés:

sudo apt-get mise à jour

Assurez-vous d'installer les packages disponibles dans la liste:

sudo apt-get mise à niveau

Astuce: Linaro a été choisi en raison d'un démarrage extrêmement rapide et d'une communauté très engagée et orientée vers la résolution de problèmes, ce qui permet de gagner beaucoup de temps.

Étape 2: Localiser votre DragonBoard 410c à l'aide de son antenne GPS

Localiser votre DragonBoard 410c à l'aide de son antenne GPS
Localiser votre DragonBoard 410c à l'aide de son antenne GPS
Localiser votre DragonBoard 410c à l'aide de son antenne GPS
Localiser votre DragonBoard 410c à l'aide de son antenne GPS

Commencez par installer les applications nécessaires qui seront les clients du module GPS. Les noms des applications sont: GNSS-GPSD, GPSD et GPSD-CLIENTS. Pour cela, suivez les commandes:

sudo apt-get install gnss-gpsd gpsd gpsd-clients

Une fois ces applications installées, vous aurez besoin de plus de commandes pour le démarrer correctement:

sudo systemctl démarrer qdsp-start.service

sudo systemctl démarrer gnss-gpsd.service sudo systemctl démarrer qmi-gps-proxy.service

Emmenez maintenant la DragonBoard 410c dans une zone dégagée, avec une vue dégagée sur le ciel, lui permettant de recevoir le signal des satellites. Tapez maintenant dans le terminal:

gpsmon –n

D'après nos tests, les données commenceraient à s'afficher à l'écran après 10 minutes en moyenne. Cela change beaucoup d'un endroit à l'autre, outre la position du DragonBoard sur la fenêtre, ou à l'intérieur, en plus de nombreuses autres barrières qui peuvent interférer dans la réception du signal GPS.

Étape 3: Installation du dongle USB 3G/4G

Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G
Installation de la clé USB 3G/4G

Il existe plusieurs façons de connecter la DragonBoard 410c au réseau 3G/4G/GSM:

  • Utilisation d'un Shield / BreakoutBoard avec un modem GSM doté également d'un emplacement SimCard;
  • Utilisez une clé USB 3G/4G.

Pour ce projet, nous avons décidé d'utiliser le dongle USB E3272 de Huawei, car il était facile et rapide d'en acheter un.

Pour configurer le modem, vous pouvez utiliser le terminal (en utilisant l'application WVDial), mais le moyen le plus simple de le faire est d'utiliser l'interface utilisateur graphique (GUI) de Linaro. À cela comme suit:

  • Avec la clé USB connectée à la DragonBoard, faites un clic droit sur l'icône "réseaux" dans le coin inférieur droit de l'écran;
  • « Modifier les connexions » > « Ajouter »;
  • Choisissez « Mobile Broadband » dans le menu déroulant;
  • Cliquez sur « Créer ».

Suivez les instructions de l'assistant, en vous assurant de sélectionner le bon opérateur dans le menu, permettant à l'appareil de se connecter en conséquence.

Étape 4: Transformer la DragonBoard 410c en hotspot/point d'accès Wifi

Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
Transformer la DragonBoard 410c en hotspot/point d'accès Wifi

Le moyen le plus simple de configurer la DragonBoard 410c en tant que routeur wifi ou hotspot (maintenant que vous avez configuré la connexion Internet) est d'utiliser l'interface graphique du système. Pour ce faire, suivez les étapes ci-dessous:

  • Faites un clic droit sur l'icône du réseau dans le coin inférieur droit
  • Choisissez « Modifier les connexions puis « Ajouter »
  • Choisissez "Wi-Fi"
  • Cliquez sur créer

Changez le nom du réseau que vous souhaitez créer dans le champ « SSID » et changez le champ « Mode » en « Hotspot ».

Pour vous assurer que cela fonctionnera, vérifiez les points suivants:

  • Allez dans l'onglet "Paramètres IPv4"
  • Vérifiez si la « Méthode »

Étape 5: Accéder à la DragonBoard 410c sans fil à l'aide de SSH, via la connectivité Hotspot

Accéder à la DragonBoard 410c sans fil à l'aide de SSH, via la connectivité Hotspot
Accéder à la DragonBoard 410c sans fil à l'aide de SSH, via la connectivité Hotspot

Nous avons réussi à créer un moyen d'accéder à distance au DragonBoard, que vous soyez à proximité ou non. Habituellement, vous devrez vous connecter à la carte elle-même, en utilisant le wifi ou le bluetooth. Une autre façon serait d'y accéder en se connectant au même réseau Wifi (ex: depuis un routeur). En effectuant les étapes suivantes, nous créons un appareil autonome, qui génère son propre réseau et s'ouvre sur le Web, afin d'être accessible.

Vous pouvez commencer par installer le "Auto SSH", en utilisant le code ci-dessous:

sudo apt-get install gcc make

wget https://www.harding.motd.ca/autossh/autossh-1.4e.tgz tar -xf autossh-1.4e.tgz cd autossh-1.4e./configure make sudo make install

Nous allons maintenant générer une clé cryptographique, en utilisant le standard RSA. Cette clé va être utilisée pour accéder en toute sécurité à une instance de point de terminaison Linux, via l'IP publique du modem 3G. L'objectif principal de cette étape. Le code suivant copiera cette clé dans le référentiel de clés de confiance de Linux, en s'assurant que la connexion est encore plus sécurisée.

ssh-keygen -t rsa

scp ~/.ssh/id_rsa.pub user@remote_server:.ssh/authorized_keys autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222:localhost:22 user@remote_server

En suivant ces étapes, vous venez de transformer la Qualcomm DragonBoard 410c en Serveur Cloud ! \o/

Étape 6: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de Bluetooth - Partie 1/2

Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 1/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 1/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 1/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 1/2

L'interface de communication de la voiture se fait via un port OBD2. Les informations qui sont échangées dans ce port doivent être traduites, et pour cela nous avons besoin d'un dispositif d'interprétation. Il existe deux alternatives matérielles: ELM327 ou STN1170.

Pour ce projet, nous avons utilisé un appareil Bluetooth avec un chipset basé sur ELM327.

Il est important de noter que la disponibilité de l'ELM327 ne signifie pas qu'il s'agit de la VERSION ORIGINALE de l'ELM327. La plupart des chipsets disponibles sont basés sur la version 1.5, c'est-à-dire lorsque les informations de la puce ont été clonées et divulguées sur le marché. L'ELM327 d'origine est maintenant en version 2.2. L'évolution de ce chipset apporte plus de données sur les nouvelles voitures. Il est important de le savoir, car selon les tests, vous pourrez ou non accéder aux données des véhicules plus récents.

Avec l'adaptateur Bluetooth OBD2, trouvez le port OBD2 de votre voiture. Il se peut qu'il se trouve quelque part sous le volant. Il peut être plus facile de le rechercher en utilisant cet outil:

Accédez à la DragonBoard 410c en utilisant SSH, depuis votre ordinateur portable (rappelez-vous que vous êtes maintenant dans la voiture et que vous n'avez pas de téléviseur/moniteur pour brancher la carte). Dès que le périphérique Bluetooth OBD2 est inséré dans le port de voiture, suivez les étapes ci-dessous pour accéder à la connectivité Bluetooth.

sudo bluetoothctl

appariable sur l'agent sur l'analyse de l'agent par défaut surÀ ce stade, il est important que vous copiez l'adresse MAC car vous en aurez besoin pour les prochaines étapes

Tapez ces commandes:

faites confiance à MACADDRESS

paire MACADRESSE

Vous devriez être invité à saisir le code PIN pour coupler le Bluetooth OBD2 avec la carte.

Habituellement, le code PIN est 1234 ou 0000 - cela dépend de votre matériel

Vous devriez maintenant voir l'écran "connexion réussie". Pour quitter l'application Bluetooth, utilisez la commande suivante:

quitter

L'étape suivante consiste à lier l'appareil avec le port série:

sudo rfcomm lier 0 MACADDRESS 1

Pour vous assurer que l'opération a réussi, tapez:

ls /dev

Le port « Rfcomm0 » doit être répertorié.

Étape 7: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de Bluetooth - Partie 2/2

Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 2/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 2/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 2/2
Connecter la DragonBoard 410c à l'OBD de la voiture via Bluetooth - Partie 2/2

L'objectif principal de cette étape est de garantir que la communication entre les 3 appareils fonctionne:

ELM327, DragonBoard 410c et la voiture

Téléchargez l'application " Screen " pour envoyer des messages série via le port série

écran d'installation sudo apt-get

Le port série sera utilisé pour envoyer des commandes AT et recevoir les réponses entre la DragonBoard 410c et l'appareil ELM327.

Accédez au lien suivant pour plus d'informations sur les commandes AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Avertissement:

Soyez très prudent avec cette étape! Toutes les informations que vous envoyez à l'appareil seront interprétées et envoyées à la voiture, si un mauvais message est envoyé, il peut être mal interprété par la voiture et causer des problèmes. Faites attention aux commandes et étudiez-les avant d'essayer votre propre code. Nous vous recommandons fortement de suivre les instructions ci-dessous à la lettre.

Suivez la séquence de commandes ci-dessous pour initier la communication:

  • Cette fonction démarrera la communication série à l'aide de l'écran:

    écran /dev/rfcomm0

Dès que le terminal se charge, tapez les commandes suivantes dans cette séquence:

ATZ

ATL1 ATH1 ATS1 ATSP0

Test de communication finale:

Tapez dans la console:

ATI

Il devrait renvoyer "ELM327 v1.5" ou la version ELM de votre appareil

C'est la preuve que la communication entre l'appareil ELM et la DragonBoard 410c fonctionne

Conseil rapide

Pour quitter "Screen", il faut taper Ctrl+A suivi de Ctrl+D.

Étape 8: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de PyOBD

Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de PyOBD
Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de PyOBD

PyOBD est une bibliothèque Python permettant la communication avec les appareils OBD2 pouvant être connectés aux voitures. Avec cela, nous pouvons extraire plusieurs informations dont la vitesse du véhicule et les erreurs électriques.

Dans cette étape, nous devons nous assurer que les bibliothèques Python suivantes sont installées dans Linaro de votre DragonBoard 410c:

  • PIP - Gestionnaire de paquets de Python

    sudo apt-get installer python-pip

  • SetupTools - gestionnaire d'installation de fichiers

    sudo pip install -U pip setupstools

  • Wheel - installer le formateur de paquet

    sudo apt-get install python-wheel

  • OBD - Bibliothèque Python pour communiquer avec le périphérique OBD

    sudo apt-get installer python-obd

  • GPS - Bibliothèque Python pour récupérer les données du GPS

    sudo pip installer gps

  • Requêtes - Package Python pour RESTful

    demandes d'installation sudo pip

Pour vérifier si le package OBD fonctionne correctement, procédez comme suit:

python sudo

Maintenant, le curseur du terminal sera remplacé par ">>>" indiquant que Python est en cours d'exécution. Vous pouvez maintenant commencer à taper les commandes ci-dessous:

  • Commencez par importer la bibliothèque OBD:

    importation obd

  • Pour vous connecter au port série, utilisez la commande:

    connexion = ancien. OBD ("dev/rfcomm0")

  • Il est normal d'afficher un message d'erreur indiquant que la communication a échoué. Si cela se produit, réessayez.
  • Pour savoir si Python obtient des informations de la voiture passant par ELM327 via Bluetooth, tapez ce qui suit:

    connection.nom_protocole()

Étape 9: Lecture des données de la voiture, à l'aide de Python

Lire les données de la voiture, en utilisant Python
Lire les données de la voiture, en utilisant Python

Nous allons créer un fichier appelé: OBD.py, comme les instructions ci-dessous, suivi du code.

Commencez par importer la bibliothèque OBD dans Python pour démarrer les connexions.

Pour des raisons inconnues, en utilisant notre matériel, la première tentative de connexion échoue toujours. Deuxième essai, ça marche toujours. C'est pourquoi sur le code, vous remarquerez deux lignes de commande essayant d'établir la connexion.

Une fois la connexion réussie, nous avons lancé une boucle infinie, qui recherche les données OBD, les formate en fonction des paramètres prédéfinis. Après cela, il crée une URL, à l'aide de Query String, lui permettant d'être envoyée au serveur à l'aide de la méthode POST.

Sur l'exemple ci-dessous, nous avons réussi à obtenir les informations suivantes:

  • RPM
  • La vitesse

Les fonctions de capture de données utilisent deux paramètres. Par exemple, en utilisant [1][12] vous recherchez [module] [PID]. La liste des fonctions est disponible sur:

Enfin, générez l'URL avec toutes les informations concaténées et ajoutées au fichier, appelé "obd_data.dat".

Le code pour OBD.py est ci-dessous.

Après avoir connecté et capturé les données, nous allons créer un fichier appelé: envia_OBD.py

Cette partie du code devient plus simple. Importez les bibliothèques liées aux données de demande/envoi, en utilisant RESTFUL.

Créez un WHILE pour utiliser POST et envoyez l'URL de la première ligne du fichier, renseignée précédemment par OBD.py. Après cela, pour éviter d'envoyer à nouveau des données, il efface cette ligne du fichier.

Le code du fichier OBD.py est ci-dessous.

Étape 10: Scripts récurrents et procédure de stockage des données pour les données capturées

Scripts récurrents et procédure de stockage des données pour les données capturées
Scripts récurrents et procédure de stockage des données pour les données capturées

Tout ce que nous avons fait jusqu'à présent visait à garantir que la DragonBoard communique correctement avec les composants, comme la 3G, le Wifi, le Bluetooth, les données GPS et plus encore.

Utilisez le code ci-dessous pour éditer le fichier "rc.local", qui a déjà quelques fonctions et commandes prédéfinies. Il est situé à '/etc'. Pour éditer, utilisez la commande:

sudo nano /etc/rc.local

Nous devons maintenant configurer tous les services et fonctions, en créant des routines qui s'initialisent automatiquement au démarrage de la DragonBoard. Utilisons BASH pour le faire. BASH (Bourne-Again-SHell) est une application d'interprétation de commandes Linux.

Le code suivant contient des commandes BASH et vous devrez insérer l'adresse MAC Bluetooth/OBD. Soyez très prudent pour vous assurer de terminer le code par "exit 0" qui est la réponse du système indiquant que l'action a réussi.

si [! -f /etc/ssh/ssh_host_rsa_key]

then systemctl stop ssh.socket||true dpkg-reconfigure openssh-server fi sudo systemctl start qdsp-start.service rfcomm bind 0 MACADDRESS 1 sudo python /home/linaro/Documents/FadaDoCarro/conectaGPS.py & sudo python /home/linaro /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & sortie 0

Désormais, chaque fois que vous allumez le DragonBoard, il se connectera à la 3G et enverra les données GPS et OBD au serveur choisi.

Étape 11: Problèmes en cours de route

Problèmes en cours de route
Problèmes en cours de route

Nous avons énuméré ci-dessous certains des problèmes que nous avons trouvés en cours de route avant d'écrire ce Instructable, mais nous avons pensé que cela pourrait vous aider si cela vous arrivait.

  • PyOBD

    Vous devez être très prudent lorsque vous envoyez des données lorsque vous communiquez avec la voiture. Dans l'un de nos premiers essais, lorsque la communication n'était pas stable, nous avons envoyé la mauvaise commande qui a essentiellement fait planter l'ECU. Le levier de vitesse était coincé dans le stationnement et certains des voyants du tableau de bord continuaient de clignoter au hasard. La solution trouvée a été de débrancher l'un des câbles de la batterie pendant environ 15 minutes. Cela réinitialise l'ECU à son état d'usine par défaut, annulant ainsi toutes les commandes ou modifications que nous avons pu apporter

  • Linaro

    Nous avons eu un problème avec notre DragonBoard, qui a continué à redémarrer sporadiquement. Le problème a été résolu par l'équipe de Linaro qui a publié une version plus récente du système d'exploitation. Nous avons écrit ce tutoriel avec la version mise à jour

  • GPS de DragonBoard

    La DragonBoard 410c de Qualcomm n'a pas d'antenne GPS interne, donc pour améliorer l'acquisition du signal GPS, nous devons installer un connecteur pour une antenne externe. Ce processus est mieux expliqué dans le lien suivant:

Étape 12: Références

Les références
Les références

Chargeur de démarrage

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Linaro

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Como instalar o Linaro na DragonBoard 410c

www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/

Documentation de GPS pour DragonBoard

discuss.96boards.org/t/gps-software/170/16

Démo GPS

gist.github.com/wolfg1969/4653340

OBD Python

github.com/brendan-w/python-OBD

Connexion RaspberryPi à un OBD Bluetooth

gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/

Conseillé: