Tabla de contenido:
- Paso 1: Configuración inicial de Fazendo O Da DragonBoard 410c
- Paso 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
- Paso 3: Instalando O Dongle USB 3G / 4G
- Paso 4: Transformar un punto de acceso / punto de acceso WiFi DragonBoard 410c Em
- Paso 5: Acessando a DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
- Paso 6: Ligando un DragonBoard 410c Ao OBD Do Seu Carro a través de Bluetooth - Passo 1/2
- Paso 7: Ligando un DragonBoard 410c Ao OBD Do Seu Carro a través de Bluetooth - Passo 2/2
- Paso 8: Ligando un DragonBoard 410c Ao OBD Do Seu Carro usando PyOBD
- Paso 9: Extraindo Informações Do Carro usando Python
- Paso 10: Repetição De Scripts E Armazenamento De Dados Capturados Do Carro
- Paso 11: Dificuldades Encontradas
- Paso 12: Referências
Video: DragonBoard Com OBD: 12 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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
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
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
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
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
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
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
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
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
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
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
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
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:
Desenvolvendo Aplicações Remotamente Para a Dragonboard 410c Usando IDE Eclipse: 17 Pasos
Desenvolvendo Aplicaciones Remotamente Para un Dragonboard 410c Usando IDE Eclipse: O objetivo deste documento é mostrar como etapas necesarias para configurar o ambiente de desenvolvimento, de modo que o HostPC (Computador / Notebook), através de IDE Eclipse compile os c ó digos e exporte para o Alvo (Drag
Cómo conectar y controlar una lámpara a través del módulo ZigBee en Dragonboard: 5 pasos
Cómo conectar y controlar una lámpara a través del módulo ZigBee en Dragonboard: este instructivo le enseña al usuario cómo conectar e instalar correctamente el módulo ZigBee en Dragonboard e interactuar con una lámpara controlada ZigBee (OSRAM), creando una red ZigBee IOT. : Dragonboard 410c; CC2531 Dongle USB; T
Códigos OBD II P0420 / P0430 Corrección: 5 pasos
Códigos OBD II P0420 / P0430 Solución: ¿Tiene esta luz molesta en el tablero de su Mustang? ¿Ha cambiado su sistema de escape? Si ha instalado un tubo en H o X-pipe todoterreno (sin convertidores catalíticos) o ha retirado los convertidores catalíticos para utilizarlos en la pista, sus sensores de oxígeno
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 Pasos
Vision 4all - Sistema de visualización Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes interiores como casas o centros comerciales e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Modifique su cable OBD-II para que no descargue la batería del automóvil: 5 pasos
Modifique su cable OBD-II para que no descargue la batería del automóvil: desde hace mucho tiempo, todos los vehículos están equipados con un puerto de diagnóstico a bordo. Muy a menudo, este puerto está disponible como conector OBD-II. Hay varios dispositivos que son capaces de comunicarse mediante este conector, muchos de ellos están basados