I am setting up my Enviro Weather (Pico W Aboard) and I am getting some unexpected behavior from the onboard BME280 temperature sensor.
- 1 Enviro Weather (Pico W Abroad) with BME280 sensor built in powered by a usb cable. Recording temp every 5 min and uploading to adafruit.io every 6th reading.
- 1 BME280 sensor connected to a Raspberry pi 3 using ~13cm of wire (ie not close to any heat generating parts). Reading temp at the same 5 min interval.
- Temps are converted from C to F after the fact since that is what I’m used to (sorry in advance to the metric folks)
The onboard BME280 temp sensor consistently reports higher temperatures compared to my control sensor (and another independent temp sensor). Could this be from the “DEFAULT_USB_POWER_TEMPERATURE_OFFSET = 4.5”?
More importantly there is a spike of ~1.5 degrees F in the recorded temperature when the data is uploaded to adafruit.io. The subsequent readings then level off over the next 1-2 readings.
Is anyone else running into this issue? If it was just a linear temperature offset it would be easy to deal with but dealing with the temp spike during data upload has me stumped. I’m assuming the problem is that the board is heating up and throwing off the temp readings. Is it possible to separate reading and uploading the data? In other words, can I set a delay between when a reading is taken and when it is uploaded to allow time fro the board to cool off.
Any help would be greatly appreciated.
I think your analysis is correct and complete:
The “DEFAULT_USB_POWER_TEMPERATURE_OFFSET” is a nice try to fix a problem of wrong hardware design (on-board temp sensor). You have to figure out the correct value yourself, but as you already noted, the offset is not a constant so you cannot expect reliable readings. I would also suggest that you switch to the battery with RTC-wakup. This should remove a lot of the heat generated by the Pico-W.
Yes, it is possible to separate reading and uploading. You have to change the code for this. Be aware that the code provided by Pimoroni is always a good starting point, but they don’t provide perfect solutions. Take the code as a hint and a source of inspiration and create your own solutions.
BTW: it might not be the upload itself that causes the spike, but I read that the code resets the Pico before taking a reading (from the shop: “If connected to USB power Enviro will never enter deep sleep, though our software will reset the board every time it takes a reading”). If this is the case, you might get away with just adding a small sleep-period after bootup and before reading temperature.
Thanks for your thoughtful reply bablokb. I’ll post my results on this thread if I make any breakthroughs.
Hi, I’ve been working with enviro+ boards on pi3s, zero 2ws and the enviro+ pico system, you won’t get the same temperature as an idependent monitor on any of the boards, or even if you use an addon board situated away from the pi . Apart from the heat from the Pi there is a fairly massive heating effect from the BME680. It depends on the temp you run the sensor heaters at, but to get any kind of true temp reading is a major problem. The BME680 has fairly massive compensation tables and calculations to give ‘correct’ temps, pressure and humidity. I am running 4 continuously at present and have come to the conclusion you should forget about the absolute temp. It depends what you want to use as units, degC, deg F could use some unit of your own, you will never get the ‘correct’ temp. It’s more important to look at changes and reproducibility. When it comes to gas monitoring you enter a completely new bag of worms, but the pis and these boards are great fun and can be useful. At present I’m monitoring the gs given off by Pines in Tenerife in response to the forest fire we’ve had and still do have. If I told you that the trees were giving off gas of some kind 24 hrs before the fire was found you’d think I was mad, but having checked everything else the only thing left to give the gas effect I’m measuring on 3 different sensors just to be sure, has to be trees warning one another about a fire. How’s that for madness, but that’s what my Pimoroni BME680 boards are saying. I’m taking 5 sec readings so I am getting rather large data sets. I don’t know what gas is being givef off the fact that it increases the resistance of the SnO2 suggests it’s an oxidising gas, but I wouldn’t expect that from a fire, but it could be NO2 if a fire gets hot enough that would be a product. I’m not likely to find out, besides which i don’t think many people will accept that trees ‘communicate’ via airborne products. as I say it’s great fun, I have some McIS 6814 sensors and a few more BME680 coming to set up some mobile monitors, just for fun.
I totally agree that the BME680/BME688 are absolutely useless for temperature measurement. The internal gas-sensor has a heating-plate and that makes the results useless. I never tried what happens when you turn the gas-sensor off, but if you don’t need a gas-sensor anyway, you would pick a different product (better results and cheaper at the same time).
I think this is accepted in the scientific community by now.