Kazalo:

DragonBoard in OBD2: 12 korakov
DragonBoard in OBD2: 12 korakov

Video: DragonBoard in OBD2: 12 korakov

Video: DragonBoard in OBD2: 12 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
DragonBoard in OBD2
DragonBoard in OBD2

Če preberete podatke, ki prihajajo iz vrat OBD2 v vašem avtomobilu, je mogoče zbrati neverjetne podatke. Z DragonBoard 410c smo delali na tem projektu in ga podrobno opisali tukaj, tako da lahko to storite sami.

Ta projekt je bil možen le zaradi partnerstva z #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora, ki nam je omogočil dostop do najboljše strojne opreme na trgu, pa tudi zaradi stika z najboljšimi strokovnjaki za podporo razvoju.

Ekipo so sestavljali ti fantje:

Zelo vam želimo pomagati pri doseganju vašega cilja in poskrbeti, da dokončate svoj projekt, zato nam sporočite, če potrebujete dodatno pomoč od spodnjih navodil.

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

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

Za ta projekt smo uporabili naslednje postavke:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 vmesnik
  • Ključ USB 3G/4G
  • Napetostni inverterski avtomobilski polnilnik (110v)

1. korak: Izvajanje začetne nastavitve DragonBoard 410c **

Izvajanje začetne nastavitve DragonBoard 410c **
Izvajanje začetne nastavitve DragonBoard 410c **
Izvajanje začetne nastavitve DragonBoard 410c **
Izvajanje začetne nastavitve DragonBoard 410c **
Izvajanje začetne nastavitve DragonBoard 410c **
Izvajanje začetne nastavitve DragonBoard 410c **

Z uporabo Qualcomm DragonBoard 410c smo projekt začeli z namestitvijo distribucije Linuro Linaro, ki nam je omogočila nastavitev vseh potrebnih naprav.

Če želite ustvariti podobo Linara za DragonBoard, uporabite Ubunto na VirtualBoxu, tako da lahko uporabite FastBoot (to je aplikacija, ki temelji na Linuxu). V bistvu morate odpreti terminal v VM Ubuntu in vnesti:

sudo apt-get android-tools-fastboot

Za namestitev Linara moramo opraviti dva pomembna koraka:

1) Namestitev BOOTLOADER -ja

Ime datoteke: dragonboard410c_bootloader_emmc_linux-79.zip

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

Razpakirajte datoteke in izberite mapo:

cd /FolderName (pot do nezapakirane mape)

Vnesite naslednjo kodo:

sudo fastboot naprave

Pričakovan donos:

(šestnajstiški) hitri zagon

Nato vnesite:

sudo./flashall

Pričakovan donos:

Dokončano. skupni čas 1.000 s (brez napak)

Namestitev OPERATIVNEGA SISTEMA

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

Prenesite te 2 datoteki:

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

To je najnovejša različica, ki je na voljo do danes (junij/17), zato se bo ime lahko v prihodnosti spremenilo. Vzorec, ki bi ga iskali, je "boot-linaro-VersionName". Ta se imenuje "Stretch", prejšnja pa "Jessie".

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

To je najnovejša različica do danes (junij/17.), ime pa se lahko v prihodnosti spremeni. Poiščite vzorec "linaro-VersionName-alip".

Razpakirajte datoteke iz. GZ

Dostop do mape "root" v zvezi z razpakiranimi datotekami

primer: "/Prenosi", kjer se shranjujejo naložene datoteke.

Zdaj začnite z naslednjimi ukazi:

sudo fastboot naprave

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

Pričakovana donosnost (čas se lahko razlikuje):

Dokončano. skupni čas: 100,00s

Miško, tipkovnico in monitor/televizor povežite z vrati HDMI

Pri roki imejte to:

uporabnik: linaro

geslo: linaro

Odprite aplikacijo Lxterminal in nadaljujte s prenosom seznama razpoložljivih posodobitev glede nameščenih paketov:

sudo apt-get posodobitev

Namestite razpoložljive pakete s seznama:

sudo apt-get nadgradnja

Namig: Linaro je bil izbran zaradi izjemno hitrega zagona in skupnosti, ki je zelo angažirana in usmerjena v reševanje težav, kar prihrani veliko časa.

2. korak: Poiščite DragonBoard 410c z uporabo njegove antene GPS

Iskanje vašega DragonBoard 410c z uporabo njegove antene GPS
Iskanje vašega DragonBoard 410c z uporabo njegove antene GPS
Iskanje vašega DragonBoard 410c z uporabo njegove antene GPS
Iskanje vašega DragonBoard 410c z uporabo njegove antene GPS

Začnite z namestitvijo potrebnih aplikacij, ki bodo odjemalci modula GPS. Imena aplikacij so: GNSS-GPSD, GPSD in GPSD-CLIENTS. Če želite to narediti, sledite ukazom:

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

Če so te aplikacije nameščene, boste za pravilen zagon potrebovali več ukazov:

sudo systemctl start qdsp-start.service

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

Zdaj vzemite DragonBoard 410c na široko odprto območje z jasnim pogledom na nebo, ki mu omogoča sprejem signala s satelitov. Zdaj vtipkajte v terminal:

gpsmon –n

Po naših testih bi se podatki v povprečju začeli prikazovati na zaslonu po 10 minutah. To se zelo spreminja od kraja do kraja, poleg položaja DragonBoard -a na oknu ali v zaprtih prostorih, poleg številnih drugih ovir, ki lahko motijo sprejem signala GPS.

3. korak: Namestitev 3G/4G USB ključa

Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G
Namestitev USB ključa 3G/4G

DragonBoard 410c lahko povežete z omrežjem 3G/4G/GSM na nekaj načinov:

  • Uporaba Shield / BreakoutBoard -a z modemom GSM, ki ima tudi režo za SimCard;
  • Uporabite USB ključ 3G/4G.

Za ta projekt smo se odločili uporabiti Huaweijev ključ E3272 USB, saj ga je bilo enostavno in hitro kupiti.

Za konfiguracijo modema lahko uporabite terminal (z uporabo aplikacije WVDial), vendar je to najlažje storiti z grafičnim uporabniškim vmesnikom Linaro (GUI). K temu na naslednji način:

  • Ko je ključ USB priključen na DragonBoard, z desno tipko miške kliknite ikono »omrežja« v spodnjem desnem kotu zaslona;
  • »Uredi povezave«> »Dodaj«;
  • V spustnem meniju izberite »Mobilna širokopasovna povezava«;
  • Kliknite "Ustvari".

Sledite navodilom čarovnika, pri tem pa v meniju izberite ustreznega operaterja, ki omogoča ustrezno povezavo naprave.

4. korak: Pretvorite DragonBoard 410c v vročo točko / dostopno točko Wifi

Pretvorba DragonBoard 410c v dostopno točko Wifi / dostopno točko
Pretvorba DragonBoard 410c v dostopno točko Wifi / dostopno točko
Pretvorba DragonBoard 410c v dostopno točko Wifi / dostopno točko
Pretvorba DragonBoard 410c v dostopno točko Wifi / dostopno točko
Pretvorba DragonBoard 410c v vročo točko Wifi / dostopno točko
Pretvorba DragonBoard 410c v vročo točko Wifi / dostopno točko

Najlažji način, da DragonBoard 410c konfigurirate kot usmerjevalnik Wi -Fi ali dostopno točko (zdaj, ko ste konfigurirali internetno povezavo), je uporaba sistemskega grafičnega vmesnika. Če želite to narediti, sledite spodnjim korakom:

  • Z desno miškino tipko kliknite ikono omrežja v spodnjem desnem kotu
  • Izberite »Uredi povezave in nato» Dodaj «
  • Izberite »WiFi«
  • Kliknite na Ustvari

V polju »SSID« spremenite ime omrežja, ki ga želite ustvariti, in polje »Način« spremenite v »Hotspot«.

Če želite zagotoviti, da bo delovalo, preverite naslednje:

  • Pojdite na zavihek »Nastavitve IPv4«
  • Preverite, ali je »Metoda«

5. korak: Brezžični dostop do DragonBoard 410c z uporabo SSH prek povezave Hotspot

Brezžični dostop do DragonBoard 410c z uporabo SSH, prek povezave Hotspot
Brezžični dostop do DragonBoard 410c z uporabo SSH, prek povezave Hotspot

Uspelo nam je ustvariti način za oddaljeni dostop do DragonBoarda, ne glede na to, ali ste blizu njega ali ne. Običajno bi se morali povezati s samo ploščo z uporabo wifi ali bluetooth. Drug način bi bil dostop do njega s povezavo v isto omrežje Wifi (npr.: iz usmerjevalnika). Z izvajanjem naslednjih korakov ustvarjamo samostojno napravo, ki ustvari lastno omrežje in se odpre v spletu, do katerega lahko dostopamo.

Začnete lahko z namestitvijo »Auto SSH« s spodnjo kodo:

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

Zdaj bomo ustvarili kriptografski ključ s standardom RSA. Ta ključ bo uporabljen za varen dostop do primerka končne točke Linuxa prek javnega IP -ja modema 3G. Glavni cilj tega koraka. Naslednja koda bo ta ključ kopirala v skladišče zaupanja vrednih ključev Linuxa in tako zagotovila še večjo varnost povezave.

ssh -keygen -t rsa

scp ~/.ssh/id_rsa.pub uporabnik@oddaljeni strežnik:.ssh/pooblaščeni_ključi autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 uporabnik na oddaljenem strežniku

S temi koraki ste pravkar preoblikovali Qualcomm DragonBoard 410c v strežnik v oblaku! / o/

Korak 6: Povezovanje DragonBoard 410c z OBD v avtomobilu z uporabo Bluetooth - 1. del

Priključitev DragonBoard 410c na OBD v avtomobilu z uporabo Bluetootha - 1. del
Priključitev DragonBoard 410c na OBD v avtomobilu z uporabo Bluetootha - 1. del
Priključitev DragonBoard 410c na OBD v avtomobilu z uporabo Bluetootha - 1. del
Priključitev DragonBoard 410c na OBD v avtomobilu z uporabo Bluetootha - 1. del

Avtomobilski komunikacijski vmesnik poteka prek vrat OBD2. Podatke, ki se izmenjujejo v tem pristanišču, je treba prevesti, za to pa potrebujemo tolmaško napravo. Obstajata dve možnosti strojne opreme: ELM327 ali STN1170.

Za ta projekt smo uporabili napravo Bluetooth s čipom, ki temelji na ELM327.

Pomembno je omeniti, da razpoložljivost ELM327 ne pomeni, da gre za ORIGINALNO RAZLIČICO ELM327. Večina razpoložljivih naborov čipov temelji na različici 1.5, takrat so bile informacije o čipu klonirane in pricurljale na trg. Prvotni ELM327 je zdaj na različici 2.2. Razvoj tega nabora čipov prinaša več podatkov o novejših avtomobilih. To je pomembno vedeti, saj lahko glede na teste dostopate do podatkov iz novejših vozil ali pa tudi ne.

Z adapterjem Bluetooth OBD2 poiščite vrata OBD2 v svojem avtomobilu. Morda se nahaja nekje pod volanom. Morda bi ga bilo lažje iskati s tem orodjem:

Dostop do DragonBoard 410c s pomočjo prenosnega računalnika SSH (ne pozabite, da ste zdaj v avtu in nimate televizorja/monitorja za priključitev plošče). Takoj, ko je naprava OBD2 Bluetooth vstavljena v avtomobilska vrata, sledite spodnjim korakom za dostop do povezave bluetooth.

sudo bluetoothctl

možno pri agentu pri privzetem skeniranju posrednikaNa tej stopnji je pomembno, da kopirate naslov MAC, ker ga boste potrebovali za naslednje korake

Vnesite te ukaze:

zaupajte MACADDRESS

par MACADDRESS

Pozvani boste, da vnesete kodo PIN, da povežete Bluetooth OBD2 s ploščo.

Običajno je PIN koda 1234 ali 0000 - odvisno od vaše strojne opreme

Zdaj bi morali videti zaslon "uspešna povezava". Če želite zapreti aplikacijo Bluetooth, uporabite naslednji ukaz:

prenehati

Naslednji korak je, da napravo povežete s serijskimi vrati:

sudo rfcomm bind 0 MACADDRESS 1

Če želite zagotoviti, da je operacija uspela, vnesite:

ls /dev

Navesti je treba vrata »Rfcomm0«.

Korak 7: Povezovanje DragonBoard 410c z OBD v avtomobilu z uporabo Bluetootha - 2. del

Povezovanje DragonBoard 410c z OBD avtomobila z uporabo Bluetootha - 2. del
Povezovanje DragonBoard 410c z OBD avtomobila z uporabo Bluetootha - 2. del
Povezovanje DragonBoard 410c z OBD avtomobila z uporabo Bluetootha - 2. del
Povezovanje DragonBoard 410c z OBD avtomobila z uporabo Bluetootha - 2. del

Glavni cilj tega koraka je zagotoviti, da komunikacija med tremi napravami deluje:

ELM327, DragonBoard 410c in avto

Prenesite aplikacijo »Zaslon« za pošiljanje serijskih sporočil skozi serijska vrata

sudo apt-get namestitveni zaslon

Serijska vrata bodo uporabljena za pošiljanje ukazov AT in sprejemanje odgovorov med DragonBoard 410c in napravo ELM327.

Za več informacij o ukazih AT pojdite na naslednjo povezavo:

elmelectronics.com/ELM327/AT_Commands.pdf

Opozorilo:

Pri tem koraku bodite zelo previdni! Vse informacije, ki jih pošljete v napravo, bodo interpretirane in poslane v avto. Če je poslano napačno sporočilo, ga lahko avto napačno razlaga in povzroči težave. Bodite pozorni na ukaze in jih preučite, preden poskusite z lastno kodo. Močno priporočamo, da sledite spodnjim navodilom do črke.

Za začetek komunikacije sledite spodnjemu zaporedju ukazov:

  • Ta funkcija zažene serijsko komunikacijo z uporabo zaslona:

    screen /dev /rfcomm0

Takoj, ko se terminal naloži, vnesite naslednje ukaze v tem zaporedju:

ATZ

ATL1 ATH1 ATS1 ATSP0

Končni test komunikacije:

V konzolo vnesite:

ATI

Vrniti mora »ELM327 v1.5« ali različico vaše naprave ELM

To je dokaz, da komunikacija naprave ELM in DragonBoard 410c deluje

Hiter nasvet

Če želite zapreti »Screen«, morate vnesti Ctrl+A in nato Ctrl+D.

8. korak: Povežite DragonBoard 410c z OBD avtomobila z uporabo PyOBD

Povezovanje DragonBoard 410c z OBD avtomobila z uporabo PyOBD
Povezovanje DragonBoard 410c z OBD avtomobila z uporabo PyOBD

PyOBD je knjižnica Python, ki omogoča komunikacijo z napravami OBD2, ki jih je mogoče povezati z avtomobili. Tako lahko izvlečemo več informacij, vključno s hitrostjo vozila in električnimi napakami.

V tem koraku moramo zagotoviti, da so v Linaro vašega DragonBoarda 410c nameščene naslednje knjižnice python:

  • PIP - Pythonov upravitelj paketov

    sudo apt-get install python-pip

  • SetupTools - upravitelj namestitve datotek

    sudo pip install -U pip setupstools

  • Kolo - namestite oblikovalnik paketov

    sudo apt-get install python-wheel

  • OBD - knjižnica Python za komunikacijo z napravo OBD

    sudo apt-get install python-obd

  • GPS - knjižnica Python za pridobivanje podatkov iz GPS

    sudo pip namestite gps

  • Zahteve - paket Python za RESTful

    zahteve za namestitev sudo pip

Če želite preveriti, ali paket OBD deluje pravilno, sledite tem korakom:

sudo python

Zdaj se bo kazalec terminala spremenil v »>>>«, kar kaže, da se Python izvaja. Zdaj lahko začnete vnašati spodnje ukaze:

  • Začnite z uvozom knjižnice OBD:

    uvoz obd

  • Za povezavo s serijskimi vrati uporabite ukaz:

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

  • Normalno je, da se prikaže sporočilo o napaki, ki pravi, da komunikacija ni uspela, zato, če se to zgodi, poskusite še enkrat.
  • Če želite izvedeti, ali Python dobiva informacije iz avtomobila, ki gre prek ELM327 prek bluetootha, vnesite naslednje:

    connection.protocol_name ()

9. korak: Branje podatkov iz avtomobila z uporabo Pythona

Branje podatkov iz avtomobila z uporabo Pythona
Branje podatkov iz avtomobila z uporabo Pythona

Ustvarili bomo datoteko z imenom: OBD.py, kot sledi spodaj, sledi koda.

Začnite tako, da uvozite knjižnico OBD v Python, da zaženete povezave.

Iz neznanih razlogov prvi poskus povezave z uporabo naše strojne opreme vedno ne uspe. Drugi poskus, vedno deluje. Zato boste na kodi opazili dve ukazni vrstici, ki poskušata vzpostaviti povezavo.

