I wish to interface the https://learn.adafruit.com/adafruit-bno055-absolute-orientation-sensor/overview Adafruit BNO055 Absolute Orientation Sensor with an Intel Edison Mini Breakout Board.
I have 3.10.98-poky-edison+ on it.
I have read the /thread/110132 Thread about interfacing it via the I2C with the Edison
but I do not understand if I need:
1. to set additional pullup resistor on the Edison for the interfacing? if so, how?
2. Do I need a level shifter to make my output from the BNO055 to 1.8 V for the edison? if so, where?
I have written the a python script which is same as one mentioned on the https://software.intel.com/en-us/iot/hardware/sensors/intelligent-9-axis-absolute-orientation-sensor IOT Hardware sensor post for Intel
the only exception being I am using upm version 0.7.0-r0 and mraa 1.3.0
the code is pretty much the same as mentioned in the Hardware sensor post above.
Upon executing the file I get the error:
RuntimeError: UPM Runtime Error: writeReg: I2c.writeReg() failed
in the code as mentioned in the post the default bus is 0 and address is 0x28. But when I do a i2detect -l i never see a i2c-0. They are all from i2c-1 to i2c-6.
According to the Hardware Guide I am using GPIO 27 and GPIO 28 which are I2C-6 (if I am not wrong)
Just for some understanding I Connected the BNO055 to Edison directly as follows:
BNO055_SDA --> Jumper 17 Pin 9
BNO055_SCL --> Jumper 17 Pin 7
BNO055_Vin --> Jumper 20 pin 2 for 3.3 V
Ground --> Jumper 19 pin 3
According the Thread I also did the following:
echo 28 > /sys/class/gpio/export
echo 27 > /sys/class/gpio/export
echo mode1 > /sys/kernel/debug/gpio_debug/gpio28/current_pinmux
echo mode1 > /sys/kernel/debug/gpio_debug/gpio27/current_pinmux
In order to make the GPIO pins to I2C functionality.
And then If I try to run the python script I get the same error as above.
If I try i2cdetect -r6 (since I am connected to I2C-6)I get:
[ 2672.359678] i2c-designware-pci 0000:00:09.1: i2c_dw_handle_tx_abort: lost arbitration
What needs to be done now? I don't understand from this point on. There is no sufficient understanding of interfacing the BNO055 with the Edison on the Internet.
Some help would be great.
Thank you for reaching out, let us try to assist you.
Regarding your first question and reading what is being discussed in the other thread, I believe setting or not the pull-up resistors from the Edison would make no difference if you're using a level shifter for this purpose. However, if you want to set them I would suggest you to check the following thread: /thread/106048 https://communities.intel.com/thread/106048.
I would personally suggest to use a level shifter, check this link for further information /message/276726# 276726 https://communities.intel.com/message/276726# 276726, also this video https://www.youtube.com/watch?v=wtithWmd2oE.
Let us know if this makes any difference.
Sorry for the delay guys, I will order some Logic Level Converters from Sparkfun and keep this thread updated. Or perhaps the I2C Logic boards from Sparkfun too in order to get a concrete solution to the query. Till then Shan