06-04-2020 06:13 PM
Hi all,
I connected the BMI085 Shuttle Board to the Raspberry Pi, and tried to make sure that my connections were working properly, by trying to get the chip ID for the accelerometer and gyroscope of the IMU.
However, when doing the i2cdetect on the terminal of the RPi, it only found the Register 0x19 of the accelerometer and not the 0x69 of the gyroscope.
Here is a description of my connections between the RPi4 and the BMI085 Shuttle Board
Pin Type | Raspberry Pi 4 | BMI085 Shuttle Board |
3V3 Power | Pin 17 | Pin 1 |
Ground | Pin 9 | Pin 3 |
SDA | GPIO 3 | Pin 17 |
SCL | GPIO 5 | Pin 18 |
Here is a copy of the code i wrote on Python:
import smbus
import time
ACC_DEVICE = 0x19 #I2C Acc Address of BMI085
GYR_DEVICE = 0x69 #I2C Gyr Address of BMI085
bus = smbus.SMBus(1) #Rev 2 Pi, Pi 2 & Pi 3 uses bus 1
def readBMI085ID_ACC(acc_addr=ACC_DEVICE):
#Chip ID Register Address
ACC_REG_ID = 0x00
(acc_chip_id, acc_chip_version) = bus.read_i2c_block_data(acc_addr, ACC_REG_ID, 2)
return (acc_chip_id, acc_chip_version)
def readBMI085ID_GYR(gyr_addr=GYR_DEVICE):
#Chip ID Register Address
GYR_REG_ID = 0x00
(gyr_chip_id, gyr_chip_version) = bus.read_i2c_block_data(gyr_addr, GYR_REG_ID, 2)
return (gyr_chip_id, gyr_chip_version)
def main():
#Chip ID & Version for Accelerometer
(acc_chip_id, acc_chip_version) = readBMI085ID_ACC()
print("Acc Chip ID :", acc_chip_id)
print("Acc Version :", acc_chip_version)
Chip ID & Version for Gyroscope
(gyr_chip_id, gyr_chip_version) = readBMI085ID_GYR()
print("Gyr Chip ID :", gyr_chip_id)
print("Gyr Version :", gyr_chip_version)
if __name__ =="__main__":
main()
I constantly get the error "Errno121 remote I/O error" because of the Gyroscope Chip ID (for the Accelerometer I get the Chip ID and chip version)
Could you tell me where my error might be?
Thanks a lot! 🙂
Solved! Go to Solution.
06-05-2020 12:07 AM
In order to make BMI085 gyro part worked under I2C mode, you need connect PS pin (pin 9 on the shuttle board) to VDDIO (3.3V) to select as I2C mode first.
Also the pin 16 of the shuttle board (SDO2) need to connect to VDDIO to select I2C address 0x69.