Like many people, I've had a Pi for a while but never really done anything with it. I've finally got round to hooking up an MPU6050 IMU to play around with. It uses i2c for communication so I followed the guide by Adafruit regarding enabling i2c shown here Adafruit i2c .
I then hooked up the MPU6050 to the i2c bus, and using i2cdetect -y 1
I was able to see a device at 0x68.
However, when trying to read or write from the device I got a permission denied error, so I followed this post to solve that problem /dev/i2c-x permission . It told me to modify /lib/udev/rules.d/60-i2c-tools.rules with
KERNEL=="i2c-0" , GROUP="i2c", MODE="0660"
KERNEL=="i2c-[1-9]*", GROUP="i2c", MODE="0666"
This worked, but then when actually trying to read or write using C++, I get "Input/output error". Similarly, using smbus in Python I get [Errno 5] Input/output error
When connected to an Arduino I can get this device to work perfectly.
I've exhausted every forum post I can find. Hopefully I've just done something stupid. Anyone got any ideas?
Original model B RPi running Raspbian, if that's of any help.
Cheers
In normal cases you don't really need to change the /lib/udev/rules.d/60-i2c-tools.rules file, so I would recommend resinstalling raspbian.
Connect the MPU6050 to the correct pins:
Then download an official Adafruit library:
Check if the Raspberry Pi's I2C is enabled with $ sudo raspi-config
and make sure the I2C address is correct, besides checking it with $ i2cdetect -y 1
, like this:
try:
bus = Adafruit_I2C(address=0)
print("Default I2C bus is accessible")
except:
print("Error accessing default I2C bus")
mcp = None
for i in range(0x00, 0x28):
try:
mcp = Adafruit_MCP230XX(address=i, num_gpios=16)
break
except:
pass
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.