Sadržaj:

DragonBoard i OBD2: 12 koraka
DragonBoard i OBD2: 12 koraka

Video: DragonBoard i OBD2: 12 koraka

Video: DragonBoard i OBD2: 12 koraka
Video: ELM327, Viecar или iCar2? Как они устроены и что такое OBDII? 2024, Juli
Anonim
DragonBoard i OBD2
DragonBoard i OBD2

Čitajući podatke koji izlaze iz OBD2 priključka u vašem automobilu, iz njega je moguće prikupiti nevjerojatne podatke. Koristeći DragonBoard 410c, radili smo na ovom projektu i ovdje ga detaljno opisali tako da to možete učiniti sami.

Ovaj projekt bio je moguć samo zahvaljujući partnerstvu s #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora koje nam je omogućilo pristup najboljem hardveru na tržištu, kao i kontaktu s najboljim profesionalcima koji podržavaju razvoj.

Tim su sačinili ovi momci:

Vrlo smo voljni pomoći vam u postizanju vašeg cilja i potruditi se da dovršite svoj projekt, pa nas obavijestite ako vam je potrebna dodatna pomoć osim donjih uputstava.

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

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

Za ovaj projekt koristili smo sljedeće stavke:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 sučelje
  • USB ključ 3G/4G
  • Napon za pretvarač napona za automobil (110v)

Korak 1: Izvođenje DragonBoard 410c početnog postavljanja **

Izvođenje DragonBoard 410c početnog postavljanja **
Izvođenje DragonBoard 410c početnog postavljanja **
Izvođenje DragonBoard 410c početnog postavljanja **
Izvođenje DragonBoard 410c početnog postavljanja **
Izvođenje DragonBoard 410c početnog postavljanja **
Izvođenje DragonBoard 410c početnog postavljanja **

Koristeći Qualcomm DragonBoard 410c, započeli smo projekt instaliranjem distribucije Linuxa Linuro, omogućavajući nam postavljanje svih potrebnih uređaja.

Da biste stvorili sliku Linara za DragonBoard, upotrijebite Ubunto na VirtualBoxu, tako da možete koristiti FastBoot (to je aplikacija zasnovana na Linuxu). Dakle, u osnovi morate otvoriti Terminal na VM Ubuntu i unijeti:

sudo apt-get android-tools-fastboot

Da bismo instalirali Linaro, moramo proći kroz 2 važna koraka:

1) Instaliranje BOOTLOADER -a

Naziv datoteke: dragonboard410c_bootloader_emmc_linux-79.zip

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

Raspakirajte datoteke i odaberite mapu:

cd /FolderName (put do raspakiranog foldera)

Unesite sljedeći kôd:

sudo uređaji za brzo pokretanje

Očekivani povrat:

(heksadecimalno) fastboot

Zatim upišite:

sudo./flashall

Očekivani povrat:

završeno. ukupno vrijeme 1.000s (bez grešaka)

Instaliranje OPERATIVNOG SISTEMA

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

Preuzmite ove 2 datoteke:

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

Ovo je najnovija verzija koja je dostupna do sada (17. juni) pa bi se naziv mogao promijeniti u budućnosti. Uzorak koji biste tražili je "boot-linaro-VersionName". Ovaj se zove "Stretch", a prethodni je bio "Jessie".

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

Ovo je najnovija verzija do sada (17. juni), a naziv bi se u budućnosti mogao promijeniti. Potražite uzorak "linaro-VersionName-alip".

Raspakirajte datoteke iz. GZ

Pristupite direktoriju "root" u odnosu na otpakovane datoteke

primjer: "/Preuzimanja" na kojem se pohranjuju preuzete datoteke.

Sada počnite sa sljedećim naredbama:

sudo uređaji za brzo pokretanje

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

Očekivani povrat (pamćenje vremena može varirati):

završeno. ukupno vrijeme: 100.00s

Povežite miš, tastaturu i monitor/TV pomoću HDMI priključka

Imajte ovo pri ruci:

korisnik: linaro

lozinka: linaro

Otvorite aplikaciju Lxterminal i nastavite s preuzimanjem liste dostupnih ažuriranja u vezi instaliranih paketa:

sudo apt-get update

Obavezno instalirajte dostupne pakete sa popisa:

sudo apt-get nadogradnja

Savjet: Linaro je odabran zbog izuzetno brzog pokretanja i zajednice koja je vrlo angažirana i orijentirana na rješavanje problema, što štedi mnogo vremena.

Korak 2: Pronađite svoj DragonBoard 410c pomoću njegove GPS antene

Položaj vašeg DragonBoard 410c pomoću njegove GPS antene
Položaj vašeg DragonBoard 410c pomoću njegove GPS antene
Položaj vašeg DragonBoard 410c pomoću njegove GPS antene
Položaj vašeg DragonBoard 410c pomoću njegove GPS antene

Počnite instaliranjem potrebnih aplikacija koje će biti klijenti GPS modula. Nazivi aplikacija su: GNSS-GPSD, GPSD i GPSD-KLIJENTI. Da biste to učinili, slijedite naredbe:

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

S instaliranim ovim aplikacijama trebat će vam više naredbi za pravilno pokretanje:

sudo systemctl start qdsp-start.service

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

Sada odnesite DragonBoard 410c na široko otvoreno područje s jasnim pogledom na nebo, omogućavajući mu prijem signala sa satelita. Sada upišite u terminal:

gpsmon –n

Prema našim testovima, podaci bi se u prosjeku počeli prikazivati na ekranu nakon 10 minuta. To se mnogo mijenja od mjesta do mjesta, osim položaja DragonBoarda na prozoru ili u zatvorenom prostoru, pored mnogih drugih prepreka koje mogu ometati prijem GPS signala.

Korak 3: Instalirajte 3G/4G USB ključ

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

Postoji nekoliko načina za povezivanje DragonBoard 410c na 3G/4G/GSM mrežu:

  • Korištenje Shield / BreakoutBoard -a sa GSM modemom koji također ima utor za SimCard karticu;
  • Koristite USB 3G/4G ključ.

Za ovaj projekt odlučili smo koristiti Huaweijev E3272 USB ključ jer ga je bilo lako i brzo kupiti.

Za konfiguriranje modema možete koristiti terminal (pomoću aplikacije WVDial), ali najlakši način za to je korištenje Linarovog grafičkog korisničkog sučelja (GUI). Na to na sledeći način:

  • S USB ključem spojenim na DragonBoard, desnom tipkom miša kliknite ikonu "mreže" u donjem desnom kutu zaslona;
  • „Uredi veze“> „Dodaj“;
  • Odaberite "Mobilni širokopojasni pristup" s padajućeg izbornika;
  • Pritisnite "Kreiraj".

Slijedite upute čarobnjaka, pazeći da u izborniku odaberete odgovarajućeg mobilnog operatera, dopuštajući uređaju da se na odgovarajući način poveže.

Korak 4: Pretvorite DragonBoard 410c u Wifi pristupnu tačku / pristupnu tačku

Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku
Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku
Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku
Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku
Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku
Pretvaranje DragonBoard 410c u Wifi pristupnu točku / pristupnu točku

Najlakši način da konfigurirate DragonBoard 410c kao wifi usmjerivač ili pristupnu točku (sada kada ste konfigurirali internetsku vezu) je korištenje sistemskog grafičkog sučelja. Da biste to učinili, slijedite donje korake:

  • Desnim klikom na ikonu mreže u donjem desnom kutu
  • Odaberite "Uredi veze, a zatim" Dodaj"
  • Odaberite "WiFi"
  • Kliknite na Kreiraj

Promijenite naziv mreže koju želite stvoriti u polju “SSID”, a polje “Način” promijenite u “Hotspot”.

Da biste bili sigurni da će raditi, provjerite sljedeće:

  • Idite na karticu "Postavke IPv4"
  • Provjerite je li “Metoda”

Korak 5: Bežični pristup DragonBoard 410c pomoću SSH -a putem povezivanja putem hotspota

Bežični pristup DragonBoard 410c pomoću SSH -a putem povezivanja putem hotspota
Bežični pristup DragonBoard 410c pomoću SSH -a putem povezivanja putem hotspota

Uspjeli smo stvoriti način za daljinski pristup DragonBoardu, bez obzira na to jeste li u blizini ili niste. Obično biste se morali povezati na samu ploču, koristeći wifi ili bluetooth. Drugi način je da mu pristupite povezivanjem na istu Wifi mrežu (npr. S usmjerivača). Izvođenjem sljedećih koraka stvaramo samostalni uređaj koji stvara vlastitu mrežu i otvara se webu kako bi mu se moglo pristupiti.

Možete započeti instaliranjem "Auto SSH", koristeći donji kod:

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 install

Sada ćemo generirati kriptografski ključ, koristeći RSA standard. Ovaj ključ će se koristiti za siguran pristup instanci krajnje tačke Linuxa, putem javne IP adrese 3G modema. Glavni cilj ovog koraka. Sljedeći kôd će kopirati taj ključ u spremište pouzdanih ključeva Linuxa, pazeći da postoji još veća sigurnost veze.

ssh -keygen -t rsa

scp ~/.ssh/id_rsa.pub korisnik na udaljenom serveru:.ssh/ovlašteni_ključevi autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 korisnik na udaljenom serveru

Prateći ove korake, upravo ste transformirali Qualcomm DragonBoard 410c u Cloud server! / o/

Korak 6: Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - dio 1/2

Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - dio 1/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - dio 1/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - dio 1/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - dio 1/2

Komunikacijsko sučelje automobila vrši se putem OBD2 priključka. Informacije koje se razmjenjuju u ovom portu potrebno je prevesti, a za to nam je potreban uređaj za tumač. Postoje dvije hardverske alternative: ELM327 ili STN1170.

Za ovaj projekt koristili smo Bluetooth uređaj sa čipsetom zasnovanim na ELM327.

Važno je napomenuti da dostupnost ELM327 ne znači da je to ORIGINALNA VERZIJA ELM327. Većina dostupnih skupova čipova zasnovana je na verziji 1.5, tada su informacije o čipu klonirane i procurile na tržište. Originalni ELM327 je sada na verziji 2.2. Evolucija ovog čipseta donosi više podataka o novijim automobilima. Važno je to znati jer, ovisno o testovima, možete, ali i ne morate pristupiti podacima iz novijih vozila.

Pomoću OBD2 Bluetooth adaptera pronađite OBD2 port vašeg automobila. Možda se nalazi negdje ispod upravljača. Možda će biti lakše potražiti ga pomoću ovog alata:

Pristupite DragonBoard 410c pomoću SSH -a sa svoje bilježnice (zapamtite da ste sada u automobilu i da nemate televizor/monitor za priključivanje ploče). Čim se OBD2 Bluetooth uređaj umetne u port za automobil, slijedite donje korake za pristup bluetooth povezivanju.

sudo bluetoothctl

poželjno na agentu na default-agent skeniranje uključenoU ovoj je fazi važno da kopirate MAC adresu jer će vam trebati za sljedeće korake

Upišite ove naredbe:

vjerujte MACADDRESS

par MACADDRESS

Od vas bi trebalo biti zatraženo da upišete PIN kôd za uparivanje Bluetooth OBD2 s pločom.

Obično je PIN kôd 1234 ili 0000 - ovisi o vašem hardveru

Sada biste trebali vidjeti ekran "povezivanje uspješno". Da biste zatvorili Bluetooth aplikaciju, upotrijebite sljedeću naredbu:

daj otkaz

Sljedeći korak je POVEZIVANJE uređaja sa serijskim portom:

sudo rfcomm bind 0 MACADDRESS 1

Da biste bili sigurni da je operacija uspjela, upišite:

ls /dev

Treba navesti port “Rfcomm0”.

Korak 7: Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - Dio 2/2

Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - Dio 2/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - Dio 2/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - Dio 2/2
Povezivanje DragonBoarda 410c s OBD -om u automobilu pomoću Bluetootha - Dio 2/2

Glavni cilj ovog koraka je jamčiti da komunikacija između tri uređaja funkcionira:

ELM327, DragonBoard 410c i automobil

Preuzmite aplikaciju “Screen” za slanje serijskih poruka putem serijskog porta

sudo apt-get ekran za instalaciju

Serijski port će se koristiti za slanje AT naredbi i primanje odgovora između DragonBoard 410c i ELM327 uređaja.

Za više informacija o AT naredbama pristupite sljedećoj vezi:

elmelectronics.com/ELM327/AT_Commands.pdf

Upozorenje:

Budite vrlo oprezni s ovim korakom! Sve informacije koje pošaljete na uređaj bit će protumačene i poslane u automobil, ako se pošalje pogrešna poruka, automobil ih može krivo protumačiti i uzrokovati probleme. Obratite pažnju na naredbe i proučite ih prije nego pokušate sa vlastitim kodom. Toplo preporučujemo da se pridržavate dole navedenih uputstava.

Slijedite donji slijed naredbi da započnete komunikaciju:

  • Ova funkcija započinje serijsku komunikaciju pomoću zaslona:

    screen /dev /rfcomm0

Čim se terminal učita, upišite sljedeće naredbe u ovom nizu:

ATZ

ATL1 ATH1 ATS1 ATSP0

Završni komunikacijski test:

Upišite u konzolu:

ATI

Trebalo bi vratiti "ELM327 v1.5" ili ELM verziju vašeg uređaja

Ovo je dokaz da komunikacija ELM uređaja i DragonBoard 410c funkcionira

Brzi savjet

Da biste napustili “Screen”, potrebno je upisati Ctrl+A, a zatim Ctrl+D.

Korak 8: Povezivanje DragonBoarda 410c s OBD -om automobila pomoću PyOBD -a

Povezivanje DragonBoarda 410c s OBD -om automobila pomoću PyOBD -a
Povezivanje DragonBoarda 410c s OBD -om automobila pomoću PyOBD -a

PyOBD je Python biblioteka koja omogućava komunikaciju s OBD2 uređajima koji se mogu povezati s automobilima. Na taj način možemo izvući nekoliko podataka, uključujući brzinu vozila i električne greške.

U ovom koraku moramo osigurati da su sljedeće python biblioteke instalirane u Linaro vašeg DragonBoarda 410c:

  • PIP - Python menadžer paketa

    sudo apt-get install python-pip

  • SetupTools - upravitelj instalacije datoteka

    sudo pip install -U pip setupstools

  • Točak - instalirajte format formattera

    sudo apt-get install python-wheel

  • OBD - Python biblioteka za komunikaciju sa OBD uređajem

    sudo apt-get install python-obd

  • GPS - Python biblioteka za dobivanje podataka s GPS -a

    sudo pip instalirajte gps

  • Zahtevi - Python paket za RESTful

    sudo pip zahtjevi za instalaciju

Da biste provjerili radi li OBD -ov paket ispravno, slijedite ove korake:

sudo python

Sada će se kursor terminala promijeniti u ">>>" što označava da je Python pokrenut. Sada možete početi upisivati naredbe ispod:

  • Počnite uvozom OBD biblioteke:

    import obd

  • Za povezivanje sa serijskim portom koristite naredbu:

    veza = stara. OBD (“dev/rfcomm0”)

  • Normalno je prikazati poruku o grešci koja kaže da komunikacija nije uspjela, pa ako se to dogodi, pokušajte još jednom.
  • Da biste saznali dobiva li Python informacije iz automobila koji prolazi kroz ELM327 preko bluetootha, upišite sljedeće:

    connection.protocol_name ()

Korak 9: Čitanje podataka iz automobila pomoću Pythona

Čitanje podataka iz automobila pomoću Pythona
Čitanje podataka iz automobila pomoću Pythona

Napravit ćemo datoteku pod nazivom: OBD.py, prema donjim uputama, nakon čega slijedi kod.

Počnite uvozom OBD biblioteke u Python da biste započeli veze.

Iz nepoznatih razloga, koristeći naš hardver, prvi pokušaj povezivanja uvijek ne uspije. Drugi pokušaj, uvijek uspije. Zato ćete na kodu primijetiti dvije naredbene linije koje pokušavaju uspostaviti vezu.

Nakon što je povezivanje uspješno, pokrenuli smo beskonačnu petlju koja traži OBD podatke i formatira ih prema unaprijed postavljenim parametrima. Nakon toga, stvara URL, koristeći niz upita, omogućavajući njegovo slanje na server pomoću POST metode.

Na donjem primjeru uspjeli smo dobiti sljedeće podatke:

  • RPM
  • Brzina

Funkcije za snimanje podataka koriste dva parametra. Na primjer, koristeći [1] [12] pretražujete za [modul] [PID]. Popis funkcija možete pronaći na:

Konačno, generirajte URL sa svim informacijama spojenim i dodanim u datoteku, pod nazivom "obd_data.dat".

Kôd za OBD.py je ispod.

Nakon povezivanja i snimanja podataka, stvorit ćemo datoteku pod nazivom: envia_OBD.py

Ovaj dio koda postaje jednostavniji. Uvezite biblioteke povezane sa zahtjevom/pošaljite podatke, koristeći RESTFUL.

Kreirajte WHILE za korištenje POST -a i pošaljite URL prvog reda datoteke, prethodno popunjen OBD.py. Nakon toga, kako bi se izbjeglo ponovno slanje podataka, briše tu liniju iz datoteke.

Kôd za datoteku OBD.py nalazi se ispod.

Korak 10: Ponavljajuće se skripte i postupak skladištenja podataka za snimljene podatke

Ponavljajuće se skripte i postupak skladištenja podataka za snimljene podatke
Ponavljajuće se skripte i postupak skladištenja podataka za snimljene podatke

Sve što smo do sada učinili bilo je usmjereno na to da osiguramo da DragonBoard pravilno komunicira sa komponentama, poput 3G, Wifi, Bluetooth, GPS podataka i još mnogo toga.

Upotrijebite donji kod za uređivanje datoteke "rc.local" koja već ima neke funkcije i unaprijed definirane naredbe. Nalazi se na '/etc'. Za uređivanje koristite naredbu:

sudo nano /etc/rc.local

Sada moramo konfigurirati sve usluge i funkcije, kreirajući rutine koje se automatski pokreću pri pokretanju DragonBoarda. Koristimo BASH za to. BASH (Bourne-Again-SHell) je aplikacija za tumačenje naredbi Linuxa.

Sljedeći kôd ima naredbe BASH, pa ćete morati umetnuti Bluetooth/OBD MAC adresu. Budite posebno oprezni da kôd završite s "exit 0", što je odgovor sistema da je akcija uspjela.

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

zatim systemctl stop ssh.socket || true dpkg-ponovno konfiguriranje openssh-servera fi sudo systemctl start qdsp-start.service rfcomm vezanje 0 MACADDRESS 1 sudo python /home/linaro/Documents/FadaDoCarro/conectaGPS.py & sudo python/home/lina /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & exit 0

Od sada, svaki put kada uključite DragonBoard, povezivat će se na 3G i slati GPS i OBD podatke na odabrani poslužitelj.

Korak 11: Problemi na putu

Nevolje na putu
Nevolje na putu

U nastavku smo naveli neke probleme koje smo pronašli usput prije pisanja ovog uputstva, ali smo mislili da bi vam moglo pomoći ako vam se to dogodi.

  • PyOBD

    Morate biti vrlo oprezni pri slanju podataka dok komunicirate s automobilom. U jednom od naših prvih pokušaja, kada komunikacija nije bila stabilna, poslali smo pogrešnu naredbu koja je u osnovi srušila ECU. Mjenjač se zaglavio na parkiralištu, a neka svjetla na armaturnoj ploči su nasumično treptala. Pronađeno rješenje bilo je isključiti jedan od kabela akumulatora na oko 15 minuta. Ovo vraća ECU na tvornički zadano stanje, stoga se poništavaju sve naredbe ili promjene koje smo možda izvršili

  • Linaro

    Imali smo problem s našom DragonBoard -om, koja se povremeno ponavljala. Problem je riješio Linarov tim koji je izdao noviju verziju OS -a. Napisali smo ovaj vodič s ažuriranom verzijom

  • DragonBoardov GPS

    Qualcommov DragonBoard 410c nema internu GPS antenu, pa kako bismo poboljšali akviziciju GPS signala, moramo instalirati konektor za vanjsku antenu. Ovaj proces je bolje objašnjen na sljedećoj poveznici:

Korak 12: Reference

Reference
Reference

Bootloader

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

Linaro

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

Kako instalirati Linaro na DragonBoard 410c

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

Dokumentacija o GPS -u za 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 kao OBD Bluetooth

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

Preporučuje se: