Indholdsfortegnelse:

DragonBoard Com OBD: 12 trin
DragonBoard Com OBD: 12 trin

Video: DragonBoard Com OBD: 12 trin

Video: DragonBoard Com OBD: 12 trin
Video: Skyrim: The Dragonborn Comes | EPIC VERSION (feat. @Colm_R_McGuinness​) 2024, Juli
Anonim
DragonBoard Com OBD
DragonBoard Com OBD

Através da leitura do protocolo OBD2 do carro, é possível receber informationa do veículo. Brug af en DragonBoard 410c kommer til at levere en ny opgave, og vi kan også levere detaljerede oplysninger om, hvad der skal gengives.

Este projeto foi feito em parceria com a #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora que permitiram que tivéssemos acesso aos melhores hardwares, além do contato com os melhores profissionais para contribuir com o desenvolvimento.

Deltagerprojekt:

Temos total interesse em ajudar você a concluir o seu projeto, então não deixe de entrar em contato conosco!

For at følge dette projekt på engelsk, klik her:

www.instructables.com/id/DragonBoard-and-OBD2/

A estrutura deste projeto inclui os seguintes componentes, conforme apresentados and imagem acima:

  • Qualcomm DragonBoard 410c
  • ELM327 Bluetooth OBD2 -grænseflade
  • Dongle USB 3G/4G
  • Carregador Veicular de Inversão de Tensão (110v)

Trin 1: Fazendo O Setup Inicial Da DragonBoard 410c

Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c
Fazendo O Setup Inicial Da DragonBoard 410c

Brug af en Qualcomm DragonBoard 410c, der kan bruges til at installere og distribuere Linaro til Linux, og som vi kan konfigurere fuldstændigt til dispositivo.

For at få mere at vide om DragonBoard, kan du bruge Ubuntu, VirtualBox, eller bruge FastBoot, og det kan også bruges til Linux. Det er nødvendigt, at jeg installerer en Linux-para-poder til installation.

For at installere o Fastboot, adgang til Terminal da sua Máquina Virtual Ubuntu, og citer:

sudo apt-get android-tools-fastboot

  • For instalar o Linaro, precisamos passar for 2 passos muito importantes:

    • Instalando o BOOTLOADER
    • Navn til arquivo: dragonboard410c_bootloader_emmc_linux-79.zip

      • https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
      • Retire os arquivos de dentro do ZIP
      • Entra na pasta:

        cd /NomeDaPasta (caminho da pasta descompactada)

      • Fazer o comando:

        sudo fastboot -enheder

      • Resposta esperada:

        (hexadecimal) fastboot

      • Enta digite:

        sudo./flashall

      • Resposta esperada:

        færdig. samlet tid 1.000s (sem erros)

        (sem erros)

    • Instalando o Sistema Operacional

      • https://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
      • Gør følgende:
      • boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

        Este arquivo é a última versão (Junho/17) e o nome futuro pode ser alterado. En base gør nome que você deve buscar é “boot-linaro-NomeDaVersão”. Nesta versão o nome é “Stretch” e a anterior foi “Jessie”

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

        Este arquivo é a última versão (Junho/17) e o nome futuro pode ser alterado. Anskaffelse af "linaro-NomeDaVersão-alip"

      • Retirar os arquivos de dentro do. GZ
      • Entrar na pasta “raiz” em relação aos arquivos compactados

        eksempel: "/Downloads" som en lokal lokalitet

      • Entre com os comandos:

        sudo fastboot -enheder

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

      • Resposta esperada (lembrando que o tempo pode variar):

        færdig. samlet tid: 100,00s

  • Tilslutter mus, skærm og skærm/tv med HDMI
  • Brug:

    • Usuário: linaro
    • Senha: linaro
  • Abra en grænseflade Lxterminal og faça eller download af listen over de installerede disponíveis dos pacotes:

    sudo apt-get opdatering

  • Realiser en instalação dos pacotes disponíveis usando o código:

    sudo apt-get opgradering

Dicas: O Linaro tem um boot extremamente rápido, e uma comunidade bastante engajada para solução de problemas.

Trin 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo

Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo

Kommer med en installation, der muligvis kan servicere de GPS-kunder, GNSS-GPSD, GPSD eller GPSD-KLIENTER. Faça isso usando o comando:

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

Com ele instalado, você precisará rodar alguns comandos para iniciar o aplicativo, são eles:

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

Leve sua DragonBoard 410c para um local aberto, com visada para o céu, e digite no terminal:

gpsmon –n

Pelos testes realizados, o tempo médio até as informationa começarem a aparecer na tela, é de cerca de 10 minutos. Isso varia muito da localização da DragonBoard, quantidade de prédios ao seu redor, além de outras barreiras naturais que possam atrapalhar and recepção do sinal do GPS.

Para conseguir capturar essas informações and mandar para a núvem, use o código abaixo, alterando o endereço do seu website:

Trin 3: Instalando O Dongle USB 3G/4G

Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G
Instalando O Dongle USB 3G/4G

Eksisterende algumas formas de fazer til en DragonBoard 410c adgang til en 3G/4G:

  • Instalando um Shield / BreakoutBoard com Modem GSM og slot til SimCard;
  • Brug af Dongle USB 3G/4G;

For en optimal optagelse til Dongle USB 3G/4G fra Huawei model E3272, der kan bruges til at skaffe en større disposition.

Til konfiguration af et modem, der kan bruges til terminal (med en WVDialplacering), kan du også bruge en grænseflade til brugergrænseflade til brugeren (GUI) til Linaro. Faça da seguinte forma:

  • Com o Dongle USB conectado, klik her for at finde en "redes" ingen canto inferior direito da tela.
  • "Rediger forbindelser"> "Tilføj"
  • Opslag og opslag: “Mobilt bredbånd”
  • Klik på "Opret"

Vi kan også installere et system til operationel, konforme billeder og konfigurere en telefonadapter, der kan bruges til sim -kort. Para criação deste projeto, utilizamos um Sim Card da Tim (e um modem inicialmente vendido pela Vivo).

Trin 4: Transformér en DragonBoard 410c Em Hotspot / Access Point WiFi

Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi
Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi
Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi
Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi
Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi
Transformér et DragonBoard 410c Em Hotspot / Access Point WiFi

For at bruge en DragonBoard 410c som en roteador wifi (der kan konfigureres en internetforbindelse til internettet), kan en række enkle eksempler bruges til et praktisk interface til et system. Saga os passos abaixo:

  • Klik ikke på en bot, der ikke kan bruges til at "redigere" ingen ringere kant.
  • "Rediger forbindelser"> "Tilføj"
  • Oplysninger om "WiFi"
  • Klik på "Opret"

Coloque o nome da rede que você quer criar no campo "SSID" e depois altere o "Mode" para "Hotspot".

Para garantir o funcionamento:

  • Se "IPv4 -indstillinger"
  • Veja se "Metode" er en del af "Delt med andre computere"

Trin 5: Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot

Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot

Criamos um jeito de acessar a placa remotamente, Independente da forma que ela esteja conectada, não dependendo de estar próximo a Dragonboard para conectar diretamente à ela, ou ao wifi em que ela esteja conectada. Este é o método de conexão dos servidores Linux da Amazon.

Installering af Auto SSH, brug af enheden.

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

Agora vamos gerar uma chave criptografada com padrão de segurança RSA. Esta chave serve para que a pessoa que a tenha, tenha autorização for acessar and instância do endpoint exclusivo no Linux, através do IP público do modem 3G, objetivo principal deste passo. Efterfølgende kan vi også kopiere en kopi til en repositório de chaves confiáveis til Linux, og det garanterer også, at jeg kan bruge det til en konexão.

ssh -keygen -t rsa

scp ~/.ssh/id_rsa.pub bruger@remote_server:.ssh/autoriserede taster autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 bruger@remote_server

Com isso, acabamos de transformar a DragonBoard 410c em um servidor cloud! / o/

Trin 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2

A interface de comunicação com os carros é feita através da porta OBD2. En informação que transita nesta porta precisa ser traduzida, e para isso precisamos de um interpretador que trate os dados. Du kan også få adgang til hardware: ELM327 eller STN1170.

Para este projeto, utilizamos um dispositivo Bluetooth com chip baseado em ELM327.

Vigtigt, at vi kan levere en hardware, der er nødvendig til at repræsentere en ORIGINAL til ELM327. A maior parte disponível está to versão 1.5, que foi quando o chip original foi clonado e colocado a venda no mercado. O originals chipsæt er version 2.2. A evolução deste versionamento traz ao chip mais informações sobre os carros mais novos. É importante saber disso, pois dependendo dos testes realizados, poderá ou não conseguir obter determinadas informações de veículos mais novos.

De posse do seu dispositivo OBD2 Bluetooth, encontre a porta OBD2 do seu carro. Ela pode estar localizada logo abaixo do volante, no console central ou perto da caixa de fusíveis. O lokale varia bastante entre som montadoras og modelos. Uma opção para localizar é usar esta ferramenta:

Acesse a DragonBoard 410c com SSH, utilizando seu Notebook (lembrando que agora você está no carro, e não possui maa uma tela para conectar a placa).

Assim que o dispositivo OBD2 Bluetooth for inserido no conector do carro, siga os passos abaixo para ter control da conectividade bluetooth:

sudo bluetoothctl

kan parres på agent ved standardagentscanning tilNeste momento en importante que você copie o MAC Address pois precisará para os próximos passos

Digite:

stole på MACADDRESS

par MACADDRESS

Neste øjeblik kan du bruge en separat PIN -kode til Bluetooth OBD2.

O PIN geralmente é 1234 ou 0000

Du kan også finde en kontekst, et digitalt program eller en Bluetooth -styring:

Afslut

Agora é preciso fazer um "BIND" do dispositivo com a porta serial:

sudo rfcomm bind 0 MACADDRESS 1

For validering af succesfuld operation:

ls /dev

En porta "Rfcomm0" har udviklet en liste.

Trin 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2

Objetivo deste passo é garantir o funcionamento da comunicação entre os dispositivos:

ELM327, DragonBoard 410c og Veículo

Baixe a aplicação “Skærm” til enviar mensagens pela Porta Serial

sudo apt-get installeringsskærm

En Porta Serial será usada for envio e recebimento de Comandos AT entre a DragonBoard 410c e ELM327.

Para saber mais sobre Comandos AT, acesse:

ATENÇÃO:

Tome muito cuidado nesta parte! Vi kan også informere enviadas para o dispositivo conectado ao carro, poderão ser interpretadas e enviadas ao carro de maneira errada e ocasionar o mal-funcionamento do seu carro! Estude bastante os comandos antes de tentar inovar nos comandos. Anbefaler, at du kan bruge det som instruktør for detaljerede oplysninger.

Siga a sequência de comandos abaixo para dar início à comunicação:

  • Esta função fará abrir o terminal de comunicação serial.

    skærm /dev /rfcomm0

Assim que o terminal carregar, digite os comandos abaixo nesta sequência (e entenda o que cada um deles faz):

  • Reinicia o dispositivo. As vezes você precisará fazer isso.

    ATZ

  • Liga a funcionalidade de quebra de linha nos comandos, facilitando and visualização.

    ATL1

  • Liga os cabeçalhos dos comandos.

    ATH1

  • Liga o espaçamento entre palavras.

    ATS1

  • Definer o protocolo de comunicação do carro para "Automático".

    ATSP0

Teste de comunicação Final:

  • Digite no console:

    ATI

  • Ele deve retornar “ELM327 v1.5” ou a versão do ELM do seu dispositivo.
  • Isso prova que o ELM327 está comunicando com a placa sem problemas, e podemos prosseguir.

Dica

Para sair da aplicação "Skærm" er nødvendig for at åbne: Ctrl-A seguido de Ctrl-D

Trin 8: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD

Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD

PyOBD é uma biblioteca de Python específica para comunicação com o padrão OBD2 dos veículos. Com ela, podemos extrair diversas informações da rede de comunicação do carro, incluindo dados como velocidade e até mesmo erros da parte elétrica.

Para esta etapa, precisamos garantir que as seguintes bibliotecas estejam instaladas no Linaro da sua DragonBoard 410c:

  • PIP - Gennemførelse af Python -modeller

    sudo apt-get install python-pip

  • SetupTools - installationer

    sudo pip install -U pip setuptools

  • Hjul - formatador de arquivos para instalação

    sudo apt-get install python-hjul

  • OBD - biblioteca para interpretação de dados OBD

    sudo apt-get python-obd

  • GPS - biblioteca com dados do gps

    sudo pip installer gps

  • Anmodninger - módulo de solicitações

    sudo pip installationsanmodninger

Para saber se a biblioteca de Python está funcionando corretamente, precisamos rodar os comandos:

sudo python

Nu kan du ikke bruge markøren til at bruge en terminal til “>>>”, der viser, at programmet har et program med Python. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.

  • Kom fra import til biblioteca

    import obd

  • Para fazer a conexão com og porta seriel brug eller comando

    forbindelse = obd. OBD (“/dev/rfcomm0”)

  • Para descobrir se o Python está conseguindo extrair informações do carro, passando pelo Bluetooth, ELM327 até chegar no carro, digite:

    connection.protocol_name ()

Trin 9: Ekstra information om Carro Usando Python

Ekstra information om Carro Usando Python
Ekstra information om Carro Usando Python

Vamos criar um arquivo chamado: OBD.py, conforme instruções abaixo e código na sequência.

Importerer en biblioteca OBD til dentro do Python para iniciar as conexões.

Por motivos desconhecidos, a primeira conexão com nosso hardware, falha semper. Na segunda tentativa, funciona semper. Por isso, no código verá que há duas linhas de conexão (con).

Seguindo o funcionamento do código, com a conexão feita, iniciamos um loop infinito que busca os dados do OBD, formata de acordo com os parâmetros estabelecidos. Hent en webadresse, en forespørgselsstreng, der kan bruges til at bruge en post til POST.

Ingen eksempler på abaixo pegamos som forskellige oplysninger:

  • RPM
  • Velocidade
  • Odômetro *

Som funções para captura dos dados utilizam dois parâmetros. Eksempelvis bruger vi [1] [12] estamos buscando [módulo] [PID]. Esta liste over programmer kan bruges på:

Til sidst kan du se en URL -adresse til oplysninger, der indeholder oplysninger om, hvordan vi kan kombinere dem med arquivo, "obd_data.dat".

Kodning til OBD.py:

import obdimport timeodoInicial = -1 paramOdo = 0 #Conect OBDprint "Primeira conexao" con = obd. OBD ("/dev/rfcomm0") print "Segunda conexao" con = obd. OBD ("/dev/rfcomm0") mens True: respRPM = con.query (obd.commands [1] [12]) print respRPM respVelo = con.query (obd.commands [1] [13]) print respVelo respOdo = con.query (obd.commands [1] [49]) udskriv respOdo paramRPM = int (float (str (respRPM).replace ("revolutions_per_minute", ""))) paramVelo = int (float (str (respVelo).replace ("kph", ""))) paramOdo = int (float (str (respOdo).replace ("kilometer", ""))) url = "https://www.website.com/OBD?vel="+str(paramVelo)+"&rpm="+str (paramRPM)+"& odo ="+str (paramOdo)+"\ n" time.sleep (0.2) print url file = open ("obd_data.dat", "a+") file.write (url) file.close () udskriv url

Depois da conexão e captura dos dados, vamos criar o arquivo chamado: envia_OBD.py

Esta parte do código fica mais simples. Começamos importando bibliotecas relacionadas à solicitações/envio de dados, usando RESTFUL.

Criamos um while para enviar através de POST a URL da primeira linha do arquivo que populado anteriormente pelo OBD.py. Depois disso, para evitar que o dado seja enviado mais de uma vez, ela apaga esta linha do arquivo.

Código para o arquivo OBD.py:

importanmodninger

importer tid mens True: prøv: time.sleep (0.2) url = '' med åben ('obd_data.dat', 'r') som fin: data = fin.read (). splitlines (True) url = data [0] request.post (url) med åben ('obd_data.dat', 'w') som fejl: fout.writelines (data [1:]) undtagen: print 'undtagelse'

Caso tenha algum problema copiando estes códigos, baixe os arquivos abaixo:

Trin 10: Repetição De Scripts E Armazenamento De Dados Capturados Do Carro

Repetição De Scripts E Armazenamento De Dados Capturados Do Carro
Repetição De Scripts E Armazenamento De Dados Capturados Do Carro

Du kan se, hvad der faktisk er en orientering, der garanterer, at en DragonBoard -fizesse kan bruges til forskellige komponenter, såsom comunicação 3G, WiFi, Bluetooth, GPS, entre outros.

Vamos usar o código abaixo para editar o arquivo 'rc.local', que já tem algumas funções e comandos pré-definidos, e fica no diretório '/etc'. Du kan f.eks. Bruge følgende:

sudo nano /etc/rc.local

Agora præcist konfigurerer en inicialização de todos os processos, serviços og funções, criando rotinas para que funcionem automaticamente ao iniciariar a Dragonboard. Vamos utilizar o BASH para fazer isso. O BASH (Bourne-Again-SHell) é um aplicativo para interpretação de comandos Unix.

No próximo código, que tem comandos BASH, você precisará inserir o MacAddress do seu dispositivo OBD/Bluetooth, e também precisa ter bastante cuidado para garantir que o código seja colocado semper antes do comando "exit 0" que é a resposta de sucesso do sistema.

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

derefter systemctl stop ssh.socket || true dpkg-rekonfigurer 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 de agora, semper que a placa for iniciada, ela já vai se conectar através do 3G e enviar os dados de GPS e OBD para o servidor escolhido.

Trin 11: Dificuldades Encontradas

Dificuldades Encontradas
Dificuldades Encontradas

Listamos abaixo algumas barreira que encontramos ao longo do desenvolvimento do projeto, que resolvemos antes de criar este Instructable, mas que é importante alertá-lo, caso esteja tendo dificuldades também.

  • PyOBD

    Ét præcist, hvad der skal sendes til os, da vi kan kommunikere med os. Nas primeira tentativas, quando a comunicação ainda não era estável com o dispositivo, enviamos alguns comandos para o carro, e acabamos causando algum problema at ECU. Neste momento o câmbio automático não aceitava mais mudanças, ficou travado. Além disso, som luzes gør painel começaram a piscar aleatoriamente. A solução para este evento que ocasionamos foi o desligamento dos cabos da bateria, mantendo assim por 15 minutter. Desta forma, forçamos o reset completeo das ECUs do carro, retornando ele ao estágio original de fábrica, portanto cancelando qualquer comando que tenhamos enviado erroneamente pela porta OBD

  • Linaro

    Tivemos um problema de boot no Linaro, quando aleatoriamente o OS reiniciava. Este problema foi resolvido ao longo do desenvolvimento do projeto, pela equipe do Linaro, que soltou uma atualização, e já construímos este tutorial utilizando a informação mais atualizada

  • GPS med DragonBoard

    En Qualcomm Dragonboard 410c -antenne til GPS -internat, som også kan bruges til at modtage en præcis installation eller tilslutning af eksterne antenner. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:

Trin 12: Henvisninger

Henvisninger
Henvisninger

Bootloader

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

Linaro

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

Installation af Linaro og DragonBoard 410c

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

Dokumentation af GPS til 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/

Instruções para criação do túnel SSH

gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6

Installer o SSH ingen Linux

ask.xmodulo.com/install-autossh-linux.html

Anbefalede: