Tabla de contenido:
- Paso 1: Realización de la configuración inicial de DragonBoard 410c **
- Paso 2: Ubicar su DragonBoard 410c usando su antena GPS
- Paso 3: Instalación del Dongle USB 3G / 4G
- Paso 4: Transformar la DragonBoard 410c en un punto de acceso / punto de acceso Wifi
- Paso 5: Acceder a la DragonBoard 410c de forma inalámbrica mediante SSH, a través de la conectividad del punto de acceso
- Paso 6: Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 1/2
- Paso 7: Conexión de la DragonBoard 410c al OBD del automóvil mediante Bluetooth - Parte 2/2
- Paso 8: Conexión de la DragonBoard 410c al OBD del automóvil mediante PyOBD
- Paso 9: lectura de datos desde el automóvil, usando Python
- Paso 10: Scripts recurrentes y procedimiento de almacenamiento de datos para los datos capturados
- Paso 11: Problemas en el camino
- Paso 12: referencias
Video: DragonBoard y OBD2: 12 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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:
- Marcel Ogando - Hacker - [email protected]
- Leandro Alvernaz - Hacker - [email protected]
- Thiago Paulino Rodrigues - Marketing - [email protected]
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 **
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
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
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
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
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
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
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
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
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
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
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
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:
Tacómetro / medidor de escaneo usando Arduino, OBD2 y CAN Bus: 8 pasos
Tacómetro / medidor de escaneo usando Arduino, OBD2 y CAN Bus: ¡Cualquier propietario de Toyota Prius (u otro vehículo híbrido / especial) sabrá que a sus tableros les pueden faltar algunos diales! Mi prius no tiene RPM del motor ni indicador de temperatura. Si le gusta el rendimiento, es posible que desee saber cosas como el avance del tiempo y
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
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
Lector OBD2 Bluetooth: 3 pasos
Lector Bluetooth OBD2: Bienvenido, este es mi primer Instructable y espero que sea fácil de entender y puedas crear el tuyo propio. Si tiene alguna pregunta, no dude en ponerse en contacto conmigo y tal vez pueda ayudarlo. Intentaré hacer esto extremadamente simple para seguir con esto