Enviro+ readings unrealiable

It may give correct readings over a wide temperature range but if you change temperature without changing the amount of water vapour the RH changes. So a room at say 30 degrees will have a low RH but if the room is actually 20C but the sensor is at 30C you get the reading for a 30C, not a 20C room. It will read far too low.

The sensor has to be at the temperature of the environment being measured, otherwise it will not give the correct RH. This is the device (BME280) that is providing the EnvroPlus temperature output so if that can be made ‘correct’ the RH should also be ‘correct’. I think a fan is essential to make the most of its data output. Only then will it be possible to correct/adjust/calibrate the readings.
Making accurate measurements of anything always opens a can of worms!

peterb

Right. I put my Enviro+ on a GPIO riser and then put a fan across the BME280 sensor. My temps were spot on with my other room thermometer and the RH lined up with the weather report.

1 Like

Ok. I’ve ordered a stand-alone hygrometer calibrated to +/- 2%RH between 20-50 degrees, +/-3% outside that range - it should be good enough as a reference point.
Reading the BME280 datasheet, something has clearly gone horribly wrong with the Enviro+ implementation to cause these crazy readings. That little chip is one impressive sensor: +/- 0.5% RH! That’s amazing accuracy across a broad temperature range. Somehow that error has morphed in to +/- 40% by the time it got soldered to the Enviro+ board.
I’m going to use the ref hygrometer to see if I can chase a simple linear adjustment offset that will get me to a decent level of accuracy. I’ll report my results here.

Alternatively, the BME280 is available on a stand-alone board for about $4.00! Does anyone here have enough understanding of the platform to be able to piggy-back one of these on the the GPIO pins on the Enviro+?, effectively bypassing (or disabling) the on-board BME280? Alternatively, I guess I could to microsurgery and desolder the onboard sensor and run a ribbon cable to it…but that’s a fair effort for something that should just work as advertised!

I have 2 enviro+ boards now. One shows proper readings, the other one doesn’t (what started this thread). The chip itself seems fine, but what I did hear is that Rh sensors don’t have long shelve life unless properly packed. Could be a faulty batch?
Regardless, I bought it due to interest in the Luftdaten citizen science thing and intend to make a new version with separate sensors too. They monitor particulate matter, temperature, pressure and RH. To this end I ordered a BMP180 (temp and pressure), a SDS011 & PMS5003 (pm sensors, two types to compare) and I have a DHT22. No idea how to combine it all since I’m new to all this, but should be doable with common sense and lots of googling ;-) with three separate sensors, I can switch out one if needed.
ETA, no idea, step 1 is getting the hardware ;-)
/Remco

@RemBrand - Keep me posted. I realised I have a spare Pi4 lying around so at some point I’m going to buy a BME280 off eBay and get that working and then hook up the PMS5003 (or buy a PMS7003) and see what happens.

Does that mean they won’t last long when unpacked and in use?

My current Enviro+ sort of equivalent setup is a BME680, Si1145, DS3231, Sense Hat, LED Shim and Pi A+. I have a portable setup and with the Sense Hat in a case, the sensor data is rubbish, even with the case ventilated. That led to adding the BME680 and mounting it external to the case. It’s on the bottom out of direct sunlight and protected from any rain or snow that might fall on my setup in use.
It’s a Weather Clock so I added the DS3231 to keep accurate date time when it has no internet access.
The Si1145 I use to measure the UV index and ambient light level. I use the ambient light level to adjust my Sense Hat and LED Shim brightness. Full bright on a sunny day and dimmed if its night time or in a dark room.
About all I’m using on the Sense Hat now is the LED matrix. I display a scrolling message with my weather data.

I have most of the parts to build a new version on hand now.
An RV3028, LTR-599, and VEML6075.
And I just ordered a 1.3" SPI Colour LCD (240x240) Breakout: If this display doesn’t work out, must be readable from a good distance, I’ll likely use a Unicorn HD and scroll my current messages on that. Lots of testing to do though.

I am still mulling over getting an Enviro + setup for my in the house version.

1 Like

Could well be, it’s not that it only starts degrading the moment you start using it. Doing some googling, it does seem like RH sensors are the tricky ones. I’m no expert though, haven’t found the final source of truth yet.

So…turns out I can run 2 BME280’s on the I2C bus using different addresses, so for $2ea for a neat little board from China, I can solder some pins on the Enviro+ and add a second “external” BME280 safely away from the Pi and Enviro+ and all the other things that people feel are an excuse for crazy readings above and beyond a poor design or faulty sensor. It’ll be interesting to compare the sensor reading side by side.

In my experience temperature and pressure show fine readings (using a ribbon cable). Did you also look into only using something like DHT22 only?

Actually, I have a ribbon cable lying around but haven’t had the time to dismantle my enclosure and prize off the hat. I’ll try to get to it later this week.

Having said that, it’s cleary a design flaw if mounting the hat as intended throws one of it’s main sensors in to spasms. Anyway, I’m happy to experiment. I’m not done yet :-)

Looking at the bmc280. Pressure isn’t compromised by the cpu heat and temp you can compensate taking cpu temp into account. Not ideal, but workable. If you then breakout a DHT22 for RH, you still have the benefits of compact form factor. In the end it’s all toys right, you’re supposed to play around with it ;-)

Good point. I’ll try both approaches and agree that the DHT22 is a bit simpler. I haven’t figured out how to address each different BME280 in python on the one Pi if I have two configured at different addresses on I2C. I’m sure it’s straightforward and Google will probably help me at some point. I’ll add the DHT22 to my shopping list. TBH, the Enviro+ hat is rapidly becoming redundant for my purposes (reporting to Luftdaten). It looked like an easy all-in-one solution and it certainly was easy to do, but the Temp an Humidity errors are a pain. If the ribbon cable washes out, I’ll probably go ‘raw’ and just configure a BME280 and PMS5003 directly to the Pi Zero and be done with it - I don’t need the other enviro sensors.

Exactly what I plan to do. Ordered different sensors to see what works best, just need time time time. The enviro+ will still be great for indoor use though.

1 Like

I “think” it goes something like this?
bme1 = BME280(0x76)
bme2 = BME280(0x77)

I think I have 0 idea about how that works and I need to get ready for a … of Googling once I have the hardware & time :-)

Sorry to jump backwards in this thread but has anyone noticed the temperature compensation in the example py’s vary? As far as I can see a factor is used in variants of this formulae.
comptemp = rawtemp-((cputemp-rawtemp)/factor)

weather.py has no compensation
compensated and all-in-one.py use a factor of 0.8
combined.py uses a factor of 1.95
luftdaten.py uses 1.2

I realise the factor can be edited but ‘out of the box’ why are they so different?

The factor would totally depend on how closely the boards are coupled and whether there is a case, etc. If the unit was outside it would greatly depend on wind speed.

Also it doesn’t compensate the humidity reading. I don’t know if that is possible.

Might well be that the person testing and writing the demo script just picked the value that was right at that time before checking in. Regardless, what @nophead said, the setup decides if you should use compensation in the first place. As you’ve seen I use ribbon cables, then the registration is spot on (temperature, RH is different issue altogether).
/Remco