Air quality monitors: paying more does not get you more accuracy
airgradient.com
airgradient.com
I wrote this article a few weeks ago after discovering that a well known air quality monitor in the market that retails for more than USD 1000 actually uses a PM module that costs less than USD 20.
Often people assume that the more expensive, the better but as you can see in the article this is often not the case -especially when it comes to the accuracy of the monitor.
If you are looking for an open source / open hardware air quality monitor kit that uses high quality sensor modules and is very easy to assemble, have a look at the project we maintain. Instructions to built an indoor monitor [1], instructions to built an outdoor monitor [2] and overview of the kits [3]. All is open source (firmware, schematics, 3d files for enclosure, etc).
[1] https://www.airgradient.com/open-airgradient/instructions/di...
[2] https://www.airgradient.com/open-airgradient/instructions/di...
So I believe their testing method is quite accurate.
The bodyfat measurement is good enough to be usable and the same scale is working in our household for almost 10 years now I believe.
It has wifi and bluetooth, so it always syncs up with your phone and can track multiple people. I don't really trust the body measurement stuff but use it for measurement per measurement information. The heart rate is kind of nice to track too.
0. https://www.theverge.com/23573362/anker-eufy-security-camera...
Measuring human weight is harder than it seems (we don't stay still).
Most scales use a strain gauge sensor that detects bending of a metal arm through changes in resistance. It's pretty noisy and needs averaging. There's some integrated circuits to relate the resistance to weight. Most do some factory calibration only around the target weights (median adult weights).
Look instead for a scale that explicitly states that it is accurate over the whole range (e.g. baby to 220lbs). Usually there's tradeoffs - e.g. the displayed weight won't 'settle down'. I have one like this and it works better than any previous one I had (tested by adding calibrated weights), but I hesitate to recommend since it's a low cost consumer model.
Accurate enough for weight control (doesn't drift from day to day), no "stuck weight" problem mentioned either. Just need to wait 2 seconds for self calibration to finish
Humans are constantly changing weight, with every single breath you take.
I also tested on small weight and what my kitchen weight calls 3.016KG my bathroom weight calls 3.0KG so I'm pretty sure it's still reasonably accurate in absolute scale.
You need to weight youself and then weight yourself again with something of known weight in your hands.
Floor scales usually aren't good at a small weights, though I wouldn't be surprised if they are not bad at it nowadays.
The only project I found was FitScales and it has been dead for a long time now because Android Bluetooth changes made it incompatible with newer devices.
Personally, I've only ever had one scale in my life that I thought might be using memory to give false consistency. But even then, it was short-term, not long term. I.e. if you stepped off and back on, it might bias towards giving you the same weight. If you walked away for a bit, then came back with a small extra weight in your hand, it was accurate.
Annoying, but it works.
Because digital scales have features that analog ones do not. And contrary to an earlier assertion that 'almost all' scales lie to get consistent results, this is very much not true. There are reputable digital scales that do not behave that way.
Low cost air quality measurement is difficult. PM is tricky but almost manageable with laser scattering, toxic gases at typical inquinant concentrations are almost impossible to get right with electrochemical sensors, no matter how much money you throw at them.
Weight measurement is easy, they could give you precise and accurate results but most customer base doesn't understand anything of physical quantities measurement and would panic they gained 50g in a minute if they showed up the real fluctuating values by stepping on the scale twice.
It's because of how load cells (and scales) are manufactured. They're made for weight classes like 100g, 1kg, 2kg, 3kg, 5kg, 10kg, etc. So to make a scale for a particular weight you pick the load cells you'll need for the range you want.
Higher quality scales don't select higher quality load cells; they're all the same (reasonable quality) for the most part! Instead they just use more load cells and just take an average of all their values, multiplied by the number of cells, to measure weight.
So if you want a damned accurate industrial scale for measuring weights around 1kg you'd use like twelve 100g load cells rather than a single 2kg load cell or two 1kg load cells. Of course, then the hard part becomes, "how do I distribute this weight perfectly evenly across all of them?" so you have to take tolerances into account to make sure that at no point can weighing part of your scale rub against the side of its container or accidentally get something wedged between the scale part and the case.
There's loads of other things to consider as well but for the most part the accuracy of the scale is a factor of how many load cells its using, not the quality/manufacturing tolerances of the load cells themselves. Because even with the most precise manufacturing methods load cells will still drift and be impacted by temperature. All you can do is calibrate regularly, test them, and hope for the best (or use a completely different technology).
They want the highest resolution so they can see their 10 gram progress when dieting. But they want the measurement to be stable enough to not cause them too much anxiety.
Do they? 100g is already quite granular, and you can lose that in a day.
I have two scales which are giving me different measures - I've been weighting myself and assume I'm in the middle of both. It's a bit annoying, but works for my goals.
The other one, weight, is easy enough and if it's not accurate it is for commercial reasons. Either because what I said or what you said. Both could be true.
Even the cheapest load cell is pretty damned accurate and the average between the four of them is going to be accurate within 0.1kg (~0.22lbs). Having said that, load cells have this problem where their values drift over time but only if there's a constant weight on them. If you step off the scale and allow it to re-calibrate itself (which is what it does every time it turns on) there will definitely not be enough drift to matter from a, "how much do I weigh?" standpoint. All it takes is like 2 seconds without weight for a load cell to "settle down" back to its not-actually-very-noisy resting position.
I've tested loads of the cheapest possible load cells money could buy along with some load cells I took from an expensive transparent scale that had cracked. They were all far more accurate than I was expecting and any differences between them was negligible.
The longer you wait before weighing something the less accurate it'll be but only by tiny, negligible amounts. Like, if you're weighing something that's 100kg and you waited ten minutes after calibration (something most scales won't allow because they all have something like a 30-second timeout) you'd still get a value that's within 0.01 of 100kg. They don't drift that much at rest unless there's some serious temperature variations or you had something resting on the scale the entire time.
Is it a big problem? No, but there's a fake decimal and an attempt to hide that the decimal is fake. Not cool.
I've never seen a human weight scale that went beyond a single decimal place and in all honestly they're going to be very accurate. If you get on the scale and it says 201.2lbs that measurement is going to be accurate within ±0.1lbs (actually, more than that but you only get one decimal point of precision). If you put the scale next to something that's emitting a ton of electrical noise then maybe it'll be off by 0.2lbs but I doubt it.
My cat sat on it, read 9.4lb. I stood on it, it gave my weight, then I picked up my cat and it read (my weight + 9.4)lb.
I was impressed!
What I wrote sounded more conspiratorial than I am planned, but I stand by the opinion that coperate interests are overrepresented in regulations.
They system has found an equilibrium: customers are willing to pay ~$X for a scale. For $X you can afford Y accuracy.
If you increase the accuracy, great, but now your scale costs more then $x.
It is fascinating how much one's weight fluctuates during the day (or night which is even weirder if you don't eat/drink anything!)
That works with my NoName NoSmart TwentyBucks Scale scales too.
Fat is 77% carbon by weight, and glucose is 40% carbon by weight (C18H34O2, C₆H₁₂O₆) . All off that carbon is broken down to CO2 and removed by the blood and lungs.
2000 calories of fat is 0.57 lbs, and 0.44lbs of carbon. 2000 calories of glucose is 1.14 lbs, and 0.46lbs of carbon.
The carbon masses are similar because the energy we use comes from breaking the carbon-carbon bonds these molecules.
This means you exhale about a 0.45 lbs of carbon per day for baseline metabolism. Each pound of fat you lose is another 0.77 lbs of carbon on top of this (over however long you lost it).
Compairing to your numbers, the approach above means you exhale 200g of carbon a day, and 8.3g/hr. If you sleep for 7 hours, that is 58 grams of carbon exhaled (pretty close).
I say that because it seems like certain tenths of a pound are outright impossible to achieve.
Minor typo throughout: It's R^2 instead of R_2.
Also surprised the dataset doesn't include Awair's products!
My partner has a pottery studio with a kiln, it can get pretty smoggy in there when a firing is taking place (its unoccupied during, but it takes a while to settle afterwards), so I want to get a sensor. Are there any add-on sensors you can think of that would be useful in addition to assess off-gassing of VOCs (or something else?) from the kiln firing?
I think for a pottery studio to measure PM and VOCs is a good start (and CO2 to see how well the ventilation works).
They do cost a little bit more than the Plantower units, about $30-40USD. For anyone looking at the Sensirion sensors, be aware that the SEN5x products span a range, and only the SEN55 has all of the above sensors in one unit. I’ve found the Sensirion software to be pretty nice to work with. I was able to port their embedded i2c example repo to ESP32 with little trouble.
With the current very bad air quality in the US Northeast, I noticed that the SEN55 was reading much higher than the two Plantowers in the AirGradients. At one point, the SEN55 was reading around 200µg/m³, while the Plantowers were reading around 100µg/m³. I am planning on buying a second SEN55 to check this.
I'm happy with that, and I will place an order.
Sorry to be pedantic, but it spoils an otherwise interesting looking project.
We also wrote a blog post about our decision to use CC BY-SA [2].
[1] https://www.airgradient.com/open-airgradient/instructions/di...
[2] https://www.airgradient.com/open-airgradient/blog/thoughts-o...
It's great that you chose to switch to an open source compatible licence.
This may be true for off the shelf air sensors, but in general the base cost of the sensor is not necessarily correlated with achievable accuracy. There are even manufacturers like Maxim who will sell you sensors for cheap, but you pay a lot to license firmware to get the best performance (and in this case actually a smoke/particle detector if I remember right - the MAX30105).
You might pay thousands for a third party calibration on top of the OEM device. For example an infrared calibration target is a puck of coarsely machined metal, a heater cartridge and some black paint, but you're paying $$$ for NIST traceability, guaranteed measurements of the emissivity, etc.
https://hackaday.com/2017/04/11/ask-hackaday-how-does-this-a...
https://www.sciencedirect.com/science/article/pii/S002185022...
For headphones someone made a small analysis regarding at leat frequency response and price: https://pubs.aip.org/asa/jasa/article/141/6/EL526/917945/No-...
I'm pretty surprised by the lack of diversity in the "consumer" market.
[1] https://www2.purpleair.com/products/purpleair-pa-ii?variant=...
[2] available e.g. https://www.adafruit.com/product/3686
Building a sensor-on-ic is more comparable to the process that pharmaceutical companies go through in their R&D rather than traditional logic chip makers. It’s a lot of experimenting, use of non-standard materials, and pushing fabrication techniques to their limits. They don’t have to disclose how it’s made in the same way as pharmaceutical companies are required to, however, which means they have a monopoly on the tech until someone decaps the IC and reverse engineers it.
Of course, I only have one of them, so I can't say if they are accurate, but I just need to know if the CO2 levels are normal (+- 400ppm) or high (+1000ppm), to open a window. I have tested it with just blowing on it, the CO2 value jumps up, putting it near a window, goes directly to +- 400.
I haven't had any strange readings with it, ESPHome developers really made an excellent product, that is stable and "just works". You can even calibrate the sensor by putting the it outside (but I haven't really bothered with it).
ESPHome has also support for a lot of other sensors that you combine on a single ESP32 module.
However, I'd like to point out CO_2 - there are two kinds of sensor. One of them measures volatile organic compounds and assumes that CO_2 correlates with them, and the other actually measures CO_2. The second type costs around £40 for the raw sensor - if your sensor is cheaper than that then it probably isn't actually measuring CO_2.
The Open Air outdoor monitor has been designed in co-operation with scientists and is currently undergoing co-location testing on four continents to collect a large dataset and being able to completely understand the performance in different environments and to develop accurate compensation algorythms if required. The first results look very good. You can read more about it on our research page [1].
We get a lot of interest and support from the research community on this monitor as it is completely open hardware / open source.
"Many indoor air quality sensor products are a scam" - https://news.ycombinator.com/item?id=33025995
I almost bought Airgradient's pre-soldered kit[1] but I went with the Airthings View Plus[2] because it came with a Radon sensor. It's pricey (US$299), but not $1000 pricey as mentioned in the article. But I think I might still get the Airgradient sensor for another room just because it's cheaper and I don't need more than one Radon sensor.
1. https://www.airgradient.com/open-airgradient/shop/#!/DIY-Pro...
PM1.0 R2 > 0.96, PM2.5 R2 > 0.93
https://www.aqmd.gov/docs/default-source/aq-spec/summary/pur...
https://forums.adafruit.com/viewtopic.php?f=48&t=136528&p=76...
The main takeaway is that it takes more than I thought to keep indoor CO2 at bay, especially during winter when you have to deal with low temp/air pollution outside.
Interesting to see the particles spike when frying food but other than that I only learned in which direction the wind has to blow for my air to be polluted (straight south so in the future might enable ionization then if pollution goes ballistic).
What you need is a sensor that measures CO, CO2, all the hydrocarbons AND particles at different sizes. The Pimoroni could measure 1!, 2.5 and 10 PPM.
Just use: https://maps.sensor.community and https://www.ventusky.com
PALMA[1] has a lot of work.
I wish I could find a good source for "outside CO2 levels" as I think they've been elevated but I have no way to prove it (beyond my indoor sensor showing high).
Tried going cheap and getting a bunch of Vitalights later as additional monitors but ended up finding out that their results were all over the place.
Returned the Vitalight. Kept the Aranet4.
I do have plans to build a few Airgradients when I have time.
I've been tracking air quality in Gary, IN for a few years now. It started with a PurpleAir ($), then a AQMesh pod ($$$$$) for a few months, now I'm rocking a Sensit RAMP ($$$). Just haven't spent too much time updating the dashboard I built to showcase the data: https://millerbeach.community. I had one sensor up and running at a time, so couldn't compare all 3 (PM only) against each other.
Indoors, I've been using a Canairi Air Quality Sensor, but that's just a simple CO2 monitor, along with my Dyson hot/cool air purifier.
I'm looking for a rough idea of what my family are breathing, I don't mind if numbers aren't 100% accurate (hopefully as small -/+ %, though).
As a bonus, the collected data by the sensors.community project is public, and here is the walkthrough of data analysis with ClickHouse: https://clickhouse.com/docs/en/getting-started/example-datas...
By the time the device lands in landfill, it probably won't ever have been too far off. And if the CO2 curve derivative starts to underperform and risk your deployed calibrations, throw some dollars an some anti-nuclear campaigns as that's cheaper than doing an update!
My Aranet4 was more like 1000 ppm off before putting it outside for awhile, despite being labeled as calibrated from the factory. It was going absolutely ballistic thinking my apartment was full of smog. After sitting outside to get a taste of ambient air, suddenly the inside of my apartment was fine.
You watch the readings go up and down as you close windows and cook and then open windows and let the fresh air in. You'll watch CO2 go up to 1200 and then back down to 500. Or PM2.5 go from 2 to 25 and back.
They're big changes that obviously correlate in logical ways with what is happening in your home.
And then it's really the relative changes you're watching. Even if values are off by 20% it doesn't really matter a ton for private personal use.
Because you're really just learning what the baseline values are for fresh air, how quickly values grow, and therefore when you prefer to open some windows. (Or this week, close them.)
There are CO2 sensors on AliExpress for less than $10, they are scams. What they do is that they take the cheapest sensor available that reacts to something in the air, and extrapolate a reading. It may give you an indication that the air is "stuffy", but the numbers are completely made up.
(It is for a bit of an urgency that emerged in a building.)
Additionally, where are all the ppbv CO detection capabilities? (most are ppm, likely to not be a scare to humans but always reading "0", but it makes determining sensitivity or any response at all pretty difficult)
If you put an air-quality detector into your device and it's reading 30% lower than reality it's no big deal.
If you put a CO detector into your device and it's reading 30% lower than reality you may face massive liabilities.
It isn't a "hey, why not" feature.
As far as I know the state of the art on these is condensation particle counters, which use a supersaturated gas (e.g. of isopropyl alcohol or butanol) to glom onto the tiny particles to make them big enough to be sensed optically.
Are there any novel approaches, or maybe a cheaper CPC?
Ie one co2 equivalent and one real one. The difference is sizable. Equivalent is basically garbage data. Correlates a bit with say opening a window but that’s about it
Esp in absolute values. The trend seems vaguely ok
My baby monitor does the same thing - the temperature tracks up after a half hour or so. The unit is warm to the touch by that point.
https://github.com/geerlingguy/airgradient-prometheus/issues...
If you still have issues, please contact me through the link on my profile.
[1] https://forum.airgradient.com/t/co2-reading-of-3-constantly/...
I specifically remember softserial was very problematic, and actually reading the code convinced me to dump it. Might be fixed now, but there's timing code in there that could easily break on a compiler update because it's still written in C++ and has handcounted delays based on counting instructions in compiler output. Now, maybe they recheck those on every single release of avr-gcc to make sure the count didn't change, but why rely on that? We're talking about the same maintainers here who kept conditionally compiled ASM code to manually push and pop the stack in every function because some absolutely ancient MacOS 9(or something like that) version of GCC somehow didn't emit those instructions. That was still there in 2015, hopefully they removed it since then...
It also sets interrupts. I don't like library code doing this at all. I wanted complete control over that so I always know what interrupts might occur. And even worse it uses a circular buffer for storing data but IIRC offers no method of detecting a full buffer. Which led to a lot of "fun" debugging.
Arduino libraries are fine for simple prototyping, but they're not high quality enough for writing reliable microcontroller code.
Sometimes it reports 0 if left on for extended periods, other times the readings are wildly out of range of what the module is listed to support. I have emailed them regarding a different issue and didn't have the best response back and hasn't inspired confidence to raise this one.
On the plus side the module is replaceable and I'll probably just source it myself rather go through support.
Cheap sensors aren't as good as expensive ones.
This is like saying a DHT11 has the same accuracy as a SHT31.
You can bet the $1000 ones are Better Technology Through Beautiful Marketing and Design(tm). Anyone who pays that deserves to be separated from their money.
This a sad statement and simply untrue. The vast majority of people are in other fields, don’t know anything about hardware, and have never even heard the word “Arduino.”
They don’t deserve to be scammed by con artists using fancy packaging as the hook.