Tabla de contenido:

DragonBoard Com OBD: 12 pasos
DragonBoard Com OBD: 12 pasos

Video: DragonBoard Com OBD: 12 pasos

Video: DragonBoard Com OBD: 12 pasos
Video: #203 Weekly Roundup #53: New Maker Products 2024, Noviembre
Anonim
DragonBoard Com OBD
DragonBoard Com OBD

Através da leitura do protocolo OBD2 do carro, é posível receber informações do veículo. Utilizando un 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 permitiram que tivéssemos acesso aos melhores hardwares, além do contato com os melhores profissionais para contribuir com o desenvolvimento.

Participaram deste projeto:

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

Para seguir este proyecto en inglés, haga clic aquí:

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

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

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

Paso 1: Configuración inicial de Fazendo O 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

Utilizando Qualcomm DragonBoard 410c, iniciamos o projeto con una instalación de distribución Linaro do Linux, que nos permiten la configuración completa del dispositivo.

Para criar uma imagem do Linaro para DragonBoard, use o Ubuntu, pelo VirtualBox, para usar o FastBoot, que é um aplicativo baseado em Linux. Es necesario estar en el ambiente Linux para poder instalarlo.

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

sudo apt-get android-tools-fastboot

  • Para instalar o Linaro, precisamos pasar por 2 pasos muito importantes:

    • Instalando o BOOTLOADER
    • Nombre de 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:

        dispositivos sudo fastboot

      • Respuesta esperada:

        (hexadecimal) fastboot

      • Então digite:

        sudo./flashall

      • Respuesta esperada:

        finalizado. tiempo total 1.000s (sem erros)

        (sem erros)

    • 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. 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. Adquirir por "linaro-NomeDaVersão-alip"

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

        ejemplo: “/ Descargas” que é o local onde os arquivos baixados estão

      • Entre com os comandos:

        dispositivos sudo fastboot

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

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

        finalizado. tiempo total: 100.00 s

  • Conecte um Mouse, Teclado e um monitor / TV en el puerto HDMI
  • Utilizar:

    • Usuário: linaro
    • Senha: linaro
  • Abra una interfaz Lxterminal e faça o descargue la lista de atualizações disponíveis dos pacotes instalados:

    sudo apt-get update

  • Realice una instalação dos pacotes disponíveis usando o código:

    sudo apt-get upgrade

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

Paso 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 using o command:

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 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 receptção do sinal do GPS.

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

Paso 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 e slot para SimCard;
  • Utilizar um Dongle USB 3G / 4G;

Para este proyecto optamos por Dongle USB 3G / 4G da Huawei modelo E3272, pela facilidade obter este dispositivo.

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

  • Com o Dongle USB conectado, clicar con botão direito no ícono de "redes" no canto inferior direito da tela.
  • "Editar conexiones"> "Agregar"
  • Escolha a opção: "Banda ancha móvil"
  • Haga clic en "Crear"

Siga una pantalla de instalación del sistema operacional, conforme imagens acima, configurando a operadora de telefonia conforme sim card comprado. Para criação deste projeto, utilizamos um Sim Card da Tim (e um modem se vende pela Vivo).

Paso 4: Transformar un punto de acceso / punto de acceso WiFi DragonBoard 410c Em

Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
Transformando un punto de acceso / punto de acceso WiFi DragonBoard 410c Em

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

  • Clique no botão direito no ícone de “redes” no canto inferior direito.
  • "Editar conexiones"> "Agregar"
  • Escolha a opção "WiFi"
  • Haga clic en "Crear"

Coloque el nombre de la red que desea que el campo "SSID" y depois altere o "Mode" para "Hotspot".

Para garantizarir o funcionamento:

  • Vá na aba "Configuración de IPv4"
  • Veja se o "Method" está marcado como "Compartido con otras computadoras"

Paso 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 acceso a placa remotamente, independent da forma que ela esteja conectada, não dependiente de estar próximo a Dragonboard para conectar directamente à ela, ou ao wifi em que ela esteja conectada. Este es el método de conexión de los servidores Linux de 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 sirve para que a pessoa que a tenha, tenha autorização para acceder a instância do endpoint exclusivo no Linux, através do IP público do modem 3G, objetivo 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 usuario @ servidor_remoto:.ssh / claves_autorizadas autossh -M 0 -q -f -N -i /home/pi/.ssh/id_rsa -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 2222: localhost: 22 usuario @ servidor_remoto

¡Com isso, acabamos de transformar un DragonBoard 410c em um servidor en la nube! / o /

Paso 6: Ligando un DragonBoard 410c Ao OBD Do Seu Carro a través de Bluetooth - Passo 1/2

Ligando a DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 1/2
Ligando a DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 1/2

Una interfaz de comunicación con carros é feita através da porta OBD2. A informação que transita nesta porta precisa ser traduzida, e para isso precisamos de um interpretador quetrate os dados. Há duas opções para este hardware: ELM327 ou STN1170.

Para este proyecto, utilizamos un dispositivo Bluetooth com chip basado en ELM327.

Importante destacar que un hardware disponible no necesariamente representa una versión ORIGINAL de ELM327. Una parte principal está disponible en la versión 1.5, que está disponible en el chip original para clonado y colocado en una venta en el mercado. O chipset original está en versión 2.2. A evolução deste versionamento traz ao chip mais informações sobre os carros mais novos. É importante saber disso, depende de dos testes realizados, poder o no conseguir obter determinadas informaciones de veículos mais novos.

De posse do seu dispositivo OBD2 Bluetooth, encontre un 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 como montadas e modelos. Uma opção para localizar é usar esta ferramenta:

Acesse a DragonBoard 410c con SSH, utilizando su Notebook

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

sudo bluetoothctl

emparejable en el agente en el escaneo del agente predeterminado enNeste momento é importante que você copie o MAC Address pois precisará para os próximos passos

Digite:

confía en MACADDRESS

emparejar MACADDRESS

Neste momento deve aparecer uma solicitud para digitar o PIN de emparejamiento de Bluetooth OBD2.

O PIN geralmente é 1234 ou 0000

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

dejar

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

Un porta "Rfcomm0" deve estar en la lista.

Paso 7: Ligando un DragonBoard 410c Ao OBD Do Seu Carro a través de Bluetooth - Passo 2/2

Ligando un DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 2/2
Ligando un DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 2/2
Ligando un DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 2/2
Ligando un DragonBoard 410c Ao OBD Do Seu Carro vía Bluetooth - Passo 2/2

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

ELM327, DragonBoard 410c y Vehículo

Baixe una aplicación "Screen" para enviar mensagens pela Porta Serial

sudo apt-get instalar pantalla

Una Porta Serial será usada para envio y recebimento de Comandos AT entre una DragonBoard 410c e o ELM327.

Para saber más sobre Comandos AT, acesse:

ATENÇÃO:

Tome muito cuidado nesta parte! Todas como información 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 los comandos. Recomendamos que siga las instrucciones abaixo detalhadamente.

Siga una secuencia de comandos abaixo para dar início à comunicação:

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

    screen / 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. Como vezes você precisará fazer isso.

    ATZ

  • Liga a funcionalidade de quebra de linha nos comandos, facilitando una visualización.

    ATL1

  • Liga os cabeçalhos dos comandos.

    ATH1

  • Liga o espaçamento entre palavras.

    ATS1

  • Definir el protocolo de comunicación del carro para “Automático”.

    ATSP0

Teste de comunicação Final:

  • Digite sin consola:

    ATI

  • Ele deve retornar “ELM327 v1.5” o una versión de ELM en su dispositivo.
  • Isso prova que o ELM327 está comunicando com a placa sem problemas, e podemos prosseguir.

Dica

Para saber la aplicación "Pantalla", es necesario abrir: Ctrl-A seguido de Ctrl-D

Paso 8: Ligando 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 específica para comunicación con 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 - gestor de arquivos de instalação

    sudo pip install -U pip setuptools

  • Rueda - formatador de arquivos para instalação

    sudo apt-get install python-wheel

  • OBD - biblioteca para interpretación de datos OBD

    sudo apt-get python-obd

  • GPS - biblioteca com dados do gps

    sudo pip instalar gps

  • Solicitudes - módulo de solicitações

    solicitudes de instalación de sudo pip

Para saber si la biblioteca de Python está funcionando correctamente, precisamos rodar los comandos:

sudo python

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

  • Comece importando a biblioteca

    importar obd

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

    conexión = 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 ()

Paso 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 una biblioteca OBD para dentro de Python para iniciar como conexiones.

Por motivos desconhecidos, a primeira conexão com nosso hardware, falha semper. Na segunda tentativa, funciona sempre. Por isso, no verifique el código 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 una URL, utilizando Query String, para que possa enviar ao servidor utilizando o método POST.

No hay ejemplo abaixo pegamos como seguintes informações:

  • RPM
  • Velocidade
  • Odômetro *

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

Por último, una URL de humm com todas las informaciones son concatenadas y adicionadas em um arquivo, chamado "obd_data.dat".

Código para 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]) imprimir respOdo paramRPM = int (float (str (respRPM).replace ("revoluciones_por_minuto", ""))) paramVelo = int (float (str (respVelo).replace ("kph", ""))) paramOdo = int (float (str (respOdo).replace ("kilómetro", ""))) 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 () imprimir URL

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

Esta parte del código fica mais simples. Começamos importando bibliotecas relacionadas a solicitudes / 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.

Código para o arquivo OBD.py:

solicitudes de importación

importar tiempo mientras es True: intente: time.sleep (0.2) url = '' con open ('obd_data.dat', 'r') como fin: data = fin.read (). splitlines (True) url = data [0] request.post (url) with open ('obd_data.dat', 'w') como fout: fout.writelines (data [1:]) excepto: print 'excepción'

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

Paso 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 a garantir que un DragonBoard fizesse comunicação con diferentes componentes da solución, como una comunicación 3G, WiFi, Bluetooth, Dados do GPS, entre otros.

Vamos a 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, use o comando:

sudo nano /etc/rc.local

Agora precisamos configurar una inicialización de todos los procesos, servicios y funciones, criando rotinas para que funcionen automáticamente para iniciar un Dragonboard. Vamos a utilizar o BASH para fazer isso. O BASH (Bourne-Again-SHell) es un aplicativo para interpretación de comandos Unix.

No próximo código, que tem comandos BASH, você precisará inserir o MacAddress do seu dispositivo OBD / Bluetooth, e también precisa ter bastante cuidado para garantizar que o código seja colocado antes del comando "exit 0" que é una resposta de sucesso do sistema.

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

luego systemctl detener 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 una placa para iniciada, ela já vai se conectará através do 3G e enviar os dados de GPS y OBD para o servidor escolhido.

Paso 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 una comunicación 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, as 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 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 para resolver ao longo do desenvolvimento do projeto, pela equipe do Linaro, que soltou uma atualização, e já construímos este tutorial utilizando una información más atualizada

  • GPS na DragonBoard

    Un Qualcomm Dragonboard 410c no tiene antenas GPS internas, y para la recepción de sonido de sinal, es preciso instalar o conectar y adquirir una antena externa. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:

Paso 12: Referências

Referências
Referências

Cargador de arranque

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

Demostración de GPS

gist.github.com/wolfg1969/4653340

Python OBD

github.com/brendan-w/python-OBD

Conectando RaspberryPi a 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

Instalando o SSH sin Linux

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

Recomendado: