Índice:

DragonBoard e OBD2: 12 etapas
DragonBoard e OBD2: 12 etapas

Vídeo: DragonBoard e OBD2: 12 etapas

Vídeo: DragonBoard e OBD2: 12 etapas
Vídeo: Im BADEMANTEL durch BADEN (AG) | VLOG² #60 Schweiz, Baden Aargau 2024, Novembro
Anonim
DragonBoard e OBD2
DragonBoard e OBD2

Lendo os dados que saem da porta OBD2 em seu carro, é possível coletar informações incríveis a partir deles. Usando o DragonBoard 410c, trabalhamos neste projeto e detalhamos aqui para que você possa fazer isso sozinho.

Este projeto só foi possível graças à parceria com a #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora que nos permitiu ter acesso ao melhor hardware do mercado, bem como o contacto com os melhores profissionais para apoiar o desenvolvimento.

A equipe era composta por estes caras:

Estamos muito interessados em ajudá-lo a atingir seu objetivo e garantir que você conclua seu projeto, portanto, informe-nos se precisar de ajuda além das instruções abaixo.

Para seguir este projeto em Português, clique aqui:

www.instructables.com/id/DragonBoard-Com-OBD

Para este projeto, usamos os seguintes itens:

  • Qualcomm DragonBoard 410c
  • Interface ELM327 Bluetooth OBD2
  • Dongle USB 3G / 4G
  • Carregador de carro com inversor de tensão (110v)

Etapa 1: Executar a configuração inicial do DragonBoard 410c **

Executando a configuração inicial do DragonBoard 410c **
Executando a configuração inicial do DragonBoard 410c **
Executando a configuração inicial do DragonBoard 410c **
Executando a configuração inicial do DragonBoard 410c **
Executando a configuração inicial do DragonBoard 410c **
Executando a configuração inicial do DragonBoard 410c **

Usando o Qualcomm DragonBoard 410c, iniciamos o projeto instalando a distribuição do Linux chamada Linaro, que nos permite configurar todos os dispositivos necessários.

Para criar uma imagem do Linaro para o DragonBoard, use o Ubunto no VirtualBox, para que você possa usar o FastBoot (que é um aplicativo baseado em Linux). Então, basicamente o que você precisa fazer é abrir o Terminal no VM Ubuntu e inserir:

sudo apt-get android-tools-fastboot

Para instalar o Linaro, temos que passar por 2 etapas importantes:

1) Instalando o BOOTLOADER

Nome do arquivo: dragonboard410c_bootloader_emmc_linux-79.zip

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

Descompacte os arquivos e selecione a pasta:

cd / FolderName (caminho para a pasta descompactada)

Insira o seguinte código:

dispositivos sudo fastboot

Retorno esperado:

(hexadecimal) fastboot

Em seguida, digite:

sudo./flashall

Retorno esperado:

finalizado. tempo total 1.000s (sem erros)

Instalando o SISTEMA OPERACIONAL

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

Baixe estes 2 arquivos:

boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

Esta é a última versão disponível até o momento (junho / 17), portanto, o nome pode mudar no futuro. O padrão que você procuraria é "boot-linaro-VersionName". Este é chamado de "Stretch" e o anterior era "Jessie".

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

Esta é a última versão até hoje (junho / 17) e o nome pode mudar no futuro. Procure o padrão "linaro-VersionName-alip".

Descompacte os arquivos do. GZ

Acesse a pasta "root", em relação aos arquivos descompactados

exemplo: "/ Downloads" que é o local onde os arquivos baixados são armazenados.

Agora comece com os seguintes comandos:

dispositivos sudo fastboot

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

Retorno esperado (lembrando o tempo pode variar):

finalizado. tempo total: 100,00s

Conecte um mouse, teclado e um monitor / TV usando a porta HDMI

Tenha isto em mãos:

usuário: linaro

senha: linaro

Abra o aplicativo Lxterminal e proceda com o download da lista de atualizações disponíveis, referente aos pacotes instalados:

sudo apt-get update

Certifique-se de instalar os pacotes disponíveis da lista:

sudo apt-get upgrade

Dica: O Linaro foi escolhido devido a um boot extremamente rápido, e uma comunidade muito engajada e voltada para a resolução de problemas, o que economiza muito tempo.

Etapa 2: localizando seu DragonBoard 410c usando sua antena GPS

Localizando Seu DragonBoard 410c Usando Sua Antena GPS
Localizando Seu DragonBoard 410c Usando Sua Antena GPS
Localizando Seu DragonBoard 410c Usando Sua Antena GPS
Localizando Seu DragonBoard 410c Usando Sua Antena GPS

Comece instalando os aplicativos necessários que serão os clientes do módulo GPS. Os nomes dos aplicativos são: GNSS-GPSD, GPSD e GPSD-CLIENTS. Para isso, siga os comandos:

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

Com esses aplicativos instalados, você precisará de mais comandos para iniciá-lo corretamente:

sudo systemctl start qdsp-start.service

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

Agora leve o DragonBoard 410c para uma área aberta, com visão clara do céu, permitindo que ele receba o sinal dos satélites. Agora digite no terminal:

gpsmon –n

De nossos testes, os dados começariam a aparecer na tela após 10 minutos, em média. Isso muda muito de um lugar para outro, além da posição do DragonBoard na janela, ou em ambientes fechados, além de muitas outras barreiras que podem interferir na recepção do sinal GPS.

Etapa 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 maneiras de conectar o DragonBoard 410c à rede 3G / 4G / GSM:

  • Usando um Shield / BreakoutBoard com um modem GSM que também possui um slot para SimCard;
  • Use um dongle USB 3G / 4G.

Para este projeto, decidimos usar o Dongle USB E3272 da Huawei, porque era fácil e rápido comprar um.

Para configurar o modem, você pode usar o terminal (usando o aplicativo WVDial), mas a maneira mais fácil de fazer isso é usando a Interface Gráfica de Usuário (GUI) da Linaro. Para isso da seguinte forma:

  • Com o Dongle USB conectado ao DragonBoard, clique com o botão direito no ícone "redes" no canto inferior direito da tela;
  • “Editar conexões”> “Adicionar”;
  • Escolha “Banda larga móvel” no menu suspenso;
  • Clique em "Criar".

Siga as instruções do assistente, certificando-se de selecionar a operadora adequada no menu, permitindo que o dispositivo se conecte de acordo.

Etapa 4: Transformar o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi

Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
Transformando o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi

A maneira mais fácil de configurar o DragonBoard 410c como um roteador wi-fi ou ponto de acesso (agora que você configurou a conexão com a Internet) é usar a GUI do sistema. Para fazer isso, siga as etapas abaixo:

  • Clique com o botão direito no ícone de rede no canto inferior direito
  • Escolha “Editar conexões e, em seguida,“Adicionar”
  • Escolha “WiFi”
  • Clique em criar

Altere o nome da rede que deseja criar no campo “SSID” e altere o campo “Modo” para “Hotspot”.

Para ter certeza de que funcionará, verifique o seguinte:

  • Vá para a guia “Configurações de IPv4”
  • Verifique se o “Método”

Etapa 5: Acessando o DragonBoard 410c sem fio usando SSH, via conectividade de ponto de acesso

Acessando o DragonBoard 410c sem fio usando SSH, via Hotspot Connectivity
Acessando o DragonBoard 410c sem fio usando SSH, via Hotspot Connectivity

Conseguimos criar uma forma de acessar o DragonBoard remotamente, não importando se você está próximo ou não. Normalmente você precisa se conectar à própria placa, usando wi-fi ou bluetooth. Outra forma seria acessá-lo conectando-se à mesma rede Wifi (por exemplo: de um roteador). Ao realizar as próximas etapas, estamos criando um dispositivo autônomo, que gera sua própria rede e se abre para a web para ser acessado.

Você pode começar instalando o "Auto SSH", usando 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 criptográfica, usando o padrão RSA. Esta chave será usada para acessar com segurança uma instância de endpoint Linux, por meio do IP Público do Modem 3G. O principal objetivo desta etapa. O código a seguir copiará essa chave para o repositório de chaves confiáveis do Linux, garantindo ainda mais segurança para a conexão.

ssh-keygen -t rsa

scp ~ /.ssh / id_rsa.pub usuário @ 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 usuário @ remote_server

Seguindo essas etapas, você acaba de transformar o Qualcomm DragonBoard 410c em um servidor em nuvem! / o /

Etapa 6: Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2

Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2

A interface de comunicação do carro é feita através de uma porta OBD2. As informações que são trocadas nesta porta precisam ser traduzidas, e para isso precisamos de um dispositivo intérprete. Existem duas alternativas de hardware: ELM327 ou STN1170.

Para este projeto, usamos um dispositivo Bluetooth com um chipset baseado em ELM327.

É importante notar que a disponibilidade do ELM327 não significa que seja a VERSÃO ORIGINAL do ELM327. A maior parte dos chipsets disponíveis são baseados na versão 1.5, que era quando as informações do chip foram clonadas e vazadas para o mercado. O ELM327 original está agora na versão 2.2. A evolução desse chipset traz mais dados sobre carros mais novos. É importante saber disso, porque dependendo dos testes, você pode ou não conseguir acessar dados de veículos mais novos.

Com o adaptador OBD2 Bluetooth, encontre a porta OBD2 do seu carro. Ele pode estar localizado em algum lugar sob o volante. Pode ser mais fácil procurá-lo usando esta ferramenta:

Acesse o DragonBoard 410c usando SSH, do seu notebook (lembre-se que agora você está no carro e não tem TV / Monitor para conectar a placa). Assim que o dispositivo OBD2 Bluetooth for inserido na porta do carro, siga as etapas abaixo para acessar a conectividade bluetooth.

sudo bluetoothctl

emparelável no agente na verificação do agente padrão emNesta fase, é importante que você copie o endereço MAC, pois você precisará dele nas próximas etapas

Digite estes comandos:

confiar em MACADDRESS

emparelhar MACADDRESS

Deve ser solicitado que você digite o código PIN para emparelhar o OBD2 Bluetooth com a placa.

Normalmente, o código PIN é 1234 ou 0000 - depende do seu hardware

Agora você deve ver a tela de "conexão bem-sucedida". Para sair do aplicativo Bluetooth, use o seguinte comando:

Sair

A próxima etapa é BIND o dispositivo com a porta serial:

sudo rfcomm bind 0 MACADDRESS 1

Para ter certeza de que a operação foi bem-sucedida, digite:

ls / dev

A porta “Rfcomm0 deve ser listada.

Etapa 7: Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2

Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2
Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2

O principal objetivo desta etapa é garantir que a comunicação entre os 3 dispositivos está funcionando:

ELM327, DragonBoard 410c e o carro

Baixe o aplicativo “Screen” para enviar mensagens seriais através da porta serial

sudo apt-get install tela

A porta serial será usada para enviar comandos AT e receber as respostas entre o DragonBoard 410c e o dispositivo ELM327.

Acesse o seguinte link para obter mais informações sobre os comandos AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Aviso:

Tenha muito cuidado com esta etapa! Todas as informações que você enviar para o dispositivo serão interpretadas e enviadas para o carro. Se uma mensagem errada for enviada, ela pode ser mal interpretada pelo carro e causar problemas. Preste atenção aos comandos e estude-os antes de tentar seu próprio código. Recomendamos fortemente seguir as instruções abaixo ao pé da letra.

Siga a sequência de comando abaixo para iniciar a comunicação:

  • Esta função iniciará a comunicação serial usando a tela:

    tela / dev / rfcomm0

Assim que o terminal carregar, digite os seguintes comandos nesta sequência:

ATZ

ATL1 ATH1 ATS1 ATSP0

Teste final de comunicação:

Digite no console:

ATI

Ele deve retornar “ELM327 v1.5” ou a versão ELM do seu dispositivo

Esta é a prova de que a comunicação do dispositivo ELM e o DragonBoard 410c está funcionando

Dica rápida

Para sair da “Tela” é necessário digitar Ctrl + A seguido de Ctrl + D.

Etapa 8: Conectando o DragonBoard 410c ao OBD do carro usando o PyOBD

Conectando o DragonBoard 410c ao OBD do carro usando o PyOBD
Conectando o DragonBoard 410c ao OBD do carro usando o PyOBD

PyOBD é uma biblioteca Python para permitir a comunicação com dispositivos OBD2 que podem ser conectados a carros. Com isso, podemos extrair várias informações incluindo velocidade do veículo e erros elétricos.

Nesta etapa, precisamos garantir que as seguintes bibliotecas Python estejam instaladas no Linaro de seu DragonBoard 410c:

  • PIP - gerenciador de pacotes do Python

    sudo apt-get install python-pip

  • SetupTools - gerenciador de instalação de arquivos

    sudo pip install -U pip setupstools

  • Roda - instala o formatador do pacote

    sudo apt-get install python-wheel

  • OBD - biblioteca Python para se comunicar com o dispositivo OBD

    sudo apt-get install python-obd

  • GPS - biblioteca Python para obter dados do GPS

    sudo pip instalar GPS

  • Solicitações - pacote Python para RESTful

    pedidos de instalação sudo pip

Para verificar se o pacote OBD está funcionando corretamente, siga estas etapas:

sudo python

Agora o cursor do terminal será alterado para “>>>” indicando que o Python está em execução. Agora você pode começar a digitar os comandos abaixo:

  • Comece importando a biblioteca OBD:

    importar obd

  • Para se conectar à porta serial, use o comando:

    conexão = old. OBD (“dev / rfcomm0”)

  • É normal que apareça uma mensagem de erro, informando que a comunicação falhou, então se isso acontecer, tente mais uma vez.
  • Para descobrir se o Python está recebendo informações do carro que passa pelo ELM327 via bluetooth, digite o seguinte:

    connection.protocol_name ()

Etapa 9: Leitura de dados do carro, usando Python

Lendo dados do carro, usando Python
Lendo dados do carro, usando Python

Vamos criar um arquivo chamado: OBD.py, conforme instruções abaixo, seguido do código.

Comece importando a biblioteca OBD para Python para iniciar as conexões.

Por razões desconhecidas, usando nosso hardware, a primeira tentativa de conexão sempre falha. Segunda tentativa, sempre funciona. É por isso que no código, você notará duas linhas de comando tentando fazer a conexão.

Após a conexão ser bem sucedida, iniciamos um loop infinito, que busca os dados OBD, formata-os de acordo com os parâmetros predefinidos. Em seguida, ele cria uma URL, utilizando Query String, permitindo que seja enviada ao servidor pelo método POST.

No exemplo abaixo, conseguimos as seguintes informações:

  • RPM
  • Velocidade

As funções de captura de dados usam dois parâmetros. Por exemplo, usando [1] [12], você está buscando [módulo] [PID]. A lista de funções pode ser encontrada em:

Por fim, gere a URL com todas as informações concatenadas e adicionadas ao arquivo, denominado "obd_data.dat".

O código para OBD.py está abaixo.

Após conectar e capturar os dados, criaremos um arquivo chamado: envia_OBD.py

Esta parte do código fica mais simples. Importe as bibliotecas relacionadas à solicitação / envio de dados, utilizando RESTFUL.

Crie um WHILE para usar POST e envie a URL da primeira linha do arquivo, preenchida anteriormente por OBD.py. Depois disso, para evitar que os dados sejam enviados novamente, apaga essa linha do arquivo.

O código para o arquivo OBD.py está abaixo.

Etapa 10: Scripts recorrentes e procedimento de armazenamento de dados para os dados capturados

Scripts recorrentes e procedimento de armazenamento de dados para os dados capturados
Scripts recorrentes e procedimento de armazenamento de dados para os dados capturados

Tudo o que fizemos até agora foi orientado para garantir que o DragonBoard se comunicasse corretamente com os componentes, como 3G, Wifi, Bluetooth, dados de GPS e muito mais.

Use o código abaixo para editar o arquivo "rc.local", que já possui algumas funções e comandos predefinidos. Ele está localizado em '/ etc'. Para editar, use o comando:

sudo nano /etc/rc.local

Agora precisamos configurar todos os serviços e funções, criando rotinas que inicializam automaticamente quando o DragonBoard é inicializado. Vamos usar o BASH para fazer isso. BASH (Bourne-Again-SHell) é um aplicativo interpretador de Comando Linux.

O código a seguir contém comandos BASH e você precisará inserir o endereço MAC Bluetooth / OBD. Seja extremamente cuidadoso para certificar-se de terminar o código com "saída 0", que é a resposta do sistema de que a ação foi bem-sucedida.

E se [! -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 & saída 0

A partir de agora, toda vez que você ligar o DragonBoard, ele se conectará ao 3G e enviará dados de GPS e OBD para o servidor escolhido.

Etapa 11: Problemas ao longo do caminho

Problemas ao longo do caminho
Problemas ao longo do caminho

Listamos abaixo alguns dos problemas que encontramos ao longo do caminho antes de escrever este Instructable, mas pensamos que poderia ajudá-lo se isso acontecer com você.

  • PyOBD

    Você precisa ter muito cuidado ao enviar dados durante a comunicação com o carro. Em uma de nossas primeiras tentativas, quando a comunicação não estava estável, enviamos o comando errado que basicamente travou a ECU. A alavanca de câmbio estava presa no estacionamento e algumas das luzes do painel continuavam piscando aleatoriamente. A solução encontrada foi desconectar um dos cabos da bateria por cerca de 15 minutos. Isso redefine a ECU para seu estado padrão de fábrica, cancelando, portanto, quaisquer comandos ou alterações que possamos ter feito

  • Linaro

    Tivemos um problema com nosso DragonBoard, que reiniciava esporadicamente. O problema foi resolvido pela equipe de Linaro, que lançou uma versão mais recente do sistema operacional. Escrevemos este tutorial com a versão atualizada

  • GPS do DragonBoard

    O DragonBoard 410c da Qualcomm não tem uma antena GPS interna, portanto, para aprimorar a aquisição do sinal GPS, precisamos instalar um conector para uma antena externa. Esse processo é melhor explicado no seguinte link:

Etapa 12: Referências

Referências
Referências

Bootloader

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/

Documentação de GPS para DragonBoard

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

Demonstração GPS

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/

Recomendado: