I got the Enviro+ running with a Raspberry Pi Zero but the data is too unreliable to realistically contribute to a Citizen Science project like Luftdaten.info. It’s a great form-factor, but when you click the sensor board directly on the RPI Zero W, both CPU-temperature and RH humidity sensor data are too high.
I wrote a script that logs CPU and sensor temp to a csv file every 30 seconds and ran that with a direct setup and a setup with a 10cm flat cable. Turns out that if you directly connect it, the CPU heats up some 6 degrees more as well and uncorrected temperature shows 9-10 C too high. With a ribbon cable, temperature looks better, but still ~1 degree too high according to other thermometers.
Same goes for relative humidity, too high a temperature shows lower %RH of course. With the ribbon cable it still shows too low a value. I see several posts about this on the forum, but haven’t seen the final solution other than compensate it with the script. Either use a ribbon cable or fan, basically killing the great form factor.
Two main questions here:
I can’t find any replies from pimoroni, did I miss something here? Contributing to citizen science projects should be done with reliable data. Are there any pending changes in either the libraries or a new hardware model?
While you can do some correction for the temperature, based on the CPU reading, the humidity is still an issue. With the ribbon cable I get slightly better values, but still 5-10% too low. Anyone has the magic formula to correct that?
PS: if the data from my board is so far off that it’s just faulty, that’s a good answer as well and I’ll get back to my supplier :-)
I mount the boards at right angles and have a fan blowing across the back of the Enviro+. It gives accurate temperature reading and realistic humidity reading but they are always about 5% lower than my other cheap Hygrometers, so I don’t know which is correct.
The downside is the tiny fan I use is very noisy, even when mounted in a rubber duct. I plan to redesign it with a 40mm fan instead of 17mm, but then the box will be much bigger and mainly empty.
Thanks for you input, much appreciated. Was indeed thinking about a fan as well, but wanted to keep it all passive :-/ Do you have a part list and designs shared actually?
At the moment I am running it next to my NetAtmo indoor station and comparing the values. I have rewrote some things to compensate for humidity. That simply seems to register too low, however long a cable you use. Thing with humidity sensors is they degrade over time and have a relatively short lifespan. Once it’s enough to my liking, I need to look for a casing.
Any idea if Pimoroni is looking into this design wise as well for a next itteration of the sensor board?
I think the components on the Enviro+ board contribute some heat. The gas sensor has heaters in it and is fed via resistors. So I think that is why active cooling works better than a long cable. A better solution might be to separate the BME sensor and put it on a long lead.
I have never seen any official response about Enviro+. The gas sensors seem next to useless because they seem to respond to humidity, temperature and pressure more than gas. They also seem to take days to stabilise after being turned on.
I haven’t shared the case design because I regard it as a bit of a fail. The fan I used is too loud.
I had a similar issue with my Sense Hat. Heat from my Pi A+'s SOC would make the temperature read high. It likely messed with the humidity too. I put a Proto Hat on a stacking header between my Pi and the Sense hat. It acted like a heat shield and put more distance between the two. I also flipped my setup 180 so the GPIO header was on the bottom. That left the top open for the heat to escape easier.
A Proto Zero would likely work with a Pi Zero and Enviro+
I have added a 10cm flatcable and while temp is OK now, humidity is not. It’s a shame that a fairly expensive board like this doesn’t reliably register the data I guess.
I’m having a disappointing time too with the temp and humidity values from the Enviro+. Humidity seems all over the shop. The value are under by almost 40%. I wrote to Pimoroni thinking I had a faulty board, but they basically replied “you’re holding it wrong” and that the sensors are “calibrated in the factory” and that I should;d add a scaling factor just like the temp compensation. Umm…sure. At least the temp has a baseline (CPU temp) that can be used to calculate a correction factor, but what am I supposed to use as a humidity baseline? With a 40% under-read, I wonder to what baseline the factory calibration was set to?? I’ve logged data for the past day and compared it to the nearest official weather station (1.5kms away) and it turns out the humidity variance is non-linear and a bit random, so a simple scaling factor isn’t a solution. For what was supposed to be a quick citizen-science project, this is turning out to be a pain. I’m going to write back to Pimoroni support with my findings, but I think I’m going to bin the thing and go for some other sensors. Very disappointing :-(
For what it’s worth, It’s not just the Enviro+ that suffers from these types of issues.
I have two Pi Foundation Sense Hats I setup as weather clocks. First issue from the get go was the temperature reading high from heat transfer from the Pi’s SOC. Lots and lots of complaints about it on the foundation forum. I also had issues where my humidity would on occasion read above 100%. I added code to cap what was displayed at 100. I don’t know if this is an issue with the Enviro+ but on my Sense Hat, sunlight shining on the humidity sensor affects the reading. Either UV or IR light messes with the sensor some how. It makes it read high? I have a portable setup with a light level sensor in it that I use to set the display brightness. While I was testing it, moving it in and out of sunlight I noticed big changes in the humidity readings. Big swings. I then put a small patch of black tape on the back side of the difusser I use for my front cover and it was back to normal. I eventually gave up on the sense hat built in sensors and mounted a BME680 externally on the bottom of my case.
Read this thread with interest as I am just starting to set up my Enviro+ and working it in the open, indoors on a desk, the room temp read 20.4C but compensated 6.5C ! Obviously too much compensation. I know I can alter it but better still to move it away from the PI.
I was wondering about ribbon cabling the Zero to the Enviro+ to remove it from PI’s heat.
Has anyone done this successfully? I am unsure if the Pin positions would be effected by the cable.
The pin positions can be affected, and you want to be very careful not to switch them around. Ideally you want a male to female ribbon cable.
One way to do it is with this.
Google or visit your favorite store for 40 pin ribbon cable connector. The ones used in PCs long time ago for IDE drives have 1 pin/1 slot missing and won’t fit. No idea of that missing pin is used, you could cut it, but to me it was not worth the risk. Ordered mine online, check the pictures closely before ordering and it works fine.
Um? IDE cables are female to female. And the connector on the backside of the Enviro is female. The old 40 pin 40 wire IDE cables are basically this.
Do not use one of the newer 40 pin 80 wire IDE cables. They have pins grounded for drive selection / ID
I’m only going on about this because if you use the cable I linked too above, and stick a double male header in the end, “it still won’t work”. It will plug in but the two rows of GPIO pins will be reversed. Pin 1 will be plugged into Pin 2, and Pin 2 to Pin 1 etc. Bad things will happen.
There are ribbon cable extension cables out there that are male on one end and female on the other, they “should” work.
Thanks for the details. I remembered those cables having one peg blocked, didn’t even think further that those are indeed F-F. Ordered mine online, standard 40 pin M-F cable and they work fine. I got 10 and 20cm ones now, the only downside is that it messed up your compact build. I would have proper data over compact build any day though.
/Remco
I was pretty sure you must have used a female to male, and figured you would go have a look see and post back. ;)
It’s pretty easy to just assume Pin one goes to pin one on each end of the ribbon cable, and it does. On the one I linked too.
Thing is, you have to rotate one end 180 so its pointing up to plug into the backside of the Hat or pHat. That flips the two rows at one end reversing things. Your cable is wired up to keep it the correct way so nothing bad will happen.
A Pico Hat hacker would work as a gender changer for the ribbon cable I linked to. Just solder two male headers on the same side. Like what they do on the mini black hat hacker board, it would be a lot smaller though.
Ordered M-F cable at some large webstore in China which I usually try to prevent, but nearby (web)stores didn’t have what I needed. I triple-checked and measured with a multimeter what goes where ;-) Not sure about the final outdoor case it’s going to be in, but again, I would rather have proper data than compact build. Wether there’s a small 20cm box somewhere in the backyard instead of 5cm doesn’t matter.
/Remco
I think the humidity sensor will only read the correct value if it is at room temperature because it measures relative humidity and that depends on the air temperature. The hotter it is the more water can be in the air before it is saturated, so relative humidity drops with temperature.
Having said that, even with a fan blowing on the back of the PCB that seems to get the temperature reading correct the humidity seems about 5% low compared to cheap Chinese hygrometers. I have not means of knowing which is right.
Even with a long cable I think the board heats itself, so a fan is needed. The software can compensate for the temperature being off but that leaves the humidity far too low.
Thanks for everyone’s input on the ribbon cable. I have ordered one and will continuity check it before using. They are easy to make and I would do that but the parts usually come in quantity and I only want one!
The datasheet for Relative Humidity device (BME280) says it will provide accurate (±3%) values over a wide temperature range (-40 +85C) so not having it at RT shouldn’t be a problem. If you wanted to calibrate/correct it you need to get a wet and dry thermometer hygrometer, they look like the old football rattles. Back in the day I used to use one for the test work I did.