Cuprins:

DragonBoard și OBD2: 12 pași
DragonBoard și OBD2: 12 pași

Video: DragonBoard și OBD2: 12 pași

Video: DragonBoard și OBD2: 12 pași
Video: DIAGNOSTICO DE CONECTOR OBD2, no enciende el Scanner 2024, Noiembrie
Anonim
DragonBoard și OBD2
DragonBoard și OBD2

Citind datele care ies din portul OBD2 din mașină, este posibil să colectați informații uimitoare de pe acesta. Folosind DragonBoard 410c, am lucrat la acest proiect și l-am detaliat aici, astfel încât să îl puteți face singur.

Acest proiect a fost posibil doar datorită parteneriatului cu #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora care ne-a permis accesul la cel mai bun hardware de pe piață, precum și contactul cu cei mai buni profesioniști pentru a sprijini dezvoltarea.

Echipa a fost compusă din acești tipi:

Suntem foarte dornici să vă ajutăm să vă atingeți obiectivul și să ne asigurăm că vă finalizați proiectul, așa că anunțați-ne dacă aveți nevoie de ajutor în plus față de instrucțiunile de mai jos.

Pentru a urmări acest proiect în Português, clique aqui:

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

Pentru acest proiect am folosit următoarele elemente:

  • Qualcomm DragonBoard 410c
  • Interfață Bluetooth OBD2 ELM327
  • Dongle USB 3G / 4G
  • Încărcător auto cu tensiune (110v)

Pasul 1: Efectuarea configurării inițiale DragonBoard 410c **

Efectuarea configurării inițiale DragonBoard 410c **
Efectuarea configurării inițiale DragonBoard 410c **
Efectuarea configurării inițiale DragonBoard 410c **
Efectuarea configurării inițiale DragonBoard 410c **
Efectuarea configurării inițiale DragonBoard 410c **
Efectuarea configurării inițiale DragonBoard 410c **

Folosind Qualcomm DragonBoard 410c, am început proiectul instalând distribuția Linux numită Linaro, permițându-ne să configurăm toate dispozitivele necesare.

Pentru a crea o imagine a Linaro pentru DragonBoard, utilizați Ubunto pe VirtualBox, astfel încât să puteți utiliza FastBoot (care este o aplicație bazată pe Linux). Deci, practic, ceea ce trebuie să faceți este să deschideți terminalul la VM Ubuntu și să introduceți:

sudo apt-get android-tools-fastboot

Pentru a instala Linaro, trebuie să parcurgem 2 pași importanți:

1) Instalarea BOOTLOADER-ului

Numele fișierului: dragonboard410c_bootloader_emmc_linux-79.zip

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

Dezarhivați fișierele și selectați folderul:

cd / FolderName (calea către folderul dezarhivat)

Introduceți următorul cod:

dispozitive sudo fastboot

Întoarcere preconizată:

(hexazecimal) fastboot

Apoi tastați:

sudo./flashall

Întoarcere preconizată:

terminat. timp total 1.000s (fără erori)

Instalarea SISTEMULUI OPERAȚIONAL

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

Descărcați aceste 2 fișiere:

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

Aceasta este cea mai recentă versiune disponibilă până în prezent (17 iunie / 17), astfel încât numele s-ar putea schimba în viitor. Modelul pe care l-ați căuta este „boot-linaro-VersionName”. Acesta se numește „Stretch”, iar precedentul era „Jessie”.

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

Aceasta este cea mai recentă versiune până în prezent (17 iunie / 17), iar numele s-ar putea schimba în viitor. Căutați modelul "linaro-VersionName-alip".

Dezarhivați fișierele din. GZ

Accesați folderul „rădăcină”, în raport cu fișierele dezarhivate

exemplu: „/ Descărcări”, care este locul în care sunt stocate fișierele descărcate.

Acum începeți cu următoarele comenzi:

dispozitive sudo fastboot

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

Întoarcerea așteptată (amintirea timpului poate varia):

terminat. timp total: 100.00s

Conectați un mouse, tastatură și un monitor / TV utilizând portul HDMI

Aveți acest lucru la îndemână:

utilizator: linaro

parola: linaro

Deschideți aplicația Lxterminal și continuați cu descărcarea listei de actualizări disponibile, cu privire la pachetele instalate:

sudo apt-get update

Asigurați-vă că instalați pachetele disponibile din listă:

sudo apt-get upgrade

Sugestie: Linaro a fost ales datorită unui boot extrem de rapid și a unei comunități foarte implicate și orientate spre rezolvarea problemelor, ceea ce economisește mult timp.

Pasul 2: Localizarea DragonBoard 410c folosind antena GPS

Localizarea DragonBoard 410c folosind antena GPS
Localizarea DragonBoard 410c folosind antena GPS
Localizarea DragonBoard 410c folosind antena GPS
Localizarea DragonBoard 410c folosind antena GPS

Începeți prin instalarea aplicațiilor necesare care vor fi clienții la modulul GPS. Numele aplicațiilor sunt: GNSS-GPSD, GPSD și GPSD-CLIENTS. Pentru a face acest lucru, urmați comenzile:

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

Cu aceste aplicații instalate, veți avea nevoie de mai multe comenzi pentru a porni corect:

sudo systemctl start qdsp-start.service

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

Acum, duceți DragonBoard 410c într-o zonă larg deschisă, cu vedere liberă a cerului, permițându-i să primească semnalul de la sateliți. Acum introduceți terminalul:

gpsmon –n

Din testele noastre, datele ar începe să apară pe ecran după 10 minute, în medie. Acest lucru se schimbă mult de la un loc la altul, pe lângă poziția DragonBoard pe fereastră sau în interior, pe lângă multe alte bariere care pot interfera în recepția semnalului GPS.

Pasul 3: Instalarea Dongle-ului USB 3G / 4G

Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G
Instalarea Dongle-ului USB 3G / 4G

Există câteva modalități de conectare a DragonBoard 410c la rețeaua 3G / 4G / GSM:

  • Utilizarea unui Shield / BreakoutBoard cu un modem GSM care are și un slot SimCard;
  • Folosiți un Dongle USB 3G / 4G.

Pentru acest proiect am decis să folosim USB Dongle-ul E3272 de la Huawei, deoarece a fost ușor și rapid să cumpăr unul.

Pentru a configura modemul, puteți utiliza terminalul (utilizând aplicația WVDial), dar cel mai simplu mod de a face acest lucru este folosind Linaro's Graphic User Interface (GUI). Pentru aceasta, după cum urmează:

  • Cu USB Dongle conectat la DragonBoard, faceți clic dreapta pe pictograma „rețele” din colțul din dreapta jos al ecranului;
  • „Editați conexiuni”> „Adăugați”;
  • Alegeți „Mobile Broadband” din meniul derulant;
  • Faceți clic pe „Creați”.

Urmați instrucțiunile din expert, asigurându-vă că selectați operatorul corespunzător din meniu, permițând dispozitivului să se conecteze corespunzător.

Pasul 4: Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi

Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi

Cel mai simplu mod de a configura DragonBoard 410c ca un router wifi sau un hotspot (acum că ați configurat conexiunea la internet) este să utilizați GUI-ul sistemului. Pentru aceasta, urmați pașii de mai jos:

  • Faceți clic dreapta pe pictograma de rețea din colțul din dreapta jos
  • Alegeți „Editați conexiunile și apoi„ Adăugați”
  • Alegeți „WiFi”
  • Faceți clic pe creați

Schimbați numele rețelei pe care doriți să o creați în câmpul „SSID” și schimbați câmpul „Mod” în „Hotspot”.

Pentru a vă asigura că va funcționa, verificați următoarele:

  • Accesați fila „Setări IPv4”
  • Verificați dacă „Metoda”

Pasul 5: Accesarea fără fir a DragonBoard 410c folosind SSH, prin conectivitate Hotspot

Accesarea fără fir a DragonBoard 410c utilizând SSH, prin conectivitate Hotspot
Accesarea fără fir a DragonBoard 410c utilizând SSH, prin conectivitate Hotspot

Am reușit să creăm o modalitate de a accesa de la distanță DragonBoard, indiferent dacă vă aflați sau nu în apropierea acestuia. De obicei, va trebui să vă conectați la placa în sine, utilizând wifi sau bluetooth. O altă modalitate ar fi accesarea acestuia prin conectarea la aceeași rețea Wifi (de exemplu: de la un router). Efectuând pașii următori, creăm un dispozitiv autonom, care își generează propria rețea și se deschide către web, pentru a fi accesat.

Puteți începe prin instalarea „Auto SSH”, utilizând codul de mai jos:

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

Acum vom genera o cheie criptografică, utilizând standardul RSA. Această cheie va fi utilizată pentru a accesa în siguranță o instanță de punct final Linux, prin IP-ul public al modemului 3G. Scopul principal al acestui pas. Următorul cod va copia acea cheie în depozitul de chei de încredere Linux, asigurându-vă că există și mai multă securitate a conexiunii.

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

Urmând acești pași, tocmai ați transformat Qualcomm DragonBoard 410c într-un server Cloud! / o /

Pasul 6: Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2

Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2

Interfața de comunicare a mașinii se face printr-un port OBD2. Informațiile care sunt schimbate în acest port trebuie traduse și, pentru aceasta, avem nevoie de un dispozitiv de interpretare. Există două alternative hardware: ELM327 sau STN1170.

Pentru acest proiect, am folosit un dispozitiv Bluetooth cu un chipset bazat pe ELM327.

Este important să rețineți că disponibilitatea ELM327 nu înseamnă că este VERSIUNEA ORIGINALĂ a ELM327. Cea mai mare parte a chipseturilor disponibile se bazează pe versiunea 1.5, atunci când informațiile chip-ului au fost clonate și difuzate pe piață. ELM327 original este acum în versiunea 2.2. Evoluția acestui chipset aduce mai multe date despre mașinile mai noi. Este important să știți acest lucru, deoarece, în funcție de teste, puteți sau nu să puteți accesa date de la vehicule mai noi.

Cu adaptorul Bluetooth OBD2, găsiți portul OBD2 al mașinii dvs. Poate fi localizat undeva sub volan. Poate fi mai ușor să îl căutați folosind acest instrument:

Accesați DragonBoard 410c folosind SSH, de pe notebook (amintiți-vă că acum sunteți în mașină și nu aveți un televizor / monitor pentru a conecta placa). De îndată ce dispozitivul Bluetooth OBD2 este introdus în portul auto, urmați pașii de mai jos pentru a accesa conectivitatea Bluetooth.

sudo bluetoothctl

împerecheabil la agent la scanarea implicită a agentului activatÎn această etapă este important să copiați adresa MAC, deoarece veți avea nevoie de ea pentru următorii pași

Tastați aceste comenzi:

ai încredere în MACADDRESS

pereche MACADDRESS

Ar trebui să vi se solicite o cerere de a introduce codul PIN pentru a împerechea Bluetooth OBD2 cu placa.

De obicei, codul PIN este dacă 1234 sau 0000 - depinde de hardware-ul dvs.

Acum ar trebui să vedeți ecranul „conexiune reușită”. Pentru a părăsi aplicația Bluetooth, utilizați următoarea comandă:

părăsi

Următorul pas este să legați dispozitivul cu portul serial:

sudo rfcomm bind 0 MACADDRESS 1

Pentru a vă asigura că operațiunea a reușit, tastați:

ls / dev

Portul „Rfcomm0” ar trebui să fie listat.

Pasul 7: Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2

Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2
Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2

Obiectivul principal al acestui pas este de a garanta că comunicarea dintre cele 3 dispozitive funcționează:

ELM327, DragonBoard 410c și mașina

Descărcați aplicația „Screen” pentru a trimite mesaje seriale prin portul serial

sudo apt-get ecran de instalare

Portul serial va fi utilizat pentru a trimite comenzi AT și pentru a primi răspunsurile între DragonBoard 410c și dispozitivul ELM327.

Accesați următorul link pentru mai multe informații despre comenzile AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Avertizare:

Fii foarte atent cu acest pas! Toate informațiile pe care le trimiteți dispozitivului vor fi interpretate și trimise mașinii, dacă este trimis un mesaj greșit, aceasta poate fi interpretată greșit de mașină și poate cauza probleme. Acordați atenție comenzilor și studiați-le înainte de a încerca propriul cod. Vă recomandăm să urmați instrucțiunile de mai jos la scrisoare.

Urmați secvența de comandă de mai jos pentru a iniția comunicarea:

  • Această funcție va porni comunicarea serială utilizând ecranul:

    ecran / dev / rfcomm0

De îndată ce terminalul se încarcă, tastați următoarele comenzi în această succesiune:

ATZ

ATL1 ATH1 ATS1 ATSP0

Test de comunicare finală:

Introduceți consola:

ATI

Ar trebui să returneze „ELM327 v1.5” sau versiunea ELM a dispozitivului dvs.

Aceasta este o dovadă că comunicarea dispozitivului ELM și a DragonBoard 410c funcționează

Sfat rapid

Pentru a părăsi „Screen” este necesar să tastați Ctrl + A urmat de Ctrl + D.

Pasul 8: Conectarea DragonBoard 410c la OBD-ul mașinii folosind PyOBD

Conectarea DragonBoard 410c la OBD-ul mașinii folosind PyOBD
Conectarea DragonBoard 410c la OBD-ul mașinii folosind PyOBD

PyOBD este o bibliotecă Python care permite comunicarea cu dispozitivele OBD2 care pot fi conectate la mașini. Cu aceasta, putem extrage mai multe informații, inclusiv viteza vehiculului și erorile electrice.

În acest pas, trebuie să ne asigurăm că următoarele biblioteci python sunt instalate în Linaro din DragonBoard 410c:

  • PIP - manager de pachete Python

    sudo apt-get install python-pip

  • SetupTools - manager de instalare fișiere

    sudo pip install -U pip setupstools

  • Roată - instalați formatatorul pachetului

    sudo apt-get install python-wheel

  • OBD - bibliotecă Python pentru a comunica cu dispozitivul OBD

    sudo apt-get install python-obd

  • GPS - bibliotecă Python pentru a obține date de pe GPS

    sudo pip instalează gps

  • Cereri - pachet Python pentru RESTful

    solicitări de instalare sudo pip

Pentru a verifica dacă pachetul OBD funcționează corect, urmați acești pași:

sudo python

Acum, cursorul terminalului va fi schimbat în „>>>” indicând faptul că Python rulează. Acum puteți începe să tastați comenzile de mai jos:

  • Începeți prin importarea bibliotecii OBD:

    import obd

  • Pentru a vă conecta la portul serial utilizați comanda:

    conexiune = vechi. OBD („dev / rfcomm0”)

  • Este normal să afișați un mesaj de eroare, spunând că comunicarea a eșuat, așa că, dacă se întâmplă acest lucru, încercați încă o dată.
  • Pentru a afla dacă Python primește informații de la mașina care trece prin ELM327 prin Bluetooth, tastați următoarele:

    connection.protocol_name ()

Pasul 9: Citirea datelor din mașină, folosind Python

Citirea datelor din mașină, folosind Python
Citirea datelor din mașină, folosind Python

Vom crea un fișier numit: OBD.py, ca instrucțiuni de mai jos, urmat de cod.

Începeți prin importarea bibliotecii OBD în Python pentru a porni conexiunile.

Din motive necunoscute, folosind hardware-ul nostru, prima încercare de conectare eșuează întotdeauna. A doua încercare, funcționează întotdeauna. De aceea, pe cod, veți observa două linii de comandă care încearcă să facă conexiunea.

După ce conexiunea a reușit, am început o buclă infinită, care caută date OBD, le formează în funcție de parametrii presetați. După aceea, creează o adresă URL, folosind Query String, permițându-i să fie trimis la server folosind metoda POST.

În exemplul de mai jos, am reușit să obținem următoarele informații:

  • RPM
  • Viteză

Funcțiile de captare a datelor utilizează doi parametri. De exemplu, folosind [1] [12] căutați pentru [modul] [PID]. Lista funcțiilor poate fi găsită la:

În cele din urmă, generați adresa URL cu toate informațiile concatenate și adăugate la fișier, numit „obd_data.dat”.

Codul pentru OBD.py este mai jos.

După conectarea și captarea datelor, vom crea un fișier numit: envia_OBD.py

Această parte a codului devine mai simplă. Importați bibliotecile legate de cerere / trimitere date, utilizând RESTFUL.

Creați un WHILE pentru a utiliza POST și trimiteți adresa URL a primei linii a fișierului, populată anterior de OBD.py. După aceea, pentru a evita trimiterea datelor din nou, șterge acea linie din fișier.

Codul pentru fișierul OBD.py este mai jos.

Pasul 10: Scripturi recurente și procedura de stocare a datelor pentru datele capturate

Scripturi recurente și procedura de stocare a datelor pentru datele capturate
Scripturi recurente și procedura de stocare a datelor pentru datele capturate

Tot ceea ce am făcut până acum a fost orientat pentru a ne asigura că DragonBoard a comunicat corect cu componentele, cum ar fi 3G, Wifi, Bluetooth, date GPS și multe altele.

Utilizați codul de mai jos pentru a edita fișierul „rc.local”, care are deja câteva funcții și comenzi predefinite. Se află la „/ etc”. Pentru a edita, utilizați comanda:

sudo nano /etc/rc.local

Acum trebuie să configurăm toate serviciile și funcțiile, creând rutine care se inițializează automat la pornirea DragonBoard. Să folosim BASH pentru a face acest lucru. BASH (Bourne-Again-SHell) este o aplicație de interpretare Linux Command.

Următorul cod are comenzi BASH și va trebui să introduceți adresa MAC Bluetooth / OBD. Fiți foarte atenți pentru a vă asigura că ați terminat codul cu „ieșirea 0”, care este răspunsul sistemului că acțiunea a avut succes.

dacă [! -f / etc / ssh / ssh_host_rsa_key]

apoi 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 & exit 0

De acum înainte, de fiecare dată când porniți DragonBoard, acesta se va conecta la 3G și va trimite date GPS și OBD către serverul ales.

Pasul 11: Probleme pe parcurs

Probleme pe parcurs
Probleme pe parcurs

Am enumerat mai jos câteva dintre problemele pe care le-am găsit pe parcurs înainte de a scrie acest Instructable, dar ne-am gândit că vă poate ajuta dacă vi se întâmplă.

  • PyOBD

    Trebuie să fiți foarte precauți pentru a trimite date în timp ce comunicați cu mașina. Într-una dintre primele noastre încercări, când comunicarea nu a fost stabilă, am trimis o comandă greșită, care practic a prăbușit ECU. Schimbătorul de viteze era blocat în parcare și unele dintre luminile de pe tabloul de bord clipeau în mod aleatoriu. Soluția găsită a fost deconectarea unuia dintre cablurile bateriei timp de aproximativ 15 minute. Aceasta resetează ECU la starea implicită din fabrică, prin urmare anulează orice comenzi sau modificări pe care le-am fi putut face

  • Linaro

    Am avut o problemă cu DragonBoard, care a continuat să repornească sporadic. Problema a fost rezolvată de echipa lui Linaro, care a lansat o versiune mai nouă a sistemului de operare. Am scris acest tutorial cu versiunea actualizată

  • GPS-ul DragonBoard

    Qualcomm’s DragonBoard 410c nu are o antenă GPS internă, deci pentru a îmbunătăți achiziția semnalului GPS, trebuie să instalăm un conector pentru o antenă externă. Acest proces este mai bine explicat în următorul link:

Pasul 12: Referințe

Referințe
Referințe

Bootloader

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

Linaro

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

Cum se instalează o Linaro na DragonBoard 410c

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

Documentație GPS pentru DragonBoard

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

Demo GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Conectând RaspberryPi à un OBD Bluetooth

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

Recomandat: