Inhoudsopgave:

DragonBoard en OBD2: 12 stappen
DragonBoard en OBD2: 12 stappen

Video: DragonBoard en OBD2: 12 stappen

Video: DragonBoard en OBD2: 12 stappen
Video: EASY FIX - OBD II data port has no power 2024, Juli-
Anonim
DragonBoard en OBD2
DragonBoard en OBD2

Door de gegevens te lezen die uit de OBD2-poort in uw auto komen, is het mogelijk om er verbazingwekkende informatie uit te verzamelen. Met behulp van de DragonBoard 410c hebben we aan dit project gewerkt en het hier gedetailleerd, zodat u het zelf kunt doen.

Dit project was alleen mogelijk dankzij de samenwerking met #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora waardoor we toegang hadden tot de beste hardware op de markt, evenals het contact met de beste professionals om de ontwikkeling te ondersteunen.

Het team werd samengesteld door deze jongens:

We willen u graag helpen uw doel te bereiken en ervoor te zorgen dat u uw project voltooit, dus laat het ons weten als u meer hulp nodig heeft dan de onderstaande instructies.

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

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

Voor dit project hebben we de volgende items gebruikt:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2-interface
  • Dongle USB 3G/4G
  • Spanningsomvormer Autolader (110v)

Stap 1: De eerste installatie van DragonBoard 410c uitvoeren**

De eerste installatie van DragonBoard 410c uitvoeren**
De eerste installatie van DragonBoard 410c uitvoeren**
De eerste installatie van DragonBoard 410c uitvoeren**
De eerste installatie van DragonBoard 410c uitvoeren**
De eerste installatie van DragonBoard 410c uitvoeren**
De eerste installatie van DragonBoard 410c uitvoeren**

Met Qualcomm DragonBoard 410c begonnen we het project door de Linux-distributie genaamd Linaro te installeren, waardoor we alle benodigde apparaten konden instellen.

Om een afbeelding van Linaro voor het DragonBoard te maken, gebruikt u Ubunto op VirtualBox, zodat u FastBoot kunt gebruiken (dat is een op Linux gebaseerde app). Dus wat u eigenlijk moet doen, is de Terminal op de VM Ubuntu openen en invoeren:

sudo apt-get android-tools-fastboot

Om Linaro te installeren, moeten we 2 belangrijke stappen doorlopen:

1) De BOOTLOADER installeren

Bestandsnaam: dragonboard410c_bootloader_emmc_linux-79.zip

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

Pak de bestanden uit en selecteer de map:

cd /FolderName (pad naar de uitgepakte map)

Voer de volgende code in:

sudo fastboot-apparaten

Verwachte terugkomst:

(hexadecimaal) fastboot

Typ dan in:

sudo./flashall

Verwachte terugkomst:

afgewerkt. totale tijd 1.000s (zonder fouten)

Het OPERATIONELE SYSTEEM installeren

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

Download deze 2 bestanden:

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

Dit is de nieuwste versie die tot op heden (juni/17) beschikbaar is, dus de naam kan in de toekomst veranderen. Het patroon dat u zoekt is "boot-linaro-VersionName". Deze heet "Stretch" en de vorige was "Jessie".

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

Dit is de laatste versie tot nu toe (17 juni) en de naam kan in de toekomst veranderen. Zoek naar het patroon "linaro-VersionName-alip".

Pak de bestanden uit de. GZ

Toegang tot de "root"-map, met betrekking tot de uitgepakte bestanden

voorbeeld: "/Downloads", de plaats waar gedownloade bestanden worden opgeslagen.

Begin nu met de volgende commando's:

sudo fastboot-apparaten

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

Verwacht rendement (onthoud dat de tijd kan variëren):

afgewerkt. totale tijd: 100.00s

Sluit een muis, toetsenbord en een monitor/tv aan via de HDMI-poort

Houd dit bij de hand:

gebruiker: linaro

wachtwoord: linaro

Open de app Lxterminal en ga verder met het downloaden van de lijst met beschikbare updates, met betrekking tot de geïnstalleerde pakketten:

sudo apt-get update

Zorg ervoor dat u de beschikbare pakketten uit de lijst installeert:

sudo apt-get upgrade

Tip: Linaro werd gekozen vanwege een extreem snelle opstart en een zeer betrokken en probleemoplossende gemeenschap, wat veel tijd bespaart.

Stap 2: Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne

Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne
Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne
Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne
Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne

Begin met het installeren van de benodigde apps die de clients voor de GPS-module zullen zijn. De app-namen zijn: GNSS-GPSD, GPSD en GPSD-CLIENTS. Volg de opdrachten om dit te doen:

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

Als deze apps zijn geïnstalleerd, hebt u meer opdrachten nodig om het correct te starten:

sudo systemctl start qdsp-start.service

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

Breng de DragonBoard 410c nu naar een wijd open gebied, met vrij zicht op de lucht, zodat hij het signaal van de satellieten kan ontvangen. Typ nu in de terminal:

gpsmon -n

Uit onze tests blijkt dat de gegevens gemiddeld na 10 minuten op het scherm verschijnen. Dat verandert veel van plaats tot plaats, behalve de positie van het DragonBoard op het raam, of binnenshuis, naast vele andere barrières die de ontvangst van het GPS-signaal kunnen verstoren.

Stap 3: De 3G/4G USB-dongle installeren

De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren
De 3G/4G USB-dongle installeren

Er zijn een paar manieren om de DragonBoard 410c te verbinden met het 3G/4G/GSM-netwerk:

  • Een Shield / BreakoutBoard gebruiken met een GSM-modem die ook een SimCard-slot heeft;
  • Gebruik een USB 3G/4G-dongle.

Voor dit project hebben we besloten om Huawei's E3272 USB Dongle te gebruiken, omdat het gemakkelijk en snel was om er een te kopen.

Om de modem te configureren, kunt u de terminal gebruiken (met behulp van de WVDial-app), maar de eenvoudigste manier om dit te doen is door de grafische gebruikersinterface (GUI) van Linaro te gebruiken. Daarop als volgt:

  • Terwijl de USB-dongle is aangesloten op het DragonBoard, klikt u met de rechtermuisknop op het pictogram "netwerken" in de rechterbenedenhoek van het scherm;
  • "Verbindingen bewerken" > "Toevoegen";
  • Kies "Mobiel breedband" in het vervolgkeuzemenu;
  • Klik op "Maken".

Volg de instructies van de wizard en zorg ervoor dat u de juiste provider in het menu selecteert, zodat het apparaat dienovereenkomstig verbinding kan maken.

Stap 4: De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt

De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt

De eenvoudigste manier om de DragonBoard 410c te configureren als wifi-router of hotspot (nu u een internetverbinding hebt geconfigureerd) is om de GUI van het systeem te gebruiken. Volg hiervoor de onderstaande stappen:

  • Klik met de rechtermuisknop op het netwerkpictogram in de rechterbenedenhoek
  • Kies "Verbindingen bewerken en vervolgens "Toevoegen"
  • Kies "Wifi"
  • Klik op maken

Wijzig de naam van het netwerk dat u wilt maken in het veld "SSID" en verander het veld "Modus" in "Hotspot".

Controleer het volgende om er zeker van te zijn dat het werkt:

  • Ga naar het tabblad "IPv4-instellingen"
  • Controleer of de "Methode"

Stap 5: Draadloos toegang krijgen tot de DragonBoard 410c met SSH, via hotspot-connectiviteit

Draadloos toegang krijgen tot de DragonBoard 410c met SSH, via hotspot-connectiviteit
Draadloos toegang krijgen tot de DragonBoard 410c met SSH, via hotspot-connectiviteit

We zijn erin geslaagd een manier te creëren om op afstand toegang te krijgen tot het DragonBoard, ongeacht of je er in de buurt bent of niet. Meestal moet je verbinding maken met het bord zelf, via wifi of bluetooth. Een andere manier is om er toegang toe te krijgen door verbinding te maken met hetzelfde wifi-netwerk (bijv. vanaf een router). Door de volgende stappen uit te voeren, creëren we een op zichzelf staand apparaat dat zijn eigen netwerk genereert en zichzelf opent voor internet om te kunnen worden gebruikt.

U kunt beginnen met het installeren van de "Auto SSH", met behulp van de onderstaande code:

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 gaan we een cryptografische sleutel genereren met behulp van de RSA-standaard. Deze sleutel wordt gebruikt om veilig toegang te krijgen tot een Linux-eindpuntinstantie, via het openbare IP-adres van het 3G-modem. Het belangrijkste doel van deze stap. De volgende code kopieert die sleutel naar de Trusted Keys Repository van Linux, waardoor de verbinding nog beter beveiligd is.

ssh-keygen -t rsa

scp ~/.ssh/id_rsa.pub gebruiker@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 gebruiker@remote_server

Door deze stappen te volgen, heeft u zojuist de Qualcomm DragonBoard 410c omgevormd tot een Cloud Server! \O/

Stap 6: De DragonBoard 410c verbinden met de OBD van de auto met behulp van Bluetooth - deel 1/2

De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - Deel 1/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - Deel 1/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - Deel 1/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - Deel 1/2

De communicatie-interface van de auto wordt gedaan via een OBD2-poort. De informatie die in deze poort wordt uitgewisseld, moet worden vertaald en daarvoor hebben we een tolkapparaat nodig. Er zijn twee hardware-alternatieven: ELM327 of STN1170.

Voor dit project hebben we een Bluetooth-apparaat gebruikt met een chipset op basis van ELM327.

Het is belangrijk op te merken dat de beschikbaarheid van de ELM327 niet betekent dat het de ORIGINELE VERSIE van de ELM327 is. Het grootste deel van de beschikbare chipsets is gebaseerd op versie 1.5, toen de informatie van de chip werd gekloond en op de markt werd gelekt. De originele ELM327 staat nu op versie 2.2. De evolutie van deze chipset brengt meer gegevens over nieuwere auto's. Het is belangrijk om dat te weten, omdat u, afhankelijk van tests, al dan niet toegang hebt tot gegevens van nieuwere voertuigen.

Vind met de OBD2 Bluetooth-adapter de OBD2-poort van uw auto. Het kan ergens onder het stuur zitten. Het is misschien gemakkelijker om ernaar te zoeken met deze tool:

Open het DragonBoard 410c via SSH vanaf uw notebook (denk eraan dat u nu in de auto zit en geen tv/monitor hebt om het bord in te pluggen). Zodra het OBD2 Bluetooth-apparaat in de autopoort is geplaatst, volgt u de onderstaande stappen om toegang te krijgen tot de Bluetooth-connectiviteit.

sudo bluetoothctl

koppelbaar op agent op standaard-agent scan aanIn dit stadium is het belangrijk dat u het MAC-adres kopieert, omdat u dit nodig heeft voor de volgende stappen

Typ deze opdrachten:

vertrouw MACADDRESS

paar MACADRES

U moet worden gevraagd om de pincode in te voeren om de Bluetooth OBD2 met het bord te koppelen.

Meestal is de pincode 1234 of 0000 - hangt af van uw hardware

Nu zou u het scherm "verbinding succesvol" moeten zien. Gebruik de volgende opdracht om de Bluetooth-toepassing af te sluiten:

ontslag nemen

De volgende stap is om het apparaat te BINDEN met de seriële poort:

sudo rfcomm bind 0 MACADRES 1

Om er zeker van te zijn dat de bewerking is geslaagd, typt u:

ls /dev

De poort "Rfcomm0" moet worden vermeld.

Stap 7: De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2

De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2
De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2

Het belangrijkste doel van deze stap is om te garanderen dat de communicatie tussen de 3 apparaten werkt:

ELM327, DragonBoard 410c en de auto

Download de app "Scherm" om seriële berichten via de seriële poort te verzenden

sudo apt-get installatiescherm

De seriële poort wordt gebruikt om AT-opdrachten te verzenden en de antwoorden tussen de DragonBoard 410c en het ELM327-apparaat te ontvangen.

Ga naar de volgende link voor meer informatie over AT Commands:

elmelectronics.com/ELM327/AT_Commands.pdf

Waarschuwing:

Wees heel voorzichtig met deze stap! Alle informatie die u naar het apparaat verzendt, wordt geïnterpreteerd en naar de auto gestuurd. Als een verkeerd bericht wordt verzonden, kan dit door de auto verkeerd worden geïnterpreteerd en problemen veroorzaken. Besteed aandacht aan de commando's en bestudeer ze voordat je je eigen code probeert. We raden ten zeerste aan om de onderstaande instructies tot op de letter te volgen.

Volg de onderstaande opdrachtvolgorde om de communicatie te starten:

  • Deze functie start de seriële communicatie via het scherm:

    scherm /dev/rfcomm0

Typ de volgende opdrachten in deze volgorde zodra de terminal wordt geladen:

ATZ

ATL1 ATH1 ATS1 ATSP0

Laatste communicatietest:

Typ in de console:

ATI

Het zou "ELM327 v1.5" of de ELM-versie van uw apparaat moeten retourneren

Dit is het bewijs dat de communicatie van het ELM-apparaat en de DragonBoard 410c werkt

Snelle tip

Om "Scherm" te verlaten, moet u Ctrl+A typen gevolgd door Ctrl+D.

Stap 8: De DragonBoard 410c aansluiten op de OBD van de auto met behulp van PyOBD

De DragonBoard 410c aansluiten op de OBD van de auto met behulp van PyOBD
De DragonBoard 410c aansluiten op de OBD van de auto met behulp van PyOBD

PyOBD is een Python-bibliotheek om de communicatie mogelijk te maken met OBD2-apparaten die op auto's kunnen worden aangesloten. Hiermee kunnen we verschillende informatie extraheren, waaronder de snelheid van het voertuig en elektrische fouten.

In deze stap moeten we ervoor zorgen dat de volgende Python-bibliotheken zijn geïnstalleerd in Linaro van uw DragonBoard 410c:

  • PIP - Python's pakketbeheerder

    sudo apt-get install python-pip

  • SetupTools - bestandsinstallatiebeheerder

    sudo pip install -U pip setupstools

  • Wiel - pakketformatter installeren

    sudo apt-get install python-wheel

  • OBD - Python-bibliotheek om te communiceren met OBD-apparaat

    sudo apt-get install python-obd

  • GPS - Python-bibliotheek om gegevens van GPS te krijgen

    sudo pip gps installeren

  • Verzoeken - Python-pakket voor RESTful

    sudo pip installatieverzoeken

Volg deze stappen om te controleren of het OBD-pakket correct werkt:

sudo python

Nu wordt de cursor van de terminal gewijzigd in ">>>", wat aangeeft dat Python actief is. U kunt nu beginnen met het typen van de onderstaande opdrachten:

  • Begin met het importeren van de OBD-bibliotheek:

    import obd

  • Gebruik de opdracht om verbinding te maken met de seriële poort:

    verbinding = oud. OBD ("dev/rfcomm0")

  • Het is normaal dat er een foutmelding wordt weergegeven waarin staat dat de communicatie is mislukt, dus als dat gebeurt, probeert u het nog een keer.
  • Typ het volgende om erachter te komen of Python informatie krijgt van de auto die via ELM327 via Bluetooth rijdt:

    verbinding.protocolnaam()

Stap 9: Gegevens uit de auto lezen met Python

Gegevens uit de auto lezen met Python
Gegevens uit de auto lezen met Python

We zullen een bestand maken met de naam: OBD.py, zoals hieronder beschreven, gevolgd door de code.

Begin met het importeren van de OBD-bibliotheek in Python om de verbindingen te starten.

Om onbekende redenen mislukt bij gebruik van onze hardware de eerste verbindingspoging altijd. Tweede poging, werkt altijd. Daarom zie je in de code twee commandoregels die proberen de verbinding te maken.

Nadat de verbinding succesvol is, zijn we begonnen met een oneindige lus, die op zoek is naar OBD-gegevens en deze formatteert volgens vooraf ingestelde parameters. Daarna maakt het een URL aan met behulp van Query String, waardoor het naar de server kan worden verzonden met behulp van de POST-methode.

Op het onderstaande voorbeeld zijn we erin geslaagd om de volgende informatie te krijgen:

  • RPM
  • Snelheid

De functies voor het vastleggen van gegevens gebruiken twee parameters. Als u bijvoorbeeld [1][12] gebruikt, zoekt u naar [module] [PID]. De lijst met functies is te vinden op:

Genereer ten slotte de URL met alle informatie samengevoegd en toegevoegd aan het bestand, genaamd "obd_data.dat".

Code voor OBD.py staat hieronder.

Na het verbinden en vastleggen van de gegevens, zullen we een bestand maken met de naam: envia_OBD.py

Dit deel van de code wordt eenvoudiger. Importeer de bibliotheken die betrekking hebben op de aanvraag/verzendgegevens, met behulp van RESTFUL.

Maak een WHILE om POST te gebruiken en stuur de URL van de eerste regel van het bestand, eerder ingevuld door OBD.py. Daarna, om te voorkomen dat gegevens opnieuw worden verzonden, wordt die regel uit het bestand gewist.

Code voor het bestand OBD.py staat hieronder.

Stap 10: Terugkerende scripts en gegevensopslagprocedure voor de vastgelegde gegevens

Terugkerende scripts en gegevensopslagprocedure voor de vastgelegde gegevens
Terugkerende scripts en gegevensopslagprocedure voor de vastgelegde gegevens

Alles wat we tot nu toe hebben gedaan, was erop gericht ervoor te zorgen dat het DragonBoard goed communiceerde met de componenten, zoals 3G, Wifi, Bluetooth, GPS-gegevens en meer.

Gebruik de onderstaande code om het bestand "rc.local" te bewerken, dat al enkele functies en voorgedefinieerde commando's heeft. Het staat op '/etc'. Gebruik de opdracht om te bewerken:

sudo nano /etc/rc.local

Nu moeten we alle services en functies configureren en routines maken die automatisch worden geïnitialiseerd wanneer het DragonBoard opstart. Laten we BASH gebruiken om dit te doen. BASH (Bourne-Again-SHell) is een Linux Command-interpreter-app.

De volgende code heeft BASH-opdrachten en u moet het Bluetooth/OBD MAC-adres invoeren. Wees extra voorzichtig en zorg ervoor dat u de code beëindigt met "exit 0", dat is de reactie van het systeem dat de actie succesvol was.

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

dan 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/linarothon /Documents/FadaDoCarro/OBD.py & sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py & exit 0

Vanaf nu zal elke keer dat u het DragonBoard inschakelt, het verbinding maken met 3G en GPS- en OBD-gegevens naar de gekozen server verzenden.

Stap 11: problemen onderweg

Problemen onderweg
Problemen onderweg

We hebben hieronder enkele van de problemen vermeld die we onderweg tegenkwamen voordat we dit Instructable schreven, maar we dachten dat het je zou kunnen helpen als het je overkomt.

  • PyOBD

    U moet zeer voorzichtig zijn met het verzenden van gegevens terwijl u met de auto communiceert. In een van onze eerste pogingen, toen de communicatie niet stabiel was, stuurden we het verkeerde commando waardoor de ECU in feite crashte. De versnellingspook zat vast in de parkeerstand en sommige lampjes op het dashboard bleven willekeurig knipperen. De gevonden oplossing was om een van de accukabels ongeveer 15 minuten los te koppelen. Hiermee wordt de ECU teruggezet naar de fabrieksinstellingen, waardoor eventuele opdrachten of wijzigingen die we hebben aangebracht, worden geannuleerd

  • Linaro

    We hadden een probleem met ons DragonBoard, dat sporadisch steeds opnieuw opstartte. Het probleem is opgelost door het team van Linaro dat een nieuwere versie van het besturingssysteem heeft uitgebracht. We hebben deze tutorial geschreven met de bijgewerkte versie

  • GPS van DragonBoard

    Qualcomm's DragonBoard 410c heeft geen interne GPS-antenne, dus om de GPS-signaalacquisitie te verbeteren, moeten we een connector voor een externe antenne installeren. Dit proces wordt beter uitgelegd in de volgende link:

Stap 12: Referenties

Referenties
Referenties

Bootloader

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

Linaro

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

Como geïnstalleerd of Linaro op DragonBoard 410c

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

Documentatie van GPS voor DragonBoard

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

GPS-demo

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Aansluiten RaspberryPi met OBD Bluetooth

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

Aanbevolen: