Innehållsförteckning:
- Steg 1: Utföra DragonBoard 410c Initial Setup **
- Steg 2: Hitta din DragonBoard 410c med sin GPS -antenn
- Steg 3: Installera 3G/4G USB -dongeln
- Steg 4: Förvandla DragonBoard 410c till en Wifi -hotspot / åtkomstpunkt
- Steg 5: Få åtkomst till DragonBoard 410c trådlöst med SSH, via hotspot -anslutning
- Steg 6: Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 1/2
- Steg 7: Ansluta DragonBoard 410c till bilens OBD med Bluetooth - Del 2/2
- Steg 8: Anslut DragonBoard 410c till bilens OBD med PyOBD
- Steg 9: Läsa data från bilen med Python
- Steg 10: Återkommande skript och datalagringsprocedur för datafångsten
- Steg 11: Problem längs vägen
- Steg 12: Referenser
Video: DragonBoard och OBD2: 12 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marknadsföring - [email protected]
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 **
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
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
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
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
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
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
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
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
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
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
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
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:
Varvräknare/skannermätare med Arduino, OBD2 och CAN -buss: 8 steg
Varvräknare/skannermätare med Arduino, OBD2 och CAN -buss: Alla Toyota Prius (eller andra hybrid-/specialfordon) -ägare vet att deras instrumentpaneler kan sakna några rattar! Min prius har inget motorvarvtal eller temperaturmätare. Om du är en prestationsgubbe kanske du vill veta saker som att ta tid i förväg och
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: 11 steg
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: Har du någonsin haft mycket data du arbetar med och tänkt för dig själv … " hur kan jag göra allt av dessa data ser bättre ut och blir lättare att förstå? " Om så är fallet kan en tabell i Microsoft Office Word 2007 vara ditt svar
Ansluter bearbetning och Arduino och gör 7 segment och servo GUI -kontroller: 4 steg
Ansluta bearbetning och Arduino och göra 7 segment och servo GUI -kontroller: För vissa projekt måste du använda Arduino eftersom det ger en enkel prototypplattform men visning av grafik i seriell bildskärm av Arduino kan ta ganska lång tid och är till och med svårt att göra. Du kan visa grafer på Arduino Serial Monitor
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid