Taula de continguts:

DragonBoard i OBD2: 12 passos
DragonBoard i OBD2: 12 passos

Vídeo: DragonBoard i OBD2: 12 passos

Vídeo: DragonBoard i OBD2: 12 passos
Vídeo: DIAGNOSTICO DE CONECTOR OBD2, no enciende el Scanner 2024, Juliol
Anonim
DragonBoard i OBD2
DragonBoard i OBD2

Llegint les dades que surten del port OBD2 del vostre cotxe, és possible recollir-ne informació sorprenent. Amb el DragonBoard 410c, hem treballat en aquest projecte i el detallem aquí perquè pugueu fer-ho vosaltres mateixos.

Aquest projecte només va ser possible gràcies a la col·laboració amb #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora que ens va permetre accedir al millor maquinari del mercat, així com al contacte amb els millors professionals per donar suport al desenvolupament.

L’equip estava format per aquests nois:

Tenim moltes ganes d’ajudar-vos a assolir el vostre objectiu i assegurar-nos que completeu el vostre projecte, així que feu-nos-ho saber si necessiteu ajuda més enllà de les instruccions següents.

Per seguir aquest projecte en portuguès, clique aqui:

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

Per a aquest projecte hem utilitzat els elements següents:

  • Qualcomm DragonBoard 410c
  • Interfície OBD2 Bluetooth ELM327
  • Dongle USB 3G / 4G
  • Carregador de cotxes inversor de tensió (110v)

Pas 1: realització de la configuració inicial de DragonBoard 410c **

Realització de la configuració inicial de DragonBoard 410c **
Realització de la configuració inicial de DragonBoard 410c **
Realització de la configuració inicial de DragonBoard 410c **
Realització de la configuració inicial de DragonBoard 410c **
Realització de la configuració inicial de DragonBoard 410c **
Realització de la configuració inicial de DragonBoard 410c **

Amb Qualcomm DragonBoard 410c, vam iniciar el projecte instal·lant la distribució de Linux anomenada Linaro, que ens permet configurar tots els dispositius necessaris.

Per crear una imatge de Linaro per al DragonBoard, utilitzeu Ubunto a VirtualBox, de manera que pugueu utilitzar FastBoot (una aplicació basada en Linux). Per tant, bàsicament el que heu de fer és obrir el terminal a la VM Ubuntu i entrar:

sudo apt-get android-tools-fastboot

Per instal·lar Linaro, hem de seguir dos passos importants:

1) Instal·lació del BOOTLOADER

Nom del fitxer: dragonboard410c_bootloader_emmc_linux-79.zip

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

Descomprimiu els fitxers i seleccioneu la carpeta:

cd / FolderName (camí a la carpeta descomprimida)

Introduïu el codi següent:

dispositius sudo fastboot

Retorn previst:

(hexadecimal) arrencada ràpida

A continuació, escriviu:

sudo./flashall

Retorn previst:

acabat. temps total 1.000 s (sense errors)

Instal·lació del SISTEMA OPERATIU

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

Descarregueu aquests 2 fitxers:

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

Aquesta és l'última versió disponible fins al moment (17 de juny), de manera que el nom podria canviar en el futur. El patró que cercareu és "boot-linaro-VersionName". Aquest es diu "Stretch" i l'anterior era "Jessie".

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

Aquesta és l'última versió fins ara (17 de juny) i el nom pot canviar en el futur. Cerqueu el patró "linaro-VersionName-alip".

Descomprimiu els fitxers de. GZ

Accediu a la carpeta "arrel", en relació amb els fitxers descomprimits

exemple: "/ Descàrregues", que és el lloc on s'emmagatzemen els fitxers descarregats.

Ara comenceu amb les ordres següents:

dispositius sudo fastboot

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

Retorn previst (recordar l'hora pot variar):

acabat. temps total: 100,00 s

Connecteu un ratolí, un teclat i un monitor / TV mitjançant el port HDMI

Tingueu-ho a mà:

usuari: linaro

contrasenya: linaro

Obriu l'aplicació Lxterminal i procediu amb la descàrrega de la llista d'actualitzacions disponibles, quant als paquets instal·lats:

sudo apt-get update

Assegureu-vos d’instal·lar els paquets disponibles de la llista:

sudo apt-get upgrade

Consell: Linaro va ser escollit a causa d'un arrencada extremadament ràpida i una comunitat molt compromesa i orientada a la resolució de problemes, que estalvia molt de temps.

Pas 2: localitzeu el vostre DragonBoard 410c mitjançant la seva antena GPS

Localització del DragonBoard 410c mitjançant la seva antena GPS
Localització del DragonBoard 410c mitjançant la seva antena GPS
Localització del DragonBoard 410c mitjançant la seva antena GPS
Localització del DragonBoard 410c mitjançant la seva antena GPS

Comenceu instal·lant les aplicacions necessàries que seran els clients al mòdul GPS. Els noms de les aplicacions són: GNSS-GPSD, GPSD i GPSD-CLIENTS. Per fer-ho, seguiu les ordres:

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

Amb aquestes aplicacions instal·lades, necessitareu més ordres per iniciar-la correctament:

sudo systemctl start qdsp-start.service

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

Ara porteu el DragonBoard 410c a una zona molt oberta, amb una vista clara del cel, que li permetrà rebre el senyal dels satèl·lits. Ara escriviu al terminal:

gpsmon –n

A partir de les nostres proves, les dades començarien a aparèixer a la pantalla al cap de deu minuts, de mitjana. Això canvia molt d'un lloc a l'altre, a més de la posició del DragonBoard a la finestra o a l'interior, a més de moltes altres barreres que poden interferir en la recepció del senyal GPS.

Pas 3: Instal·lació del dongle USB 3G / 4G

Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G
Instal·lació del dongle USB 3G / 4G

Hi ha algunes maneres de connectar el DragonBoard 410c a la xarxa 3G / 4G / GSM:

  • Ús d’un Shield / BreakoutBoard amb un mòdem GSM que també té una ranura SimCard;
  • Utilitzeu un dongle USB 3G / 4G.

Per a aquest projecte, vam decidir utilitzar el dongle USB E3272 de Huawei, ja que era fàcil i ràpid comprar-ne un.

Per configurar el mòdem podeu utilitzar el terminal (mitjançant l’aplicació WVDial), però la manera més senzilla de fer-ho és mitjançant la interfície gràfica d’usuari (GUI) de Linaro. Per a això, segueix:

  • Amb el dongle USB connectat al DragonBoard, feu clic amb el botó dret a la icona de "xarxes" a l'extrem inferior dret de la pantalla;
  • "Edita connexions"> "Afegeix";
  • Trieu "Banda ampla mòbil" al menú desplegable;
  • Feu clic a "Crea".

Seguiu les instruccions de l'assistent i assegureu-vos de seleccionar el transportista adequat al menú, permetent que el dispositiu es connecti en conseqüència.

Pas 4: transformar el DragonBoard 410c en un punt d'accés o punt d'accés Wi-Fi

Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi
Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi
Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi
Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi
Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi
Transformant el DragonBoard 410c en un punt d'accés o punt d'accés Wifi

La forma més senzilla de configurar el DragonBoard 410c com a encaminador wifi o punt d'accés Wi-Fi (ara que heu configurat la connexió a Internet) és fer servir la interfície gràfica d'usuari del sistema. Per fer-ho, seguiu els passos següents:

  • Feu clic amb el botó dret a la icona de xarxa a l'extrem inferior dret
  • Trieu "Edita les connexions i, a continuació," Afegeix"
  • Trieu "WiFi"
  • Feu clic a crear

Canvieu el nom de la xarxa que voleu crear al camp "SSID" i canvieu el camp "Mode" a "Punt d'accés Wi-Fi".

Per assegurar-vos que funcionarà, verifiqueu el següent:

  • Aneu a la pestanya "Configuració d'IPv4"
  • Verifiqueu si el "mètode"

Pas 5: accedir al DragonBoard 410c sense fils mitjançant SSH, mitjançant la connectivitat de punt d'accés

Accedir al DragonBoard 410c sense fils mitjançant SSH, mitjançant la connectivitat de punt d'accés
Accedir al DragonBoard 410c sense fils mitjançant SSH, mitjançant la connectivitat de punt d'accés

Hem aconseguit crear una manera d’accedir al DragonBoard de forma remota, sense importar si esteu a prop o no. Normalment, haureu de connectar-vos a la mateixa placa, mitjançant wifi o bluetooth. Una altra manera seria accedir-hi connectant-se a la mateixa xarxa Wifi (per exemple: des d’un enrutador). En realitzar els passos següents, estem creant un dispositiu autònom que genera la seva pròpia xarxa i que s’obre al web per tal d’accedir-hi.

Podeu començar instal·lant el "SSH automàtic" mitjançant el codi següent:

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

Ara generarem una clau criptogràfica, utilitzant l’estàndard RSA. Aquesta clau s’utilitzarà per accedir de manera segura a una instància de punt final Linux, mitjançant la IP pública del mòdem 3G. L’objectiu principal d’aquest pas. El següent codi copiarà aquesta clau al dipòsit de claus de confiança de Linux, assegurant-se que hi hagi més seguretat a la connexió.

ssh-keygen -t rsa

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

Seguint aquests passos, acabeu de transformar el Qualcomm DragonBoard 410c en un servidor de núvol. / o /

Pas 6: Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 1/2

Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 1/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 1/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 1/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 1/2

La interfície de comunicació del cotxe es realitza mitjançant un port OBD2. Cal traduir la informació que s’intercanvia en aquest port i, per a això, necessitem un dispositiu intèrpret. Hi ha dues alternatives de maquinari: ELM327 o STN1170.

Per a aquest projecte, hem utilitzat un dispositiu Bluetooth amb un chipset basat en ELM327.

És important tenir en compte que la disponibilitat de l'ELM327 no significa que sigui la VERSIÓ ORIGINAL d'ELM327. La major part dels chipsets disponibles es basen en la versió 1.5, que va ser quan es va clonar la informació del xip i es va filtrar al mercat. L’ELM327 original ja és a la versió 2.2. L’evolució d’aquest chipset aporta més dades sobre els cotxes més nous. És important saber-ho, perquè segons les proves, és possible que pugueu o no accedir a les dades dels vehicles més nous.

Amb l’adaptador Bluetooth OBD2, trobeu el port OBD2 del vostre cotxe. Es pot localitzar en algun lloc sota el volant. Pot ser més fàcil buscar-lo mitjançant aquesta eina:

Accediu al DragonBoard 410c mitjançant SSH, des del vostre portàtil (recordeu que ara esteu al cotxe i no teniu un televisor / monitor per endollar la placa). Tan bon punt el dispositiu Bluetooth OBD2 s’insereixi al port del cotxe, seguiu els passos següents per accedir a la connectivitat bluetooth.

sudo bluetoothctl

emparellable a l'agent en l'escaneig d'agent per defecte activatEn aquesta etapa és important que copieu l’adreça MAC perquè la necessitareu per als passos següents

Escriviu aquestes ordres:

confia en MACADDRESS

parell MACADDRESS

Se us demanarà que escriviu el codi PIN per emparellar l’OBD2 Bluetooth amb la placa.

Normalment, el codi PIN és si 1234 o 0000 depèn del vostre maquinari

Ara hauríeu de veure la pantalla "Connexió correcta". Per sortir de l'aplicació Bluetooth, utilitzeu l'ordre següent:

deixar de fumar

El següent pas és ENLLAÇAR el dispositiu amb el port sèrie:

sudo rfcomm bind 0 MACADDRESS 1

Per assegurar-vos que l'operació ha tingut èxit, escriviu:

ls / dev

El port "Rfcomm0" hauria de figurar.

Pas 7: Connectar el DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 2/2

Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 2/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 2/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 2/2
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant Bluetooth - Part 2/2

L'objectiu principal d'aquest pas és garantir que la comunicació entre els 3 dispositius funcioni:

ELM327, DragonBoard 410c i el cotxe

Baixeu l'aplicació "Pantalla" per enviar missatges en sèrie a través del port sèrie

sudo apt-get install screen

El port sèrie s’utilitzarà per enviar ordres AT i rebre les respostes entre el DragonBoard 410c i el dispositiu ELM327.

Accediu al següent enllaç per obtenir més informació sobre els comandaments AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Advertència:

Tingueu molta cura amb aquest pas! Tota la informació que envieu al dispositiu s’interpretarà i s’enviarà al cotxe; si s’envia un missatge incorrecte, el cotxe pot ser mal interpretat i causar problemes. Presteu atenció a les ordres i estudieu-les abans d’intentar el vostre propi codi. Us recomanem que seguiu les instruccions que apareixen a continuació.

Seguiu la seqüència d'ordres següent per iniciar la comunicació:

  • Aquesta funció iniciarà la comunicació en sèrie mitjançant la pantalla:

    pantalla / dev / rfcomm0

Tan bon punt es carregui el terminal, escriviu les ordres següents en aquesta seqüència:

ATZ

ATL1 ATH1 ATS1 ATSP0

Prova final de comunicació:

Escriviu la consola:

ATI

Hauria de retornar "ELM327 v1.5" o la versió ELM del vostre dispositiu

Això és una prova que la comunicació del dispositiu ELM i el DragonBoard 410c funciona

Consell ràpid

Per sortir de “Pantalla” és necessari escriure Ctrl + A seguit de Ctrl + D.

Pas 8: Connectar el DragonBoard 410c a l'OBD del cotxe mitjançant PyOBD

Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant PyOBD
Connexió del DragonBoard 410c a l’OBD del cotxe mitjançant PyOBD

PyOBD és una biblioteca Python que permet la comunicació amb dispositius OBD2 que es poden connectar als cotxes. Amb això, podem extreure diverses dades, incloses la velocitat del vehicle i els errors elèctrics.

En aquest pas, hem d'assegurar-nos que les següents biblioteques python estiguin instal·lades a Linaro del vostre DragonBoard 410c:

  • PIP: gestor de paquets de Python

    sudo apt-get install python-pip

  • SetupTools: gestor d'instal·lació de fitxers

    sudo pip install -Tools de configuració de pip U.

  • Roda: instal·la el formatador del paquet

    sudo apt-get install python-wheel

  • OBD: biblioteca Python per comunicar-se amb el dispositiu OBD

    sudo apt-get install python-obd

  • GPS: biblioteca Python per obtenir dades del GPS

    sudo pip instal·lar gps

  • Sol·licituds: paquet Python per a RESTful

    sol·licituds d'instal·lació de sudo pip

Per verificar si el paquet d’OBD funciona correctament, seguiu aquests passos:

sudo python

Ara el cursor del terminal es canviarà a ">>>" que indica que Python s'està executant. Ara podeu començar a escriure les ordres següents:

  • Comenceu per importar la biblioteca OBD:

    importar obd

  • Per connectar-vos al port sèrie utilitzeu l'ordre:

    connection = old. OBD ("dev / rfcomm0")

  • És normal que es mostri un missatge d'error que digui que la comunicació ha fallat; per tant, si això passa, proveu-ho una vegada més.
  • Per saber si Python rep informació del cotxe que passa per ELM327 mitjançant bluetooth, escriviu el següent:

    connection.protocol_name ()

Pas 9: llegir dades del cotxe mitjançant Python

Llegir dades del cotxe mitjançant Python
Llegir dades del cotxe mitjançant Python

Crearem un fitxer anomenat: OBD.py, com a instruccions següents, seguit del codi.

Comenceu important la biblioteca OBD a Python per iniciar les connexions.

Per motius desconeguts, mitjançant el nostre maquinari, el primer intent de connexió sempre falla. El segon intent, sempre funciona. Per això, al codi, notareu dues línies de comandament que intenten establir la connexió.

Després que la connexió tingui èxit, vam iniciar un bucle infinit que busca dades OBD i els formata segons paràmetres predeterminats. Després d'això, crea un URL, mitjançant Query String, que permet enviar-lo al servidor mitjançant el mètode POST.

A l'exemple següent, hem aconseguit obtenir la informació següent:

  • RPM
  • Velocitat

Les funcions per capturar dades utilitzen dos paràmetres. Per exemple, utilitzant [1] [12] feu servir el [mòdul] [PID]. La llista de funcions es pot trobar a:

Per fi, genereu l'URL amb tota la informació concatenada i afegida al fitxer, anomenada "obd_data.dat".

A continuació es mostra el codi per a OBD.py.

Després de connectar i capturar les dades, crearem un fitxer anomenat: envia_OBD.py

Aquesta part del codi es fa més senzilla. Importeu les biblioteques relacionades amb la sol·licitud / enviar dades mitjançant RESTFUL.

Creeu un WHILE per utilitzar POST i envieu l'URL de la primera línia del fitxer, poblada anteriorment per OBD.py. Després, per evitar que es tornin a enviar dades, esborra aquesta línia del fitxer.

A continuació es mostra el codi del fitxer OBD.py.

Pas 10: Scripts recurrents i procediment d'emmagatzematge de dades per a les dades capturades

Scripts recurrents i procediment d'emmagatzematge de dades per a les dades capturades
Scripts recurrents i procediment d'emmagatzematge de dades per a les dades capturades

Tot el que hem fet fins ara estava orientat a assegurar-nos que el DragonBoard es comunicés correctament amb els components, com ara 3G, Wifi, Bluetooth, dades GPS i molt més.

Utilitzeu el codi següent per editar el fitxer "rc.local", que ja té algunes funcions i ordres predefinides. Es troba a '/ etc'. Per editar, utilitzeu l'ordre:

sudo nano /etc/rc.local

Ara hem de configurar tots els serveis i funcions, creant rutines que s’inicialitzen automàticament quan s’inicia el DragonBoard. Utilitzem BASH per fer-ho. BASH (Bourne-Again-SHell) és una aplicació d’intèrpret d’ordres de Linux.

El següent codi té ordres BASH i haureu d’inserir l’adreça MAC Bluetooth / OBD. Tingueu molt de compte per assegurar-vos que finalitzeu el codi amb "sortida 0", que és la resposta del sistema a què l'acció ha tingut èxit.

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

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

A partir d’ara, cada vegada que activeu el DragonBoard, es connectarà a 3G i enviarà dades de GPS i OBD al servidor escollit.

Pas 11: problemes al llarg del camí

Problemes al llarg del camí
Problemes al llarg del camí

A continuació, enumerem alguns dels problemes que hem trobat al llarg del camí abans d’escriure aquest document instructiu, però hem pensat que pot ajudar-vos si us passa.

  • PyOBD

    Cal que sigueu molt prudents a l’hora d’enviar dades mentre us comuniqueu amb el cotxe. En un dels nostres primers intents, quan la comunicació no era estable, vam enviar una ordre incorrecta que bàsicament va estavellar l’ECU. El canvi de marxes estava bloquejat a l’aparcament i algunes de les llums del tauler continuaven parpellejant a l’atzar. La solució trobada va ser desconnectar un dels cables de la bateria durant uns 15 minuts. D'aquesta manera, l'ECU restablirà el seu estat predeterminat de fàbrica i, per tant, cancel·larà qualsevol ordre o canvi que haguem pogut fer

  • Linaro

    Hem tingut un problema amb el nostre DragonBoard, que es va continuar reiniciant esporàdicament. L’equip de Linaro va resoldre el problema, que va llançar una versió més nova del sistema operatiu. Hem escrit aquest tutorial amb la versió actualitzada

  • GPS de DragonBoard

    El DragonBoard 410c de Qualcomm no té una antena GPS interna, de manera que, per millorar l’adquisició del senyal GPS, hem d’instal·lar un connector per a una antena externa. Aquest procés s’explica millor al següent enllaç:

Pas 12: referències

Referències
Referències

Carregador d'arrencada

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

Linaro

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

Com instal·lar o Linaro na DragonBoard 410c

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

Documentació de GPS per a DragonBoard

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

Demostració GPS

gist.github.com/wolfg1969/4653340

OBD Python

github.com/brendan-w/python-OBD

Connectant RaspberryPi a un OBD Bluetooth

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

Recomanat: