Volif_
Probationary Member
- 22
- 11
- Nov 20, 2022
-
Ljubljana,
Europe
Hey everyone,
I've been working on something for my car for a while now and wanted to see if anyone here would be interested in following along.
How it started
About three years ago this began as a standalone Arduino project for a course in my undergrad physics program. The inspiration was my 1990 Eclipse 1.8, which liked to misbehave now and then, and I got tired of having a laptop plugged in every time I drove just to see what the ECU was doing. I wanted something that lived in the car.
It was my first ever Arduino project, and my professor helped me a ton along the way. I learned way more than I expected, both about how the car talks and about electronics in general. What started as a class project slowly spiraled into what it is now.
Credit where it's due
A big part of getting started was rizal's Mitsuduino work: his blog (https://mitsuduino.blogspot.com/) and his thread here (https://www.dsmtuners.com/threads/on-board-diagnostic-between-mitsubishi-ecu-using-arduino.464711/). He got an Arduino talking to a 1G ECU, but the project was never finished or fully documented, so there were gaps to fill. Still, it pointed me in the right direction and saved me a lot of time. Thanks also to Steve for explaining the echo and the command list in that thread, and to Christian who put together the commented E931/E932 disassembly, which became my main reference.
Talking to the ECU
Getting reliable communication with the ECU was the hardest part of the whole project. A few things that tripped me up:
From Arduino to Argus
The Arduino proved the concept, but I wanted a real screen, proper logging and room to grow, so I rebuilt it as Argus, a touchscreen dash that runs on a Raspberry Pi.
What I used (broadly)
What Argus does so far
Where it's at
Still very much a work in progress. The Arduino version works, but I'm waiting on my Raspberry Pi 4 before Argus goes in the car. So far Argus has only run against the simulator, so real in-car testing is next.
Ideas for later: add-on sensors (the stock 1G ECU has no MAP sensor, so boost, wideband AFR, EGT and oil pressure/temp would come from extra sensors), GPS, and one-tap log export to a USB stick.
Would you want me to keep posting updates here?
What would you want to see on a screen like this?
Thanks for reading, and thanks again to everyone whose old posts made this possible.
I've been working on something for my car for a while now and wanted to see if anyone here would be interested in following along.
How it started
About three years ago this began as a standalone Arduino project for a course in my undergrad physics program. The inspiration was my 1990 Eclipse 1.8, which liked to misbehave now and then, and I got tired of having a laptop plugged in every time I drove just to see what the ECU was doing. I wanted something that lived in the car.
It was my first ever Arduino project, and my professor helped me a ton along the way. I learned way more than I expected, both about how the car talks and about electronics in general. What started as a class project slowly spiraled into what it is now.
You must be logged in to view this image or video.
Credit where it's due
A big part of getting started was rizal's Mitsuduino work: his blog (https://mitsuduino.blogspot.com/) and his thread here (https://www.dsmtuners.com/threads/on-board-diagnostic-between-mitsubishi-ecu-using-arduino.464711/). He got an Arduino talking to a 1G ECU, but the project was never finished or fully documented, so there were gaps to fill. Still, it pointed me in the right direction and saved me a lot of time. Thanks also to Steve for explaining the echo and the command list in that thread, and to Christian who put together the commented E931/E932 disassembly, which became my main reference.
Talking to the ECU
Getting reliable communication with the ECU was the hardest part of the whole project. A few things that tripped me up:
- The ECU talks at an odd 1953 baud, one byte in and one byte out
- Everything runs on a single wire, so every request you send echoes back before the real answer
- Diag pin 10 has to be grounded, otherwise the ECU just flashes codes on pin 1 instead of talking serial
- Working out which request code is which sensor, and how to turn the raw numbers into real units
From Arduino to Argus
The Arduino proved the concept, but I wanted a real screen, proper logging and room to grow, so I rebuilt it as Argus, a touchscreen dash that runs on a Raspberry Pi.
You must be logged in to view this image or video.
What I used (broadly)
- Arduino (C++) for the original version
- C++ for the ECU communication in Argus
- Qt with QML for the touchscreen interface
- Linux / Raspberry Pi OS on the Pi, and WSL to preview the dash on my Windows laptop
- A small Windows tool for testing the cable, and a web page for viewing logs in any browser
What Argus does so far
- Live data: 20 parameters from the stock ECU (RPM, coolant and intake temps, O2, fuel trims, injector pulse width and more), plus calculated injector duty
- Build-your-own dash: up to 5 swipeable screens. Long-press to edit, drag gauges around, and pick the value, style, size, colour and shift lights for each one. Street, Classic, Track and Tuning layouts to start from
- Gauge styles: big numbers, arcs, needle tach, bar and LED-bar tach, trend lines, centre bars for O2/trims, sweep tach
- Live graphs you can pause, scroll back through and read with a cursor
- Data logging to CSV that saves every few seconds, so pulling the key doesn't lose the log. Review logs on the screen or in a browser on any PC
- Diagnostics: read and clear fault codes, plus a raw console for the curious (actuator tests are blocked on purpose)
- Looks: 7 colour themes, a custom accent colour, and your own logo if you want one
- A start-up intro that also shows the ECU link status while it connects
- Scales to different screens (including 7" displays) and boots straight into the dash on the Pi
- A built-in ECU simulator so I can develop and demo without the car
- A cable test tool that tells you whether a problem is the cable, pin 10 or the port
You must be logged in to view this image or video.
You must be logged in to view this image or video.
You must be logged in to view this image or video.
You must be logged in to view this image or video.
You must be logged in to view this image or video.
You must be logged in to view this image or video.
Where it's at
Still very much a work in progress. The Arduino version works, but I'm waiting on my Raspberry Pi 4 before Argus goes in the car. So far Argus has only run against the simulator, so real in-car testing is next.
Ideas for later: add-on sensors (the stock 1G ECU has no MAP sensor, so boost, wideband AFR, EGT and oil pressure/temp would come from extra sensors), GPS, and one-tap log export to a USB stick.
Would you want me to keep posting updates here?
What would you want to see on a screen like this?
Thanks for reading, and thanks again to everyone whose old posts made this possible.
Attachments
You must be registered for see attachments list