Table des matières:
- Étape 1: Exécution de la configuration initiale de la DragonBoard 410c**
- Étape 2: Localiser votre DragonBoard 410c à l'aide de son antenne GPS
- Étape 3: Installation du dongle USB 3G/4G
- Étape 4: Transformer la DragonBoard 410c en hotspot/point d'accès Wifi
- Étape 5: Accéder à la DragonBoard 410c sans fil à l'aide de SSH, via la connectivité Hotspot
- Étape 6: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de Bluetooth - Partie 1/2
- Étape 7: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de Bluetooth - Partie 2/2
- Étape 8: Connecter la DragonBoard 410c à l'OBD de la voiture à l'aide de PyOBD
- Étape 9: Lecture des données de la voiture, à l'aide de Python
- Étape 10: Scripts récurrents et procédure de stockage des données pour les données capturées
- Étape 11: Problèmes en cours de route
- Étape 12: Références
Vidéo: DragonBoard et OBD2 : 12 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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**
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
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
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
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
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
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
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
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
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
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
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
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é:
Tachymètre/jauge de balayage utilisant Arduino, OBD2 et bus CAN : 8 étapes
Tachymètre/jauge à balayage utilisant Arduino, OBD2 et CAN Bus : tout propriétaire de Toyota Prius (ou autre véhicule hybride/spécial) saura qu'il peut manquer quelques cadrans à son tableau de bord ! Ma prius n'a pas de régime moteur ni de jauge de température. Si vous êtes un gars de la performance, vous voudrez peut-être savoir des choses comme l'avance du temps et
Comment connecter et contrôler une lampe via le module ZigBee sur Dragonboard : 5 étapes
Comment connecter et contrôler une lampe via le module ZigBee sur Dragonboard : Cette instructable enseigne à l'utilisateur comment connecter et installer correctement le module ZigBee sur le Dragonboard et l'interagir avec une lampe contrôlée ZigBee (OSRAM), créant un réseau IOT ZigBee. : Dragonboard 410c; Clé USB CC2531; T
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 étapes
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Application Android : DESCRIÇÃOO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou shopping centers e aeroportos.A locomoção em ambientes já mapeados pode ou não s
Détecter les situations d'urgence - Qualcomm Dragonboard 410c : 7 étapes
Détection des situations d'urgence - Qualcomm Dragonboard 410c : Si vous recherchez des systèmes de sécurité qui fonctionnent pour surveiller les situations d'urgence, il est possible de remarquer qu'il est trop difficile de traiter toutes les informations enregistrées. En pensant à cela, nous avons décidé d'utiliser nos connaissances en traitement audio/image, capteurs et
Lecteur Bluetooth OBD2 : 3 étapes
Lecteur Bluetooth OBD2 : Bienvenue, c'est mon premier Instructable et j'espère qu'il est facile à comprendre et que vous pouvez créer le vôtre. Si vous avez des questions, n'hésitez pas à me contacter et je pourrai peut-être vous aider. Je vais essayer de rendre cela extrêmement simple à suivre avec cela