BME280 on the LoPy



  • @Butch
    I still have the same issue, just updated to the latest firmware 1.7.5.b2
    In the main.py I'm just trying to print out values in the console, I have:

    import pycom
    from machine import I2C
    import time
    import bme280 # from bme280
    
    i2c = I2C(0, I2C.MASTER, baudrate=100000)
    i2c.scan()
    #i2c = machine.I2C(0, pins=('GP11', 'GP10'))
    bme = bme280.BME280(i2c=i2c)
    
    pycom.heartbeat(False)
    
    temp = BME280.temperature()
    humid = BME280.humidity()
    press = BME280.pressure()
    alti = BME280.altitude()
    
    #for cycles in range(10): # stop after 10 cycles
    while(true):
        print(temp) # read temperature
        time.sleep(2)
        print(humid) # read humidity
        time.sleep(2)
        print(press) # read Pressure
        time.sleep(2)
        print(alti) # read altitude
        time.sleep(2)
    




  • @Butch
    yup, thats what I'm using. I forked it. Why the init.py file?



  • @ledbelly2142 said in BME280 on the LoPy:

    I am trying to use the same library with a BME280 and am experienceing the exact same issue with firmware version 1.7.4.b1
    same error:

    Traceback (most recent call last):                                                                                      
      File "main.py", line 9, in <module>                                                                                   
      File "bme280.py", line 198, in init                                                                               
      File "bme280.py", line 204, in _load_calibration                                                                      
      File "bme280.py", line 164, in readU16LE                                                                              
      File "bme280.py", line 147, in readU16

    Did anyone get this to work?

    Try my fork of the library: https://github.com/ButchAnton/LoPy_BME280



  • I am trying to use the same library with a BME280 and am experienceing the exact same issue with firmware version 1.7.4.b1
    same error:

    Traceback (most recent call last):                                                                                      
      File "main.py", line 9, in <module>                                                                                   
      File "bme280.py", line 198, in init                                                                               
      File "bme280.py", line 204, in _load_calibration                                                                      
      File "bme280.py", line 164, in readU16LE                                                                              
      File "bme280.py", line 147, in readU16

    Did anyone get this to work?



  • You have to specifiy the address when creating the sensor object:
    def __init__(self, address, i2c):. I don't see the address getting the default address assigned here, maybe that's your issue?

    edit:
    I was looking at the wrong class
    address=BME280_I2CADDR

    It gets the default address from there
    self._device = Device(address, i2c)



  • @binux I am seeing exactly the same problem with 1.6.10b1. I have Vin on the BME280 tied to 3.3v on the LoPy, I have ground on the BME280 tied to gnd on the LoPy, I have SDA on the BME280 tied to pin P9 on the LoPy, and I have SCL on the BME280 tied to pin P10 on the LoPy.

    >>> from machine import I2C
    >>> import bme280
    >>> i2c = I2C(0, I2C.MASTER, baudrate=100000)
    >>> i2c.scan()
    [118]
    >>> bme = bme280.BME280(i2c=i2c)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "bme280.py", line 186, in __init__
      File "bme280.py", line 192, in _load_calibration
      File "bme280.py", line 152, in readU16LE
      File "bme280.py", line 135, in readU16
    OSError: I2C bus error
    

    As you can see, the I2C bus has something on it at hex address 0x76 (118 decimal). However, initializing the BME280 fails.

    Any help, anyone? Please?

    Thanks!



  • @sakis
    I see that I2C work back in 1.6.9 :)



  • @sakis
    I will try to minimize code but i can't promise that this will be today

    but you can try @binux sample (i did not tried it self) - maybe this is minimal code to reproduce.



  • @livius

    Hi Livius,

    Can you give an example of the minimum code to reproduce this issue (preferably on GitHub)?



  • @binux
    As i say - current firmware (1.6.8.b1) introduce some bug with I2C or bring it more visible then previously.
    You must downgrade firmware to 1.6.7 or wait for new firmware release.



  • @livius Okay, tell me why - I'm running the latest firmware. Which was i think 1.6.8b1 - just updated today...

    Anyhow, would this library work with the fix propsed on the other thread or would I still have to change something?



  • This post is deleted!


  • @binux
    if your firmware

    os.uname()
    

    is 1.6.8.b1
    then it not work at all - you must wait for new firmware or downgrade it to 1.6.7 or 1.6.6


 

Pycom on Twitter