I have a BME680 sensor interfaced using I2C to a Beaglebone Black SBC. It's functioning OK but I'm confused by what the 'gas heater' does. I guess that the heater is to get the air quality measurements going but does it also affect the temperature and humidity readings? I'm using the bme680 package from PyPi installed using pip. Running this it goes into 'polling' mode and I see results like:- 13.79 C,967.85 hPa,66.97 %RH,71721.47698855039 Ohms 13.81 C,967.82 hPa,66.79 %RH,72968.57114389726 Ohms 13.84 C,967.82 hPa,66.63 %RH,74385.16382217684 Ohms 13.86 C,967.83 hPa,66.49 %RH,75403.50410127621 Ohms 13.88 C,967.83 hPa,66.33 %RH,77186.67437330067 Ohms 13.90 C,967.82 hPa,66.20 %RH,79198.32071358454 Ohms 13.93 C,967.81 hPa,66.05 %RH,79989.06250915483 Ohms 13.95 C,967.80 hPa,65.92 %RH,81618.88174279875 Ohms 13.97 C,967.80 hPa,65.80 %RH,82458.95418813737 Ohms 13.99 C,967.80 hPa,65.70 %RH,83712.21745256371 Ohms 14.01 C,967.81 hPa,65.60 %RH,84922.25079223014 Ohms 14.03 C,967.82 hPa,65.49 %RH,85999.60147520891 Ohms 14.05 C,967.84 hPa,65.39 %RH,87190.81907805824 Ohms 14.07 C,967.84 hPa,65.31 %RH,88326.88348620672 Ohms 14.09 C,967.84 hPa,65.21 %RH,89949.6685169239 Ohms 14.11 C,967.84 hPa,65.10 %RH,90411.07882563051 Ohms 14.13 C,967.85 hPa,65.03 %RH,91443.03457762799 Ohms 14.15 C,967.85 hPa,64.94 %RH,92305.04944738351 Ohms 14.16 C,967.85 hPa,64.86 %RH,95788.54299375357 Ohms 14.18 C,967.81 hPa,64.77 %RH,97001.04988745697 Ohms 14.20 C,967.82 hPa,64.69 %RH,98080.63309875103 Ohms 14.22 C,967.82 hPa,64.63 %RH,98906.22345883874 Ohms 14.23 C,967.82 hPa,64.56 %RH,100085.67844386413 Ohms 14.25 C,967.86 hPa,64.47 %RH,101997.027371513 Ohms 14.26 C,967.87 hPa,64.40 %RH,102950.26596207068 Ohms 14.28 C,967.85 hPa,64.33 %RH,103433.59820529057 Ohms 14.29 C,967.86 hPa,64.28 %RH,104167.16629089943 Ohms It looks as if it's simply getting warmer and warmer, the temperature isn't really rising lake that, so what's going on? I can't attach the python code I'm running so it's here..... #!/usr/bin/env python3 import bme680 import time print("""read-all.py - Displays temperature, pressure, humidity, and gas. Press Ctrl+C to exit! """) try: sensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY) except (RuntimeError, IOError): sensor = bme680.BME680(bme680.I2C_ADDR_SECONDARY) # These calibration data can safely be commented # out, if desired. print('Calibration data:') for name in dir(sensor.calibration_data): if not name.startswith('_'): value = getattr(sensor.calibration_data, name) if isinstance(value, int): print('{}: {}'.format(name, value)) # These oversampling settings can be tweaked to # change the balance between accuracy and noise in # the data. sensor.set_humidity_oversample(bme680.OS_2X) sensor.set_pressure_oversample(bme680.OS_4X) sensor.set_temperature_oversample(bme680.OS_8X) sensor.set_filter(bme680.FILTER_SIZE_3) sensor.set_gas_status(bme680.ENABLE_GAS_MEAS) print('\n\nInitial reading:') for name in dir(sensor.data): value = getattr(sensor.data, name) if not name.startswith('_'): print('{}: {}'.format(name, value)) sensor.set_gas_heater_temperature(320) sensor.set_gas_heater_duration(150) sensor.select_gas_heater_profile(0) # Up to 10 heater profiles can be configured, each # with their own temperature and duration. # sensor.set_gas_heater_profile(200, 150, nb_profile=1) # sensor.select_gas_heater_profile(1) print('\n\nPolling:') try: while True: if sensor.get_sensor_data(): output = '{0:.2f} C,{1:.2f} hPa,{2:.2f} %RH'.format( sensor.data.temperature, sensor.data.pressure, sensor.data.humidity) if sensor.data.heat_stable: print('{0},{1} Ohms'.format( output, sensor.data.gas_resistance)) else: print(output) time.sleep(1) except KeyboardInterrupt: pass
... View more