Innehållsförteckning:

DragonBoard och OBD2: 12 steg
DragonBoard och OBD2: 12 steg

Video: DragonBoard och OBD2: 12 steg

Video: DragonBoard och OBD2: 12 steg
Video: Big Baby Tape - Dragonborn | Official Audio 2024, November
Anonim
DragonBoard och OBD2
DragonBoard och OBD2

När du läser data som kommer ut från OBD2 -porten i din bil är det möjligt att samla fantastisk information från den. Med DragonBoard 410c arbetade vi på detta projekt och detaljerade det här så att du kan göra det själv.

Detta projekt var bara möjligt på grund av partnerskapet med #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora som gjorde det möjligt för oss att få tillgång till den bästa hårdvaran på marknaden, samt kontakten med de bästa proffsen för att stödja utvecklingen.

Laget består av dessa killar:

Vi är mycket angelägna om att hjälpa dig att uppnå ditt mål och se till att du slutför ditt projekt, så meddela oss om du behöver hjälp längre än instruktionerna nedan.

Para seguir este projeto em Português, klicka här:

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

För detta projekt använde vi följande objekt:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 -gränssnitt
  • Dongle USB 3G/4G
  • Spänningsomvandlare billaddare (110v)

Steg 1: Utföra DragonBoard 410c Initial Setup **

Utföra DragonBoard 410c Initial Setup **
Utföra DragonBoard 410c Initial Setup **
Utföra DragonBoard 410c Initial Setup **
Utföra DragonBoard 410c Initial Setup **
Utföra DragonBoard 410c Initial Setup **
Utföra DragonBoard 410c Initial Setup **

Med Qualcomm DragonBoard 410c startade vi projektet genom att installera Linux distribution som heter Linaro, så att vi kan konfigurera alla enheter som behövs.

För att skapa en bild av Linaro för DragonBoard, använd Ubunto på VirtualBox, så att du kan använda FastBoot (det är en Linux -baserad app). Så i princip vad du behöver göra är att öppna terminalen på VM Ubuntu och ange:

sudo apt-get android-tools-fastboot

För att installera Linaro måste vi gå igenom två viktiga steg:

1) Installera BOOTLOADER

Filnamn: dragonboard410c_bootloader_emmc_linux-79.zip

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

Packa upp filerna och välj mappen:

cd /mappnamn (sökväg till den uppackade mappen)

Ange följande kod:

sudo fastboot -enheter

Förväntad avkastning:

(hexadecimal) fastboot

Skriv sedan in:

sudo./flashall

Förväntad avkastning:

färdiga. total tid 1.000s (utan fel)

Installera Driftsystemet

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

Ladda ner dessa 2 filer:

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

Detta är den senaste versionen som är tillgänglig hittills (juni/17) så namnet kan komma att ändras i framtiden. Mönstret du skulle leta efter är "boot-linaro-VersionName". Den här heter "Stretch" och den förra var "Jessie".

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

Detta är den senaste versionen hittills (juni/17) och namnet kan komma att ändras i framtiden. Leta efter mönstret "linaro-VersionName-alip".

Packa upp filerna från. GZ

Gå till "root" -mappen i förhållande till de uppackade filerna

exempel: "/Nedladdningar" som är platsen där nedladdade filer lagras.

Börja nu med följande kommandon:

sudo fastboot -enheter

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

Förväntad retur (kom ihåg att tiden kan variera):

färdiga. total tid: 100,00s

Anslut en mus, tangentbord och en bildskärm/TV med HDMI -porten

Har detta till hands:

användare: linaro

lösenord: linaro

Öppna appen Lxterminal och fortsätt med nedladdningen av listan över tillgängliga uppdateringar angående de installerade paketen:

sudo apt-get uppdatering

Se till att installera de tillgängliga paketen från listan:

sudo apt-get uppgradering

Tips: Linaro valdes på grund av en extremt snabb start och ett gemenskap som var mycket engagerad och problemlösande, vilket sparar mycket tid.

Steg 2: Hitta din DragonBoard 410c med sin GPS -antenn

Hitta din DragonBoard 410c med sin GPS -antenn
Hitta din DragonBoard 410c med sin GPS -antenn
Hitta din DragonBoard 410c med sin GPS -antenn
Hitta din DragonBoard 410c med sin GPS -antenn

Börja med att installera de nödvändiga apparna som kommer att vara klienter till GPS -modulen. Appnamnen är: GNSS-GPSD, GPSD och GPSD-CLIENTS. För att göra det, följ kommandona:

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

Med dessa appar installerade behöver du fler kommandon för att starta det korrekt:

sudo systemctl start qdsp-start.service

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

Ta nu DragonBoard 410c till ett vidsträckt område med fri sikt mot himlen så att den kan ta emot signalen från satelliterna. Skriv nu in i terminalen:

gpsmon –n

Från våra tester skulle data börja visas på skärmen efter 10 minuter i genomsnitt. Det förändras mycket från plats till plats, förutom DragonBoard -positionen på fönstret eller inomhus, förutom många andra hinder som kan störa GPS -signalmottagningen.

Steg 3: Installera 3G/4G USB -dongeln

Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln
Installera 3G/4G USB -dongeln

Det finns några sätt att ansluta DragonBoard 410c till 3G/4G/GSM -nätverket:

  • Använda ett Shield / BreakoutBoard med ett GSM -modem som också har en SimCard -kortplats;
  • Använd en USB 3G/4G -dongel.

För detta projekt bestämde vi oss för att använda Huaweis E3272 USB Dongle, eftersom det var enkelt och snabbt att köpa en.

För att konfigurera modemet kan du använda terminalen (med hjälp av WVDial -appen), men det enklaste sättet att göra det är med Linaros grafiska användargränssnitt (GUI). Till det enligt följande:

  • Med USB-dongeln ansluten till DragonBoard, högerklicka på ikonen "nätverk" i det nedre högra hörnet av skärmen;
  • "Redigera anslutningar"> "Lägg till";
  • Välj "Mobilt bredband" från rullgardinsmenyn;
  • Klicka på "Skapa".

Följ instruktionerna från guiden och se till att du väljer rätt bärare från menyn, så att enheten kan ansluta i enlighet därmed.

Steg 4: Förvandla DragonBoard 410c till en Wifi -hotspot / åtkomstpunkt

Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt
Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt
Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt
Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt
Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt
Förvandla DragonBoard 410c till en wifi -hotspot / åtkomstpunkt

Det enklaste sättet att konfigurera DragonBoard 410c som en wifi -router eller en hotspot (nu när du har konfigurerat internetanslutning) är att använda systemets GUI. För att göra det, följ stegen nedan:

  • Högerklicka på nätverksikonen i det nedre högra hörnet
  • Välj "Redigera anslutningar och sedan" Lägg till"
  • Välj "WiFi"
  • Klicka på skapa

Ändra namnet på det nätverk du vill skapa i "SSID" -fältet och ändra "Mode" -fältet till "Hotspot".

Kontrollera följande för att säkerställa att det fungerar:

  • Gå till fliken "IPv4 -inställningar"
  • Kontrollera om "Metoden"

Steg 5: Få åtkomst till DragonBoard 410c trådlöst med SSH, via hotspot -anslutning

Få tillgång till DragonBoard 410c trådlöst med SSH, via hotspot -anslutning
Få tillgång till DragonBoard 410c trådlöst med SSH, via hotspot -anslutning

Vi lyckades skapa ett sätt att komma åt DragonBoard på distans, oavsett om du är i närheten eller inte. Vanligtvis skulle du behöva ansluta till själva kortet med wifi eller bluetooth. Ett annat sätt skulle vara att komma åt det genom att ansluta till samma Wifi -nätverk (t.ex.: från en router). Genom att utföra nästa steg skapar vi en fristående enhet som genererar sitt eget nätverk och öppnar sig för webben för att komma åt.

Du kan börja med att installera "Auto SSH" med hjälp av koden nedan:

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

Nu ska vi generera en kryptografisk nyckel med RSA -standard. Denna nyckel kommer att användas för att säkert komma åt en Linux -slutpunktsinstans via 3G -modemets offentliga IP. Huvudmålet med detta steg. Följande kod kommer att kopiera nyckeln till Linux Trusted Keys Repository och se till att det finns ännu mer säkerhet för anslutningen.

ssh -keygen -t rsa

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

Genom att följa dessa steg har du just förvandlat Qualcomm DragonBoard 410c till en molnserver! \o/

Steg 6: Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2

Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2

Bilens kommunikationsgränssnitt sker via en OBD2 -port. Informationen som utbyts i denna port måste översättas, och för det behöver vi en tolkanordning. Det finns två hårdvarualternativ: ELM327 eller STN1170.

För detta projekt använde vi en Bluetooth -enhet med ett chipset baserat på ELM327.

Det är viktigt att notera att tillgängligheten till ELM327 inte betyder att det är den ORIGINALA VERSIONEN av ELM327. Merparten av de tillgängliga chipset är baserade på version 1.5, det var då chipets information klonades och läckte ut på marknaden. Den ursprungliga ELM327 är nu på version 2.2. Utvecklingen av detta chipset ger mer information om nyare bilar. Det är viktigt att veta det, för beroende på tester kanske du kanske inte kommer åt data från nyare fordon.

Med OBD2 Bluetooth -adapter hittar du din bils OBD2 -port. Det kan finnas någonstans under ratten. Det kan vara lättare att leta efter det med det här verktyget:

Få åtkomst till DragonBoard 410c med SSH, från din anteckningsbok (kom ihåg att nu sitter du i bilen och har inte en TV/bildskärm för att ansluta kortet). Så snart OBD2 Bluetooth -enheten sätts in i bilporten, följ stegen nedan för att komma åt Bluetooth -anslutningen.

sudo bluetoothctl

parbar på agenten vid standardagentskanning påI detta skede är det viktigt att du kopierar MAC -adressen eftersom du kommer att behöva den för nästa steg

Skriv dessa kommandon:

lita på MACADDRESS

par MACADDRESS

Du bör bli ombedd att ange PIN -koden för att para ihop Bluetooth OBD2 med kortet.

Vanligtvis är PIN -koden om 1234 eller 0000 - beror på din hårdvara

Nu ska du se skärmen "anslutning lyckad". För att avsluta Bluetooth -programmet, använd följande kommando:

sluta med

Nästa steg är att BINDA enheten med serieporten:

sudo rfcomm bind 0 MACADDRESS 1

För att säkerställa att operationen lyckades skriver du:

ls /dev

Porten "Rfcomm0" bör listas.

Steg 7: Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2

Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2
Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2

Huvudsyftet med detta steg är att garantera att kommunikationen mellan de tre enheterna fungerar:

ELM327, DragonBoard 410c och bilen

Ladda ner "Screen" -appen för att skicka seriella meddelanden via serieporten

sudo apt-get installera skärmen

Seriell port kommer att användas för att skicka AT -kommandon och ta emot svaren mellan DragonBoard 410c och ELM327 -enheten.

Gå till följande länk för mer information om AT -kommandon:

elmelectronics.com/ELM327/AT_Commands.pdf

Varning:

Var mycket försiktig med detta steg! All information du skickar till enheten kommer att tolkas och skickas till bilen. Om ett felmeddelande skickas kan det misstolkas av bilen och orsaka problem. Var uppmärksam på kommandona och studera dem innan du försöker din egen kod. Vi rekommenderar starkt att följa instruktionerna nedan.

Följ kommandosekvensen nedan för att initiera kommunikationen:

  • Denna funktion startar den seriella kommunikationen med hjälp av skärmen:

    skärm /dev /rfcomm0

Så snart terminalen laddas skriver du följande kommandon i den här sekvensen:

ATZ

ATL1 ATH1 ATS1 ATSP0

Sista kommunikationstestet:

Skriv i konsolen:

ATI

Den ska returnera "ELM327 v1.5" eller ELM -versionen av din enhet

Detta är ett bevis på att kommunikationen mellan ELM -enheten och DragonBoard 410c fungerar

Snabbt tips

För att avsluta “Skärm” är det nödvändigt att skriva Ctrl+A följt av Ctrl+D.

Steg 8: Anslut DragonBoard 410c till bilens OBD med PyOBD

Ansluta DragonBoard 410c till bilens OBD med PyOBD
Ansluta DragonBoard 410c till bilens OBD med PyOBD

PyOBD är ett Python -bibliotek för att möjliggöra kommunikation med OBD2 -enheter som kan anslutas till bilar. Med det kan vi extrahera flera uppgifter, inklusive fordonets hastighet och elektriska fel.

I det här steget måste vi se till att följande pythonbibliotek installeras i Linaro på din DragonBoard 410c:

  • PIP - Pythons pakethanterare

    sudo apt-get install python-pip

  • SetupTools - filinstallationshanteraren

    sudo pip install -U pip setupstools

  • Hjul - installera paketformateraren

    sudo apt-get install python-hjul

  • OBD - Python -bibliotek för att kommunicera med OBD -enhet

    sudo apt-get install python-obd

  • GPS - Python -bibliotek för att hämta data från GPS

    sudo pip installera gps

  • Förfrågningar - Python -paket för RESTful

    sudo pip installationsförfrågningar

För att verifiera om OBD: s paket fungerar korrekt, följ dessa steg:

sudo python

Nu kommer terminalens markör att ändras till ">>>" vilket indikerar att Python körs. Du kan nu börja skriva kommandona nedan:

  • Börja med att importera OBD -bibliotek:

    importera obd

  • För att ansluta till seriell port, använd kommandot:

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

  • Det är normalt att visa ett felmeddelande som säger att kommunikationen misslyckades, så om det händer, försök en gång till.
  • För att ta reda på om Python får information från bilen som passerar ELM327 via Bluetooth skriver du följande:

    connection.protocol_name ()

Steg 9: Läsa data från bilen med Python

Läsa data från bilen med Python
Läsa data från bilen med Python

Vi kommer att skapa en fil som heter: OBD.py, enligt instruktionerna nedan, följt av koden.

Börja med att importera OBD -biblioteket till Python för att starta anslutningarna.

Av okända skäl, med hjälp av vår hårdvara, misslyckas alltid det första anslutningsförsöket. Andra försöket, fungerar alltid. Det är därför på koden du kommer att märka två kommandorader som försöker upprätta anslutningen.

Efter att anslutningen har lyckats startade vi en oändlig slinga som söker efter OBD -data och formaterar den enligt förinställda parametrar. Därefter skapar den en URL med hjälp av Query String, så att den kan skickas till servern med POST -metoden.

I exemplet nedan lyckades vi få följande information:

  • Varvtal
  • Fart

Funktionerna för att fånga data använder två parametrar. Till exempel, med [1] [12] ser du efter [modul] [PID]. Listan över funktioner finns på:

Slutligen genererar du URL: en med all information sammanfogad och läggs till i filen, kallad "obd_data.dat".

Koden för OBD.py finns nedan.

Efter att ha anslutit och fångat data skapar vi en fil som heter: envia_OBD.py

Denna del av koden blir enklare. Importera bibliotek som är relaterade till begäran/skicka data med RESTFUL.

Skapa en WHILE för att använda POST och skicka URL: en till den första raden i filen, som tidigare fyllts av OBD.py. Därefter raderas den raden från filen för att undvika att data skickas igen.

Koden för filen OBD.py finns nedan.

Steg 10: Återkommande skript och datalagringsprocedur för datafångsten

Återkommande skript och datalagringsprocedur för datafångsten
Återkommande skript och datalagringsprocedur för datafångsten

Allt vi har gjort hittills var inriktat på att se till att DragonBoard kommunicerade korrekt med komponenterna, som 3G, Wifi, Bluetooth, GPS -data och mer.

Använd koden nedan för att redigera filen "rc.local", som redan har några funktioner och fördefinierade kommandon. Den ligger på "/etc". För att redigera, använd kommandot:

sudo nano /etc/rc.local

Nu måste vi konfigurera alla tjänster och funktioner, skapa rutiner som initieras automatiskt när DragonBoard startar. Låt oss använda BASH för att göra detta. BASH (Bourne-Again-SHell) är en Linux Command-tolkapp.

Följande kod har BASH -kommandon, och du måste infoga Bluetooth/OBD MAC -adressen. Var extra noga med att avsluta koden med "exit 0" som är systemets svar att åtgärden lyckades.

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

sedan systemctl stop ssh.socket || true dpkg-omkonfigurera 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

Från och med nu, varje gång du slår på DragonBoard, kommer den att ansluta till 3G och skicka GPS- och OBD -data till den valda servern.

Steg 11: Problem längs vägen

Problem längs vägen
Problem längs vägen

Vi listade nedan några av de problem vi hittade längs vägen innan vi skrev den här instruktionsboken, men vi trodde att den skulle kunna hjälpa dig om det händer dig.

  • PyOBD

    Du måste vara mycket försiktig med att skicka data när du kommunicerar med bilen. I ett av våra första försök, när kommunikationen inte var stabil, skickade vi fel kommando som i princip kraschade ECU. Växeln satt fast på parkeringen och några av lamporna på instrumentbrädan blinkade slumpmässigt. Lösningen som hittades var att koppla bort en av batterikablarna i cirka 15 minuter. Detta återställer ECU till fabriksstandardläge och avbryter därför alla kommandon eller ändringar vi kan ha gjort

  • Linaro

    Vi hade ett problem med vårt DragonBoard, som fortsatte att starta om sporadiskt. Problemet löstes av Linaros team som släppte en nyare version av operativsystemet. Vi skrev den här självstudien med den uppdaterade versionen

  • DragonBoards GPS

    Qualcomms DragonBoard 410c har ingen intern GPS -antenn, så för att förbättra GPS -signalförvärvet måste vi installera en kontakt för en externa antenn. Denna process förklaras bättre i följande länk:

Steg 12: Referenser

Referenser
Referenser

Bootloader

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

Linaro

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

Installera eller installera DragonBoard 410c

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

Dokumentation för GPS för 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/

Rekommenderad: