RX8Club.com

RX8Club.com (https://www.rx8club.com/)
-   Series I Interior, Audio, and Electronics (https://www.rx8club.com/series-i-interior-audio-electronics-24/)
-   -   My new CarPC Project - Honeycomb Here I Come (https://www.rx8club.com/series-i-interior-audio-electronics-24/my-new-carpc-project-honeycomb-here-i-come-225539/)

ShellDude 04-20-2012 10:25 PM

So tonight's exercise was to be some exploring of the high speed can bus looking for things like TPMS... I quickly learned that my cheapo chinese v1.2a elm327 reader can't reliably maintain a 500kbps connection so what am I to do now?


This puppy apparently is about as good as it gets... and will hopefully arrive in the next week or so.

in the meantime I've powered up my old xp x32 VM, installed my bluetooth drivers and am going to see if I can sniff the virtual serial port with portion and hope to pick off some of the well hidden Mazda PIDs.

ShellDude 04-20-2012 11:07 PM

1 Attachment(s)
Wow, that was easy.


Yes, I know... I need to balance my tire pressure... lol... tpms light has been coming on in the mornings this past week.

ShellDude 04-22-2012 01:02 PM

More progress ...

Code:

83659  0.00000000  ???  IRP_MJ_WRITE  BtPort1  Length 7: 22D102.
83659  0.00004825  SUCCESS 
83687  0.00000295  SUCCESS  Length 1: 2
83688  0.00000095  SUCCESS  Length 1: 2
83689  0.00000089  SUCCESS  Length 1: D
83690  0.00000087  SUCCESS  Length 1: 1  ---------- PID ECHOED BACK
83691  0.00000086  SUCCESS  Length 1: 0
83692  0.00000087  SUCCESS  Length 1: 2
83693  0.00000086  SUCCESS  Length 1: .
83694  0.00000339  SUCCESS  Length 1: 7
83695  0.00000095  SUCCESS  Length 1: 5 ----------- HEADER FILTER
83696  0.00000089  SUCCESS  Length 1: 9
83697  0.00000089  SUCCESS  Length 1: 
83698  0.00000088  SUCCESS  Length 1: 0 ----------- NOT SURE BUT SEEMS TO BE HEADER
83699  0.00000088  SUCCESS  Length 1: 4
83700  0.00000087  SUCCESS  Length 1: 
83701  0.00000084  SUCCESS  Length 1: 6 ----------- NOT SURE BUT SEEMS TO BE HEADER
83702  0.00000088  SUCCESS  Length 1: 2
83703  0.00000083  SUCCESS  Length 1: 
83704  0.00000085  SUCCESS  Length 1: D --- 0xD1 HEX == 209 == WHEEL 4 TIRE PRESSURE IN kPA ???
83705  0.00000085  SUCCESS  Length 1: 1
83706  0.00000084  SUCCESS  Length 1: 
83707  0.00000084  SUCCESS  Length 1: 0 ------------ MAYBE FOOTER / CHECK SUM
83708  0.00000083  SUCCESS  Length 1: 2
83709  0.00000085  SUCCESS  Length 1: 
83710  0.00000085  SUCCESS  Length 1: 8 ------------ MAYBE FOOTER / CHECK SUM
83711  0.00000084  SUCCESS  Length 1: 9
83712  0.00000460  SUCCESS  Length 1: 
83713  0.00000091  SUCCESS  Length 1: .
83714  0.00000094  SUCCESS  Length 1: .
83715  0.00000094  SUCCESS  Length 1: >

This is a great sign! Have been analyzing the data I collected the other night and it looks like that I may have found tire pressure. I've been meaning to head back out to the car and scan the individual TPMS PIDs but haven't had a chance (it's been raining the past couple days).

Anyway, I'll be able to validate soon enough. The possibility of the data being there un-encoded is really exciting for me!

ShellDude 04-22-2012 01:37 PM

bah... looked a little deeper ... likely a fluke .. D1 02 appears to be the PID just echoing back... if anything 89 is the value for this pid... now what the hell do I make of 0x89/137 ???

oltmann 05-03-2012 12:33 AM

1 Attachment(s)

Originally Posted by ShellDude (Post 4245730)
bah... looked a little deeper ... likely a fluke .. D1 02 appears to be the PID just echoing back... if anything 89 is the value for this pid... now what the hell do I make of 0x89/137 ???

Yup, from ISO14229:

https://www.rx8club.com/attachment.p...1&d=1336022091

oops, that came out big.

Anyhow, 62 is the response code from the TPM and I think 759 is its identifier, D102 is the PID, and 89 is the value.

This is all hex though, so 0x89 = 137. Guessing that the scaling is X/10 so 13.7Volts?

I think tire pressure is in the C90x range, and scaling is X*1.373

ShellDude 05-03-2012 12:53 AM

Dude, you rock!

ShellDude 05-03-2012 12:57 AM

I'll portmon just one of the tpms pids tomorrow night. Have been meaning to get back to them.

timmytriangles 05-03-2012 12:57 AM

coming along great, car pc's rock. i wish someone wud sell these things

ShellDude 05-03-2012 01:17 AM

Oh, and you're right oltman... The Mazda PID for battery voltage was in the sampling I was scouring. Values match.

ShellDude 05-03-2012 11:31 PM

So I recorded individual sessions tonight for:
  • TPMS tire pressure for each wheel
  • TPMS tire temperature for each wheel
  • ENGINE Brake pedal pressed (boolean)
  • ENGINE In Gear (boolean)

Here's the full conversation (I dropped the unimportant responses) I recorded for requesting TPMS tire pressure for wheel #1:

Code:

ATE1
>
ATL0
>
ATI
>
STI
>
STCAFCP 7E0,7E8
>… OK
STFAFC 07E9,FFFF
>… OK
STCAFCP 7E1,7E9
>… OK
STFAFC 07EA,FFFF
>… OK
STCAFCP 7E2,7EA
>… OK
STFAFC 07EB,FFFF
>… OK
STCAFCP 7E3,7EB
>… OK
0100
>...
ATRV
>...
ATSH000751
>…
0100
>...
22C9011
>22C9011
>759 07 62 C9 01 93 88 93 97

97 hex to decimal == 151

151 * 1.373 = 207.323 kPa

We have a winner! I'll post up the others in the next day or two.

ShellDude 05-04-2012 12:19 AM

So it just dawned on me and I confirmed by briefly looking at my Tire #2 pressure log. All 4 come back for 22C9011

0x93 = 147 * 1.373 = 201.831 kPa
0x88 = 136 * 1.373 = 186.728 kPa (I really do need to get around to putting air in this tire)
0x93 = 147 * 1.373 = 201.831 kPa
0x97 = 151 * 1.373 = 207.323 kPa

oltmann 05-04-2012 03:50 AM

Awesome!

:)

ShellDude 05-04-2012 10:53 PM

Here's the header and pid for TPMS Temperature:

ATSH0007DF
22C9021

last 4 bytes of the response are each tire's temperature in hex similar to how pressure comes back. Once converted to decimal subtract 40 and you then have the tire temperature in celsius.

ShellDude 05-04-2012 11:03 PM

Engine Brake and Engine In Gear don't look quite right. I may need to re-record them.

ShellDude 05-05-2012 06:48 PM

Was having a hard time getting libVoyager to read alternate/multiple ECUs and came up with a hack of sorts to work around it.

I use its built in RoutineScan class with a refresh interval of 500ms to retrieve mode 1 PIDs --- a handful of which I added myself to its sqlite database:

Code:

        hs.setRoutineScanDelay(500);

        hs.getRoutineScan().addDPN("VOLTS");
        hs.getRoutineScan().addDPN("TEMP_INTAKE");
        hs.getRoutineScan().addDPN("TEMP_COOLANT");
        hs.getRoutineScan().addDPN("MAF_FLOW_RATE");
        hs.getRoutineScan().addDPN("FUEL_LEVEL");
        hs.getRoutineScan().addDPN("WIDEBAND_O2");
        hs.getRoutineScan().addDPN("CATALYST_TEMP_B1S1");


And I pretty much bypass it to get at the mode 22 PIDs supplied by the TPMS ECU once every 5 seconds:

Code:

        obd.getHs().getEBT().sendATCommand2("ATSH000751");
                               
        final String tpmsPresBuf = obd.getHs().getEBT().sendOBDCommand("22C9011");
        final String tpmsTempBuf = obd.getHs().getEBT().sendOBDCommand("22C9021");
                               
        // reset our connection to clear the headers -- need to figure out a better way
        obd.getHs().getEBT().sendATCommand2("ATD");
                               
        final String[] tpmsPres = tpmsPresBuf.split(" ");
                               
        final float tpmsPres4 = Integer.parseInt(tpmsPres[tpmsPres.length - 2], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER;
        final float tpmsPres3 = Integer.parseInt(tpmsPres[tpmsPres.length - 3], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER;
        final float tpmsPres2 = Integer.parseInt(tpmsPres[tpmsPres.length - 4], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER;
        final float tpmsPres1 = Integer.parseInt(tpmsPres[tpmsPres.length - 5], 16) * 1.373f * KPI_TO_PSI_MULTIPLIER;
                               
        final String[] tpmsTemp = tpmsTempBuf.split(" ");
                               
        final float tpmsTemp4 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 2], 16) - 40) + 32);
        final float tpmsTemp3 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 3], 16) - 40) + 32);
        final float tpmsTemp2 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 4], 16) - 40) + 32);
        final float tpmsTemp1 = (float) (1.8 * (Integer.parseInt(tpmsTemp[tpmsTemp.length - 5], 16) - 40) + 32);

As best as I can tell the original author focused primarily on GM ECU. At this rate I'll likely end up just writing my own COMM API as talking ELM is very similar to the old Hayes modem command set.

ShellDude 05-06-2012 12:14 PM

2 Attachment(s)
Starting to run out of things to do (good sign -- means I'm getting closer to releasing the code)


For the Fuel Level PID I skinned a Warning Light for it and tied in a blink effect + notification sound for when the current level is < 15%


ShellDude 05-07-2012 09:17 AM

For anyone interested (I'm actually considering one as a backup) Buy.com has a refurbed 3G version of the Streak 7 up today for $189.99

http://www.buy.com/prod/dell-streak-...230985256.html

ShellDude 05-11-2012 11:53 AM

Another decent tablet deal... looks like Polaroid rebranded one of the China MIDs.

Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.

http://www.buy.com/prod/polaroid-7-a...ngid=211101545

HiFlite999 05-11-2012 12:54 PM


Originally Posted by ShellDude (Post 4261472)
Another decent tablet deal... looks like Polaroid rebranded one of the China MIDs.

Ice Cream Sandwich... $120 ... heard you can get it even cheaper elsewhere and I'm very confident it would fit just fine in the OEM nav hood.

http://www.buy.com/prod/polaroid-7-a...ngid=211101545

No built-in GPS though.

ShellDude 05-11-2012 02:14 PM

yeah, that would suck

ShellDude 05-12-2012 11:33 PM

1 Attachment(s)
finally got around to adding tire temperature.


next I hope to track down the addresses for the cruise control buttons like what PS is doing with the rxduino.

mine0778 05-19-2012 11:11 PM

that is sick man i am gonna have to try this how much for a pre-programmed tablet?

ShellDude 05-20-2012 09:46 AM

I don't plan on selling anything listed here... It's much more so a build type thread for similar enthusiasts.

I also plan on open sourcing my front-end and bluetooth library at some point once I'm happy with them baseline code wise. I may release a commercial version of it on Google Play with a couple different skins, but that'll likely be the extent of it.

Some of the logic I implemented within the front-end may also be utilized to release some stealth tracking software too.

It's all really just one big proof of concept.

mine0778 05-21-2012 09:32 AM

It was worth a shot not the best with the programming of the androids guess this will make me learn. Thanks anyway just ordered the dash kit looking for a tablet now

houstonrx8er 05-21-2012 02:42 PM

sweet project dude!

OEM nav screen is a joke!


All times are GMT -5. The time now is 08:13 PM.


© 2024 MH Sub I, LLC dba Internet Brands