A lot has happened in 2 weeks. I found out that the I2C bus is easily susceptible to noise like in an automotive environment so the UART connection made a bit more sense. Even though it can only take in 1 input, I’m only going to connect 1 arduino. Which works out great because now I don’t have to split out the I2C connector.
Here’s what the current setup looks like. You push the button, the arduino uno reads it, sends it to the arduino mega, and the mega displays it on screen. With that, I’ve officially reached the end of the “proof of concept” stage. Now I know and have setup every major milestone in the system. The rest is code and finalizing IO.
Before that, I worked a bit on the gui. I went for that old NES look. The touch screen now displays 3 different setting screens. So far they don’t do much of anything, but you can swap between them. I’ve also been toying with some DTC reading/scanning/clearing code but that’s really far on the list of priorities.
The down side I realized is that the more PIDs you poll from the OBD2 port, the slower everything goes. Just reading the RPMs was a 60ms lead time. Reading in the final list of what I want (rpm/iat/clt/throttle %) bumps that time up to 600ms (over half a second). This is likely due to the kwp2000 “fast” protocol not being able to give me the data fast enough. But I think the LS2 uses the CAN protocol so this might be a non issue. I should test on the E30 soon.
From here, there’s still too much to list that needs to be done. For instance, I’d like to be able to read in a config file from the SD card. The main goal is to start cleaning things up. My code is pretty disjointed and messy. I’d mainly like to polish the GUI. Maybe look more into reading PIDs faster.
For my own archive, here’s the current list of external IO for the uno to eventually log:
Accelerometer for the uno (another MEMS to keep things consistent?)
Steering wheel input? (I have no idea how I would do this)