Ko je povezava uspešna, smo zagnali neskončno zanko, ki išče podatke OBD, jih oblikuje v skladu s prednastavljenimi parametri. Po tem ustvari URL z uporabo poizvedbenega niza, ki omogoča pošiljanje na strežnik z uporabo metode POST.

Na spodnjem primeru smo uspeli dobiti naslednje podatke:

  • RPM
  • Hitrost

Funkcije zajema podatkov uporabljajo dva parametra. Na primer, z uporabo [1] [12] iščete za [modul] [PID]. Seznam funkcij najdete na:

Končno ustvarite URL z vsemi informacijami, ki so združene in dodane v datoteko, imenovano "obd_data.dat".

Koda za OBD.py je spodaj.

Ko povežemo in zajamemo podatke, bomo ustvarili datoteko z imenom: envia_OBD.py

Ta del kode je poenostavljen. Uvozite knjižnice, povezane z zahtevo/pošljite podatke, z uporabo RESTFUL.

Ustvarite WHILE za uporabo POST in pošljite URL prve vrstice datoteke, ki je bila prej poseljena z OBD.py. Potem, da se izogne ponovnemu pošiljanju podatkov, izbriše to vrstico iz datoteke.

Koda za datoteko OBD.py je spodaj.

10. korak: ponavljajoči se skripti in postopek shranjevanja podatkov za zajete podatke

Ponavljajoči se skripti in postopek shranjevanja podatkov za zajete podatke
Ponavljajoči se skripti in postopek shranjevanja podatkov za zajete podatke

Vse, kar smo do sedaj naredili, je bilo usmerjeno v to, da je DragonBoard pravilno komuniciral s komponentami, kot so 3G, Wifi, Bluetooth, podatki GPS in drugo.

S spodnjo kodo uredite datoteko "rc.local", ki že ima nekatere funkcije in vnaprej določene ukaze. Nahaja se na naslovu '/etc'. Za urejanje uporabite ukaz:

sudo nano /etc/rc.local

Zdaj moramo konfigurirati vse storitve in funkcije ter ustvariti rutine, ki se samodejno inicializirajo ob zagonu programa DragonBoard. Za to uporabimo BASH. BASH (Bourne-Again-SHell) je aplikacija za tolmačenje ukazov Linuxa.

Naslednja koda ima ukaze BASH, zato morate vstaviti naslov Bluetooth/OBD MAC. Bodite še posebej previdni in se prepričajte, da kodo končate z "exit 0", ki je odgovor sistema, da je bilo dejanje uspešno.

če [! -f/etc/ssh/ssh_host_rsa_key]

nato systemctl stop ssh.socket || true dpkg-ponovno konfigurirajte 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

Od zdaj naprej se bo vsakič, ko vklopite DragonBoard, povezal s 3G in poslal podatke GPS in OBD na izbrani strežnik.

11. korak: Težave na poti

Težave na poti
Težave na poti

Spodaj smo našteli nekatera vprašanja, ki smo jih odkrili na poti pred pisanjem tega navodila, vendar smo mislili, da bi vam lahko pomagalo, če se vam to zgodi.

  • PyOBD

    Pri komunikaciji z avtomobilom morate biti zelo previdni pri pošiljanju podatkov. V enem od naših prvih poskusov, ko komunikacija ni bila stabilna, smo poslali napačen ukaz, ki je v bistvu zrušil ECU. Menjalnik je bil obtičal na parkirišču, nekatere luči armaturne plošče pa so naključno utripale. Najdena rešitev je bila, da za približno 15 minut odklopite enega od baterijskih kablov. To ponastavi ECU na tovarniško privzeto stanje, zato prekliče vse ukaze ali spremembe, ki smo jih morda naredili

  • Linaro

    Imeli smo težave z DragonBoardom, ki se je občasno znova zagnal. Težavo je rešila Linarova ekipa, ki je izdala novejšo različico operacijskega sistema. To vadnico smo napisali s posodobljeno različico

  • DragonBoardov GPS

    Qualcommov DragonBoard 410c nima notranje antene GPS, zato moramo za izboljšanje pridobivanja signala GPS namestiti priključek za zunanjo anteno. Ta postopek je bolje razložiti na naslednji povezavi:

12. korak: Reference

Reference
Reference

Nalagalnik

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

Linaro

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

Namestite Linaro na DragonBoard 410c

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

Dokumentacija o GPS za DragonBoard

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

Predstavitev GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Conectando RaspberryPi kot OBD Bluetooth

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

Priporočena: