BME860 temperature redings are off quite a lot

I have a very simple setup I just got and I am wondering about my temp. readings.

Raspberry Pi ZeroW + BME860 sensor.
I had no issues with soldering or any other setup like library setup, or running examples.
OS: Debian9

When I run example code from repository I always have inappropriate readings from Temperature sensor. I haven’t checked other sensors as temperature is very obvious.
It reads 31 Celsius and this the real temperature is around 22-23.
The difference is very big in my opinion.

31.24 C,940.19 hPa,28.550 %RH
31.24 C,940.18 hPa,28.533 %RH
31.24 C,940.18 hPa,28.533 %RH
31.25 C,940.16 hPa,28.537 %RH
31.25 C,940.15 hPa,28.520 %RH
31.26 C,940.14 hPa,28.520 %RH

I have tested with example and tried different setting for temperature.
Sure, I did leave it run all night long to see if it changes.
Tried Python2, and Python3 - no change

I am honestly running out of ideas what to try.
Any thoughts on how to get to the root cause?


Are you using the air quality part of that sensor? It looks like your not but be aware that I do believe that has a heater in that part of the sensor. If you enable it, it may throw the temp reading off.

Other wise, where is the sensor mounted? Is it in a case, how close to the Pi etc? I have a Sense Hat that I use to measure temp, humidity, and pressure. It all worked fine in open air but as soon as I put it in a case, even a well ventilated case, the temps read high. Not as high as yours but high enough to be not accurate. I ended up mounting a BMP180 to the outside of my case to get accurate temp readings.

Thanks @alphanumeric.

  • I do not use air quality sensor

My position is as in the picture from product itself except I do have no case.
I can give it a try to move sensor further away to see if this helps. I do not intend to keep sensor in any case, I just didn’t want to run ‘cables’ out of the i itself. :)
Let’s do some more experiments and see the difference.

31c seems high to me even if some heat from the Pi CPU is throwing it off. Do you have a heat sink on the Pi? Most would say not needed, I add one just for looks myself. Even if you don’t have a heat sink does the Pi CPU seem hot to the touch?
What is the actual room temperature? I’m guessing around 22c or so.

Been meaning to try my BME680 module though I put the ‘regular header’ on it so the module is flat with components upwards. I’m using a Pi 3B in a case with the clear plastic lift-off section (to access HATS).

Of course, in use, it sits only a centimetre away from the Pi’s CPU and I am getting the same high reading of 31 degrees.

Then I tried a mini black hat hack3r board on the Pi (it slopes up because it doesn’t all fit in the case) and plugged the BME680 into the furthest socket from the Pi’s pins and at switch-on the reading dropped to 24 degrees (my wall clock says its 23 degrees so about right)

Temperature reading is creeping up slowly to 27 degrees as the Pi’s CPU heat warms up the hacker circuit board.

So, from my experiments I would suggest high temperature reading will probably be down to board placement. (and not using the gas sensor mode)

Have a look here: BME680 Observed gas 'ohms' readings I tested a couple of BME680s and found that you really need to use some wire jerky to get reliable temperature measurements. Even a Pi Zero produces enough heat to throw off the messurements by over 3C.

Things are not quite as bad, but still bad, if you also have gas measurements. Apparently, one of the Bosch libraries does temperature compensation but this hasn’t made its way the into the Python code.

If you use the BME680 with some wires the temperature will be extremely reliable. The humidity feels low, but apart from some non-scientific testing I have no way of calibrating it to see how accurate it is. The air quality reading is still all over the place as users try to make sense of the Ohms readings (I can’t).

Thank you all.
I have moved my sensor out of the board and readings are pretty different. I would say that they are now accurate. That said, it is important to place sensor out of the board or ‘shield’ effects of the board.

Currently testing with mini black hat hack3r and this works as expected. Will need to use wires after the development stage. :)

I am not going to use gas sensor so placing sensor out of the case in the future would be working as expected. I was just surprised with the effect of the board itself as I didn’t really had any sense of how much the board is actually heating.

I think you slowly get heat soak. The BME680 board itself slowly heats up from the warm air rising off of the Pi. And that in turn throws off the temp sensor that’s mounted right to the BME680 board.

Its a big complaint with the Sense Hat. Right behind its sensor on the back side of the circuit board is a large copper ground plain. Basically a heat sink that gets heated up by the PI. I put a Proto Hat between my Pi and Sense Hat and get reliable temp readings. No case on that Pi though, and it stands up vertical with the GPIO on the bottom side so air can circulate. I have an identical setup in a ventilated case and had to use an external sensor.

1 Like

@alphanumeric hey I know this post is quite old now, but I just had to say that I think the way you use your sense-hat, with the proto board in between the hat & the Pi is a great idea, thats what I’m going to do with mine now too!

It’s not shown in that photo, but there is a DS3231 RTC breakout board mounted to the Proto Hat. They come in real handy for adding things that need GPIO access like i2c etc. You can stack more that one too. I have one build with two added