Cuprins:
- Pasul 1: Efectuarea configurării inițiale DragonBoard 410c **
- Pasul 2: Localizarea DragonBoard 410c folosind antena GPS
- Pasul 3: Instalarea Dongle-ului USB 3G / 4G
- Pasul 4: Transformarea DragonBoard 410c într-un hotspot / punct de acces Wifi
- Pasul 5: Accesarea fără fir a DragonBoard 410c folosind SSH, prin conectivitate Hotspot
- Pasul 6: Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 1/2
- Pasul 7: Conectarea DragonBoard 410c la OBD-ul mașinii folosind Bluetooth - Partea 2/2
- Pasul 8: Conectarea DragonBoard 410c la OBD-ul mașinii folosind PyOBD
- Pasul 9: Citirea datelor din mașină, folosind Python
- Pasul 10: Scripturi recurente și procedura de stocare a datelor pentru datele capturate
- Pasul 11: Probleme pe parcurs
- Pasul 12: Referințe
Video: DragonBoard și OBD2: 12 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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 **
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
Î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
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
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
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
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
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
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
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
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
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
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:
Tahometru / Manometru de scanare folosind Arduino, OBD2 și CAN Bus: 8 pași
Tahometru / Manometru de scanare folosind Arduino, OBD2 și CAN Bus: Orice posesor de Toyota Prius (sau alt vehicul hibrid / special) va ști că panourile lor de bord pot lipsi câteva cadrane! Prius-ul meu nu are RPM-ul motorului și nici un indicator de temperatură. Dacă sunteți un tip de performanță, poate doriți să știți lucruri precum avansul de sincronizare și
Cum să conectați și să controlați o lampă prin modulul ZigBee de pe Dragonboard: 5 pași
Cum să conectați și să controlați o lampă prin intermediul modulului ZigBee de pe Dragonboard: Această instrucțiune îl învață pe utilizator cum să se conecteze și să instaleze corect modulul ZigBee pe Dragonboard și să îl interacționeze cu o lampă controlată ZigBee (OSRAM), realizând o rețea IOT ZigBee. : Dragonboard 410c; CC2531 USB Dongle; T
Detectarea situațiilor de urgență - Qualcomm Dragonboard 410c: 7 pași
Detectarea situațiilor de urgență - Qualcomm Dragonboard 410c: Căutând sisteme de securitate care lucrează la monitorizarea situațiilor de urgență, este posibil să observați că este prea greu să procesați toate informațiile înregistrate. Gândindu-ne la asta, am decis să ne folosim cunoștințele în procesarea audio / imagine, senzori și
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 pași
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: A nossa lixeira inteligente consiste na separa ç ã o autom á tica do lixo. Atrav é s de uma webcam, ela identifica o tip de lixo e o depune nu compartiment adecvat pentru posterior ser reciclat
Cititor OBD2 Bluetooth: 3 pași
Cititor Bluetooth OBD2: Bine ați venit, acesta este primul meu instructabil și sperăm că este ușor de înțeles și vă puteți crea propriul. Dacă aveți întrebări, vă rugăm să nu ezitați să mă contactați și poate vă pot ajuta. Voi încerca să fac acest lucru extrem de simplu de urmat cu asta