Sommario:

DragonBoard Com OBD: 12 passaggi
DragonBoard Com OBD: 12 passaggi

Video: DragonBoard Com OBD: 12 passaggi

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

Através da leitura do protocolo OBD2 do carro, é possibile receber informações do veículo. Utilizando a DragonBoard 410c começamos a trabalhar neste projeto, e trazemos aqui o caminho detalhado para você reproduzir isso.

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

Partecipa al progetto:

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

Per seguire questo progetto in inglese, clicca qui:

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

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

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

Passaggio 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

Utilizzando Qualcomm DragonBoard 410c, inizia il progetto con l'installazione della distribuzione Linaro su Linux, non consente la configurazione completa del dispositivo.

Per creare un'immagine di Linaro per DragonBoard, utilizzare Ubuntu, VirtualBox, per FastBoot, che è un'applicazione basata su Linux. È necessario estar em ambiente Linux per poder instala-lo.

Per installare o Fastboot, accedere o Terminal da sua Máquina Virtual Ubuntu, e digitare:

sudo apt-get android-tools-fastboot

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

    • Installazione o BOOTLOADER
    • Nome dell'archivio: dragonboard410c_bootloader_emmc_linux-79.zip

      • https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
      • Ritirare gli archivi all'interno dello ZIP
      • Entra nella pasta:

        cd /NomeDaPasta (caminho da pasta descompactada)

      • Fazer o comando:

        sudo dispositivi fastboot

      • Risposta esperada:

        (esadecimale) fastboot

      • Digita:

        sudo./flashall

      • Risposta esperada:

        finito. tempo totale 1.000s (sem errori)

        (sempre errori)

    • Instalando o Sistema Operativo

      • 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. A 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”

      • Retirar os arquivos de dentro do. GZ
      • Entra nella pasta "raiz" em relação aos aos arquivos compactados

        esempio: “/Downloads” que é o local onde os arquivos baixados estão

      • Entre com os comandi:

        sudo dispositivi fastboot

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

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

        finito. tempo totale: 100.00s

  • Connetti un mouse, Teclado e un monitor/TV su porta HDMI
  • Utilizzare:

    • Usuario: linaro
    • Senha: linaro
  • Abra un'interfaccia Lxterminal e faça o scarica la lista degli aggiornamenti disponibili per i pacchetti installati:

    sudo apt-get update

  • Realizza un'installazione dos pacotes disponíveis usando o codice:

    sudo apt-get upgrade

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

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

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

Come installare le applicazioni per il servizio del cliente per GPS, inviare elementi o GNSS-GPSD, o GPSD e o GPSD-CLIENTS. Faça isso usando o comando:

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 start qdsp-start.servicesudo systemctl start gnss-gpsd.servicesudo systemctl start qmi-gps-proxy.service

Leve sua DragonBoard 410c per 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 minuti. Isso varia muito da localizzare 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:

Passaggio 3: installazione di un dongle USB 3G/4G

Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G
Installazione O Dongle USB 3G/4G

Esistono algumas formas de fazer a DragonBoard 410c acessar a rede 3G/4G:

  • Installazione di Shield / BreakoutBoard con Modem GSM e slot per SimCard;
  • Utilizzo del dongle USB 3G/4G;

Per questo progetto è possibile utilizzare il Dongle USB 3G/4G da Huawei modello E3272, facilmente installabile su questo dispositivo.

Per configurare il modem, utilizzare il terminale per utilizzare il terminale (con un'applicazione WVDial), utilizzare più facilmente il proprio dispositivo per l'interfaccia grafica dell'utente (GUI) di Linaro. Faça da seguito forma:

  • Com o Dongle USB conectado, clicar com botão diretto no ícone de “redes” no canto lower diretto da tela.
  • “Modifica connessioni” > “Aggiungi”
  • Escolha a opção: "Banda larga mobile"
  • Clicca su "Crea"

Siga la tela di installazione del sistema operativo, si adatta alle immagini, configurando un'operatrice di telefonia sim card comprado. Per creare un progetto, utilizzare la Sim Card da Tim (e un modem inizialmente venduto a Pela Vivo).

Passaggio 4: trasformare un hotspot / punto di accesso WiFi DragonBoard 410c Em

Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em
Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em
Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em
Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em
Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em
Trasformando un hotspot / punto di accesso WiFi DragonBoard 410c Em

Per utilizzare un DragonBoard 410c come un router wifi (agora que você já configurou a conectividade com a Internet), una manera più semplice è utilizzare una propria interfaccia del sistema. Siga o passi abaixo:

  • Clique no botão direito no ícone de “redes” no canto lower direito.
  • “Modifica connessioni” > “Aggiungi”
  • Scegli l'opzione "WiFi"
  • Clicca su "Crea"

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

Per garantire il funzionamento:

  • Vá na aba “Impostazioni IPv4”
  • Veja se o “Metodo” está marcado como “Condiviso con altri computer”

Passaggio 5: accedere a DragonBoard 410c per SSH Sem Fio, utilizzando l'hotspot

Accedendo a DragonBoard 410c per SSH Sem Fio, utilizzando l'hotspot
Accedendo a DragonBoard 410c per SSH Sem Fio, utilizzando l'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. Questo è il metodo di connessione dei server 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. Questo può essere utilizzato per l'accesso a un computer, un'autorizzazione per l'accesso a un'istanza dell'endpoint esclusivo su Linux, oltre all'IP pubblico del modem 3G, l'obiettivo principale è il 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:hostlocale:22 utente@server_remoto

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

Passaggio 6: Legando 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

Un'interfaccia di comunicazione che consente di accedere alla porta OBD2. A informação que transita nesta porta precisa ser traduzida, e para isso precisamos de um interpretador que trate os dados. Ha due opzioni per questo hardware: ELM327 o STN1170.

Per questo progetto, puoi utilizzare il tuo dispositivo Bluetooth con chip basato su ELM327.

Importante destacar que a disponibilidade deste hardware não necessariamente rappresenta una 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. La versione originale del chipset è la versione 2.2. A evolução deste versionamento traz ao chip più 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.

Se possiedi un dispositivo OBD2 Bluetooth, puoi incontrare una porta OBD2 con qualsiasi dispositivo. Ela pode estar localizzata logo abaixo do volante, nessuna console centrale o perto da caixa de fusíveis. O local varia bastante entre as montadoras e modelos. Opzione per la localizzazione e l'uso di questa ferramenta:

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

Assieme al dispositivo OBD2 Bluetooth per l'inserimento di nessun connettore sul carro, si prega di collegare il dispositivo per controllare la connessione bluetooth:

sudo bluetoothctl

abbinabile su agente su scansione agente predefinita attivaNeste momento é importante que você copie o MAC Address pois precisará para os próximos passis

Digita:

fidati di MACADDRESS

coppia MACADDRESS

Se necessario, è necessario richiedere la richiesta per la digitazione del PIN di configurazione del Bluetooth OBD2.

O PIN generalmente é 1234 o 0000

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

uscire

Agora é preciso fazer um "BIND" do dispositivo con una porta seriale:

sudo rfcomm bind 0 MACADDRESS 1

Para validar o sucesso da operação digite:

ls /dev

A porta "Rfcomm0" deve estar na lista.

Step 7: Legando 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

L'obiettivo è garantire il funzionamento della comunicazione tra i dispositivi:

ELM327, DragonBoard 410c e Veículo

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

sudo apt-get install screen

A Porta Serial será usato per envio e recebimento de Comandi AT entre a DragonBoard 410c e o ELM327.

Per ulteriori informazioni sui comandi AT, accesso:

ATTENÃO:

Tome muito cuidado nesta parte! Tutte le informazioni disponibili per il collegamento del dispositivo su un carro, poderão ser interpretadas and enviadas ao carro de maneira errada e occasionalmente o mal-funzionamento del tuo carro! Estude bastante os comandi prima del tentativo di innovare i comandi. Recomendamos que siga as instruções abaixo detalhadamente.

Siga una sequenza di comandi abaixo para dar início à comunicação:

  • È possibile aprire il terminale di comunicazione seriale.

    schermo /dev/rfcomm0

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

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

    ATZ

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

    ATL1

  • Liga os cabeçalhos dos comandi.

    ATH1

  • Liga o espaçamento entre palavras.

    ATS1

  • Define o protocolo de comunicação do carro para “Automático”.

    ATSP0

Test di comunicazione finale:

  • Digita nessuna console:

    ATI

  • È necessario restituire "ELM327 v1.5" o una versione di ELM sul proprio dispositivo.
  • Isso prova que o ELM327 está comunicando com a placa sem problemas, e podemos prosseguir.

dica

Para sair da aplicação “Screen” é necessário apertar: Ctrl-A seguito da Ctrl-D

Passaggio 8: legare un 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 specifica per 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 módulos do Python

    sudo apt-get install python-pip

  • SetupTools – Gestore degli archivi di installazione

    sudo pip install -U pip setuptools

  • Ruota – formatore di 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 install gps

  • Richieste – modulo di sollecitazione

    sudo pip install richieste

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

sudo pitone

Neste momento o cursor do terminal vai mudar para este ícone “>>>” indicando que o programa está rodando Python. Podemos come un comando digitale per serem interpretati secondo abaixo.

  • Comece importando una biblioteca

    importare obd

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

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

Step 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.

Per motivi 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 parâmetros estabelecidos. Depois cria a URL, utilizando Query String, para que possa enviar ao servidor utilizando o método POST.

Nessun esempio abaixo pegamos come seguintes informações:

  • RPM
  • Velocidade
  • Odometro *

As funções para captura dos dados utilizam dois parâmetros. Per esempio, usando [1][12] estamos buscando [módulo] [PID]. Questa lista può essere incontrata:

Per ultimo, un humm un URL com tutto come informazioni concatenate e aggiunte em um arquivo, chamado " obd_data.dat ".

Codice per 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")while 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(" 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() stampa url

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

Esta parte do codice fica più semplici. 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.

Codice per archivio OBD.py:

richieste di importazione

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

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

Step 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

Per questo motivo, è possibile che l'era dell'ora sia orientata a garantire che un DragonBoard possa comunicare con diversi componenti della soluzione, come una comunicazione 3G, WiFi, Bluetooth, GPS e altri.

Vamos usar o código abaixo para editar o arquivo 'rc.local', que já tem algumas funções e comandis pré-definidos, e fica no directório '/etc'. Para fazer a edição, use o comando:

sudo nano /etc/rc.local

Agora precisamos configurar a inicialização de todos os processs, serviços e funções, criando rotinas para que funcionem automaticamente ao iniciar a Dragonboard. Vamos utilizar o BASH per fazer isso. O BASH (Bourne-Again-SHell) è un applicativo per l'interpretazione dei comandi di Unix.

No próximo code, que tem comandis BASH, você precisará inserir o MacAddress do seu device OBD/Bluetooth, e também precisate ter bastante cuidado per garantir que o código seja colocado semper antes do command "exit 0" que é a resposta de sucesso do sistema.

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

poi 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 de agora, semper que a placa for iniciada, ela já vai se conectar attravés do 3G e enviar os dados de GPS e OBD para o servidor escolhido.

Fase 11: Dificuldades Encontradas

Dificuldades Encontradas
Dificuldades Encontradas

Listato 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 trasmettitore os dados e comunicar com o carro. Nas primeira tentativas, quando una comunicazione non è disponibile con un dispositivo, è possibile utilizzare alguns comandi per il carro, e causare algum problema na ECU. Neste momento o câmbio automático não aceitava mais mudanças, ficou travado. Além disso, come luzes do 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 minuti. Desta forma, forçamos o reset completo das ECUs do carro, retornando ele ao esttá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 reniciava. Este problema per risolvere 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 su DragonBoard

    A Qualcomm Dragonboard 410c non sono presenti antenne GPS interne, e per una migliore ricezione del segnale, è preciso instalar o conector e adquirir uma antena externa. Per fazer este procedimento, siga os passis propostos pela própria Qualcomm:

Fase 12: Referências

Referências
Referências

Boot loader

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

Linaro

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

Come installare o Linaro na DragonBoard 410c

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

Documentazione GPS per DragonBoard

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

Dimostrazione GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Collegamento 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

Installando o SSH senza Linux

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

Consigliato: