Table des matières:

DragonBoard Com OBD : 12 étapes
DragonBoard Com OBD : 12 étapes

Vidéo: DragonBoard Com OBD : 12 étapes

Vidéo: DragonBoard Com OBD : 12 étapes
Vidéo: Skyrim: The Dragonborn Comes | EPIC VERSION (feat. @Colm_R_McGuinness​) 2024, Juillet
Anonim
DragonBoard Com OBD
DragonBoard Com OBD

Atraves da leitura do protocolo OBD2 do carro, é possível receber informações do veículo. Utilise un DragonBoard 410c pour un projet de trabalhar neste, e trazemos aqui o caminho detalhado para você reproduzir isso.

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.

Participez au projet:

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

Pour suivre ce projet en anglais, cliquez ici:

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

A estrutura deste projeto inclui os seguintes componentes, conform apresentados na imagem acima:

  • Qualcomm DragonBoard 410c
  • Interface OBD2 Bluetooth ELM327
  • Clé USB 3G/4G
  • Carregador Veicular de Inversão de Tensão (110v)

Étape 1: Configuration de Fazendo O 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

Utilisant un Qualcomm DragonBoard 410c, lancé ou projeté sur une installation de distribution Linaro do Linux, qui permet une configuration complète du dispositif.

Pour créer une image de Linaro pour un DragonBoard, utilisez Ubuntu, utilisez VirtualBox, pour utiliser FastBoot, qu'il s'agit d'une application basée sur Linux. Nécessaire estar em ambiente Linux pour podder instala-lo.

Para instalar o Fastboot, access o Terminal da sua Máquina Virtual Ubuntu, e digite:

sudo apt-get android-tools-fastboot

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

    • Instalando ou BOOTLOADER
    • Nom de l'arquivo: dragonboard410c_bootloader_emmc_linux-79.zip

      • https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
      • Retrait des arquivos de dentro do ZIP
      • Entrée de pâtes:

        cd /NomeDaPasta (caminho da pasta descompactada)

      • Fazer ou commando:

        périphériques de démarrage rapide sudo

      • Resposta esperada:

        démarrage rapide (hexadécimal)

      • Entôle numérique:

        sudo./flashall

      • Resposta esperada:

        fini. temps total 1.000s (sem erros)

        (sem erros)

    • Instalando ou Sistema Operacional

      • https://builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
      • Baixar dois arquivos:
      • 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. Une base do 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. Procure por “linaro-NomeDaVersão-alip”

      • Retirer les arquivos de dentro do. GZ
      • Entrar na pâtes "raiz" em relação aos arquivos compactados

        exemple: "/Téléchargements" que é o local onde os arquivos baixados estão

      • Entre com os commandos:

        périphériques de démarrage rapide sudo

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

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

        fini. temps total: 100,00s

  • Connecte um souris, Teclado e um moniteur/TV avec port HDMI
  • Utiliser:

    • Usuário: linaro
    • Senha: linaro
  • Abra a interface Lxterminal e faça o download da lista de atualizações disponíveis dos pacotes instalados:

    sudo apt-get mise à jour

  • Réalisez une instalação dos pacotes disponíveis usando o código:

    sudo apt-get mise à niveau

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

Étape 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

Comece com a instalação dos aplicativos que servirão de cliente para o GPS, sendo eles o GNSS-GPSD, o GPSD e o GPSD-CLIENTS. Faça isso usando o commando:

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

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

sudo systemctl démarrer qdsp-start.servicesudo systemctl démarrer gnss-gpsd.servicesudo systemctl démarrer 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 a recepção do sinal do GPS.

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

Étape 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 acessar a rede 3G/4G:

  • Instalando um Shield / BreakoutBoard com Modem GSM et slot pour SimCard;
  • Utiliser une clé USB 3G/4G;

Para este projeto optamos pelo Dongle USB 3G/4G da Huawei modelo E3272, pela facilidade of obter este dispositivo.

Para configurar o modem, você poderá utilizar o terminal (com a aplicação WVDial), porém o jeito mais facil é 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 inférieur direito da tela.
  • « Modifier les connexions » > « Ajouter »
  • Escolha a opção: "Mobile Broadband"
  • Cliquez sur "Créer"

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

Étape 4: Transformez un DragonBoard 410c Em Hotspot / Point d'accès WiFi

Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi
Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi
Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi
Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi
Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi
Transformando a DragonBoard 410c Em Hotspot / Point d'accès WiFi

Pour utiliser un DragonBoard 410c avec un roteador wifi (agora que você já configurou a connection com a internet), a maneira plus simple é utilizar a própria interface do sistema. Siga os passos abaixo:

  • Clique no botão direito no ícone de “redes” no canto lower direito.
  • « Modifier les connexions » > « Ajouter »
  • Escolha a opção "WiFi"
  • Cliquez sur "Créer"

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

Pour garantir le fonctionnement:

  • Vá na aba "Paramètres IPv4"
  • Veja se o "Méthode" está marcado como "Partagé avec d'autres ordinateurs"

Étape 5: Accédez à une DragonBoard 410c par SSH Sem Fio, Utilizando O Hotspot

Acessando a DragonBoard 410c Par SSH Sem Fio, Utilizando O Hotspot
Acessando a DragonBoard 410c Par 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 é ou método de conexão dos servidores Linux da Amazon.

Começamos instalando o Auto SSH, utilizando o código abaixo.

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 qu'un pessoa que a tenha, tenha autorização para acessar a instância do endpoint exclusivo no Linux, atraves do IP público do modem 3G, objectivo principal deste passo. Na sequência, o código faz a copia da 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 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

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

Étape 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

Une interface de communication avec les voitures et les accès à la porte OBD2. A informação que transita nesta porta precisa ser traduzida, e para isso precisamos de um interpretador que trate os dados. Há duas opções para este hardware: ELM327 ou STN1170.

Pour ce projet, utilizamos um dispositivo Bluetooth com chip baseado em ELM327.

Important destacar qu'un matériel disponible deste não necessariamente representa a versão ORIGINAL do ELM327. A maior parte disponível está na versão 1.5, que foi quando o chip original foi clonado e colocado a venda no mercado. O chipset original est à la versão 2.2. Une évolution deste versionamento traz ao chip mais informações sobre os carros mais novos. É important sabre disso, pois dependendo dos testes realizados, poderá ou não conseguir obter determinadas informações de veículos mais novos.

De possede seu dispositivo OBD2 Bluetooth, rencontre a porta OBD2 do seu carro. Ela pode estar localizada logo abaixo do volante, pas de console centrale ou perto da caixa de fusíveis. O local varia bastante entre as montadoras e modelos. Uma opção para localizar é usar esta ferramenta:

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

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

sudo bluetoothctl

appariable sur l'agent sur l'analyse de l'agent par défaut surNeste momento é important que você copie o MAC Address pois precisará para os próximos passos

Chiffre:

faites confiance à MACADDRESS

paire MACADRESSE

Neste momento deve aparecer uma sollicitação para digitar o PIN de paraamento do Bluetooth OBD2.

O PIN geralmente é 1234 ou 0000

Após a tela de successo de conexão, digitando este comando, você sai do programa controlador do Bluetooth digitando:

quitter

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

sudo rfcomm lier 0 MACADDRESS 1

Pour valider le succès de l'opération numérique:

ls /dev

Un porta "Rfcomm0" deve estar na lista.

Étape 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 et Veículo

Baixe a aplicação “Screen” para enviar mensagens pela Porta Serial

écran d'installation sudo apt-get

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

Para sabre mais sobre Comandos AT, accès:

ATENÇÃO:

Tome muito cuidado nesta parte! Toutes les informations sont envoyées pour le dispositif 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. Recomendamos que siga as instruções abaixo detalhadamente.

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

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

    écran /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. Comme 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 commandos.

    ATH1

  • Liga o espaçamento entre palavras.

    ATS1

  • Définir o protocolo de comunicação do carro para "Automático".

    ATSP0

Test de communication Finale:

  • Numérisez pas de 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 "Screen" et apertar nécessaire: Ctrl-A seguido de Ctrl-D

Étape 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 est une biblioteca de Python spécifique à la communication avec le 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 modules do Python

    sudo apt-get installer python-pip

  • SetupTools – gestor de arquivos de instalação

    sudo pip install -U pip setuptools

  • Wheel – formatador de arquivos para instalação

    sudo apt-get install python-wheel

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

    sudo apt-get python-obd

  • GPS – biblioteca com dados do gps

    sudo pip installer gps

  • Demandes – módulo de sollicitações

    demandes d'installation sudo pip

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

python sudo

Neste momento o cursor do terminal vai mudar para este ícone ">>>" indicando que o programa está rodando Python. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.

  • Comece importando a biblioteca

    importation obd

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

    connexion = 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.nom_protocole()

Étape 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 a biblioteca OBD para dentro do Python para iniciar as conexões.

Por motivos desconhecidos, a primeira conexão com nosso hardware, falha sempre. Na segunda tentativa, funciona sempre. 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 parametros estabelecidos. Depois cria une URL, utilizando Query String, para que possa enviar ao servidor utilizando o método POST.

Aucun exemplo abaixo pegamos comme seguintes informações:

  • RPM
  • Vélocidade
  • Odômetro *

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

Pour finir, un humm une URL com todas as informações são concatenadas e adicionadas em um arquivo, chamado " obd_data.dat ".

Code pour 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") alors que 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]) print respOdo paramRPM = int(float(str(respRPM).replace(" revolutions_per_minute", ""))) paramVelo = int(float(str(respVelo).replace(" kph", ""))) paramOdo = int(float(str(respOdo).replace(" kilomètre", ""))) 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() imprimer l'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 tandis que para enviar através de POST une 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.

Code pour l'arquivo OBD.py:

demandes d'importation

import time while True: essayez: time.sleep(0.2) url = '' with open('obd_data.dat', 'r') as fin: data = fin.read().splitlines(True) url = data[0] request.post(url) avec open('obd_data.dat', 'w') comme fout: fout.writelines(data[1:]) sauf: print 'exception'

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

Étape 10: Répétition des scripts et armement des données Capturados Do Carro

Répétition De Scripts E Armazenamento De Dados Capturados Do Carro
Répétition De Scripts E Armazenamento De Dados Capturados Do Carro

Tudo o que foi feito até agora era orientado a garantir que a DragonBoard fizesse comunicação com os diferentes 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 pre-definidos, e fica no diretório '/etc'. Para fazer a edição, utilisez o comando:

sudo nano /etc/rc.local

Agora precisamos configurar a inicialização de todos os processos, serviços e funções, criando rotinas para que funcionem automaticamente ao iniciar a Dragonboard. Vamos utilizar o BASH par fazer isso. O BASH (Bourne-Again-SHell) est une application pour l'interprétation des commandes 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é aexit ressua de que iste que.

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

then 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 & sortie 0

A partir de l'agora, semper que a placa for iniciada, ela já vai se conectar atraves do 3G e enviar os dados de GPS e OBD para o servidor escolhido.

Étape 11: Dificuldades Encontradas

Difficultés rencontrées
Difficultés rencontrées

Listamos abaixo algumas barreira que encontramos ao longo do desenvolvimento do projeto, que resolvemos antes de criar este Instructable, mas que é important 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 na ECU. Neste momento o câmbio automático não aceitava mais mudanças, ficou travado. Além disso, comme les luzes font 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 minutos. Desta forma, forçamos o reset completo 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 avec DragonBoard

    Un Qualcomm Dragonboard 410c não tem antenas GPS internas, e para melhor recepção de sinal, é preciso instalar o conector e adquirir uma antena externa. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:

Étape 12: Références

Références
Références

Chargeur de démarrage

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

Linaro

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

Como instalar o Linaro na DragonBoard 410c

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

Documentation de GPS pour DragonBoard

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

Démo GPS

gist.github.com/wolfg1969/4653340

OBD Python

github.com/brendan-w/python-OBD

Connexion RaspberryPi à un OBD Bluetooth

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

Instruçes para criação do tunnel SSH

gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6

Instalando ou SSH pas de Linux

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

Conseillé: