Tabla de contenido:

DragonBoard y OBD2: 12 pasos
DragonBoard y OBD2: 12 pasos

Video: DragonBoard y OBD2: 12 pasos

Video: DragonBoard y OBD2: 12 pasos
Video: EASY FIX - OBD II data port has no power 2024, Noviembre
Anonim
DragonBoard y OBD2
DragonBoard y OBD2

Al leer los datos que salen del puerto OBD2 de su automóvil, es posible recopilar información asombrosa. Utilizando DragonBoard 410c, trabajamos en este proyecto y lo detallamos aquí para que pueda hacerlo usted mismo.

Este proyecto solo fue posible gracias a la alianza con #Qualcomm #Embarcados #Linaro #Arrow #BaitaAceleradora que nos permitió tener acceso al mejor hardware del mercado, así como el contacto con los mejores profesionales para apoyar el desarrollo.

El equipo estaba compuesto por estos chicos:

Estamos muy interesados en ayudarlo a lograr su objetivo y asegurarnos de que complete su proyecto, así que háganos saber si necesita ayuda más allá de las instrucciones a continuación.

Para seguir este projeto em Português, clique aqui:

www.instructables.com/id/DragonBoard-Com-OBD

Para este proyecto utilizamos los siguientes elementos:

  • Qualcomm DragonBoard 410c
  • Interfaz ELM327 Bluetooth OBD2
  • Dongle USB 3G / 4G
  • Cargador de coche con inversor de tensión (110v)

Paso 1: Realización de la configuración inicial de DragonBoard 410c **

Realización de la configuración inicial de DragonBoard 410c **
Realización de la configuración inicial de DragonBoard 410c **
Realización de la configuración inicial de DragonBoard 410c **
Realización de la configuración inicial de DragonBoard 410c **
Realización de la configuración inicial de DragonBoard 410c **
Realización de la configuración inicial de DragonBoard 410c **

Usando Qualcomm DragonBoard 410c, comenzamos el proyecto instalando la distribución de Linux llamada Linaro, lo que nos permitió configurar todos los dispositivos necesarios.

Para crear una imagen de Linaro para DragonBoard, use Ubunto en VirtualBox, para que pueda usar FastBoot (que es una aplicación basada en Linux). Entonces, básicamente, lo que tiene que hacer es abrir la Terminal en la VM Ubuntu e ingresar:

sudo apt-get android-tools-fastboot

Para instalar Linaro, tenemos que seguir 2 pasos importantes:

1) Instalación del BOOTLOADER

Nombre de archivo: dragonboard410c_bootloader_emmc_linux-79.zip

builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/

Descomprime los archivos y selecciona la carpeta:

cd / FolderName (ruta a la carpeta descomprimida)

Ingrese el siguiente código:

dispositivos sudo fastboot

Rendimiento esperado:

(hexadecimal) fastboot

Luego escribe:

sudo./flashall

Rendimiento esperado:

finalizado. tiempo total 1.000s (sin errores)

Instalación del SISTEMA OPERATIVO

builds.96boards.org/releases/dragonboard410c/linaro/debian/latest/

Descarga estos 2 archivos:

boot-linaro-stretch-qcom-snapdragon-arm64-20170607-246.img.gz

Esta es la última versión disponible hasta la fecha (17 de junio), por lo que el nombre podría cambiar en el futuro. El patrón que estaría buscando es "boot-linaro-VersionName". Este se llama "Estirar" y el anterior era "Jessie".

linaro-stretch-alip-qcom-snapdragon-arm64-20170607-246.img.gz

Esta es la última versión hasta la fecha (junio / 17) y el nombre podría cambiar en el futuro. Busque el patrón "linaro-VersionName-alip".

Descomprime los archivos del. GZ

Accede a la carpeta "raíz", en relación con los archivos descomprimidos.

ejemplo: "/ Descargas", que es el lugar donde se almacenan los archivos descargados.

Ahora comience con los siguientes comandos:

dispositivos sudo fastboot

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

Retorno esperado (recordando que el tiempo puede variar):

finalizado. tiempo total: 100.00 s

Conecte un mouse, teclado y un monitor / TV usando el puerto HDMI

Ten esto a mano:

usuario: linaro

contraseña: linaro

Abra la aplicación Lxterminal y proceda con la descarga de la lista de actualizaciones disponibles, con respecto a los paquetes instalados:

sudo apt-get update

Asegúrese de instalar los paquetes disponibles de la lista:

sudo apt-get upgrade

Sugerencia: Linaro fue elegido debido a un arranque extremadamente rápido y una comunidad muy comprometida y orientada a la resolución de problemas, lo que ahorra mucho tiempo.

Paso 2: Ubicar su DragonBoard 410c usando su antena GPS

Ubicación de la DragonBoard 410c mediante su antena GPS
Ubicación de la DragonBoard 410c mediante su antena GPS
Ubicación de la DragonBoard 410c mediante su antena GPS
Ubicación de la DragonBoard 410c mediante su antena GPS

Comience instalando las aplicaciones necesarias que serán los clientes del módulo GPS. Los nombres de las aplicaciones son: GNSS-GPSD, GPSD y GPSD-CLIENTS. Para hacerlo, siga los comandos:

sudo apt-get install gnss-gpsd gpsd gpsd-clients

Con estas aplicaciones instaladas, necesitará más comandos para iniciarlo correctamente:

sudo systemctl start qdsp-start.service

sudo systemctl start gnss-gpsd.service sudo systemctl start qmi-gps-proxy.service

Ahora lleve el DragonBoard 410c a un área amplia y abierta, con una vista despejada del cielo, lo que le permitirá recibir la señal de los satélites. Ahora escribe en la terminal:

gpsmon –n

De nuestras pruebas, los datos comenzarían a aparecer en la pantalla después de 10 minutos, en promedio. Eso cambia mucho de un lugar a otro, además de la posición del DragonBoard en la ventana, o en el interior, además de muchas otras barreras que pueden interferir en la recepción de la señal GPS.

Paso 3: Instalación del Dongle USB 3G / 4G

Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G
Instalación del Dongle USB 3G / 4G

Hay varias formas de conectar la DragonBoard 410c a la red 3G / 4G / GSM:

  • Usar un Shield / BreakoutBoard con un módem GSM que también tiene una ranura SimCard;
  • Utilice un Dongle USB 3G / 4G.

Para este proyecto, decidimos usar el Dongle USB E3272 de Huawei, porque era fácil y rápido comprar uno.

Para configurar el módem, puede usar el terminal (usando la aplicación WVDial), pero la forma más fácil de hacerlo es usando la interfaz gráfica de usuario (GUI) de Linaro. Para ello de la siguiente manera:

  • Con la llave USB conectada a la DragonBoard, haga clic con el botón derecho en el icono de "redes" en la esquina inferior derecha de la pantalla;
  • "Editar conexiones"> "Agregar";
  • Elija "Banda ancha móvil" en el menú desplegable;
  • Haga clic en "Crear".

Siga las instrucciones del asistente, asegurándose de seleccionar el operador adecuado en el menú, permitiendo que el dispositivo se conecte en consecuencia.

Paso 4: Transformar la DragonBoard 410c en un punto de acceso / punto de acceso Wifi

Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
Transformación de la DragonBoard 410c en un punto de acceso / punto de acceso Wifi

La forma más sencilla de configurar la DragonBoard 410c como un enrutador wifi o un punto de acceso (ahora que ha configurado la conexión a Internet) es utilizar la GUI del sistema. Para hacer eso, siga los pasos a continuación:

  • Haga clic con el botón derecho en el icono de red en la esquina inferior derecha
  • Elija "Editar conexiones y luego" Agregar"
  • Elija "WiFi"
  • Haga clic en crear

Cambie el nombre de la red que desea crear en el campo "SSID" y cambie el campo "Modo" a "Hotspot".

Para asegurarse de que funcione, verifique lo siguiente:

  • Vaya a la pestaña "Configuración de IPv4"
  • Verifique si el "Método"

Paso 5: Acceder a la DragonBoard 410c de forma inalámbrica mediante SSH, a través de la conectividad del punto de acceso

Acceso a la DragonBoard 410c de forma inalámbrica mediante SSH, mediante conectividad de punto de acceso
Acceso a la DragonBoard 410c de forma inalámbrica mediante SSH, mediante conectividad de punto de acceso

Logramos crear una forma de acceder a DragonBoard de forma remota, sin importar si estás cerca o no. Por lo general, necesitaría conectarse a la placa en sí, mediante wifi o bluetooth. Otra forma sería acceder a él conectándose a la misma Red Wifi (por ejemplo: desde un enrutador). Al realizar los siguientes pasos, estamos creando un dispositivo autónomo, que genera su propia red y se abre a la web para ser accedido.

Puede comenzar instalando el "Auto SSH", usando el siguiente código:

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

Ahora vamos a generar una clave criptográfica, usando el estándar RSA. Esta clave se utilizará para acceder de forma segura a una instancia de punto final de Linux, a través de la IP pública del módem 3G. El objetivo principal de este paso. El siguiente código copiará esa clave en el repositorio de claves confiables de Linux, asegurándose de que haya aún más seguridad en la conexión.

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

Siguiendo estos pasos, acaba de transformar Qualcomm DragonBoard 410c en un servidor en la nube. / o /

Paso 6: Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2

Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2

La interfaz de comunicación del automóvil se realiza a través de un puerto OBD2. La información que se intercambia en este puerto necesita ser traducida, y para eso necesitamos un dispositivo de interpretación. Hay dos alternativas de hardware: ELM327 o STN1170.

Para este proyecto, usamos un dispositivo Bluetooth con un chipset basado en ELM327.

Es importante tener en cuenta que la disponibilidad del ELM327 no significa que sea la VERSIÓN ORIGINAL del ELM327. La mayor parte de los conjuntos de chips disponibles se basan en la versión 1.5, que fue cuando la información del chip se clonó y se filtró al mercado. El ELM327 original está ahora en la versión 2.2. La evolución de este chipset aporta más datos sobre los coches más nuevos. Es importante saber eso, porque dependiendo de las pruebas, es posible que no pueda acceder a los datos de los vehículos más nuevos.

Con el adaptador Bluetooth OBD2, busque el puerto OBD2 de su automóvil. Puede ubicarse en algún lugar debajo del volante. Puede ser más fácil buscarlo con esta herramienta:

Acceda a la DragonBoard 410c usando SSH, desde su computadora portátil (recuerde que ahora está en el automóvil y no tiene un televisor / monitor para enchufar la placa). Tan pronto como el dispositivo Bluetooth OBD2 se inserte en el puerto del automóvil, siga los pasos a continuación para acceder a la conectividad bluetooth.

sudo bluetoothctl

emparejable en el agente en el escaneo del agente predeterminado enEn esta etapa es importante que copie la dirección MAC porque la necesitará para los siguientes pasos

Escriba estos comandos:

confía en MACADDRESS

emparejar MACADDRESS

Debería recibir una solicitud para escribir el código PIN para emparejar el OBD2 Bluetooth con la placa.

Por lo general, el código PIN es 1234 o 0000, depende de su hardware

Ahora debería ver la pantalla "Conexión exitosa". Para salir de la aplicación Bluetooth, use el siguiente comando:

dejar

El siguiente paso es VINCULAR el dispositivo con el puerto serie:

sudo rfcomm bind 0 MACADDRESS 1

Para asegurarse de que la operación se haya realizado correctamente, escriba:

ls / dev

Debe aparecer el puerto "Rfcomm0".

Paso 7: Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2

Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2
Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2

El principal objetivo de este paso es garantizar que la comunicación entre los 3 dispositivos esté funcionando:

ELM327, DragonBoard 410c y el coche

Descargue la aplicación "Screen" para enviar mensajes en serie a través del puerto en serie

sudo apt-get instalar pantalla

El puerto serie se utilizará para enviar comandos AT y recibir las respuestas entre la DragonBoard 410c y el dispositivo ELM327.

Acceda al siguiente enlace para obtener más información sobre los comandos AT:

elmelectronics.com/ELM327/AT_Commands.pdf

Advertencia:

¡Ten mucho cuidado con este paso! Toda la información que envíe al dispositivo será interpretada y enviada al automóvil; si se envía un mensaje incorrecto, el automóvil puede malinterpretarlo y causar problemas. Preste atención a los comandos y estudielos antes de intentar su propio código. Recomendamos encarecidamente seguir las instrucciones a continuación al pie de la letra.

Siga la secuencia de comandos a continuación para iniciar la comunicación:

  • Esta función iniciará la comunicación en serie usando la pantalla:

    screen / dev / rfcomm0

Tan pronto como se cargue el terminal, escriba los siguientes comandos en esta secuencia:

ATZ

ATL1 ATH1 ATS1 ATSP0

Prueba de comunicación final:

Escribe en la consola:

ATI

Debería devolver "ELM327 v1.5" o la versión ELM de su dispositivo

Esta es una prueba de que la comunicación del dispositivo ELM y la DragonBoard 410c está funcionando

Consejo rapido

Para salir de "Pantalla" es necesario escribir Ctrl + A seguido de Ctrl + D.

Paso 8: Conexión de la DragonBoard 410c al OBD del automóvil mediante PyOBD

Conexión de la DragonBoard 410c al OBD del automóvil mediante PyOBD
Conexión de la DragonBoard 410c al OBD del automóvil mediante PyOBD

PyOBD es una biblioteca de Python para permitir la comunicación con dispositivos OBD2 que se pueden conectar a automóviles. Con eso, podemos extraer información diversa, incluida la velocidad del vehículo y los errores eléctricos.

En este paso, debemos asegurarnos de que las siguientes bibliotecas de Python estén instaladas en Linaro de su DragonBoard 410c:

  • PIP: administrador de paquetes de Python

    sudo apt-get install python-pip

  • SetupTools - administrador de instalación de archivos

    sudo pip install -U pip setupstools

  • Rueda: instale el formateador de paquetes

    sudo apt-get install python-wheel

  • OBD: biblioteca de Python para comunicarse con el dispositivo OBD

    sudo apt-get install python-obd

  • GPS: biblioteca de Python para obtener datos del GPS

    sudo pip instalar gps

  • Solicitudes: paquete de Python para RESTful

    solicitudes de instalación de sudo pip

Para verificar si el paquete de OBD funciona correctamente, siga estos pasos:

sudo python

Ahora el cursor de la terminal se cambiará a ">>>", lo que indica que Python se está ejecutando. Ahora puede comenzar a escribir los siguientes comandos:

  • Comience importando la biblioteca OBD:

    importar obd

  • Para conectarse al puerto serie use el comando:

    conexión = antiguo. OBD ("dev / rfcomm0")

  • Es normal que se muestre un mensaje de error que diga que la comunicación falló, así que si eso sucede, intente una vez más.
  • Para saber si Python obtiene información del automóvil que pasa por ELM327 a través de bluetooth, escriba lo siguiente:

    connection.protocol_name ()

Paso 9: lectura de datos desde el automóvil, usando Python

Lectura de datos desde el automóvil, usando Python
Lectura de datos desde el automóvil, usando Python

Crearemos un archivo llamado: OBD.py, como se indica a continuación, seguido del código.

Comience importando la biblioteca OBD en Python para iniciar las conexiones.

Por razones desconocidas, utilizando nuestro hardware, el primer intento de conexión siempre falla. Segundo intento, siempre funciona. Es por eso que en el código, notará dos líneas de comando que intentan hacer la conexión.

Después de que la conexión es exitosa, comenzamos un bucle infinito, que busca datos OBD, los formatea de acuerdo con parámetros preestablecidos. Después de eso, crea una URL, usando Query String, permitiendo que se envíe al servidor usando el método POST.

En el siguiente ejemplo, logramos obtener la siguiente información:

  • RPM
  • Velocidad

Las funciones para capturar datos utilizan dos parámetros. Por ejemplo, utilizando [1] [12] está buscando [módulo] [PID]. La lista de funciones se puede encontrar en:

Por último, genere la URL con toda la información concatenada y agregada al archivo, llamado "obd_data.dat".

El código para OBD.py se encuentra a continuación.

Luego de conectar y capturar los datos, crearemos un archivo llamado: envia_OBD.py

Esta parte del código se vuelve más simple. Importe las bibliotecas relacionadas con la solicitud / envío de datos, utilizando RESTFUL.

Cree un WHILE para usar POST y envíe la URL de la primera línea del archivo, previamente poblada por OBD.py. Después de eso, para evitar que se vuelvan a enviar datos, borra esa línea del archivo.

El código para el archivo OBD.py se encuentra a continuación.

Paso 10: Scripts recurrentes y procedimiento de almacenamiento de datos para los datos capturados

Scripts recurrentes y procedimiento de almacenamiento de datos para los datos capturados
Scripts recurrentes y procedimiento de almacenamiento de datos para los datos capturados

Todo lo que hemos hecho hasta ahora estaba orientado a asegurarnos de que DragonBoard se comunicara correctamente con los componentes, como 3G, Wifi, Bluetooth, datos de GPS y más.

Utilice el siguiente código para editar el archivo "rc.local", que ya tiene algunas funciones y comandos predefinidos. Está ubicado en '/ etc'. Para editar, use el comando:

sudo nano /etc/rc.local

Ahora necesitamos configurar todos los servicios y funciones, creando rutinas que se inicializan automáticamente cuando se inicia DragonBoard. Usemos BASH para hacer esto. BASH (Bourne-Again-SHell) es una aplicación de interpretación de comandos de Linux.

El siguiente código tiene comandos BASH y deberá insertar la dirección MAC de Bluetooth / OBD. Tenga mucho cuidado de asegurarse de terminar el código con "salida 0", que es la respuesta del sistema de que la acción se realizó correctamente.

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 ahora, cada vez que encienda la DragonBoard, se conectará a 3G y enviará datos GPS y OBD al servidor elegido.

Paso 11: Problemas en el camino

Problemas en el camino
Problemas en el camino

A continuación, enumeramos algunos de los problemas que encontramos en el camino antes de escribir este Instructable, pero pensamos que podría ayudarlo si le sucede a usted.

  • PyOBD

    Debe tener mucho cuidado al enviar datos mientras se comunica con el automóvil. En uno de nuestros primeros intentos, cuando la comunicación no era estable, enviamos el comando incorrecto que básicamente bloqueó la ECU. La palanca de cambios estaba atascada en el estacionamiento y algunas de las luces del tablero seguían parpadeando al azar. La solución encontrada fue desconectar uno de los cables de la batería durante unos 15 minutos. Esto restablece la ECU a su estado predeterminado de fábrica y, por lo tanto, cancela cualquier comando o cambio que hayamos realizado

  • Linaro

    Tuvimos un problema con nuestro DragonBoard, que seguía reiniciando esporádicamente. El problema fue resuelto por el equipo de Linaro, que lanzó una versión más reciente del sistema operativo. Escribimos este tutorial con la versión actualizada

  • GPS de DragonBoard

    DragonBoard 410c de Qualcomm no tiene una antena GPS interna, por lo que para mejorar la adquisición de la señal GPS, necesitamos instalar un conector para una antena externa. Este proceso se explica mejor en el siguiente enlace:

Paso 12: referencias

Referencias
Referencias

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/

Recomendado: