Indholdsfortegnelse:

DragonBoard og OBD2: 12 trin
DragonBoard og OBD2: 12 trin

Video: DragonBoard og OBD2: 12 trin

Video: DragonBoard og OBD2: 12 trin
Video: BlueDriver OBD2 Diagnostic Scan Tool Review (reads ABS, Airbag, Tranny Codes) 2024, Juli
Anonim
DragonBoard og OBD2
DragonBoard og OBD2

Når du læser de data, der kommer ud af OBD2 -porten i din bil, er det muligt at indsamle fantastiske oplysninger fra den. Ved hjælp af DragonBoard 410c arbejdede vi på dette projekt og detaljerede det her, så du kan gøre det selv.

Dette projekt var kun muligt på grund af partnerskabet med #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora, der tillod os at få adgang til den bedste hardware på markedet, samt kontakt til de bedste fagfolk for at støtte udviklingen.

Holdet blev sammensat af disse fyre:

Vi er meget ivrige efter at hjælpe dig med at nå dit mål og sørge for at fuldføre dit projekt, så lad os vide, hvis du har brug for hjælp længere end instruktionerne herunder.

Para seguir este projeto em Português, klik:

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

Til dette projekt brugte vi følgende elementer:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 -grænseflade
  • Dongle USB 3G/4G
  • Spændingsinverter billader (110v)

Trin 1: Udførelse af DragonBoard 410c Indledende opsætning **

Udførelse af DragonBoard 410c Indledende opsætning **
Udførelse af DragonBoard 410c Indledende opsætning **
Udførelse af DragonBoard 410c Indledende opsætning **
Udførelse af DragonBoard 410c Indledende opsætning **
Udførelse af DragonBoard 410c Indledende opsætning **
Udførelse af DragonBoard 410c Indledende opsætning **

Ved hjælp af Qualcomm DragonBoard 410c startede vi projektet med at installere Linux's distribution kaldet Linaro, så vi kunne konfigurere alle nødvendige enheder.

For at oprette et billede af Linaro til DragonBoard skal du bruge Ubunto på VirtualBox, så du kan bruge FastBoot (det er en Linux -baseret app). Så grundlæggende skal du åbne terminalen på VM Ubuntu og indtaste:

sudo apt-get android-tools-fastboot

For at installere Linaro skal vi igennem 2 vigtige trin:

1) Installation af BOOTLOADER

Filnavn: dragonboard410c_bootloader_emmc_linux-79.zip

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

Pak filerne ud, og vælg mappen:

cd /mappenavn (sti til den udpakkede mappe)

Indtast følgende kode:

sudo fastboot -enheder

Forventet afkast:

(hexadecimal) fastboot

Indtast derefter:

sudo./flashall

Forventet afkast:

færdig. samlet tid 1.000s (uden fejl)

Installation af BETJENINGSSYSTEMET

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

Download disse 2 filer:

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

Dette er den seneste version, der er tilgængelig til dato (juni/17. juni), så navnet kan ændre sig i fremtiden. Det mønster, du leder efter, er "boot-linaro-VersionName". Denne kaldes "Stretch" og den forrige var "Jessie".

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

Dette er den seneste version til dato (juni/17. juni), og navnet kan ændre sig i fremtiden. Se efter mønsteret "linaro-VersionName-alip".

Pak filerne ud af. GZ

Få adgang til "root" -mappen i forhold til de udpakkede filer

eksempel: "/Downloads", som er det sted, hvor downloadede filer gemmes.

Start nu med følgende kommandoer:

sudo fastboot -enheder

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

Forventet afkast (husk at tiden kan variere):

færdig. samlet tid: 100,00s

Tilslut en mus, et tastatur og en skærm/tv ved hjælp af HDMI -porten

Har dette ved hånden:

bruger: linaro

adgangskode: linaro

Åbn appen Lxterminal og fortsæt med at downloade listen over tilgængelige opdateringer vedrørende de installerede pakker:

sudo apt-get opdatering

Sørg for at installere de tilgængelige pakker fra listen:

sudo apt-get opgradering

Tip: Linaro blev valgt på grund af en ekstremt hurtig støvle og et fællesskab meget engageret og problemløsende orienteret, hvilket sparer meget tid.

Trin 2: Find din DragonBoard 410c ved hjælp af sin GPS -antenne

Find din DragonBoard 410c ved hjælp af sin GPS -antenne
Find din DragonBoard 410c ved hjælp af sin GPS -antenne
Find din DragonBoard 410c ved hjælp af sin GPS -antenne
Find din DragonBoard 410c ved hjælp af sin GPS -antenne

Start med at installere de nødvendige apps, der vil være klienter til GPS -modulet. Appens navne er: GNSS-GPSD, GPSD og GPSD-KLIENTER. Følg kommandoerne for at gøre det:

sudo apt-get install gnss-gpsd gpsd gpsd-klienter

Når disse apps er installeret, skal du bruge flere kommandoer for at starte det korrekt:

sudo systemctl start qdsp-start.service

sudo systemctl start gnss-gpsd.service sudo systemctl start qmi-gps-proxy.service

Tag nu DragonBoard 410c til et vidt åbent område med klart udsyn til himlen, så den kan modtage signalet fra satellitterne. Indtast nu i terminalen:

gpsmon –n

Fra vores test, ville data begynde at vise sig på skærmen efter 10 minutter i gennemsnit. Det ændrer meget fra sted til sted, udover DragonBoards position på vinduet eller indendørs, udover mange andre barrierer, der kan forstyrre GPS -signalmodtagelsen.

Trin 3: Installation af 3G/4G USB -donglen

Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen
Installation af 3G/4G USB -donglen

Der er et par måder at forbinde DragonBoard 410c til 3G/4G/GSM -netværket:

  • Brug af et Shield / BreakoutBoard med et GSM -modem, der også har et SimCard -slot;
  • Brug en USB 3G/4G Dongle.

Til dette projekt besluttede vi at bruge Huaweis E3272 USB Dongle, fordi det var let og hurtigt at købe en.

For at konfigurere modemet kan du bruge terminalen (ved hjælp af WVDial -appen), men den nemmeste måde at gøre det på er ved at bruge Linaros grafiske brugergrænseflade (GUI). Til det som følger:

  • Med USB-donglen tilsluttet DragonBoard, skal du højreklikke på ikonet "netværk" i nederste højre hjørne af skærmen;
  • "Rediger forbindelser"> "Tilføj";
  • Vælg "Mobilt bredbånd" i rullemenuen;
  • Klik på "Opret".

Følg instruktionerne fra guiden, og sørg for at vælge den korrekte transportør fra menuen, så enheden kan oprette forbindelse i overensstemmelse hermed.

Trin 4: Transformering af DragonBoard 410c til et wifi -hotspot / adgangspunkt

Transformering af DragonBoard 410c til et wifi -hotspot / adgangspunkt
Transformering af DragonBoard 410c til et wifi -hotspot / adgangspunkt
Omdannelse af DragonBoard 410c til et wifi -hotspot / adgangspunkt
Omdannelse af DragonBoard 410c til et wifi -hotspot / adgangspunkt
Transformering af DragonBoard 410c til et wifi -hotspot / adgangspunkt
Transformering af DragonBoard 410c til et wifi -hotspot / adgangspunkt

Den nemmeste måde at konfigurere DragonBoard 410c som en wifi -router eller et hotspot (nu hvor du har konfigureret internetforbindelse) er at bruge systemets GUI. Følg nedenstående trin for at gøre det:

  • Højreklik på netværksikonet i nederste højre hjørne
  • Vælg "Rediger forbindelser og derefter" Tilføj"
  • Vælg "WiFi"
  • Klik på Opret

Skift navnet på det netværk, du vil oprette i feltet "SSID", og skift feltet "Tilstand" til "Hotspot".

For at sikre, at det fungerer, skal du kontrollere følgende:

  • Gå til fanen "IPv4 -indstillinger"
  • Kontroller, om "Metoden"

Trin 5: Adgang til DragonBoard 410c trådløst ved hjælp af SSH, via hotspot -forbindelse

Adgang til DragonBoard 410c trådløst ved hjælp af SSH, via hotspot -forbindelse
Adgang til DragonBoard 410c trådløst ved hjælp af SSH, via hotspot -forbindelse

Det lykkedes os at skabe en måde at få adgang til DragonBoard eksternt på, uanset om du er i nærheden eller ej. Normalt skal du oprette forbindelse til selve kortet ved hjælp af wifi eller bluetooth. En anden måde ville være at få adgang til det ved at oprette forbindelse til det samme Wifi -netværk (f.eks. Fra en router). Ved at udføre de næste trin opretter vi en selvstændig enhed, der genererer sit eget netværk og åbner sig for internettet for at få adgang.

Du kan starte med at installere "Auto SSH" ved hjælp af koden herunder:

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

Nu skal vi generere en kryptografisk nøgle ved hjælp af RSA -standard. Denne nøgle bruges til sikker adgang til en Linux -endepunktsforekomst via 3G -modemets offentlige IP. Hovedmålet med dette trin. Følgende kode kopierer nøglen til Linux Trusted Keys Repository og sikrer, at der er endnu mere sikkerhed for forbindelsen.

ssh -keygen -t rsa

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

Ved at følge disse trin har du netop omdannet Qualcomm DragonBoard 410c til en Cloud Server! / o/

Trin 6: Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 1/2

Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 1/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 1/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 1/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 1/2

Bilens kommunikationsinterface udføres via en OBD2 -port. De oplysninger, der udveksles i denne port, skal oversættes, og til det har vi brug for en tolkeapparat. Der er to hardware alternativer: ELM327 eller STN1170.

Til dette projekt brugte vi en Bluetooth -enhed med et chipsæt baseret på ELM327.

Det er vigtigt at bemærke tilgængeligheden af ELM327 betyder ikke, at det er den ORIGINALE VERSION af ELM327. Størstedelen af de tilgængelige chipsæt er baseret på version 1.5, det var da chipens oplysninger blev klonet og lækket ud på markedet. Den originale ELM327 er nu på version 2.2. Udviklingen af dette chipsæt bringer flere data om nyere biler. Det er vigtigt at vide det, for afhængigt af test kan du muligvis få adgang til data fra nyere køretøjer.

Find din bils OBD2 -port med OBD2 Bluetooth -adapteren. Det kan være placeret et sted under rattet. Det kan være lettere at søge efter det ved hjælp af dette værktøj:

Få adgang til DragonBoard 410c ved hjælp af SSH, fra din notebook (husk, at nu er du i bilen, og har ikke et tv/skærm til at tilslutte kortet). Så snart OBD2 Bluetooth -enheden er indsat i bilporten, skal du følge trinene herunder for at få adgang til Bluetooth -forbindelsen.

sudo bluetoothctl

kan parres på agent ved standardagentscanning tilPå dette tidspunkt er det vigtigt, at du kopierer MAC -adressen, fordi du får brug for den til de næste trin

Indtast disse kommandoer:

stole på MACADDRESS

par MACADDRESS

Du skal blive bedt om en anmodning om at indtaste PIN -koden for at parre Bluetooth OBD2 med kortet.

Normalt er PIN -koden, om 1234 eller 0000 - afhænger af din hardware

Nu skal du se skærmen "forbindelse vellykket". For at afslutte Bluetooth -applikationen skal du bruge følgende kommando:

Afslut

Næste trin er at BINDE enheden med den serielle port:

sudo rfcomm bind 0 MACADDRESS 1

For at sikre, at operationen lykkedes, skal du skrive:

ls /dev

Porten "Rfcomm0" skal være angivet.

Trin 7: Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 2/2

Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 2/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 2/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 2/2
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af Bluetooth - Del 2/2

Hovedformålet med dette trin er at garantere, at kommunikationen mellem de 3 enheder fungerer:

ELM327, DragonBoard 410c og bilen

Download "Screen" -appen for at sende serielle meddelelser via den serielle port

sudo apt-get installeringsskærm

Den serielle port bruges til at sende AT -kommandoer og modtage svarene mellem DragonBoard 410c og ELM327 -enheden.

Få adgang til følgende link for at få flere oplysninger om AT -kommandoer:

elmelectronics.com/ELM327/AT_Commands.pdf

Advarsel:

Vær meget forsigtig med dette trin! Alle oplysninger, du sender til enheden, bliver fortolket og sendt til bilen. Hvis der sendes en forkert besked, kan den blive misfortolket af bilen og forårsage problemer. Vær opmærksom på kommandoerne, og studer dem, før du prøver din egen kode. Vi anbefaler kraftigt at følge instruktionerne nedenfor.

Følg kommandosekvensen herunder for at starte kommunikationen:

  • Denne funktion starter den serielle kommunikation ved hjælp af skærmen:

    skærm /dev /rfcomm0

Så snart terminalen indlæses, skal du skrive følgende kommandoer i denne sekvens:

ATZ

ATL1 ATH1 ATS1 ATSP0

Afsluttende kommunikationstest:

Indtast konsollen:

ATI

Det skal returnere "ELM327 v1.5" eller ELM -versionen af din enhed

Dette er et bevis på, at kommunikationen mellem ELM -enheden og DragonBoard 410c fungerer

Hurtigt tip

For at afslutte "Skærm" er det nødvendigt at skrive Ctrl+A efterfulgt af Ctrl+D.

Trin 8: Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af PyOBD

Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af PyOBD
Tilslutning af DragonBoard 410c til bilens OBD ved hjælp af PyOBD

PyOBD er et Python -bibliotek, der muliggør kommunikation med OBD2 -enheder, der kan forbindes til biler. Med det kan vi udtrække flere oplysninger, herunder køretøjets hastighed og elektriske fejl.

I dette trin skal vi sikre, at følgende python -biblioteker er installeret i Linaro på din DragonBoard 410c:

  • PIP - Pythons pakkeleder

    sudo apt-get install python-pip

  • SetupTools - filinstallationshåndtering

    sudo pip install -U pip setupstools

  • Hjul - installer pakkeformatering

    sudo apt-get install python-hjul

  • OBD - Python -bibliotek til at kommunikere med OBD -enhed

    sudo apt-get install python-obd

  • GPS - Python -bibliotek til at hente data fra GPS

    sudo pip installer gps

  • Anmodninger - Python -pakke til RESTful

    sudo pip installationsanmodninger

Følg disse trin for at kontrollere, om OBD’s pakke fungerer korrekt:

sudo python

Nu vil terminalens markør blive ændret til ">>>", hvilket angiver, at Python kører. Du kan nu begynde at skrive kommandoerne herunder:

  • Start med at importere OBD -bibliotek:

    import obd

  • For at oprette forbindelse til den serielle port skal du bruge kommandoen:

    forbindelse = gammel. OBD (“dev/rfcomm0”)

  • Det er normalt at vise en fejlmeddelelse, der siger, at kommunikationen mislykkedes, så hvis det sker, prøv en gang til.
  • For at finde ud af, om Python får oplysninger fra bilen, der passerer ELM327 via bluetooth, skal du skrive følgende:

    connection.protocol_name ()

Trin 9: Læsning af data fra bilen ved hjælp af Python

Læsning af data fra bilen ved hjælp af Python
Læsning af data fra bilen ved hjælp af Python

Vi opretter en fil kaldet: OBD.py, som instruktionerne nedenfor, efterfulgt af koden.

Start med at importere OBD -biblioteket til Python for at starte forbindelserne.

Af ukendte årsager mislykkes det første forbindelsesforsøg altid ved hjælp af vores hardware. Andet forsøg, virker altid. Derfor vil du på koden bemærke to kommandolinjer, der forsøger at oprette forbindelsen.

Efter at forbindelsen er lykkedes, startede vi en uendelig loop, der søger efter OBD -data, formaterer den i henhold til forudindstillede parametre. Derefter opretter den en URL ved hjælp af forespørgselsstreng, så den kan sendes til serveren ved hjælp af POST -metoden.

I eksemplet herunder lykkedes det os at få følgende oplysninger:

  • RPM
  • Hastighed

Funktionerne til registrering af data bruger to parametre. For eksempel ved at bruge [1] [12] serker du efter [modul] [PID]. Listen over funkioner kan findes på:

Til sidst skal du generere webadressen med alle oplysninger sammenkoblet og tilføjet til filen, kaldet "obd_data.dat".

Koden til OBD.py er nedenfor.

Efter tilslutning og registrering af dataene opretter vi en fil kaldet: envia_OBD.py

Denne del af koden bliver enklere. Importer de biblioteker, der er relateret til anmodningen/send data, ved hjælp af RESTFUL.

Opret en WHILE til at bruge POST og send URL'en til den første linje i filen, der tidligere var udfyldt af OBD.py. Derefter sletter den linje fra filen for at undgå, at data skal sendes igen.

Koden til filen OBD.py er nedenfor.

Trin 10: Tilbagevendende scripts og datalagringsprocedure for de fangede data

Tilbagevendende scripts og datalagringsprocedure for de fangede data
Tilbagevendende scripts og datalagringsprocedure for de fangede data

Alt, hvad vi har gjort hidtil, var orienteret om at sikre, at DragonBoard kommunikerede korrekt med komponenterne, som 3G, Wifi, Bluetooth, GPS -data og mere.

Brug koden herunder til at redigere filen "rc.local", der allerede har nogle funktioner og foruddefinerede kommandoer. Det er placeret på '/etc'. For at redigere skal du bruge kommandoen:

sudo nano /etc/rc.local

Nu skal vi konfigurere alle tjenester og funktioner og oprette rutiner, der initialiseres automatisk, når DragonBoard starter. Lad os bruge BASH til at gøre dette. BASH (Bourne-Again-SHell) er en Linux Command tolk-app.

Følgende kode har BASH -kommandoer, og du skal indsætte Bluetooth/OBD MAC -adressen. Vær ekstra forsigtig med at afslutte koden med "exit 0", som er systemets svar på, at handlingen var vellykket.

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

derefter systemctl stop ssh.socket || true dpkg-rekonfigurer 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 & exit 0

Fra nu af vil hver gang du tænder DragonBoard, oprette forbindelse til 3G og sende GPS- og OBD -data til den valgte server.

Trin 11: Problemer undervejs

Problemer undervejs
Problemer undervejs

Vi listede nedenfor nogle af de problemer, vi fandt undervejs, før vi skrev denne instruktionsbog, men vi troede, at det kunne hjælpe dig, hvis det sker for dig.

  • PyOBD

    Du skal være meget forsigtig med at sende data, mens du kommunikerer med bilen. I et af vores første forsøg, da kommunikationen ikke var stabil, sendte vi den forkerte kommando, som stort set styrtede ECU'en. Gearskiftet sad fast på parkeringspladsen, og nogle af lysene på instrumentbrættet blev ved med at blinke tilfældigt. Løsningen fundet var at afbryde et af batterikablerne i cirka 15 minutter. Dette nulstiller ECU'en til fabriksstandardtilstand og annullerer derfor alle kommandoer eller ændringer, vi måtte have foretaget

  • Linaro

    Vi havde et problem med vores DragonBoard, som blev ved med at genstarte sporadisk. Problemet blev løst af Linaros team, der udgav en nyere version af operativsystemet. Vi skrev denne vejledning med den opdaterede version

  • DragonBoard's GPS

    Qualcomms DragonBoard 410c har ikke en intern GPS -antenne, så for at forbedre GPS -signaloptagelsen skal vi installere et stik til en ekstern antenne. Denne proces forklares bedre i følgende link:

Trin 12: Referencer

Referencer
Referencer

Bootloader

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

Linaro

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

Installation af Linaro og DragonBoard 410c

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

Dokumentation af GPS til 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/

Anbefalede: