Innholdsfortegnelse:

DragonBoard og OBD2: 12 trinn
DragonBoard og OBD2: 12 trinn

Video: DragonBoard og OBD2: 12 trinn

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

Når du leser dataene som kommer ut av OBD2 -porten i bilen din, er det mulig å samle fantastisk informasjon fra den. Ved hjelp av DragonBoard 410c jobbet vi med dette prosjektet og detaljerte det her, slik at du kan gjøre det selv.

Dette prosjektet var bare mulig på grunn av partnerskapet med #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora som tillot oss å få tilgang til den beste maskinvaren på markedet, samt kontakten til de beste fagpersonene for å støtte utviklingen.

Teamet ble sammensatt av disse gutta:

Vi er veldig opptatt av å hjelpe deg med å nå målet ditt, og sørg for at du fullfører prosjektet, så gi oss beskjed hvis du trenger mer hjelp enn instruksjonene nedenfor.

Para seguir este projeto em Português, klikk her:

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

For dette prosjektet brukte vi følgende elementer:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 -grensesnitt
  • Dongle USB 3G/4G
  • Spenningsomformer billader (110v)

Trinn 1: Utføre DragonBoard 410c første oppsett **

Utføre DragonBoard 410c første oppsett **
Utføre DragonBoard 410c første oppsett **
Utføre DragonBoard 410c første oppsett **
Utføre DragonBoard 410c første oppsett **
Utføre DragonBoard 410c første oppsett **
Utføre DragonBoard 410c første oppsett **

Ved å bruke Qualcomm DragonBoard 410c startet vi prosjektet med å installere Linuxs distribusjon kalt Linaro, slik at vi kunne konfigurere alle nødvendige enheter.

For å lage et bilde av Linaro for DragonBoard, bruk Ubunto på VirtualBox, slik at du kan bruke FastBoot (det er en Linux -basert app). Så det du trenger å gjøre er å åpne Terminal på VM Ubuntu og skrive inn:

sudo apt-get android-tools-fastboot

For å installere Linaro må vi gå gjennom to viktige trinn:

1) Installere BOOTLOADER

Filnavn: dragonboard410c_bootloader_emmc_linux-79.zip

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

Pakk ut filene og velg mappen:

cd /mappenavn (banen til den utpakkede mappen)

Skriv inn følgende kode:

sudo fastboot -enheter

Forventet tilbakekomst:

(heksadesimal) fastboot

Skriv deretter inn:

sudo./flashall

Forventet tilbakekomst:

ferdig. total tid 1.000s (uten feil)

Installering av OPERASJONSSYSTEMET

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

Last ned disse 2 filene:

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

Dette er den siste versjonen som er tilgjengelig til dags dato (17. juni), så navnet kan endre seg i fremtiden. Mønsteret du ville lete etter er "boot-linaro-VersionName". Denne heter "Stretch" og den forrige var "Jessie".

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

Dette er den siste versjonen til dags dato (17. juni), og navnet kan endre seg i fremtiden. Se etter mønsteret "linaro-VersionName-alip".

Pakk ut filene fra. GZ

Få tilgang til "root" -mappen i forhold til de utpakkede filene

eksempel: "/Nedlastinger" som er stedet hvor nedlastede filer lagres.

Start nå med følgende kommandoer:

sudo fastboot -enheter

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

Forventet retur (husk at tiden kan variere):

ferdig. total tid: 100,00 s

Koble til en mus, et tastatur og en skjerm/TV ved hjelp av HDMI -porten

Ha dette for hånden:

bruker: linaro

passord: linaro

Åpne appen Lxterminal og fortsett med nedlastingen av listen over tilgjengelige oppdateringer angående de installerte pakkene:

sudo apt-get oppdatering

Sørg for å installere de tilgjengelige pakkene fra listen:

sudo apt-get oppgradering

Tips: Linaro ble valgt på grunn av en ekstremt rask støvel, og et fellesskap som var veldig engasjert og problemløsende orientert, noe som sparer mye tid.

Trinn 2: Finn DragonBoard 410c ved hjelp av GPS -antennen

Finne DragonBoard 410c ved hjelp av GPS -antennen
Finne DragonBoard 410c ved hjelp av GPS -antennen
Finne DragonBoard 410c ved hjelp av GPS -antennen
Finne DragonBoard 410c ved hjelp av GPS -antennen

Start med å installere de nødvendige appene som vil være klientene til GPS -modulen. Appnavnene er: GNSS-GPSD, GPSD og GPSD-KLIENTER. Følg kommandoene for å gjøre det:

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

Når disse appene er installert, trenger du flere kommandoer for å starte det riktig:

sudo systemctl start qdsp-start.service

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

Ta nå DragonBoard 410c til et vidt åpent område, med fri sikt mot himmelen, slik at den kan motta signalet fra satellittene. Skriv nå inn i terminalen:

gpsmon –n

Fra testene våre, ville data begynne å vises på skjermen etter 10 minutter, i gjennomsnitt. Det endrer seg mye fra sted til sted, i tillegg til posisjonen til DragonBoard på vinduet eller innendørs, i tillegg til mange andre barrierer som kan forstyrre GPS -signalmottaket.

Trinn 3: Installere 3G/4G USB -dongelen

Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen
Installere 3G/4G USB -dongelen

Det er noen få måter å koble DragonBoard 410c til 3G/4G/GSM -nettverket:

  • Bruke et Shield / BreakoutBoard med et GSM -modem som også har et SimCard -spor;
  • Bruk en USB 3G/4G Dongle.

For dette prosjektet bestemte vi oss for å bruke Huaweis E3272 USB Dongle, fordi det var enkelt og raskt å kjøpe en.

For å konfigurere modemet kan du bruke terminalen (ved å bruke WVDial -appen), men den enkleste måten å gjøre det på er å bruke Linaros grafiske brukergrensesnitt (GUI). Til det som følger:

  • Med USB-dongelen koblet til DragonBoard, høyreklikker du på "nettverk" -ikonet nederst til høyre på skjermen;
  • "Rediger tilkoblinger"> "Legg til";
  • Velg "Mobilt bredbånd" fra rullegardinmenyen;
  • Klikk "Opprett".

Følg instruksjonene fra veiviseren, og sørg for å velge riktig bærer fra menyen, slik at enheten kan koble til deretter.

Trinn 4: Transformere DragonBoard 410c til et Wifi -hotspot / tilgangspunkt

Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt
Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt
Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt
Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt
Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt
Transformere DragonBoard 410c til et wifi -hotspot / tilgangspunkt

Den enkleste måten å konfigurere DragonBoard 410c som en wifi -ruter eller et hotspot (nå som du har konfigurert internettforbindelse) er å bruke systemets GUI. Følg trinnene nedenfor for å gjøre det:

  • Høyreklikk på nettverksikonet i nedre høyre hjørne
  • Velg "Rediger tilkoblinger og deretter" Legg til"
  • Velg "WiFi"
  • Klikk på opprett

Endre navnet på nettverket du vil opprette i "SSID" -feltet, og endre "Mode" -feltet til "Hotspot".

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

  • Gå til kategorien "IPv4 -innstillinger"
  • Kontroller om "Metoden"

Trinn 5: Få tilgang til DragonBoard 410c trådløst ved hjelp av SSH, via hotspot -tilkobling

Få tilgang til DragonBoard 410c trådløst ved hjelp av SSH, via hotspot -tilkobling
Få tilgang til DragonBoard 410c trådløst ved hjelp av SSH, via hotspot -tilkobling

Vi klarte å lage en måte å få tilgang til DragonBoard eksternt, uansett om du er i nærheten eller ikke. Vanligvis må du koble til selve kortet ved hjelp av wifi eller bluetooth. En annen måte ville være å få tilgang til det ved å koble til det samme Wifi -nettverket (f.eks. Fra en ruter). Ved å utføre de neste trinnene, lager vi en selvstendig enhet som genererer sitt eget nettverk og åpner seg for nettet for å få tilgang.

Du kan starte med å installere "Auto SSH" ved å bruke koden nedenfor:

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

Nå skal vi generere en kryptografisk nøkkel, ved hjelp av RSA -standard. Denne nøkkelen kommer til å bli brukt for å få en sikker tilgang til en Linux -endepunktsforekomst, gjennom den offentlige IP -en til 3G -modemet. Hovedmålet med dette trinnet. Følgende kode vil kopiere nøkkelen til Linux Trusted Keys Repository, og sørge for at det er enda mer sikkerhet for tilkoblingen.

ssh -keygen -t rsa

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

Ved å følge disse trinnene har du nettopp forvandlet Qualcomm DragonBoard 410c til en skyserver! / o/

Trinn 6: Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 1/2

Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 1/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 1/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 1/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 1/2

Bilens kommunikasjonsgrensesnitt gjøres gjennom en OBD2 -port. Informasjonen som utveksles i denne porten må oversettes, og for det trenger vi en tolkeapparat. Det er to maskinvarealternativer: ELM327 eller STN1170.

For dette prosjektet brukte vi en Bluetooth -enhet med et brikkesett basert på ELM327.

Det er viktig å merke seg at tilgjengeligheten til ELM327 ikke betyr at den er den ORIGINALE VERSJONEN av ELM327. Mesteparten av de tilgjengelige brikkesettene er basert på versjon 1.5, det var da brikkens informasjon ble klonet og lekket ut på markedet. Den originale ELM327 er nå på versjon 2.2. Utviklingen av dette brikkesettet gir mer data om nyere biler. Det er viktig å vite det, fordi du avhengig av tester kanskje ikke får tilgang til data fra nyere kjøretøy.

Finn OBD2 -porten til bilen med OBD2 Bluetooth -adapteren. Den kan være plassert et sted under rattet. Det kan være lettere å lete etter det ved hjelp av dette verktøyet:

Få tilgang til DragonBoard 410c ved hjelp av SSH, fra den bærbare datamaskinen (husk at nå er du i bilen, og har ikke en TV/skjerm for å koble kortet til). Så snart OBD2 Bluetooth -enheten er satt inn i bilporten, følger du trinnene nedenfor for å få tilgang til Bluetooth -tilkoblingen.

sudo bluetoothctl

kan pares med agenten ved standard agentskanning påPå dette stadiet er det viktig at du kopierer MAC -adressen fordi du trenger den for de neste trinnene

Skriv inn disse kommandoene:

stole på MACADDRESS

par MACADDRESS

Du bør bli bedt om å skrive inn PIN -koden for å koble Bluetooth OBD2 med kortet.

Vanligvis er PIN -koden om 1234 eller 0000 - avhenger av maskinvaren din

Nå bør du se skjermbildet "tilkobling vellykket". For å avslutte Bluetooth -programmet, bruk følgende kommando:

slutte

Neste trinn er å BINNE enheten med serieporten:

sudo rfcomm bind 0 MACADDRESS 1

For å sikre at operasjonen lyktes, skriver du inn:

ls /dev

Porten "Rfcomm0" bør være oppført.

Trinn 7: Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 2/2

Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 2/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 2/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 2/2
Koble DragonBoard 410c til bilens OBD ved hjelp av Bluetooth - Del 2/2

Hovedmålet med dette trinnet er å garantere at kommunikasjonen mellom de tre enhetene fungerer:

ELM327, DragonBoard 410c og bilen

Last ned "Screen" -appen for å sende serielle meldinger gjennom serieporten

sudo apt-get installeringsskjerm

Den serielle porten vil bli brukt til å sende AT -kommandoer og motta svarene mellom DragonBoard 410c og ELM327 -enheten.

Gå til følgende lenke for mer informasjon om AT -kommandoer:

elmelectronics.com/ELM327/AT_Commands.pdf

Advarsel:

Vær veldig forsiktig med dette trinnet! All informasjon du sender til enheten blir tolket og sendt til bilen. Hvis feil melding blir sendt, kan den bli tolket feil av bilen og forårsake problemer. Vær oppmerksom på kommandoene og studer dem før du prøver din egen kode. Vi anbefaler på det sterkeste å følge instruksjonene nedenfor.

Følg kommandosekvensen nedenfor for å starte kommunikasjonen:

  • Denne funksjonen starter den serielle kommunikasjonen med skjermen:

    skjerm /dev /rfcomm0

Så snart terminalen lastes inn, skriver du inn følgende kommandoer i denne sekvensen:

ATZ

ATL1 ATH1 ATS1 ATSP0

Siste kommunikasjonstest:

Skriv inn konsollen:

ATI

Den skal returnere “ELM327 v1.5” eller ELM -versjonen av enheten din

Dette er et bevis på at kommunikasjonen mellom ELM -enheten og DragonBoard 410c fungerer

Raskt tips

For å avslutte "Screen" er det nødvendig å skrive Ctrl+A etterfulgt av Ctrl+D.

Trinn 8: Koble DragonBoard 410c til bilens OBD ved hjelp av PyOBD

Koble DragonBoard 410c til bilens OBD ved hjelp av PyOBD
Koble DragonBoard 410c til bilens OBD ved hjelp av PyOBD

PyOBD er et Python -bibliotek for å muliggjøre kommunikasjon med OBD2 -enheter som kan kobles til biler. Med det kan vi trekke ut flere opplysninger, inkludert kjøretøyets hastighet og elektriske feil.

I dette trinnet må vi sikre at følgende python -biblioteker er installert i Linaro på DragonBoard 410c:

  • PIP - Pythons pakkebehandler

    sudo apt-get install python-pip

  • SetupTools - filinstallasjonsbehandling

    sudo pip install -U pip setupstools

  • Hjul - installer pakkeformatering

    sudo apt-get install python-hjul

  • OBD - Python -bibliotek for å kommunisere med OBD -enhet

    sudo apt-get install python-obd

  • GPS - Python -bibliotek for å hente data fra GPS

    sudo pip installer gps

  • Forespørsler - Python -pakke for RESTful

    sudo pip installasjonsforespørsler

Følg disse trinnene for å kontrollere om pakken til OBD fungerer som den skal:

sudo python

Nå vil terminalens markør endres til ">>>" for å indikere at Python kjører. Du kan nå begynne å skrive kommandoene nedenfor:

  • Start med å importere OBD -bibliotek:

    import obd

  • For å koble til den serielle porten, bruk kommandoen:

    tilkobling = old. OBD (“dev/rfcomm0”)

  • Det er normalt å vise en feilmelding som sier at kommunikasjonen mislyktes, så hvis det skjer, prøv en gang til.
  • For å finne ut om Python får informasjon fra bilen som går gjennom ELM327 via bluetooth, skriver du inn følgende:

    connection.protocol_name ()

Trinn 9: Lese data fra bilen ved å bruke Python

Lese data fra bilen ved å bruke Python
Lese data fra bilen ved å bruke Python

Vi vil lage en fil som heter: OBD.py, som instruksjonene nedenfor, etterfulgt av koden.

Start med å importere OBD -biblioteket til Python for å starte tilkoblingene.

Av ukjente årsaker, ved bruk av maskinvaren vår, mislykkes alltid det første tilkoblingsforsøket. Andre forsøk, fungerer alltid. Derfor vil du på koden legge merke til to kommandolinjer som prøver å opprette tilkoblingen.

Etter at tilkoblingen er vellykket, startet vi en uendelig sløyfe som søker etter OBD -data og formaterer den i henhold til forhåndsinnstilte parametere. Etter det oppretter den en URL, ved hjelp av Query String, slik at den kan sendes til serveren ved hjelp av POST -metoden.

I eksemplet nedenfor klarte vi å få følgende informasjon:

  • RPM
  • Hastighet

Funksjonene for å fange data bruker to parametere. For eksempel, ved å bruke [1] [12] serker du etter [modul] [PID]. Listen over funksjoner finner du på:

Til slutt, generer URL -en med all informasjon sammenkoblet og lagt til i filen, kalt "obd_data.dat".

Koden for OBD.py er nedenfor.

Etter at vi har koblet til og fanget opp dataene, lager vi en fil som heter: envia_OBD.py

Denne delen av koden blir enklere. Importer bibliotekene knyttet til forespørselen/send dataene ved å bruke RESTFUL.

Lag en WHILE for å bruke POST og send URL -adressen til den første linjen i filen, som tidligere var fylt ut av OBD.py. Etter det, for å unngå at data skal sendes igjen, sletter den linjen fra filen.

Koden for filen OBD.py er nedenfor.

Trinn 10: Gjentagende skript og datalagringsprosedyre for datafangst

Gjentagende skript og datalagringsprosedyre for dataene som fanges opp
Gjentagende skript og datalagringsprosedyre for dataene som fanges opp

Alt vi har gjort så langt var orientert om å sikre at DragonBoard kommuniserte riktig med komponentene, som 3G, Wifi, Bluetooth, GPS -data og mer.

Bruk koden nedenfor for å redigere filen "rc.local", som allerede har noen funksjoner og forhåndsdefinerte kommandoer. Den ligger på '/etc'. For å redigere, bruk kommandoen:

sudo nano /etc/rc.local

Nå må vi konfigurere alle tjenester og funksjoner, og lage rutiner som initialiseres automatisk når DragonBoard starter. La oss bruke BASH for å gjøre dette. BASH (Bourne-Again-SHell) er en Linux Command-tolkeapp.

Følgende kode har BASH -kommandoer, og du må sette inn Bluetooth/OBD MAC -adressen. Vær ekstra forsiktig med å avslutte koden med "exit 0" som er systemets svar på at handlingen var vellykket.

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

deretter systemctl stop ssh.socket || true dpkg-omkonfigurer 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 nå av, hver gang du slår på DragonBoard, kobles den til 3G og sender GPS- og OBD -data til den valgte serveren.

Trinn 11: Problemer underveis

Problemer underveis
Problemer underveis

Vi listet opp noen av problemene vi fant underveis før du skrev denne instruksjonsboken, men vi trodde det kunne hjelpe deg hvis det skjer med deg.

  • PyOBD

    Du må være veldig forsiktig når du sender data mens du kommuniserer med bilen. I et av våre første forsøk, da kommunikasjonen ikke var stabil, sendte vi feil kommando som i utgangspunktet krasjet ECU. Girkassen satt fast på parkeringsplassen, og noen av lysene på dashbordet fortsatte å blinke tilfeldig. Løsningen som ble funnet var å koble fra en av batterikablene i omtrent 15 minutter. Dette tilbakestiller ECU til standard fabrikkstandard, og avbryter derfor alle kommandoer eller endringer vi kan ha gjort

  • Linaro

    Vi hadde et problem med DragonBoard, som fortsatte å starte sporadisk. Problemet ble løst av Linaros team som ga ut en nyere versjon av operativsystemet. Vi skrev denne opplæringen med den oppdaterte versjonen

  • DragonBoard sin GPS

    Qualcomms DragonBoard 410c har ikke en intern GPS -antenne, så for å forbedre GPS -signalinnsamlingen må vi installere en kontakt for en ekstern antenne. Denne prosessen forklares bedre i følgende lenke:

Trinn 12: Referanser

Referanser
Referanser

Bootloader

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

Linaro

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

Installasjon av Linaro og DragonBoard 410c

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

Dokumentasjon for GPS for 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/

Anbefalt: