Go Down

Topic: Sniffing eeprom i2c for Omron BP742N blood pressure monitor (Read 45 times) previous topic - next topic

tgregor

I recently purchased a Omron BP742N blood pressure monitor and want to sniff the i2c data so I can log it externally. I found the I2c lines and this is the i2c chip I think they are using:
Rohm I2C eeprom datasheet

I can listen to the data but can't make any sense of it. Here is the code i'm using to dump the data to the serial port:
Code: [Select]
#include <Wire.h>
void setup()
{
Wire.begin(190);                // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600);           // start serial for output
Serial.println("READY");
}

void loop()
{
delay(100);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
//Serial.println(howMany);
while(1 < Wire.available()) // loop through all but the last
{
char c = Wire.read(); // receive byte as a character
Serial.print(c);         // print the character

}
int x = Wire.read();    // receive byte as an integer
Serial.println(x);         // print the integer
}


I found that the same data is being sent to 2 different addresses, but I can only find 1 chip on the i2c bus...on the top side, can't easily flip the board over. I've noticed when I make some changes to the code such as remove the second Wire.read() in the receive event It will cause the meter to go into an error mode. I hooked the lines up to a scope and appears that the arduino at times will pull the i2c lines low causing the blood pressure monitor to not be able to communicate with the eeprom. adding pullups did not fix this issue.

Any suggestions on how I can decode the data?

Thanks!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy