Índice:
- Etapa 1: Executar a configuração inicial do DragonBoard 410c **
- Etapa 2: localizando seu DragonBoard 410c usando sua antena GPS
- Etapa 3: Instalando o Dongle USB 3G / 4G
- Etapa 4: Transformar o DragonBoard 410c em um ponto de acesso / ponto de acesso Wifi
- Etapa 5: Acessando o DragonBoard 410c sem fio usando SSH, via conectividade de ponto de acesso
- Etapa 6: Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 1/2
- Etapa 7: Conectando o DragonBoard 410c ao OBD do carro usando Bluetooth - Parte 2/2
- Etapa 8: Conectando o DragonBoard 410c ao OBD do carro usando o PyOBD
- Etapa 9: Leitura de dados do carro, usando Python
- Etapa 10: Scripts recorrentes e procedimento de armazenamento de dados para os dados capturados
- Etapa 11: Problemas ao longo do caminho
- Etapa 12: Referências
Vídeo: DragonBoard e OBD2: 12 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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 **
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
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
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
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
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
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
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
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
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
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
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
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:
Tacômetro / Medidor de varredura usando Arduino, OBD2 e barramento CAN: 8 etapas
Tacômetro / Medidor de varredura usando Arduino, OBD2 e ônibus CAN: Qualquer proprietário de Toyota Prius (ou outro veículo híbrido / especial) saberá que seus painéis podem estar faltando alguns mostradores! Meu prius não tem RPM do motor ou medidor de temperatura. Se você é um cara de desempenho, você pode querer saber coisas como o tempo de avanço e
Como conectar e controlar uma lâmpada através do módulo ZigBee no Dragonboard: 5 etapas
Como conectar e controlar uma lâmpada através do módulo ZigBee no Dragonboard: Este instrutível ensina o usuário como conectar e instalar corretamente o módulo ZigBee no Dragonboard e interagir com uma lâmpada controlada ZigBee (OSRAM), formando uma rede IOT ZigBee.Requisitos : Dragonboard 410c; CC2531 Dongle USB; T
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 etapas
Vision 4all - Sistema Visão 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 internos como casas ou shopping centers e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Detectando situações emergenciais - Qualcomm Dragonboard 410c: 7 etapas
Detectando Situações Emergenciais - Qualcomm Dragonboard 410c: Ao procurar sistemas de segurança que atuem no monitoramento de situações emergenciais, é possível perceber que é muito difícil processar todas as informações registradas. Pensando nisso, decidimos usar nosso conhecimento em processamento de áudio / imagem, sensores e
Leitor OBD2 Bluetooth: 3 etapas
OBD2 Bluetooth Reader: Bem-vindo, este é o meu primeiro Instructable e espero que seja fácil de entender e você pode fazer o seu próprio. Se você tiver alguma dúvida sinta-se à vontade para entrar em contato comigo e talvez eu possa ajudá-lo. Vou tentar tornar isso extremamente simples de seguir com isso