Inhaltsverzeichnis:
- Schritt 1: Fazendo O Setup Initial Da DragonBoard 410c
- Schritt 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
- Schritt 3: Instalando O Dongle USB 3G/4G
- Schritt 4: Transformando einen DragonBoard 410c Em Hotspot / Access Point WiFi
- Schritt 5: Acessando ein DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
- Schritt 6: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro über Bluetooth – Passo 1/2
- Schritt 7: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro über Bluetooth – Passo 2/2
- Schritt 8: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
- Schritt 9: Extraindo Informações Do Carro Usando Python
- Schritt 10: Repetição De Scripts E Armazenamento De Dados Capturados Do Carro
- Schritt 11: Dificuldades Encontradas
- Schritt 12: Referenzen
Video: DragonBoard Com-OBD - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Através da leitura do protocolo OBD2 do carro, é possível receber informações do veículo. Verwenden Sie ein DragonBoard 410c, das ein 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 acesso aos melhores hardwares, além do contato com os melhores profissionais para contribuenir com.
Teilnahme am Projekt:
- 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 conto conosco!
Um dieses Projekt auf Englisch zu verfolgen, klicken Sie hier:
www.instructables.com/id/DragonBoard-and-OBD2/
A estrutura deste projeto inclui os seguintes componentses, conforme apresentados na imagem acima:
- Qualcomm DragonBoard 410c
- ELM327 Bluetooth OBD2-Schnittstelle
- Dongle USB 3G/4G
- Carregador Veicular de Inversão de Tensão (110v)
Schritt 1: Fazendo O Setup Initial Da DragonBoard 410c
Verwenden Sie ein Qualcomm DragonBoard 410c, starten Sie ein Projekt mit einer Installation von Linaro unter Linux, ohne dass eine vollständige Konfiguration möglich ist.
Um ein Bild von Linaro für ein DragonBoard zu verwenden, verwenden Sie Ubuntu, verwenden Sie VirtualBox, verwenden Sie ein FastBoot, oder verwenden Sie eine Linux-Basis. Notwendige Estar-em-Umgebungs-Linux für die Installation.
Zur Installation von Fastboot, Zugang zum Terminal von Máquina Virtual Ubuntu, e digite:
sudo apt-get android-tools-fastboot
-
Para instalar o Linaro, precisamos passar por 2 passos muito Importantes:
- Instalando oder BOOTLOADER
-
Nome do arquivo: dragonboard410c_bootloader_emmc_linux-79.zip
- https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
- Ruhestand os arquivos de dentro do ZIP
-
Entra-Na-Nudeln:
cd /NomeDaPasta (Caminho da Pasta descompactada)
-
Fazer oder Kommando:
sudo Fastboot-Geräte
-
Resposta esperada:
(hexadezimal) Fastboot
-
Então Ziffer:
sudo./flashall
-
Resposta esperada:
fertig. Gesamtzeit 1.000s (sem erros)
(sem fehler)
-
Instalando oder 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. Beschaffung von „linaro-NomeDaVersão-alip“
- Retirar os arquivos de dentro do. GZ
-
Entrar na Pasta “raiz” em relação aos arquivos compactados
Beispiel: „/Downloads“que é o local onde os arquivos baixados estão
-
Entre com os comandos:
sudo Fastboot-Geräte
sudo fastboot flash boot boot-linaro-NomeDaVersão-qcom-snapdragon-arm64-DATA.img
-
Resposta esperada (lembrando que o tempo pode variar):
fertig. Gesamtzeit: 100.00s
- Verbinden Sie Maus, Teclado und Monitor/TV mit HDMI-Anschluss
-
Nutzen:
- Usuario: linaro
- Senha: Linaro
-
Abra a interface Lxterminal e faça o download the lista de atualizações disponíveis dos pacotes instalados:
sudo apt-get update
-
Realisieren Sie eine Installation 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.
Schritt 2: Fazendo O GPS Da DragonBoard 410c Localizar Seu Dispositivo
Comece com a instalação dos aplicativos que service de cliente para o GPS, sendo elees o GNSS-GPSD, o GPSD e o GPSD-CLIENTS. Faça isso usando o comando:
sudo apt-get install gnss-gpsd gpsd gpsd-clients
Com ele instalado, você precisará rodar alguns comandos para iniciar o aplicativo, são ele:
sudo systemctl start qdsp-start.servicesudo systemctl start gnss-gpsd.servicesudo systemctl start qmi-gps-proxy.service
Leve sua DragonBoard 410c für lokale aberto, com visada para o céu, e digite no terminal:
gpsmon – nein
Pelos testes realizados, o tempo médio até als informações começarem a parecer na tela, é de cerca de 10 minuten. Isso varia muito from localização da DragonBoard, quantidade de predios ao seu redor, além de outras barreiras naturais que possam atrapalhar and recepção do sinal do GPS.
Para conseguir capturar essas informações e mandar para a núvem, verwenden Sie o código abaixo, alterando o endereço do seu Website:
Schritt 3: Instalando O Dongle USB 3G/4G
Bestehende algumas formas de fazer a DragonBoard 410c acessar a rede 3G/4G:
- Instalando um Shield / BreakoutBoard com Modem GSM und Slot für SimCard;
- Verwenden Sie einen Dongle USB 3G/4G;
Für dieses Optamo-Dongle-Dongle USB 3G/4G von Huawei Modell E3272, ist es einfacher, die beste Verfügbarkeit zu haben.
Para-Konfiguration oder Modem, Vok-Poder-Utilizar oder Terminal (com aplicação WVDial), porém oder jeito mais fácil é utilizar a própria Interface Gráfica do Usuário (GUI) von Linaro. Faça da seguinte forma:
- Com o Dongle USB conectado, clicar com botão direito no ícone de “redes” no canto inferior direito da tela.
- „Verbindungen bearbeiten“> „Hinzufügen“
- Escolha eine Option: „Mobiles Breitband“
- Klicken Sie auf „Erstellen“
Siga a tela de instalação do sistema operacional, configure imagens acima, configurando a operadora de telefonia konforme SIM-Karte Comprado. Para criação deste projeto, utilizamos um Sim Card da Tim (e um Modem inicialmente vendido pela Vivo).
Schritt 4: Transformando einen DragonBoard 410c Em Hotspot / Access Point WiFi
Für die Verwendung eines DragonBoard 410c mit rotem WLAN (Agora que você já configurou a conectividade com a internet), eine einfache Bedienung und eine einfache Benutzeroberfläche. Siga os passos abaixo:
- Clique no botão direito no ícone de „redes“no canto inferior direito.
- „Verbindungen bearbeiten“> „Hinzufügen“
- Escolha eine Option "WiFi"
- Klicken Sie auf „Erstellen“
Coloque oder nome da rede que você quer criar no campo "SSID" und depois altere o "Mode" para "Hotspot".
Para Garantir oder funcionamento:
- Vá na aba „IPv4-Einstellungen“
- Veja se o „Methode“está marcado como „Für andere Computer freigegeben“
Schritt 5: Acessando ein DragonBoard 410c Por SSH Sem Fio, Utilizando O Hotspot
Criamos um jeito de acessar a placa remotamente, unabhängig von der Form einer ela esteja conectada, nicht abhängig von einem estar próximo a Dragonboard für einen conectar diretamente à ela, oder ua wifi em que ela esteja conectada. Este é o método de conexão dos servidores Linux da Amazon.
Começamos instalando oder Auto SSH, utilizando oder 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 que a pessoa que a tenha, tenha autorização para acessar a instância do endpoint exclusivo no Linux, através do IP público do modem 3G, objetivo Principal dete passo. Na sequência, oder código faz a copia da chave für oder 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 Server-Cloud! \Ö/
Schritt 6: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro über Bluetooth – Passo 1/2
Eine Schnittstelle zur Kommunikation mit Carros und Feita Através von 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 est hardware: ELM327 oder STN1170.
Para este projeto, utilizamos um dispositiv Bluetooth-com-chip baseado em ELM327.
Wichtig ist, dass die Hardware verfügbar ist, die nicht als Originalversion von ELM327 dargestellt werden muss. Ein Hauptteil der Disponível ist auf Version 1.5, que foi quando oder chip original foi clonado und colocado a venda no mercado. O-Chipsatz original está na versão 2.2. Eine Entwicklung der Versionamento traz ua Chip mehr Informationen, um weitere Informationen zu Carros mais novos zu erhalten. É Wichtiger Säbeldisso, Pois Dependendo dos Testes Realizados, Poderá ou não Conseguir obter determinadas informações de veículos mais novos.
Sie haben die Möglichkeit, OBD2 Bluetooth zur Verfügung zu stellen, um ein OBD2-Portal zu verwenden. Ela pode estar localizada logo abaixo do volante, keine Konsole zentral oder perto da caixa de fusíveis. O local varia bastante entre as montadoras e modelos. Uma opção para localizar é usar esta ferramenta:
Greifen Sie auf ein DragonBoard 410c com SSH zu, verwenden Sie dieses 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 für inserido no conector do carro, siga os passos abaixo para ter controle da conectividade bluetooth:
sudo bluetoothctl
koppelbar bei Agent bei Standard-Agent-Scan einNeste momento é Importante que você copy o MAC Address pois precisará para os próximos passos
Ziffer:
Vertrauen Sie MACADDRESS
Paar MACADRESSE
Legen Sie einen Moment fest, um eine Anfrage für den digitalen oder PIN-Code für Bluetooth OBD2 zu stellen.
O PIN Geralmente é 1234 oder 0000
Após a tela de sucesso de conexão, digitando este comando, você sai do programa controlador do Bluetooth digitando:
Verlassen
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
Ein Porta "Rfcomm0" deve estar na lista.
Schritt 7: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro über Bluetooth – Passo 2/2
Objetivo deste passo é garantir o funcionamento da comunicação entre os dispositivos:
ELM327, DragonBoard 410c und Veículo
Baixe a aplicação " Screen " für enviar mensagens pela Porta Serial
sudo apt-get Installationsbildschirm
Eine Porta Serial será usada para envio and recebimento de Comandos AT entre a DragonBoard 410c e o ELM327.
Para sabre mais sobre Comandos AT, Zugang:
ATENÇÃO:
Tome muito cuidado nesta parte! Todas als informações enviadas para o dispositivo conectado ao carro, poderão ser interpretadas e enviadas ao carro de maneira errada und ocasionar oder mal-funcionamento do seu carro! Estude bastante os comandos antes de tentar inovar nos comandos. Recomendamos que siga als instruções abaixo detalhadamente.
Siga a sequência 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. Als 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
-
Definieren Sie das Protokoll der Kommunikation für das Auto für „Automático“.
ATSP0
Teste de comunicação Finale:
-
Keine Konsole eingeben:
ATI
- Ele deve retornar "ELM327 v1.5" oder eine Version von ELM zur Verfügung.
- Isso prova que o ELM327 está comunicando com a place sem problemas, e podemos prosseguir.
Dica
Für die Anwendung von „Screen“und erforderlichem Aufruf: Strg-A-Seguido von Strg-D
Schritt 8: Ligando ein DragonBoard 410c Ao OBD Do Seu Carro Usando PyOBD
PyOBD ist eine Biblioteca von Python speziell für die Kommunikation mit OBD2 oder Padrão. Com ela, podemos extrair diversas informações da rede de comunicação do carro, einschließlich dados como velocidade und 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
-
Rad – formatador de arquivos para instalação
sudo apt-get installiere python-wheel
-
OBD – Biblioteca para interpretação de dados OBD
sudo apt-get python-obd
-
GPS – biblioteca com dados do gps
sudo pip install gps
-
Anfragen – módulo de solicitações
sudo pip Installationsanfragen
Para sabre se a biblioteca de Python está funcionando corretamente, precisamos rodar os comandos:
sudo python
Neste momento oder cursor do terminal vai mudar para est ícone ">>>" indicando que oder programa está rodando Python. Podemos começar a digitar os comandos para serem interpretados conforme abaixo.
- Comece importando a biblioteca
importieren
-
Para fazer a conexão com a porta serial use oder comando
Verbindung = obd. OBD(“/dev/rfcomm0”)
-
Para descobrir se o Python está conseguindo extrair informações do carro, passando pelo Bluetooth, ELM327 até chegar no carro, Ziffer:
verbindung.protokoll_name()
Schritt 9: Extraindo Informações Do Carro Usando Python
Vamos criar um arquivo chamado: OBD.py, konforme 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 oder 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. Hinterlegen Sie eine URL, verwenden Sie den Query-String, wenn Sie ihn verwenden, um einen Server oder einen POST-Dienst zu verwenden.
Kein exemplo abaixo pegamos as seguintes informações:
- Drehzahl
- Velocidade
- Odômetro *
Als funções para captura dos dados utilizam dois parâmetros. Als Beispiel, usando [1][12] estamos buscando [módulo] [PID]. Esta lista pode ser encontrada em:
Por último, a summ a URL com todas as informações são concatenadas e adicionadas em um arquivo, chamado " obd_data.dat ".
Código für 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]) print respOdo paramRPM = int(float(str(respRPM).replace(" Umdrehungen_per_Minute", ""))) paramVelo = int(float(str(respVelo).replace(" kmh", ""))) paramOdo = int(float(str(respOdo).replace(" kilometer", ""))) 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() URL drucken
Depois da conexão e captura dos dados, vamos criar oder arquivo chamado: envia_OBD.py
Esta parte do codigo fica mais simples. Começamos importando bibliotecas relacionadas à solicitações/envio de dados, usando RESTFUL.
Criamos um während Para enviar através de POST a URL da primeira linha do arquivo que que populado anteriormente pelo OBD.py. Depois disso, para evitar que oder dado seja enviado mais de uma vez, ela apaga esta linha do arquivo.
Código para oder arquivo OBD.py:
Importanfragen
import time while True: try: time.sleep(0.2) url = '' with open('obd_data.dat', 'r') as fin: data = fin.read().splitlines(True) url = data[0] request.post(url) with open('obd_data.dat', 'w') as fout: fout.writelines(data[1:]) außer: print 'Exception'
Caso tenha Algum problema copiando estes códigos, baixe os arquivos abaixo:
Schritt 10: Repetição De Scripts E Armazenamento De Dados Capturados Do Carro
Tudo oder que foi feito até agora era Orientado a Garantir que a DragonBoard fizesse comunicação com os verschiedene Komponenten zur Lösung, Como und Comunicação 3G, WiFi, Bluetooth, Dados zu GPS, alle Outros.
Vamos usar oder código abaixo para editar oder arquivo 'rc.local', que já tem algumas funções e comandos pre-definidos, e fica no diretório '/etc'. Para fazer a edição, verwenden Sie o comando:
sudo nano /etc/rc.local
Agora precisamos configurar a inicialização de todos os processos, serviços and funções, crando rotinas para que funcionem automaticamente ao iniciar a Dragonboard. Vamos utilizar o BASH para fazer isso. O BASH (Bourne-Again-SHell) ist eine Anwendung für die Interpretation von Unix-Kommandos.
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 semper antes do a com.
wenn [! -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 & beenden 0
Ein Teil der Agora, ein Platz für Iniciada, eine Verbindung mit 3G-Verbindungen und Umgebungen mit GPS- und OBD-Anschlüssen für andere Dienste.
Schritt 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
É präzises ter muito cuidado na hora de sendir 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 oder cambio automático não aceitava mais mudanças, ficou travado. Além disso, wie luzes painel começaram a piscar aleatoriamente tun. A solução para este evento que ocasionamos foi o desligamento dos cabos da bateria, mantendo assim por 15 minutos. Desta forma, forçamos oder reset completo the 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 oder 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 auf DragonBoard
Ein Qualcomm Dragonboard 410c ist ohne interne GPS-Antennen, für die Signalempfangsfunktion, für die genaue Installation oder für den Anschluss an die externe Antenne erforderlich. Para fazer este procedimento, siga os passos propostos pela própria Qualcomm:
Schritt 12: Referenzen
Bootloader
builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/
Linaro
builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/
Como instalar oder Linaro na DragonBoard 410c
www.embarcados.com.br/linux-linaro-alip-na-qualcomm-dragonboard-410c/
GPS-Dokumentation für DragonBoard
discuss.96boards.org/t/gps-software/170/16
GPS-Demo
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/
Instruções para criação do tunel SSH
gist.github.com/kr0no/63e34c77b02843b46a8d89d8f7b5e4b6
Instalando oder SSH kein Linux
ask.xmodulo.com/install-autossh-linux.html