Inhaltsverzeichnis:
- Schritt 1: Durchführen der Ersteinrichtung von DragonBoard 410c**
- Schritt 2: Lokalisieren Ihres DragonBoard 410c mit seiner GPS-Antenne
- Schritt 3: Installieren des 3G/4G-USB-Dongles
- Schritt 4: Verwandeln des DragonBoard 410c in einen Wifi Hotspot / Access Point
- Schritt 5: Drahtloser Zugriff auf das DragonBoard 410c über SSH über Hotspot-Konnektivität
- Schritt 6: Verbinden des DragonBoard 410c mit dem OBD des Autos über Bluetooth - Teil 1/2
- Schritt 7: Verbinden des DragonBoard 410c mit dem OBD des Autos über Bluetooth - Teil 2/2
- Schritt 8: Verbinden des DragonBoard 410c mit dem OBD des Autos mit PyOBD
- Schritt 9: Lesen von Daten aus dem Auto mit Python
- Schritt 10: Wiederkehrende Skripte und Datenspeicherungsverfahren für die erfassten Daten
- Schritt 11: Probleme auf dem Weg
- Schritt 12: Referenzen
Video: DragonBoard und OBD2 - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Durch das Lesen der Daten, die aus dem OBD2-Port in Ihrem Auto kommen, ist es möglich, erstaunliche Informationen daraus zu sammeln. Mit dem DragonBoard 410c haben wir an diesem Projekt gearbeitet und es hier detailliert beschrieben, damit Sie es selbst tun können.
Dieses Projekt war nur durch die Partnerschaft mit #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora möglich, die uns Zugang zur besten Hardware auf dem Markt sowie den Kontakt zu den besten Fachleuten zur Unterstützung der Entwicklung ermöglichte.
Das Team bestand aus diesen Jungs:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
Wir sind sehr daran interessiert, Ihnen zu helfen, Ihr Ziel zu erreichen, und stellen sicher, dass Sie Ihr Projekt abschließen. Lassen Sie uns also wissen, wenn Sie Hilfe benötigen, die über die folgenden Anweisungen hinausgeht.
Para seguir este projeto em português, clique aqui:
www.instructables.com/id/DragonBoard-Com-OBD
Für dieses Projekt haben wir die folgenden Elemente verwendet:
- Qualcomm DragonBoard 410c
- ELM327 Bluetooth OBD2-Schnittstelle
- Dongle USB 3G/4G
- Spannungswechselrichter Autoladegerät (110v)
Schritt 1: Durchführen der Ersteinrichtung von DragonBoard 410c**
Mit Qualcomm DragonBoard 410c starteten wir das Projekt mit der Installation der Linux-Distribution namens Linaro, die es uns ermöglichte, alle benötigten Geräte einzurichten.
Um ein Image von Linaro für das DragonBoard zu erstellen, verwenden Sie Ubunto auf VirtualBox, damit Sie FastBoot (das ist eine Linux-basierte App) verwenden können. Im Grunde müssen Sie also das Terminal an der VM Ubuntu öffnen und eingeben:
sudo apt-get android-tools-fastboot
Um Linaro zu installieren, müssen wir 2 wichtige Schritte durchlaufen:
1) Installation des BOOTLOADER
Dateiname: dragonboard410c_bootloader_emmc_linux-79.zip
builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
Entpacken Sie die Dateien und wählen Sie den Ordner aus:
cd /Ordnername (Pfad zum entpackten Ordner)
Geben Sie den folgenden Code ein:
sudo Fastboot-Geräte
Erwartete Rückkehr:
(hexadezimal) Fastboot
Geben Sie dann ein:
sudo./flashall
Erwartete Rückkehr:
fertig. Gesamtzeit 1.000s (ohne Fehler)
Installation des BETRIEBSSYSTEMS
builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
Laden Sie diese 2 Dateien herunter:
boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz
Dies ist die neueste verfügbare Version (Juni/17), daher kann sich der Name in Zukunft ändern. Das gesuchte Muster ist "boot-linaro-VersionName". Dieser heißt "Stretch" und der vorherige war "Jessie".
linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz
Dies ist die aktuellste Version (Juni/17) und der Name kann sich in Zukunft ändern. Suchen Sie nach dem Muster "linaro-VersionName-alip".
Entpacken Sie die Dateien aus der. GZ
Greifen Sie in Bezug auf die entpackten Dateien auf den Ordner "root" zu
Beispiel: "/Downloads" ist der Ort, an dem heruntergeladene Dateien gespeichert werden.
Beginnen Sie nun mit den folgenden Befehlen:
sudo Fastboot-Geräte
sudo fastboot flash boot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img
Erwartete Rendite (denken Sie daran, dass die Zeit variieren kann):
fertig. Gesamtzeit: 100.00s
Schließen Sie eine Maus, Tastatur und einen Monitor/Fernseher über den HDMI-Anschluss an
Habe das zur Hand:
Benutzer: Linaro
Passwort: Linaro
Öffnen Sie die App Lxterminal und fahren Sie mit dem Download der Liste der verfügbaren Updates bezüglich der installierten Pakete fort:
sudo apt-get update
Stellen Sie sicher, dass Sie die verfügbaren Pakete aus der Liste installieren:
sudo apt-get upgrade
Hinweis: Linaro wurde aufgrund eines extrem schnellen Bootes und einer sehr engagierten und problemlösungsorientierten Community ausgewählt, was viel Zeit spart.
Schritt 2: Lokalisieren Ihres DragonBoard 410c mit seiner GPS-Antenne
Beginnen Sie mit der Installation der erforderlichen Apps, die als Clients für das GPS-Modul dienen. Die App-Namen sind: GNSS-GPSD, GPSD und GPSD-CLIENTS. Befolgen Sie dazu die Befehle:
sudo apt-get install gnss-gpsd gpsd gpsd-clients
Wenn diese Apps installiert sind, benötigen Sie weitere Befehle, um sie ordnungsgemäß zu starten:
sudo systemctl start qdsp-start.service
sudo systemctl start gnss-gpsd.service sudo systemctl start qmi-gps-proxy.service
Bringen Sie das DragonBoard 410c nun in ein weites offenes Gebiet mit freier Sicht zum Himmel, damit es das Signal von den Satelliten empfangen kann. Geben Sie nun in das Terminal ein:
gpsmon – nein
Nach unseren Tests würden im Durchschnitt nach 10 Minuten Daten auf dem Bildschirm angezeigt. Das ändert sich von Ort zu Ort stark, abgesehen von der Position des DragonBoards am Fenster oder in Innenräumen, neben vielen anderen Hindernissen, die den GPS-Signalempfang stören können.
Schritt 3: Installieren des 3G/4G-USB-Dongles
Es gibt mehrere Möglichkeiten, das DragonBoard 410c mit dem 3G/4G/GSM-Netzwerk zu verbinden:
- Verwendung eines Shield / BreakoutBoard mit einem GSM-Modem, das auch einen SimCard-Steckplatz hat;
- Verwenden Sie einen USB-3G/4G-Dongle.
Für dieses Projekt haben wir uns für den USB-Dongle E3272 von Huawei entschieden, da er einfach und schnell zu kaufen war.
Um das Modem zu konfigurieren, können Sie das Terminal verwenden (mit der WVDial-App), aber am einfachsten geht dies über die grafische Benutzeroberfläche (GUI) von Linaro. Dazu wie folgt:
- Wenn der USB-Dongle mit dem DragonBoard verbunden ist, klicken Sie mit der rechten Maustaste auf das Symbol "Netzwerke" in der unteren rechten Ecke des Bildschirms;
- „Verbindungen bearbeiten“> „Hinzufügen“;
- Wählen Sie "Mobiles Breitband" aus dem Dropdown-Menü;
- Klicken Sie auf "Erstellen".
Folgen Sie den Anweisungen des Assistenten und stellen Sie sicher, dass Sie den richtigen Netzbetreiber aus dem Menü auswählen, damit sich das Gerät entsprechend verbinden kann.
Schritt 4: Verwandeln des DragonBoard 410c in einen Wifi Hotspot / Access Point
Der einfachste Weg, das DragonBoard 410c als WLAN-Router oder Hotspot (nachdem Sie die Internetverbindung konfiguriert haben) zu konfigurieren, besteht darin, die Benutzeroberfläche des Systems zu verwenden. Führen Sie dazu die folgenden Schritte aus:
- Klicken Sie mit der rechten Maustaste auf das Netzwerksymbol in der unteren rechten Ecke
- Wählen Sie „Verbindungen bearbeiten“und dann „Hinzufügen“
- Wählen Sie „WLAN“
- Klicken Sie auf Erstellen
Ändern Sie im Feld „SSID“den Namen des zu erstellenden Netzwerks und ändern Sie das Feld „Modus“in „Hotspot“.
Um sicherzustellen, dass es funktioniert, überprüfen Sie Folgendes:
- Gehen Sie zur Registerkarte „IPv4-Einstellungen“
- Überprüfen Sie, ob die "Methode"
Schritt 5: Drahtloser Zugriff auf das DragonBoard 410c über SSH über Hotspot-Konnektivität
Wir haben es geschafft, eine Möglichkeit für den Fernzugriff auf DragonBoard zu schaffen, egal ob Sie sich in der Nähe befinden oder nicht. Normalerweise müssen Sie sich über WLAN oder Bluetooth mit dem Board selbst verbinden. Eine andere Möglichkeit wäre, darauf zuzugreifen, indem Sie sich mit demselben Wifi-Netzwerk verbinden (z. B. von einem Router). Indem wir die nächsten Schritte ausführen, erstellen wir ein eigenständiges Gerät, das sein eigenes Netzwerk generiert und sich dem Web öffnet, um darauf zugreifen zu können.
Sie können mit der Installation von "Auto SSH" beginnen, indem Sie den folgenden Code verwenden:
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
Jetzt werden wir einen kryptografischen Schlüssel nach dem RSA-Standard generieren. Dieser Schlüssel wird verwendet, um über die öffentliche IP des 3G-Modems sicher auf eine Linux-Endpunktinstanz zuzugreifen. Das Hauptziel dieses Schrittes. Der folgende Code kopiert diesen Schlüssel in das Trusted Keys Repository von Linux, um sicherzustellen, dass die Verbindung noch sicherer ist.
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
Indem Sie diese Schritte befolgen, haben Sie das Qualcomm DragonBoard 410c gerade in einen Cloud-Server verwandelt! \Ö/
Schritt 6: Verbinden des DragonBoard 410c mit dem OBD des Autos über Bluetooth - Teil 1/2
Die Kommunikationsschnittstelle des Autos erfolgt über einen OBD2-Port. Die Informationen, die in diesem Port ausgetauscht werden, müssen übersetzt werden, und dafür benötigen wir ein Dolmetschergerät. Es gibt zwei Hardware-Alternativen: ELM327 oder STN1170.
Für dieses Projekt haben wir ein Bluetooth-Gerät mit einem Chipsatz basierend auf ELM327 verwendet.
Es ist wichtig zu beachten, dass die Verfügbarkeit des ELM327 nicht bedeutet, dass es sich um die ORIGINALVERSION von ELM327 handelt. Die meisten verfügbaren Chipsätze basieren auf Version 1.5, als die Informationen des Chips geklont und auf den Markt gelangt sind. Das ursprüngliche ELM327 befindet sich jetzt in der Version 2.2. Die Entwicklung dieses Chipsatzes bringt mehr Daten über neuere Autos. Es ist wichtig zu wissen, dass Sie je nach Tests auf Daten von neueren Fahrzeugen zugreifen können oder nicht.
Mit dem OBD2-Bluetooth-Adapter finden Sie den OBD2-Port Ihres Autos. Es kann sich irgendwo unter dem Lenkrad befinden. Es kann einfacher sein, mit diesem Tool danach zu suchen:
Greifen Sie über SSH von Ihrem Notebook auf das DragonBoard 410c zu (denken Sie daran, dass Sie sich jetzt im Auto befinden und keinen Fernseher/Monitor haben, um das Board anzuschließen). Sobald das OBD2-Bluetooth-Gerät in den Carport eingesteckt ist, führen Sie die folgenden Schritte aus, um auf die Bluetooth-Konnektivität zuzugreifen.
sudo bluetoothctl
koppelbar bei Agent bei Standard-Agent-Scan einZu diesem Zeitpunkt ist es wichtig, dass Sie die MAC-Adresse kopieren, da Sie sie für die nächsten Schritte benötigen
Geben Sie diese Befehle ein:
Vertrauen Sie MACADDRESS
Paar MACADRESSE
Sie sollten aufgefordert werden, den PIN-Code einzugeben, um das Bluetooth OBD2 mit dem Board zu koppeln.
Normalerweise ist der PIN-Code 1234 oder 0000 - hängt von Ihrer Hardware ab
Jetzt sollten Sie den Bildschirm "Verbindung erfolgreich" sehen. Um die Bluetooth-Anwendung zu beenden, verwenden Sie den folgenden Befehl:
Verlassen
Der nächste Schritt besteht darin, das Gerät mit dem seriellen Port zu BINDEN:
sudo rfcomm bind 0 MACADDRESS 1
Geben Sie Folgendes ein, um sicherzustellen, dass der Vorgang erfolgreich war:
ls /dev
Der Port „Rfcomm0“sollte aufgelistet sein.
Schritt 7: Verbinden des DragonBoard 410c mit dem OBD des Autos über Bluetooth - Teil 2/2
Das Hauptziel dieses Schrittes besteht darin, sicherzustellen, dass die Kommunikation zwischen den 3 Geräten funktioniert:
ELM327, DragonBoard 410c und das Auto
Laden Sie die „Screen“-App herunter, um serielle Nachrichten über den seriellen Anschluss zu senden
sudo apt-get Installationsbildschirm
Der serielle Port wird verwendet, um AT-Befehle zu senden und die Antworten zwischen dem DragonBoard 410c und dem ELM327-Gerät zu empfangen.
Rufen Sie den folgenden Link auf, um weitere Informationen zu AT-Befehlen zu erhalten:
elmelectronics.com/ELM327/AT_Commands.pdf
Warnung:
Seien Sie bei diesem Schritt sehr vorsichtig! Alle Informationen, die Sie an das Gerät senden, werden interpretiert und an das Auto gesendet. Wenn eine falsche Nachricht gesendet wird, kann dies vom Auto falsch interpretiert werden und Probleme verursachen. Achten Sie auf die Befehle und studieren Sie sie, bevor Sie Ihren eigenen Code ausprobieren. Wir empfehlen dringend, die folgenden Anweisungen genau zu befolgen.
Folgen Sie der folgenden Befehlssequenz, um die Kommunikation zu initiieren:
-
Diese Funktion startet die serielle Kommunikation über den Bildschirm:
screen /dev/rfcomm0
Sobald das Terminal geladen ist, geben Sie die folgenden Befehle in dieser Reihenfolge ein:
ATZ
ATL1 ATH1 ATS1 ATSP0
Abschließender Kommunikationstest:
Geben Sie in die Konsole ein:
ATI
Es sollte "ELM327 v1.5" oder die ELM-Version Ihres Geräts zurückgeben
Dies ist der Beweis, dass die Kommunikation zwischen dem ELM-Gerät und dem DragonBoard 410c funktioniert
Schneller Tipp
Um „Screen“zu verlassen, müssen Sie Strg+A gefolgt von Strg+D eingeben.
Schritt 8: Verbinden des DragonBoard 410c mit dem OBD des Autos mit PyOBD
PyOBD ist eine Python-Bibliothek, um die Kommunikation mit OBD2-Geräten zu ermöglichen, die mit Autos verbunden werden können. Damit können wir mehrere Informationen extrahieren, darunter die Geschwindigkeit des Fahrzeugs und elektrische Fehler.
In diesem Schritt müssen wir sicherstellen, dass die folgenden Python-Bibliotheken in Linaro Ihres DragonBoard 410c installiert sind:
-
PIP - Pythons Paketmanager
sudo apt-get install python-pip
-
SetupTools - Dateiinstallationsmanager
sudo pip install -U pip setupstools
-
Wheel - Paketformatierer installieren
sudo apt-get installiere python-wheel
-
OBD - Python-Bibliothek zur Kommunikation mit OBD-Geräten
sudo apt-get install python-obd
-
GPS - Python-Bibliothek zum Abrufen von Daten von GPS
sudo pip install gps
-
Anfragen - Python-Paket für RESTful
sudo pip Installationsanfragen
Um zu überprüfen, ob das Paket von OBD korrekt funktioniert, gehen Sie folgendermaßen vor:
sudo python
Jetzt wird der Cursor des Terminals auf „>>>“geändert, um anzuzeigen, dass Python ausgeführt wird. Sie können nun mit der Eingabe der folgenden Befehle beginnen:
-
Beginnen Sie mit dem Importieren der OBD-Bibliothek:
importieren
-
Um eine Verbindung zum seriellen Port herzustellen, verwenden Sie den Befehl:
Verbindung = old. OBD("dev/rfcomm0")
- Es ist normal, dass eine Fehlermeldung angezeigt wird, die besagt, dass die Kommunikation fehlgeschlagen ist. Versuchen Sie es in diesem Fall noch einmal.
-
Geben Sie Folgendes ein, um herauszufinden, ob Python Informationen von dem Auto erhält, das ELM327 über Bluetooth passiert:
verbindung.protokoll_name()
Schritt 9: Lesen von Daten aus dem Auto mit Python
Wir erstellen eine Datei namens: OBD.py, wie unten beschrieben, gefolgt vom Code.
Beginnen Sie mit dem Importieren der OBD-Bibliothek in Python, um die Verbindungen zu starten.
Aus unbekannten Gründen schlägt der erste Verbindungsversuch mit unserer Hardware immer fehl. Zweiter Versuch, funktioniert immer. Aus diesem Grund werden Sie im Code zwei Befehlszeilen bemerken, die versuchen, die Verbindung herzustellen.
Nachdem die Verbindung erfolgreich war, haben wir eine Endlosschleife gestartet, die nach OBD-Daten sucht und diese nach voreingestellten Parametern formatiert. Danach erstellt es mithilfe von Query String eine URL, die es ermöglicht, sie mit der POST-Methode an den Server zu senden.
Im folgenden Beispiel haben wir die folgenden Informationen erhalten:
- Drehzahl
- Geschwindigkeit
Die Funktionen zum Erfassen von Daten verwenden zwei Parameter. Wenn Sie beispielsweise [1][12] verwenden, suchen Sie nach [Modul] [PID]. Die Liste der Funktionen finden Sie unter:
Generieren Sie schließlich die URL mit allen verketteten und der Datei "obd_data.dat" hinzugefügten Informationen.
Code für OBD.py ist unten.
Nach dem Verbinden und Erfassen der Daten erstellen wir eine Datei namens: envia_OBD.py
Dieser Teil des Codes wird einfacher. Importieren Sie die Bibliotheken, die sich auf die Anfrage-/Sendedaten beziehen, mit RESTFUL.
Erstellen Sie ein WHILE, um POST zu verwenden, und senden Sie die URL der ersten Zeile der Datei, die zuvor von OBD.py ausgefüllt wurde. Danach wird diese Zeile aus der Datei gelöscht, um zu vermeiden, dass Daten erneut gesendet werden.
Code für die Datei OBD.py ist unten.
Schritt 10: Wiederkehrende Skripte und Datenspeicherungsverfahren für die erfassten Daten
Alles, was wir bisher getan haben, war darauf ausgerichtet, sicherzustellen, dass das DragonBoard ordnungsgemäß mit den Komponenten wie 3G, Wifi, Bluetooth, GPS-Daten und mehr kommuniziert.
Verwenden Sie den folgenden Code, um die Datei "rc.local" zu bearbeiten, die bereits einige Funktionen und vordefinierte Befehle enthält. Es befindet sich unter '/etc'. Verwenden Sie zum Bearbeiten den Befehl:
sudo nano /etc/rc.local
Jetzt müssen wir alle Dienste und Funktionen konfigurieren und Routinen erstellen, die beim Starten von DragonBoard automatisch initialisiert werden. Verwenden wir dazu BASH. BASH (Bourne-Again-SHell) ist eine Linux-Befehlsinterpreter-App.
Der folgende Code enthält BASH-Befehle, und Sie müssen die Bluetooth/OBD-MAC-Adresse eingeben. Achten Sie besonders darauf, den Code mit "exit 0" zu beenden, was die Antwort des Systems ist, dass die Aktion erfolgreich war.
wenn [! -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 & beenden 0
Von nun an verbindet sich das DragonBoard jedes Mal, wenn Sie es einschalten, mit 3G und sendet GPS- und OBD-Daten an den ausgewählten Server.
Schritt 11: Probleme auf dem Weg
Wir haben unten einige der Probleme aufgelistet, die wir auf dem Weg vor dem Schreiben dieses Instructable gefunden haben, aber wir dachten, es könnte Ihnen helfen, wenn es Ihnen passiert.
-
PyOBD
Sie müssen sehr vorsichtig sein, um Daten zu senden, während Sie mit dem Auto kommunizieren. Bei einem unserer ersten Versuche, als die Kommunikation nicht stabil war, haben wir den falschen Befehl gesendet, der das Steuergerät praktisch zum Absturz gebracht hat. Der Schalthebel steckte beim Parken fest und einige der Lichter des Armaturenbretts blinkten zufällig weiter. Die gefundene Lösung bestand darin, eines der Batteriekabel für etwa 15 Minuten zu trennen. Dadurch wird die ECU auf den werkseitigen Standardzustand zurückgesetzt, wodurch alle Befehle oder Änderungen, die wir möglicherweise vorgenommen haben, abgebrochen werden
-
Linaro
Wir hatten ein Problem mit unserem DragonBoard, das sporadisch immer wieder neu startete. Das Problem wurde von Linaros Team behoben, das eine neuere Version des Betriebssystems veröffentlichte. Wir haben dieses Tutorial mit der aktualisierten Version geschrieben
-
GPS von DragonBoard
Das DragonBoard 410c von Qualcomm hat keine interne GPS-Antenne. Um die GPS-Signalerfassung zu verbessern, müssen wir einen Anschluss für eine externe Antenne installieren. Dieser Vorgang wird im folgenden Link besser erklärt:
Schritt 12: Referenzen
Bootloader
builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
Linaro
builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
Como instalar oder Linaro na DragonBoard 410c
www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/
GPS-Dokumentation für DragonBoard
discuss.96boards.org/t/gps-software/170/16
GPS-Demo
gist.github.com/wolfg1969/4653340
Python-OBD
github.com/brendan-w/python-OBD
Conectando RaspberryPi à um OBD Bluetooth
gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/