We have been testing the Grove Heart rate sensor (http://www.seeedstudio.com/depot/Grove-Fingerclip-Heart-Rate-Sensor-with-shell-p-2420.html) with the GrovePi+ and have faced some problems when reading the data out of it. You can find the example code here: https://github.com/DexterInd/GrovePi/tree/master/Software/Python/grove_fingerclip_heart_sensor (Using this sensor would cause your GrovePi+ to stop working properly, but you can simply disconect the sensor and the problem goes away).
The sensor gives 1 byte of data when you read from it indicating the heart rate. When we used it with the Arduino, we were getting the data properly, even though the reading were jumping around a lot, but the bus was pretty stable (see heart_arduino.logicdata). But when we run it with the GrovePi, it takes down the whole I2C bus in a minute or so (hear_rate_I2C_collapse.logicdata). We then removed the GrovePi from the picture and directlu connected the sensor to the Raspberry Pi I2C pins with a 3.3V-5V level converter and saw the same issue.
The good data just has 2 bytes, one the read request and the other the data (good_data.jpg). In the bad data, it does look like the Pi requests for the data from the sensor and does not get anything back (bad_data_zoomed.jpg) after waiting for a while, the I2C bus crashes.
It would be great if any users out there who already have the sensor can try this out and let us know how it goes for them. If you were able to get the sensor working, it’ll be great if you can share the solution with us.
(Please use the saleae software to view the logic files: http://support.saleae.com/hc/en-us/articles/201589175).