Inhoudsopgave:
- Stap 1: De eerste installatie van DragonBoard 410c uitvoeren**
- Stap 2: Uw DragonBoard 410c lokaliseren met behulp van de GPS-antenne
- Stap 3: De 3G/4G USB-dongle installeren
- Stap 4: De DragonBoard 410c transformeren in een wifi-hotspot / toegangspunt
- Stap 5: Draadloos toegang krijgen tot de DragonBoard 410c met SSH, via hotspot-connectiviteit
- Stap 6: De DragonBoard 410c verbinden met de OBD van de auto met behulp van Bluetooth - deel 1/2
- Stap 7: De DragonBoard 410c verbinden met de OBD van de auto via Bluetooth - deel 2/2
- Stap 8: De DragonBoard 410c aansluiten op de OBD van de auto met behulp van PyOBD
- Stap 9: Gegevens uit de auto lezen met Python
- Stap 10: Terugkerende scripts en gegevensopslagprocedure voor de vastgelegde gegevens
- Stap 11: problemen onderweg
- Stap 12: Referenties
Video: DragonBoard en OBD2: 12 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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**
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
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
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 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
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 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
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
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
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
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
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
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:
Toerenteller/scanmeter met Arduino, OBD2 en CAN-bus - Ajarnpa
Toerenteller/scanmeter met Arduino, OBD2 en CAN-bus: elke eigenaar van een Toyota Prius (of een ander hybride/speciaal voertuig) weet dat er op hun dashboard misschien een paar wijzerplaten ontbreken! Mijn prius heeft geen motortoerental of temperatuurmeter. Als je een prestatiegerichte man bent, wil je misschien dingen weten zoals timing vooraf en
Een lamp aansluiten en bedienen via de ZigBee-module op Dragonboard: 5 stappen
Een lamp aansluiten en bedienen via een ZigBee-module op Dragonboard: deze instructable leert de gebruiker hoe hij de ZigBee-module op het Dragonboard kan aansluiten en correct kan installeren en deze kan laten werken met een ZigBee-gestuurde lamp (OSRAM), waardoor een ZigBee IOT-netwerk ontstaat. : Dragonboard 410c; CC2531 USB-dongle; T
Google Assistent op DragonBoard™ 410c: 57 stappen
Google Assistant op DragonBoard™ 410c: deze Instructables leert u Google Assistant te gebruiken in het DragonBoard en een smarthome-omgeving in te stellen met sommige apparaten. Vereist:-DragonBoard™ 410c (met een nieuwe installatie van linaro-alip);-12V/ 1A 5,5 mm jack-voeding;-CC2531 zigbee mod
Objectdetectie met Dragonboard 410c of 820c met OpenCV en Tensorflow: 4 stappen
Objectdetectie met Dragonboard 410c of 820c met behulp van OpenCV en Tensorflow.: Deze instructie beschrijft hoe OpenCV, Tensorflow en machine learning-frameworks voor Python 3.5 moeten worden geïnstalleerd om de toepassing Objectdetectie uit te voeren
OBD2 Bluetooth-lezer: 3 stappen
OBD2 Bluetooth-lezer: welkom, dit is mijn eerste Instructable en hopelijk is het gemakkelijk te begrijpen en kun je er zelf een maken. Als je vragen hebt, neem dan gerust contact met me op, misschien kan ik je helpen. Ik zal proberen dit uiterst eenvoudig te volgen te maken met deze