Spisu treści:

DragonBoard Com OBD: 12 kroków
DragonBoard Com OBD: 12 kroków

Wideo: DragonBoard Com OBD: 12 kroków

Wideo: DragonBoard Com OBD: 12 kroków
Wideo: Skyrim: The Dragonborn Comes | EPIC VERSION (feat. @Colm_R_McGuinness​) 2024, Lipiec
Anonim
DragonBoard Com OBD
DragonBoard Com OBD

Através da leitura do protocolo OBD2 do carro, é possível receber informações do veículo. Użyj 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 ascesso asos melhores hardwares, ale też contato com os melhores profissionais para desenbuir com

Participaram deste projeto:

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

Aby śledzić ten projekt w języku angielskim, kliknij tutaj:

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

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

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

Krok 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

Użyj Qualcomm DragonBoard 410c, początków lub projektu z instalacją dystrybucji Linaro do Linux, nie możesz pozwolić na pełną konfigurację urządzenia.

Aby uzyskać obraz do Linaro dla DragonBoard, używać Ubuntu, VirtualBox, używać FastBoot, jest to aplikacja oparta na Linuksie. enecessário estar em ambiente Linux do poderowania instalacji.

Para installar o Fastboot, acesse 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 o BOOTLOADER
    • Nome do arquivo: dragonboard410c_bootloader_emmc_linux-79.zip

      • https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
      • Wycofaj się os arquivos de dentro do ZIP
      • Makaron wstępny:

        cd /NomeDaPasta (caminho da pasta descompactada)

      • Fazer o komando:

        urządzenia sudo fastboot

      • Reposta esperada:

        (szesnastkowy) fastboot

      • Cyfra Então:

        sudo./flashall

      • Reposta esperada:

        skończone. całkowity czas 1.000s (sem erros)

        (sem błędy)

    • Instalando o 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. Baza do nome que você deve buscar é „boot-linaro-NomeDaVersão”. Nesta versão o nome é „Stretch” i przednie 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
      • Entrar na makaron „raiz” em relação aos arquivos compactados

        przykład: „/Downloads” que é o local onde os arquivos baixados estão

      • Wejdź z komandosami:

        urządzenia sudo fastboot

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

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

        skończone. całkowity czas: 100,00s

  • Conecte um Mouse, Teclado e um monitor/telewizor z portem HDMI
  • Spożytkować:

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

    aktualizacja sudo apt-get

  • Zrealizuj a instalação dos pacotes disponíveis usando o código:

    sudo apt-get upgrade

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

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

Fazendo O GPS Da DragonBoard 410c Lokalizator Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Lokalizator Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Lokalizator Seu Dispositivo
Fazendo O GPS Da DragonBoard 410c Lokalizator 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-KLIENCI. Faça isso usando o comando:

sudo apt-get install gnss-gpsd gpsd gpsd-klienci

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. Zmieniaj lokalizację na DragonBoard, ilość predios i ich redor, alem de outras barreiras naturais que possam attrapalhar 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:

Krok 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 i rede 3G/4G:

  • Instalacja Shield / BreakoutBoard z modemem GSM i gniazdem na kartę SIM;
  • Użyj klucza USB 3G/4G;

Aby wykonać optymalny projekt klucza USB 3G/4G z modelu Huawei E3272, można łatwo uzyskać dostęp do urządzenia.

Para configurar o modem, você poderá utilizar o terminal (com a aplicação WVDial), porém o jeito mais fácil é utilizar a própria Interfejs 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” nie canto inferior direito da tela.
  • „Edytuj połączenia” > „Dodaj”
  • Escolha a opção: „Mobile Broadband”
  • Kliknij „Utwórz”

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

Krok 4: Przekształć DragonBoard 410c Em Hotspot / Access Point WiFi

Transformando DragonBoard 410c Em Hotspot / Access Point WiFi
Transformando DragonBoard 410c Em Hotspot / Access Point WiFi
Transformando DragonBoard 410c Em Hotspot / Access Point WiFi
Transformando DragonBoard 410c Em Hotspot / Access Point WiFi
Transformando DragonBoard 410c Em Hotspot / Access Point WiFi
Transformando DragonBoard 410c Em Hotspot / Access Point WiFi

Aby korzystać z DragonBoard 410c como um roteador wifi (agora que você já configurou a conectividade com a internet), maneira mais simples é utilizar a própria interface do sistema. Siga os passos abaixo:

  • Clique no botão direito no ícone de „redes” no canto inferior direito.
  • „Edytuj połączenia” > „Dodaj”
  • Escolha a opção „WiFi”
  • Kliknij „Utwórz”

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

Para garantir o funcionamento:

  • Vá na aba „Ustawienia IPv4”
  • Veja se o „Method” está marcado como „Udostępnione innym komputerom”

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

Acessando DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
Acessando 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, lub ao wifi em que ela esteja conectada. Jest to metoda łączenia serwerów Linux z 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 służyć para que a pessoa que a tenha, tenha autorização para cessar a instância do endpoint exclusivo bez Linuxa, através do IP público do modemu 3G, główny główny cel. Na sequencia, o código faza kopia da chave lub repozytoria chaves confáveis do Linux, garantindo ainda mais confiança para 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 użytkownik@zdalny_serwer

Proszę teraz, przekształć DragonBoard 410c w chmurę serwera! \o/

Krok 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 1/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 1/2

A interface de comunicação com os carros é feita através da porta 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 lub STN1170.

Dla projektu, użyj urządzenia Bluetooth z chipem opartym na ELM327.

Importante destacar que disponibilidade deste hardware não necessariamente reprezentuje versão ORYGINAŁ zrobić 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 oryginalny chipset está na versão 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, brak centralnej konsoli lub perto da caixa de fusíveis. O lokalna varia bastante entre as montadoras e modelos. Uma opção para localizar é usar esta ferramenta:

Acesse 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 for inserido no conector do carro, siga os passos abaixo para ter controle da conectividade bluetooth:

sudo bluetoothctl

można sparować na agencie na domyślnym skanowaniu agenta naNeste momento é Importante que você copie o Adres MAC pois precisará para os próximos passos

Cyfra:

zaufaj MACADDRESS

sparuj MACADDRESS

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

O PIN geralmente é 1234 lub 0000

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

zrezygnować

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

Porta „Rfcomm0” deve estar na liście.

Krok 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 2/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 2/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro przez Bluetooth – Passo 2/2

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

ELM327, DragonBoard 410c i Veículo

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

ekran instalacyjny sudo apt-get

Porta Serial será usada envio i recebimento de Comandos AT entre DragonBoard 410c e lub ELM327.

Para saber mais sobre Comandos AT, acesse:

ATENÇÃO:

Tome muito cuidado nesta parte! Todas as informações 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. Recomendamos que siga jako instruções abaixo detalhadamente.

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

  • Esta função fara abrir lub terminal de comunicação seryjny.

    ekran /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. Jak 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

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

    ATSP0

Teste de comunicação ostateczna:

  • Cyfra bez konsoli:

    ATI

  • Ele deve retornar „ELM327 v1.5” lub 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” é necessário apertar: Ctrl-A seguido de Ctrl-D

Krok 8: Ligando 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 lub 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 zainstaluj python-pip

  • SetupTools – gestor de arquivos de instalação

    sudo pip install -U pip setuptools

  • Koło – formatador de arquivos para instalação

    sudo apt-get zainstaluj python-wheel

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

    sudo apt-get python-obd

  • GPS – biblioteca com dados do gps

    sudo pip zainstaluj gps

  • Prośby – módulo de solicitações

    prośby o instalację sudo pip

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

sudo pyton

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

  • Przyjdź do biblioteczki

    importuj obd

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

    połączenie = 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:

    połączenie.nazwa_protokołu()

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

Importuj biblioteczkę OBD dla zębów do Pythona dla początkujących jako 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 URL, użyj Query String, aby móc korzystać z serwera lub metody POST.

Brak exemplo abaixo pegamos jako seguintes informações:

  • RPM
  • Velocidade
  • Odômetro *

Jako funções para captura dos dados utilizam dois parametros. Por exemplo, usando [1][12] estamos buscando [módulo] [PID]. Esta lista znajduje się na stronie:

Por último, nucić URL com todas jako informações são concatenadas e adicionadas em um arquivo, chamado " obd_data.dat ".

Kody dla OBD.py:

import obdimport timeodoInicial = -1 paramOdo = 0 #Połącz OBDprint "Primeira conexao" con = obd. OBD("/dev/rfcomm0") print "Segunda conexao" con = obd. OBD("/dev/rfcomm0"), podczas gdy True: respRPM = con.query(obd.polecenia[1][12]) drukuj respRPM respVelo = con.query(obd.polecenia[1][13]) drukuj respVelo respOdo = con.query(obd.polecenia[1][49]) print respOdo paramRPM = int(float(str(respRPM).replace(" obroty_na_minutę", ""))) paramVelo = int(float(str(respVelo).replace("kph", ""))) paramOdo = int(float(str(respOdo).replace("kilometr", ""))) 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() wydrukuj adres 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 adres URL, aby uzyskać dostęp do wcześniejszej populacji 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:

żądania importu

importuj czas, gdy True: try: time.sleep(0.2) url = '' with open('obd_data.dat', 'r') as fin: data = fin.read().splitlines(True) url = data[0] requests.post(url) with open('obd_data.dat', 'w') as fout: fout.writelines(data[1:]) z wyjątkiem: print 'exception'

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

Krok 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 feito até agora era orientado garantir que a DragonBoard fizesse komunikacja z różnymi komponentami rozwiązania, como a komunikacja 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, użyj 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 lub 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 '.

Jeśli [! -f /etc/ssh/ssh_host_rsa_key]

następnie 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 i sudo python /home/linaro /Documents/FadaDoCarro/OBD.py i sudo python /home/linaro/Documents/FadaDoCarro/envia_OBD.py i wyjdź 0

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

Krok 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 na ECU. Neste momento o câmbio automático não aceitava mais mudanças, ficou travado. Alem disso, jak luzes zrobić 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 na DragonBoard

    Qualcomm Dragonboard 410c bez wewnętrznych anten GPS, e para melhor recepção de sinal, é precyzyjnie instalowany o conector i adquirir uma antena externa. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:

Krok 12: Referencias

Referencje
Referencje

Program rozruchowy

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

Linaro

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

Instalacja Como na Linaro na DragonBoard 410c

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

Dokumentacja GPS dla DragonBoard

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

Demo GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Podłącz RaspberryPi do 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

Instalacja lub SSH bez Linuksa

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

Zalecana: