Innehållsförteckning:

DragonBoard Com OBD: 12 steg
DragonBoard Com OBD: 12 steg

Video: DragonBoard Com OBD: 12 steg

Video: DragonBoard Com OBD: 12 steg
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. Använd en DragonBoard 410c som kommer att levereras nästa gång, och vi kan också göra detaljerade detaljer för att återskapa dem.

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.

Deltagare:

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

För att följa detta projekt på engelska, klicka här:

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änssnitt
  • Dongle USB 3G/4G
  • Carregador Veicular de Inversão de Tensão (110v)

Steg 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

Utnyttjar en Qualcomm DragonBoard 410c, iniciamos or projeto com for a installalação da distribuição Linaro to Linux, que noos permitiu configuração completea do dispositivo.

Para criar uma imagem do to Linaro para a DragonBoard, use of Ubuntu, for VirtualBox, for usar or FastBoot, que é um aplicativo baseado em Linux. Det är nödvändigt att installera en Linux-kod för installeraren.

För installation av Fastboot, åtkomst till Terminal för olika virtuella Ubuntu och siffror:

sudo apt-get android-tools-fastboot

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

    • Instalando o BOOTLOADER
    • Nome do 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 -enheter

      • Resposta esperada:

        (hexadecimal) fastboot

      • Antal siffror:

        sudo./flashall

      • Resposta esperada:

        färdiga. total tid 1.000s (sem erros)

        (sem erros)

    • Instalando o Sistema Operacional

      • https://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
      • Gör så här:
      • 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 bas som du inte kan säga är en "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. Upphandling av "linaro-NomeDaVersão-alip"

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

        exemplo: "/Nedladdningar" som ett lokalt program kan göras

      • Entre com os comandos:

        sudo fastboot -enheter

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

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

        färdiga. total tid: 100,00s

  • Ansluta mus, dator och bildskärm/TV med HDMI
  • Utnyttja:

    • Användning: linaro
    • Senha: linaro
  • Om du vill ha ett gränssnitt kan du ladda ner en lista över de installerade inställningarna:

    sudo apt-get uppdatering

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

    sudo apt-get uppgradering

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

Steg 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 att installera något som kan hjälpa dig med GPS, skicka 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 informações 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:

Steg 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

Existem algumas formas de fazer a DragonBoard 410c accessor to rede 3G/4G:

  • Instalando um Shield / BreakoutBoard com Modem GSM och slot för SimCard;
  • Utnyttja om Dongle USB 3G/4G;

För bästa möjliga optik för Dongle USB 3G/4G och Huawei modell E3272, kan du enkelt få tillgång till en annan enhet.

Para configurar o modem, você poderá utilizar or terminal (com a aplicação WVDial), porém o jeito mais fácil é utilizar a própria Interface Gráfica do Usuário (GUI) do Linaro. Faça da seguinte forma:

  • Com o Dongle USB conectado, clicar com botão direito no ícone de “redes” no canto inferior direito da tela.
  • “Redigera anslutningar”> “Lägg till”
  • Escolha a opção: “Mobilt bredband”
  • Klicka på "Skapa"

Siga a tela de instalação do system operacional, conforme imagens acima, konfigurando a operadora de telefonia conforme sim card comprado. Para criação deste projeto, utilizamos um Sim Card da Tim (e um modem inicialmente vendido pela Vivo).

Steg 4: Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi

Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi
Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi
Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi
Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi
Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi
Transformera en DragonBoard 410c Em Hotspot / Access Point WiFi

För att använda DragonBoard 410c som roteador wifi (kan du konfigurera en internetanslutning), kan du enkelt använda ett enkelt gränssnitt för system. Siga os passos abaixo:

  • Klicka inte på en bot för att du inte ska kunna”ändra” ingen canto inferior direito.
  • “Redigera anslutningar”> “Lägg till”
  • Escolha och opção “WiFi”
  • Klicka på "Skapa"

Fönstret kan inte användas för att visa "SSID" och att ändra "Mode" för "Hotspot".

Para garantir o funcionamento:

  • Va na aba “IPv4 -inställningar”
  • Veja se "Metod" kan också användas som "Delat med andra datorer"

Steg 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 och Amazon.

Kommer att installera Auto Auto SSH, användbar eller inte längre.

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. Om du vill ha en kopia av chave para o repositório de chaves confiáveis do Linux, garantindo ainda mais confiança para a conexão.

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

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

Steg 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. Hög duas för hårdvara: ELM327 eller STN1170.

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

Viktigt att få en maskinvara som är tillgänglig för en originalversion av 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 chipset originalversion 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 local varia bastante entre as montadoras e 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

parbar på agenten vid standardagentskanning påNeste momento é importante que você copie o MAC Address pois precisará para os próximos passos

Digite:

lita på MACADDRESS

par MACADDRESS

Neste momento deve aparecer uma solicitação for digitar or PIN de pareamento do Bluetooth OBD2.

O PIN geralmente é 1234 ou 0000

Du kan också hitta en konexo, digital este comando, en programstyrning för Bluetooth digitando:

sluta med

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

sudo rfcomm bind 0 MACADDRESS 1

Para validar o sucesso da operação digite:

ls /dev

En portfölj av "Rfcomm0" har en lista.

Steg 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 och Veículo

Baixe a aplicação “Screen” för enviar mensagens pela Porta Serial

sudo apt-get installera skärmen

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

Para saber mais sobre Comandos AT, acesse:

ATENÇÃO:

Tome muito cuidado nesta parte! Om du vill ha information om en dispositivo conectado ao carro, så kan vi tolka 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. Rekomendamos que siga som instruções abaixo detalhadamente.

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 a visualização.

    ATL1

  • Liga os cabeçalhos dos comandos.

    ATH1

  • Liga o espaçamento entre palavras.

    ATS1

  • Definiera o protokoll för de kommunicaçã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” och nödvändig öppning: Ctrl-A seguido de Ctrl-D

Steg 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 - Gerenciador de moddulos do Python

    sudo apt-get install python-pip

  • SetupTools - installatörsgäst

    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 installera gps

  • Begäranden - módulo de solicitações

    sudo pip installationsförfrågningar

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

sudo python

Det här är en markör som gör att terminalen kan användas för att ange “>>>” som visar att programmet har ett Python -program. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.

  • Kommer importera till biblioteca

    importera obd

  • Para fazer a conexão com a porta serial use o comando

    anslutning = 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 ()

Steg 9: Extraindo Informações Do Carro Usando Python

Extraindo Informações Do Carro Usando Python
Extraindo Informações Do Carro Usando Python

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

Importamos and biblioteca OBD para dentro do Python para iniciariar 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. Hämta en webbadress, användningsfrågesträng, för att kunna använda en tjänst för att använda POST.

Inga exemplo abaixo pegamos som seguintes informações:

  • Varvtal
  • Velocidade
  • Odômetro *

Som funções para captura dos dados utilizam dois parâmetros. Exemplo, usando [1] [12] estamos buscando [módulo] [PID]. Esta lista pode ser encontrada em:

Förresten, a humm a URL com todas as informações são concatenadas e adicionadas em um arquivo, chamado "obd_data.dat".

Information om OBD.py:

import obdimport timeodoInicial = -1 paramOdo = 0 #Conect OBDprint "Primeira conexao" con = obd. OBD ("/dev/rfcomm0") skriv ut "Segunda conexao" con = obd. OBD ("/dev/rfcomm0") medan 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]) skriv ut 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 () Skriv ut 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.

Cogido para o arquivo OBD.py:

importförfrågningar

importera tid medan True: försök: time.sleep (0.2) url = '' med öppen ('obd_data.dat', 'r') som fin: data = fin.read (). splitlines (True) url = data [0] request.post (url) med open ('obd_data.dat', 'w') som fout: fout.writelines (data [1:]) utom: print 'exception'

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

Steg 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

Tudo o que foi facto até agora era orientado a garantir que a DragonBoard fizesse comunicação com os different differenteses componentes da solução, como a comunicação 3G, WiFi, Bluetooth, Dados do 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'. Para fazer a edição, använd o comando:

sudo nano /etc/rc.local

Agora precisamos configurar a inicialização de todos os processos, serviços and 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.

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

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.

Steg 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

    É preciso ter muito cuidado na hora de transmitir os dados e comunicar com o carro. 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 på 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 minuter. 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 -antenn för GPS -internat, en para melhor recepção de sinal, en exakto installer o conector e adquirir uma antena externa. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:

Steg 12: Referenser

Referências
Referências

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/

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

gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6

Installera o SSH utan Linux

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

Rekommenderad: