I have purchased a kit #3 and when I connect it to a Honda Jazz 2008, the screen gets stuck on the
OBD X (toggles between UART and I2C)
ACC v
GPS v
The OBD adapter flashes blue with a few seconds delay and flashes blue again in the same pattern.
I've connected kit #3 to the OBD emulator and it works, however it doesn't work when I connect it to the Honda Jazz 2008.
I can confirm that the Honda Jazz protocol is CAN 500Kbps/29bit, when I use another bluetooth ELM327 OBD adapter and issue it AT commands via a terminal, I can confirm that the protocol is CAN 500Kbps/29bit.
I do this in series
ATZ, ATSP7, 0100 and I am able to get valid data from it. (ATSP7 sets the protocol to CAN 500Kbps/29 bit)
when I do this
ATZ, ATSP 3, 0100 I get an error, BUS INIT . . .ERROR (ATSP3 sets the protocal to iSO 9141-2)
So this confirms the car is using CAN 500Kbps/29 bit which the OBD-II adapter supports.
However, it doesn't work, the screen gets stick with a red X at OBD and it toggles between UART and I2C.
Connecting it to the emulator with the same protocol works.
Any ideas? Thank you very much!
Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 500k))
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
Can you try adding some code in the mega logger by setting the protocol to CAN 29bit/500k as you did in your test?
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
Hi stanley,
this is what worked for me:
1. i modified the COBDI2C::init() to not call the pre-determined sendCommand(CMD_QUERY_STATUS) as I assume you have your OBD adapter listing to CMD_QUERY_STATUS to perform the AT commands to set the protocol to auto. Instead I implemented the same setup steps as COBD:init() by manually sending the AT commands via COBDI2C::write() since that tells the adapter to send AT commands.
2. now, instead of sending ATSP0 to set to to auto protocol, I specifically do ATSP7 to set it to CAN 29/b500kbps.
3. after that, i send command 0100 to the ECU so that on the first command, it will setup the protocol and I can get a valid message back that is not ERROR.
4. another step I did was to wait 500 msec (instead of 50 msec) i am guessing timing is an issue as well.
after this, it all works.
May I know what does sendCommand(CMD_QUERY_STATUS) do on the OBD adapter side?
I would like to change the code such that we don't do ATSP0, but rather, we manually test the protocols by sending ATSP1-7 and testing with 0100 and reading the result, until one of them is correct, and then proceed with the intialization. this should be more roboust.
Also, this problem is reproducable on the OBD Emulator. Just set the protocol to CAN 29b/500k, start the ignition ON, connect the Kit #3 and you'll see the same error. And with my changes, it now works on kit#3 and my car.
this is what worked for me:
1. i modified the COBDI2C::init() to not call the pre-determined sendCommand(CMD_QUERY_STATUS) as I assume you have your OBD adapter listing to CMD_QUERY_STATUS to perform the AT commands to set the protocol to auto. Instead I implemented the same setup steps as COBD:init() by manually sending the AT commands via COBDI2C::write() since that tells the adapter to send AT commands.
2. now, instead of sending ATSP0 to set to to auto protocol, I specifically do ATSP7 to set it to CAN 29/b500kbps.
3. after that, i send command 0100 to the ECU so that on the first command, it will setup the protocol and I can get a valid message back that is not ERROR.
4. another step I did was to wait 500 msec (instead of 50 msec) i am guessing timing is an issue as well.
after this, it all works.
May I know what does sendCommand(CMD_QUERY_STATUS) do on the OBD adapter side?
I would like to change the code such that we don't do ATSP0, but rather, we manually test the protocols by sending ATSP1-7 and testing with 0100 and reading the result, until one of them is correct, and then proceed with the intialization. this should be more roboust.
Also, this problem is reproducable on the OBD Emulator. Just set the protocol to CAN 29b/500k, start the ignition ON, connect the Kit #3 and you'll see the same error. And with my changes, it now works on kit#3 and my car.
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
That's good findings.When query command was received, the adapter will query for PID 0100 0120 0140 0160 to get the available PIDa and return to the host.
I will add the steps for manually trying protocols in the library.
I will add the steps for manually trying protocols in the library.
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
Here is the updated OBD library which forces to different protocols when automatic identifying is not working. Please try it and let me know if it works well before I will commit it to github.
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
I just brought model B a few days ago, seem I am out of luck, it won't work with my Honda Jazz 2009 too.
The MPU6050 was detected but cannot connect to the ODB... just keep connecting....
I also try the newer version u posted in previous post but still no luck.
is my car also using CAN 29bit / 500k too? can I hardcode this in the init method in the library?
any suggest for me?
thx.
The MPU6050 was detected but cannot connect to the ODB... just keep connecting....
I also try the newer version u posted in previous post but still no luck.
is my car also using CAN 29bit / 500k too? can I hardcode this in the init method in the library?
any suggest for me?
thx.
Re: Kit #3 cant connect on a 2008 Honda Jazz (CAN 29 bit/ 50
I finally able to "connect" to the obd, but still not able to ready any useful information and the interval between each read is very long... any reason for that?
output
Code: Select all
/*************************************************************************
* Sample sketch based on OBD-II library for Arduino
* Distributed under GPL v2.0
* Visit http://freematics.com for more information
* (C)2012-2014 Stanley Huang <stanleyhuangyc@gmail.com>
*************************************************************************/
#include <Arduino.h>
#include <Wire.h>
#include <OBD.h>
#include <SPI.h>
#define CON Serial
COBDI2C obd;
bool conn;
void setup()
{
CON.begin(115200);
CON.println("OBD TESTER");
// start communication with OBD-II UART adapter
obd.begin();
conn=obd.init();
if (!conn) {
for (int i=0; i<4; i++) {
if (i==0) obd.setProtocol(PROTO_CAN_11B_500K);
else if (i==1) obd.setProtocol(PROTO_CAN_11B_250K);
else if (i==2) obd.setProtocol(PROTO_CAN_29B_250K);
else if (i==3) obd.setProtocol(PROTO_CAN_29B_500K);
conn=obd.init();
if (conn) break;
}
}
CON.println("Connected");
}
void loop()
{
int value;
CON.print('[');
CON.print(millis());
CON.print(']');
if (obd.read(PID_RPM, value)) {
CON.print(" RPM:");
CON.print(value);
}
CON.println("");
}
output
Code: Select all
OBD TESTER
MPU6050 detected
Connected
[36280]
[43616]
[50951]
[58287]
[65618]
[72953]
[80288]
[87624]
...