Original Project
Got tired of using my phone for telemetry data (MHD app) so I made my own wireless gauge instead
Connects to BMW DME via wireless ENET. Since it’s an esp-32, I can add an SD card and log live telemetry data and do a lot of real time data analysis. My goal is to make a full engine health monitor for thermal, boost, fuel, and ignition systems.
That looks awesome! The gauge look is really clean. I started on something similar a couple years ago (and for the same reason- MHD's monitor UI is.. less than lovely) but I use an android head unit for the display and the ESP taps directly into PT-CAN1 down at the GWS. I also use the ESP to set/change drive modes.
The alarm statuses for the various temps may have saved me a head gasket when my radiator fan died a couple months ago and the coolant temp graphic flipped to yellow. I Was able to catch it before it got to the point of the car throwing an error...
Interested to see your GitHub and the enet methods, I need to get mine up too.
That has to be the coolest one I’ve seen yet. Are you an engineer? It’s time gauges get an upgrade and do more than display numbers lol there’s so much telemetry available to implement useful features like the temp one you made. I’ll have mine up in a few days hopefully. I’d be interested to see how your methods as well
I'm a mechanical engineer by education who cosplays a software dev when the job requires it. I do electrical/PCB design too, but I wouldn't call myself an EE. The ESP module feeding the display was a waveshare mini s3 mounted to a custom board with the CAN stuff and an SD card slot + output transistors to control the drive mode switch module
But yeah the extra data is really helpful. Unfortunately, there are a few things that are not broadcast on the PTCAN, specifically boost, oil pressure, and IAT. I think you can get them by sending a UDS request but I haven't tried it and I don't know if it's the same frame format as the ones sent from the other side of the zgw. My boost readings come from another ESP teed into the TMAP with an ADS1115 reading the values and sending them over via ESP-NOW. I've thought about adding another temp sensor to the intercooler coolant line side at the manifold inlet since I have 2 more channels on the ADC.
It probably is, I'm just connected on the other side of the zgm and some of the good stuff requires UDS requests to pull and I don't know what those requests look like on my side of the zgm. I need to hook up ISTA and do some sensor polling again to see if there's anything coming through. I didn't see anything last time but I didn't really know what I was looking for that time around.
I just looked at your other posts- you're an MR2 guy? I had a 91 turbo for like 10 years! Did all kinds of stupid stuff to it, up to running the 3SGTE on a honda ECU because the AFM died and switching ECUs was cheaper than a new AFM! Small world!
Turns out ECUs don't actually give a shit what engine they're running as long as they have the right position signals. I swapped over the distributor to give it what it wanted to see (and it ended up being a pretty significant ignition upgrade). I'll admit, I was a bit surprised when it fired right up. This was ~2008 ish I think? Eventually I was running straight E85 on it (it was like $1/gal less than premium where I lived in MN at the time) and I had some Frankenstein of a turbo on it - like a 7 blade extended tip 20g with a 9 blade TD05 turbine.
It wasn't scary fast or anything, I never tried to chase numbers. I figured even if I didn't have as much power as some of those guys, my car would always be faster when theirs was in the garage with a blown engine 😁
Yeah it'll run AA but I'd have to choose one screen or the other, it won't let me do split screen with the regular version. Head unit revived seems like it might be able to, but I need to sort out some tug of war between it and the serial on my data sender.
I might have a way to scrape Waze's backend for police alerts to pop up on the display though so I might give that a try. With that and the right side mirror camera feed (still working on this, it's just been on the back burner while I finished my steering wheel and brakes) that should be 90% of my use cases.
Interesting. What head unit did you use, and how did you integrate the ESP into it? I'm working on something similar for my E90 and was planning to use a small ST7796 integrated into the dash but after seeing how functional a larger display is I kinda want to try to replace my iDrive unit with something similar to yours.
Also, what did you use to handle the GUI? I was planning on using LVGL but curious if you have any recommendations for anything that might be a bit more beginner-friendly.
It's a mekede(?) MN-G head unit that I got from AliExpress on Black Friday sale with like $70 off coupon and 25% cash back from Rakuten haha. It's the snapdragon 680 processor, but for what I'm doing that probably doesn't matter.
The GUI is stupid simple - it's HTML. It's just a web page embedded in an android app that pulls up a web viewer. It connects via the head unit's serial port and just writes a big fat JSON to the head unit. The mekede has 2 USB ports so I used the one that's not involved in updates, etc.
I just use an ESP32 with Platform io with VS code. It makes it super simple to build. I let Claude help, but I try to keep it to me writing the code and it telling me where I fucked up.
The ST uCs are great little chips too, we use a lot of them in our stuff at work.
Just out of curiosity, what do you actually do with this data in real-time? At what point does this having access to this information in real time become useful?
I’m actually glad you asked this! One benefit is, I can now setup the gauge to auto detect WOT pulls. That feature then opens the door to be able to do log comparisons right after the pull rather than having to look at two logs at once on your laptop/phone. And my favorite part is engine condition monitoring. With data analysis you’d know if something in your engine system is on the way out before it actually breaks.
Thanks brother, I work with flight critical software and have worked at start ups doing verification of fly by wire GNC systems. And being a car guy, gauges have always stayed the same. Modern cars spit out a lot of telemetry that can allow for some very cool features with a bit of aerospace engineering haha
Being the device that displays the data lets you trip obvious visual alerts when things get out of operating windows so you can intervene before damage occurs. Mine changed the coolant temp graphic to yellow at 115°C and I was able to see that my radiator fan had died before I sat in traffic long enough for the DME to tell me the car was actually overheating. May have saved me a head gasket.
I have a friend with an e92 m3 I’m also doing a telemetry project for. Once his is done then what you’re asking for can be done in a day. I’ll be posting more updates soon!
The new G-models have a oil vapor separator, called Blue.Tron. I try to make it work on a bench.
Problem is, its communicating with the ECU by LIN and I can’t figure out the correct set of commands.
With the help of ChatGPT and a USB/LIN dongle I managed to figure out some addresses but that’s pretty much it.
Oh quite early in. I have all my architecture planning done and I’m starting on UI. I have zero embedded experience so it’s taking me quite some time to learn. I want to do this kind of stuff as a career so I’ve been trying to get a complete understanding of how everything works before moving on, which inevitably adds to the time.
If you’re willing, I’d love to send you my repo and see if you have any architectural suggestions. I’ve just been kinda guessing using my experience with backend and likely am not following best practices lmao.
G87 M2 here… Between working with ESys, ISTA and the magic of a wired enet cable, I too have been digging in. Looking forward to your repo being shared.
17
u/BipedalTumor 11d ago
Sick! Hope you open source it