Table des matières:
- Étape 1: Configuration de Fazendo O Inicial Da DragonBoard 410c
- Étape 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
- Étape 3: Instalando O Dongle USB 3G/4G
- Étape 4: Transformez un DragonBoard 410c Em Hotspot / Point d'accès WiFi
- Étape 5: Accédez à une DragonBoard 410c par SSH Sem Fio, Utilizando O Hotspot
- Étape 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
- Étape 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
- Étape 8: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
- Étape 9: Extraindo Informações Do Carro Usando Python
- Étape 10: Répétition des scripts et armement des données Capturados Do Carro
- Étape 11: Dificuldades Encontradas
- Étape 12: Références
Vidéo: DragonBoard Com OBD : 12 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Atraves da leitura do protocolo OBD2 do carro, é possível receber informações do veículo. Utilise un DragonBoard 410c pour un projet de trabalhar neste, 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.
Participez au projet:
- 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!
Pour suivre ce projet en anglais, cliquez ici:
www.instructables.com/id/DragonBoard-and-OBD2/
A estrutura deste projeto inclui os seguintes componentes, conform apresentados na imagem acima:
- Qualcomm DragonBoard 410c
- Interface OBD2 Bluetooth ELM327
- Clé USB 3G/4G
- Carregador Veicular de Inversão de Tensão (110v)
Étape 1: Configuration de Fazendo O Inicial Da DragonBoard 410c
Utilisant un Qualcomm DragonBoard 410c, lancé ou projeté sur une installation de distribution Linaro do Linux, qui permet une configuration complète du dispositif.
Pour créer une image de Linaro pour un DragonBoard, utilisez Ubuntu, utilisez VirtualBox, pour utiliser FastBoot, qu'il s'agit d'une application basée sur Linux. Nécessaire estar em ambiente Linux pour podder instala-lo.
Para instalar o Fastboot, access 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 ou BOOTLOADER
-
Nom de l'arquivo: dragonboard410c_bootloader_emmc_linux-79.zip
- https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
- Retrait des arquivos de dentro do ZIP
-
Entrée de pâtes:
cd /NomeDaPasta (caminho da pasta descompactada)
-
Fazer ou commando:
périphériques de démarrage rapide sudo
-
Resposta esperada:
démarrage rapide (hexadécimal)
-
Entôle numérique:
sudo./flashall
-
Resposta esperada:
fini. temps total 1.000s (sem erros)
(sem erros)
-
Instalando ou 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. Une 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”
- Retirer les arquivos de dentro do. GZ
-
Entrar na pâtes "raiz" em relação aos arquivos compactados
exemple: "/Téléchargements" que é o local onde os arquivos baixados estão
-
Entre com os commandos:
périphériques de démarrage rapide sudo
démarrage flash sudo fastboot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img
-
Resposta esperada (lembrando que o tempo pode variar):
fini. temps total: 100,00s
- Connecte um souris, Teclado e um moniteur/TV avec port HDMI
-
Utiliser:
- Usuário: linaro
- Senha: linaro
-
Abra a interface Lxterminal e faça o download da lista de atualizações disponíveis dos pacotes instalados:
sudo apt-get mise à jour
-
Réalisez une instalação dos pacotes disponíveis usando o código:
sudo apt-get mise à niveau
Dicas: O Linaro tem um boot extremamente rápido, e uma comunidade bastante engajada para solução de problemas.
Étape 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 usando o commando:
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 démarrer qdsp-start.servicesudo systemctl démarrer gnss-gpsd.servicesudo systemctl démarrer 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 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:
Étape 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 et slot pour SimCard;
- Utiliser une clé USB 3G/4G;
Para este projeto optamos pelo Dongle USB 3G/4G da Huawei modelo E3272, pela facilidade of obter este dispositivo.
Para configurar o modem, você poderá utilizar o terminal (com a aplicação WVDial), porém o jeito mais facil é utilizar a própria Interface 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” no canto inférieur direito da tela.
- « Modifier les connexions » > « Ajouter »
- Escolha a opção: "Mobile Broadband"
- Cliquez sur "Créer"
Siga a tela de instalação do sistema operacional, conforme imagens acima, configurando a operadora de telefonia conforme carte sim comprado. Para criação deste projeto, utilizamos um Sim Card da Tim (e um modem inicialmente vendido pela Vivo).
Étape 4: Transformez un DragonBoard 410c Em Hotspot / Point d'accès WiFi
Pour utiliser un DragonBoard 410c avec un roteador wifi (agora que você já configurou a connection com a internet), a maneira plus simple é utilizar a própria interface do sistema. Siga os passos abaixo:
- Clique no botão direito no ícone de “redes” no canto lower direito.
- « Modifier les connexions » > « Ajouter »
- Escolha a opção "WiFi"
- Cliquez sur "Créer"
Coloque o nome da rede que você quer criar no campo "SSID" e depois altere o "Mode" para "Hotspot".
Pour garantir le fonctionnement:
- Vá na aba "Paramètres IPv4"
- Veja se o "Méthode" está marcado como "Partagé avec d'autres ordinateurs"
Étape 5: Accédez à une DragonBoard 410c par 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, ou ao wifi em que ela esteja conectada. Este é ou método de conexão dos servidores 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. Esta chave serve para qu'un pessoa que a tenha, tenha autorização para acessar a instância do endpoint exclusivo no Linux, atraves do IP público do modem 3G, objectivo 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 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 user@remote_server
Com isso, acabamos de transformar a DragonBoard 410c em um serveur cloud! \o/
Étape 6: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 1/2
Une interface de communication avec les voitures et les accès à la porte 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 ou STN1170.
Pour ce projet, utilizamos um dispositivo Bluetooth com chip baseado em ELM327.
Important destacar qu'un matériel disponible deste não necessariamente representa a 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. O chipset original est à la versão 2.2. Une évolution deste versionamento traz ao chip mais informações sobre os carros mais novos. É important sabre disso, pois dependendo dos testes realizados, poderá ou não conseguir obter determinadas informações de veículos mais novos.
De possede seu dispositivo OBD2 Bluetooth, rencontre a porta OBD2 do seu carro. Ela pode estar localizada logo abaixo do volante, pas de console centrale ou perto da caixa de fusíveis. O local varia bastante entre as montadoras e modelos. Uma opção para localizar é usar esta ferramenta:
Accédez à un 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 pour inserido no conector do carro, siga os passos abaixo para ter controle da conectividade bluetooth:
sudo bluetoothctl
appariable sur l'agent sur l'analyse de l'agent par défaut surNeste momento é important que você copie o MAC Address pois precisará para os próximos passos
Chiffre:
faites confiance à MACADDRESS
paire MACADRESSE
Neste momento deve aparecer uma sollicitação para digitar o PIN de paraamento do Bluetooth OBD2.
O PIN geralmente é 1234 ou 0000
Após a tela de successo de conexão, digitando este comando, você sai do programa controlador do Bluetooth digitando:
quitter
Agora é preciso fazer um "BIND" do dispositivo com a porta serial:
sudo rfcomm lier 0 MACADDRESS 1
Pour valider le succès de l'opération numérique:
ls /dev
Un porta "Rfcomm0" deve estar na lista.
Étape 7: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Via Bluetooth - Passo 2/2
Objetivo deste passo é garantir o funcionamento da comunicação entre os dispositivos:
ELM327, DragonBoard 410c et Veículo
Baixe a aplicação “Screen” para enviar mensagens pela Porta Serial
écran d'installation sudo apt-get
A Porta Serial será usada para envio e recebimento de Comandos AT entre a DragonBoard 410c e o ELM327.
Para sabre mais sobre Comandos AT, accès:
ATENÇÃO:
Tome muito cuidado nesta parte! Toutes les informations sont envoyées pour le dispositif 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 as instruções abaixo detalhadamente.
Siga a sequência de comandos abaixo para dar início à comunicação:
-
Esta função fará ouvrir o terminal de comunicação serial.
écran /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. Comme 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 commandos.
ATH1
-
Liga o espaçamento entre palavras.
ATS1
-
Définir o protocolo de comunicação do carro para "Automático".
ATSP0
Test de communication Finale:
-
Numérisez pas de console:
ATI
- Ele deve retornar “ELM327 v1.5” ou a 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" et apertar nécessaire: Ctrl-A seguido de Ctrl-D
Étape 8: Ligando a DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
PyOBD est une biblioteca de Python spécifique à la communication avec le 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 modules do Python
sudo apt-get installer python-pip
-
SetupTools – gestor de arquivos de instalação
sudo pip install -U pip setuptools
-
Wheel – formatador de 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 installer gps
-
Demandes – módulo de sollicitações
demandes d'installation sudo pip
Para saber se a biblioteca de Python está funcionando corretamente, precisamos rodar os commandos:
python sudo
Neste momento o cursor do terminal vai mudar para este ícone ">>>" indicando que o programa está rodando Python. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.
- Comece importando a biblioteca
importation obd
-
Para fazer a conexão com a porta serial use o comando
connexion = 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.nom_protocole()
Étape 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 a biblioteca OBD para dentro do Python para iniciar as 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 une URL, utilizando Query String, para que possa enviar ao servidor utilizando o método POST.
Aucun exemplo abaixo pegamos comme seguintes informações:
- RPM
- Vélocidade
- Odômetro *
As funções para captura dos dados utilizam dois parâmetros. Por exemplo, usando [1][12] estamos buscando [módulo] [PID]. Esta lista pode ser encontrada em:
Pour finir, un humm une URL com todas as informações são concatenadas e adicionadas em um arquivo, chamado " obd_data.dat ".
Code pour 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") alors que 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(" kilomètre", ""))) 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() imprimer l'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 tandis que para enviar através de POST une 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.
Code pour l'arquivo OBD.py:
demandes d'importation
import time while True: essayez: time.sleep(0.2) url = '' with open('obd_data.dat', 'r') as fin: data = fin.read().splitlines(True) url = data[0] request.post(url) avec open('obd_data.dat', 'w') comme fout: fout.writelines(data[1:]) sauf: print 'exception'
Caso tenha algum problema copiando estes códigos, baixe os arquivos abaixo:
Étape 10: Répétition des scripts et armement des données Capturados Do Carro
Tudo o que foi feito até agora era orientado a garantir que a DragonBoard fizesse comunicação com os diferentes componentes da solução, como a comunicação 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 pre-definidos, e fica no diretório '/etc'. Para fazer a edição, utilisez 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 o BASH par fazer isso. O BASH (Bourne-Again-SHell) est une application pour l'interprétation des commandes 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é aexit ressua de que iste que.
si [! -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 & sortie 0
A partir de l'agora, semper que a placa for iniciada, ela já vai se conectar atraves do 3G e enviar os dados de GPS e OBD para o servidor escolhido.
Étape 11: Dificuldades Encontradas
Listamos abaixo algumas barreira que encontramos ao longo do desenvolvimento do projeto, que resolvemos antes de criar este Instructable, mas que é important 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. Além disso, comme les luzes font 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 avec DragonBoard
Un Qualcomm Dragonboard 410c não tem antenas GPS internas, e para melhor recepção de sinal, é preciso instalar o conector e adquirir uma antena externa. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:
Étape 12: Références
Chargeur de démarrage
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/
Documentation de GPS pour DragonBoard
discuss.96boards.org/t/gps-software/170/16
Démo GPS
gist.github.com/wolfg1969/4653340
OBD Python
github.com/brendan-w/python-OBD
Connexion RaspberryPi à un OBD Bluetooth
gersic.com/connecting-your-raspberry-pi-to-a-bluetooth-obd-ii-adapter/
Instruçes para criação do tunnel SSH
gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6
Instalando ou SSH pas de Linux
ask.xmodulo.com/install-autossh-linux.html
Conseillé:
Comment connecter et contrôler une lampe via le module ZigBee sur Dragonboard : 5 étapes
Comment connecter et contrôler une lampe via le module ZigBee sur Dragonboard : Cette instructable enseigne à l'utilisateur comment connecter et installer correctement le module ZigBee sur le Dragonboard et l'interagir avec une lampe contrôlée ZigBee (OSRAM), créant un réseau IOT ZigBee. : Dragonboard 410c; Clé USB CC2531; T
Correction des codes OBD II P0420/P0430 : 5 étapes
Correction des codes OBD II P0420/P0430 : Avez-vous ce voyant gênant sur le tableau de bord de votre Mustang ? Avez-vous changé votre système d'échappement? Si vous avez installé un tuyau en h ou un tuyau en X tout-terrain (pas de convertisseurs catalytiques) ou retiré vos convertisseurs catalytiques pour une utilisation sur piste, vos capteurs d'oxygène w
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 étapes
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Application Android : DESCRIÇÃOO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes indoor como casas ou shopping centers e aeroportos.A locomoção em ambientes já mapeados pode ou não s
Détecter les situations d'urgence - Qualcomm Dragonboard 410c : 7 étapes
Détection des situations d'urgence - Qualcomm Dragonboard 410c : Si vous recherchez des systèmes de sécurité qui fonctionnent pour surveiller les situations d'urgence, il est possible de remarquer qu'il est trop difficile de traiter toutes les informations enregistrées. En pensant à cela, nous avons décidé d'utiliser nos connaissances en traitement audio/image, capteurs et
Modifiez votre câble OBD-II pour ne pas décharger la batterie de la voiture : 5 étapes
Modifiez votre câble OBD-II pour ne pas décharger la batterie de la voiture : Depuis longtemps, tous les véhicules sont équipés d'un port de diagnostic embarqué. Très souvent, ce port est disponible en tant que connecteur OBD-II. Il existe plusieurs appareils capables de communiquer à l'aide de ce connecteur, beaucoup d'entre eux sont basés sur