GPy with BNO055 - I2C bus error



  • I'm trying to interface the bno055 breakout board (by adafruit) with my GPy module. I'm using following micro python library for bno055 https://bitbucket.org/thesheep/micropython-bno055/src

    Upon running the code shown below, following error is got 'OSError: I2C bus error' with a mention of some line numbers in bno055.py and functools.py. However, i2c scan returns the correct device address as 40 (0x28). How can I proceed?

    from machine import Pin, I2C
    import time
    import bno055
    
    i2c = 
    I2C(0, I2C.MASTER, baudrate=1000, pins=(Pin.exp_board.G15, Pin.exp_board.G16))  
    print(i2c.scan()) #Prints "[40]"
    
    s = bno055.BNO055(i2c)
    print(s.temperature())
    print(s.euler())
    i2c.deinit()
    


  • @sprasad said in GPy with BNO055 - I2C bus error:

    I2C(0, I2C.MASTER, baudrate=1000, pins=(Pin.exp_board.G15, Pin.exp_board.G16)) > ```

    Expansion board G15 and G16 are P8 and P9.
    P8 is the SD_Data, but You don't use the SD card, the P9 on expansion board is the "led" pin.
    Try removing the led jumper "enable led signal" on expansion board to disable it.



  • @sprasad
    can you show some picture of your setup? It is soldered or simple wires?
    Did you checked some basic steps like properly connected wires especially GND from sensor to GND to the board?



  • @seb Adafruit documentation says pullups are already present on SDA and SCL pins.
    SCL - I2C clock pin, connect to your microcontrollers I2C clock line. This pin can be used with 3V or 5V logic, and there's a 10K pullup on this pin.
    SDA - I2C data pin, connect to your microcontrollers I2C data line. This pin can be used with 3V or 5V logic, and there's a 10K pullup on this pin.



  • @livius I2C device isn't detected at this baud rate. i2c.scan() returns an empty list.



  • @sprasad
    try on default baudrate
    baudrate=100000



  • @sprasad said in GPy with BNO055 - I2C bus error:

    bno055

    do you have external pull up resistors?

    Edit: your last post says you dont, try adding some



  • @livius here is the complete error

    Traceback (most recent call last):
      File "<stdin>", line 10, in <module>
      File "bno055.py", line 46, in __init__
      File "bno055.py", line 91, in init
      File "bno055.py", line 108, in reset
      File "bno055.py", line 107, in reset
      File "bno055.py", line 104, in reset
      File "functools.py", line 5, in _partial
      File "bno055.py", line 63, in _register
      File "bno055.py", line 51, in _registers
    OSError: I2C bus error
    

    I'm not using SD Card. I'm just using some random pins, no relation as such with anything else.
    I'm not using any external pullups as well.



  • @sprasad said in GPy with BNO055 - I2C bus error:

    'OSError: I2C bus error' with a mention of some line numbers in bno055.py

    which line?

    and do you use SD card? I ask because you set in i2c init non standard pins - one is from SD card data0.
    Also do you use some externall pullups on i2c line?



Pycom on Twitter