Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    BME280 on the LoPy

    Scheduled Pinned Locked Moved Issues & Bugs
    bme280lopyi2c
    41 Posts 12 Posters 16.0k Views 12 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Offline
      binux
      last edited by

      Hello,

      I'm currently trying to get the Adafruit BME280 sensor running with my LoPy.
      And I came across pretty much the same issue as michal in this post Wipy 2.0 and BME280 sensor.

      However my issue is looking a little different:

      Traceback (most recent call last):
        File "<stdin>", line 9, in <module>
        File "bme280.py", line 185, in __init__
        File "bme280.py", line 191, in _load_calibration
        File "bme280.py", line 151, in readU16LE
        File "bme280.py", line 134, in readU16
      OSError: I2C bus error
      

      I'm very new to the LoPy and as far as I read from the specs he has pretty much the same hardware as the WiPy. So I ask myself what could cause this issue. The original library: https://bitbucket.org/oscarBravo/wipy_bme280

      I initialized my BME like this:

      >>> from machine import I2C
      >>> import bme280
      >>> i2c = I2C(0, I2C.MASTER, baudrate=100000)
      >>> bme = bme280.BME280(i2c=i2c)
      

      Do you have any suggestions how to solve this?

      Thanks already in advance!

      L B 2 Replies Last reply Reply Quote 0
      • L Offline
        livius @binux
        last edited by livius

        @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

        think about people first, then computers

        B S 2 Replies Last reply Reply Quote 0
        • B Offline
          binux
          last edited by

          This post is deleted!
          1 Reply Last reply Reply Quote 0
          • B Offline
            binux @livius
            last edited by

            @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?

            L 1 Reply Last reply Reply Quote 0
            • L Offline
              livius @binux
              last edited by

              @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.

              think about people first, then computers

              1 Reply Last reply Reply Quote 0
              • S Offline
                sakis @livius
                last edited by

                @livius

                Hi Livius,

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

                L 2 Replies Last reply Reply Quote 0
                • L Offline
                  livius @sakis
                  last edited by

                  @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.

                  think about people first, then computers

                  1 Reply Last reply Reply Quote 0
                  • L Offline
                    livius @sakis
                    last edited by

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

                    think about people first, then computers

                    1 Reply Last reply Reply Quote 0
                    • B Offline
                      Butch @binux
                      last edited by

                      @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!

                      1 Reply Last reply Reply Quote 0
                      • RobTuDelftR Offline
                        RobTuDelft
                        last edited by RobTuDelft

                        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)

                        Without data you're just another person with an opinion.
                        Hackster | About me

                        1 Reply Last reply Reply Quote 0
                        • ledbelly2142L Offline
                          ledbelly2142
                          last edited by

                          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?

                          Friends don't let friends run with scissors

                          B 1 Reply Last reply Reply Quote 0
                          • B Offline
                            Butch @ledbelly2142
                            last edited by

                            @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

                            ledbelly2142L 1 Reply Last reply Reply Quote 0
                            • ledbelly2142L Offline
                              ledbelly2142 @Butch
                              last edited by

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

                              Friends don't let friends run with scissors

                              B 1 Reply Last reply Reply Quote 0
                              • B Offline
                                Butch @ledbelly2142
                                last edited by

                                @ledbelly2142 That makes it into a package: https://docs.python.org/2/tutorial/modules.html#packages

                                ledbelly2142L 1 Reply Last reply Reply Quote 0
                                • ledbelly2142L Offline
                                  ledbelly2142 @Butch
                                  last edited by livius

                                  @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)
                                  

                                  Friends don't let friends run with scissors

                                  B 1 Reply Last reply Reply Quote 0
                                  • B Offline
                                    Butch @ledbelly2142
                                    last edited by

                                    @ledbelly2142 Try following the line of logic I tried in the python REPL: import, instantiate, and initialize:

                                    >>> from machine import I2C
                                    >>> import bme280
                                    >>> i2c = I2C(0, I2C.MASTER, baudrate=100000)
                                    >>> bme = bme280.BME280(i2c=i2c)
                                    

                                    See where that takes you.

                                    The original problem I ran into and ultimate fixed was that the 8- and 16-bit writes needed the value to be written to be a bytearray, not the raw value. Beyond that, all I added was a wrapper for altitude.

                                    ledbelly2142L 1 Reply Last reply Reply Quote 0
                                    • ledbelly2142L Offline
                                      ledbelly2142 @Butch
                                      last edited by ledbelly2142

                                      @Butch

                                      For me, the issue comes up from :
                                      bme = bme280.BME280(i2c=i2c)

                                      Thats where I get the errors indicating an I2C bus error.

                                      I SDA on pin 9 and SCL on pin 10.

                                      Could it be a bad sensor?

                                      So I unplugged the BME280 sensor and got the same error.

                                      Friends don't let friends run with scissors

                                      B 1 Reply Last reply Reply Quote 0
                                      • B Offline
                                        Butch @ledbelly2142
                                        last edited by

                                        @ledbelly2142 It's possible that it's a bad sensor. Do you have another one to try? You might also check to make sure that i2c.scan() is returning the same address that is used in the BME280 library. If it isn't, you'll have to change the address in the library.

                                        ledbelly2142L 1 Reply Last reply Reply Quote 0
                                        • ledbelly2142L Offline
                                          ledbelly2142 @Butch
                                          last edited by

                                          @Butch
                                          That looks to be it. The I2C address was 77, not 76... weird. I did not think to check the I2C address.

                                          Thanks!

                                          Friends don't let friends run with scissors

                                          1 Reply Last reply Reply Quote 0
                                          • D Offline
                                            Devang Sharma
                                            last edited by Devang Sharma

                                            Hello Everyone,
                                            I'm using LoPy and I've got the similar type of error as @binux got.

                                            I'm getting the following error:
                                            0_1507818167256_error1.png

                                            This is my code:
                                            0_1507818190356_code1.png

                                            Please guide me solving this!
                                            Thank You.

                                            robert-hhR 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • First post
                                              Last post

                                            Pycom on Twitter

                                            Pycom