Estado: En desarrollo
Vehículo: Kia Soul 2016
Última actualización: Septiembre de 2026

Introducción
Este proyecto nace de una idea sencilla: tratar un vehículo como una fuente de datos, de una forma parecida a como se haría con una máquina o un proceso dentro de un sistema de automatización.
El objetivo es desarrollar progresivamente un pequeño sistema de adquisición y registro de datos para un Kia Soul 2016, utilizando OBD-II, una Raspberry Pi Zero 2 W y herramientas como Node-RED, Python, MQTT y SQLite.
El proyecto todavía está en desarrollo. Algunas partes fundamentales ya han sido probadas directamente con el vehículo, mientras que otras siguen en fase de diseño o integración.
La primera versión estará enfocada únicamente en monitoreo y registro de información. No se pretende controlar actuadores, reprogramar la ECU ni modificar parámetros del vehículo. El objetivo inicial es obtener datos, almacenarlos y eventualmente utilizarlos para visualización y análisis.
Objetivo del proyecto
La meta es construir un datalogger vehicular capaz de registrar diferentes variables mientras el vehículo está funcionando.
Entre los datos que se quieren recopilar se encuentran:
- RPM del motor.
- Velocidad del vehículo.
- Temperatura del refrigerante.
- Carga calculada del motor.
- Short-Term Fuel Trim (STFT).
- Long-Term Fuel Trim (LTFT).
- Presión MAP y/o flujo MAF, cuando estén disponibles.
- Voltaje reportado por el adaptador o algún módulo.
- Temperatura del lugar donde se instalará la electrónica.
Más adelante podrían investigarse otros parámetros, siempre dependiendo de lo que realmente esté disponible mediante OBD-II en este vehículo
Otra condición importante es que el sistema debería poder registrar información sin depender de una conexión a Internet.
Materiales y Herramientas
El proyecto todavía no tiene todos sus componentes implementados. Algunos ya están disponibles y han sido probados, mientras que otros forman parte del diseño previsto.
| Componente | Función |
| Raspberry Pi Zero 2 W | Computador principal del datalogger |
| Tarjeta microSD | Sistema operativo y almacenamiento |
| Adaptador OBD-II USB compatible con ELM327 | Comunicación con el vehículo |
| Adaptador micro-USB OTG | Conectar el lector USB a la Raspberry Pi |
| Extensión OBD-II de perfil bajo | Facilitar un montaje permanente |
| Fuente automotriz regulada de 5 V | Alimentar la Raspberry Pi |
| Sensor DS18B20 | Medir temperatura del compartimiento electrónico |
| Caja impresa en 3D | Proteger y fijar el sistema |
| Sistema UPS / apagado seguro | Evitar cortes bruscos de alimentación |
El diseño actual también contempla herramientas de software como Node-RED, Python-OBD, Mosquitto/MQTT y SQLite, aunque la arquitectura final todavía se está evaluando.
¿Cómo funcionaría?

La comunicación validada hasta ahora sigue este recorrido: el Kia Soul entrega información a través del puerto OBD-II, el adaptador ELM327 USB actúa como interfaz entre el vehículo y el computador, y finalmente los datos se reciben mediante una comunicación serial.
A partir de ese punto se están evaluando dos formas de manejar la adquisición de datos.
Opción 1: Node-RED directamente

En esta alternativa, el adaptador ELM327 se conecta por puerto serial directamente con Node-RED. Node-RED sería responsable de recibir los datos, procesarlos, convertir las respuestas OBD-II en variables utilizables y enviarlas posteriormente al dashboard o al sistema de almacenamiento.
El recorrido sería:
ELM327 → comunicación serial → Node-RED → procesamiento → dashboard y almacenamiento en SQLite.
Esta opción ya ha sido probada de forma inicial utilizando Node-RED en un computador.
Opción 2: Python-OBD como capa de adquisición

La segunda alternativa consiste en utilizar Python-OBD como responsable de mantener la comunicación con el adaptador ELM327.
Python-OBD obtendría e interpretaría las lecturas del vehículo y posteriormente publicaría los datos mediante MQTT. Node-RED recibiría esos mensajes para realizar el procesamiento, la visualización y la lógica del sistema.
El recorrido propuesto sería:
ELM327 → Python-OBD → MQTT → Node-RED → procesamiento y visualización → SQLite.
En esta arquitectura, MQTT transportaría la información entre los procesos, mientras que SQLite se utilizaría para almacenar el histórico de las mediciones.
Todavía no se ha decidido cuál de estas dos alternativas será la arquitectura definitiva del proyecto. La elección dependerá principalmente de la estabilidad de la comunicación, la facilidad de mantenimiento y el consumo de recursos en la Raspberry Pi Zero 2 W.
Avances actuales
Antes de instalar la Raspberry Pi en el vehículo, decidí comprobar primero si el adaptador OBD-II realmente podía comunicarse con el Kia. Las primeras pruebas se realizaron utilizando un PC con Windows, un adaptador USB compatible con comandos ELM327 y programas de terminal serial como PuTTY y posteriormente RealTerm.
Después de probar diferentes configuraciones se encontró una configuración funcional:
Baud rate: 38400
Data bits: 8
Parity: None
Stop bits: 1
Flow control: None
El adaptador respondió correctamente como:
ELM327 v1.5
Eso confirmó que la comunicación entre el PC y el adaptador estaba funcionando.
El siguiente paso fue intentar comunicarse con la ECU del vehículo.
Inicialmente la detección automática de protocolo no funcionó correctamente. La comunicación comenzó a funcionar al utilizar:
ATSP6
Una lectura real
Una de las primeras pruebas consistió en solicitar la temperatura del refrigerante mediante el PID:
0105
La respuesta recibida fue:
41 05 70
El valor 70 está expresado en hexadecimal.
Convertido a decimal:
0x70 = 112
Para este PID, la temperatura se calcula restando 40:
112 - 40 = 72 °C
El resultado fue aproximadamente 72 °C.
También se obtuvo una respuesta válida para la velocidad del vehículo. Como el Kia estaba detenido durante la prueba, el valor obtenido fue 0 km/h.
Este fue un punto importante del proyecto porque confirmó que ya no se estaba hablando únicamente con el ELM327: se estaban obteniendo datos reales provenientes del vehículo.
Primeras pruebas con Node-RED
Una vez comprobada manualmente la comunicación OBD-II, comenzaron las primeras pruebas con Node-RED, inicialmente desde un computador.
Node-RED logró recibir información proveniente del adaptador, pero apareció un nuevo problema: los datos seriales no siempre llegaban como una respuesta completa.
En algunas pruebas, por ejemplo, una respuesta podía aparecer fragmentada carácter por carácter.
Esto significa que todavía es necesario trabajar en:
- buffering de datos;
- identificación del final de cada respuesta;
- eliminación de caracteres CR/LF;
- secuencia correcta de comandos;
- tiempos entre consultas;
- conversión de respuestas hexadecimales;
- detección de errores y desconexiones.
En otras palabras: la comunicación funciona, pero todavía falta convertirla en una adquisición de datos organizada y confiable.
Próximos pasos
La siguiente fase será trasladar progresivamente las pruebas al sistema basado en Raspberry Pi.
Los principales objetivos son:
- estabilizar la comunicación OBD-II;
- identificar los PIDs realmente soportados por el Kia;
- definir si la adquisición se realizará directamente desde Node-RED o mediante Python-OBD;
- convertir las respuestas a variables utilizables;
- almacenar las mediciones en SQLite;
- crear un dashboard básico;
- incorporar el sensor de temperatura;
- desarrollar un sistema de alimentación y apagado seguro;
- diseñar la caja y el montaje dentro del vehículo.
El sistema también deberá distinguir entre una lectura válida, un PID no soportado, una desconexión y un error. Un dato ausente no debería almacenarse automáticamente como cero.
Conclusión
El proyecto todavía está en desarrollo, pero una de las preguntas más importantes ya tiene respuesta:
sí es posible obtener datos OBD-II reales de este Kia Soul y llevarlos hacia herramientas utilizadas normalmente en automatización y adquisición de datos.
Hasta ahora se ha conseguido establecer comunicación con el ELM327, identificar una configuración serial funcional, comunicarse con la ECU mediante CAN y obtener parámetros reales del vehículo.
El siguiente reto será convertir estas pruebas individuales en un sistema autónomo basado en Raspberry Pi que pueda adquirir, organizar, almacenar y visualizar información de manera confiable.
Esta entrada irá evolucionando conforme avance el proyecto.


