CO2 monitoring with SCD30 sensor and HA integration

The scd30 is supported in ESPhome.

I got a $4 nodemcu. Connected sensor to D1, D2, 3.3V, and Gnd pins.
Took only 10 mins to setup/configure.
Instantly appeared in the esphome addon/integration and instant HA sensor entities.
Easiest DIY ever. And nice sensor.

2 Likes

Hi formbar,
My fault, while using the word “airflow” I wanted to mention something else:
I made a comparison with the reading from 1.The bare sensor, 2.The sensor inside a plastic box and 3.The sensor in a box with a big aperture (the one in the last pic I posted).
I noticed to have the same reading between case 1 and 3, therefore empirically a small hole isn’t big enough.
As you correctly stated that sensor isn’t meant to be used to measure CO2 in airflows.

1 Like

@Ombra great, thanks for clarifying! I’ll try to squeeze my construction into some kind of plastic box (into which I’ll need to drill some holes) on the weekend - I’m really curious about the measurements and how they differ (currently, I’m trying to force myself not to order more of the sensor just to be able to make a lot of simultaneous measurements using slightly different constructions^^)

Your abstract on github is really interesting and well made (altough 60 eur for a single sensor is very overpriced!).
Have you tried the MH-Z19B? it works on the same NDIR principle for a fraction of the cost.

2 Likes

I just found it for 45 EUR for a single sensor and will update the paper (and also couldn’t resist to order 2 more units…)

Interesting! No, not yet tried, but I will definitely try to get my hands on one of those!

There are several reasons to go with the SCD30 over the MH-Z series. Depending on the use none of them may be critically important, but here they are:

SCD30:
uses 1/2 the power
has better accuracy
has a longer operational lifespan
has 5X higher detection range
has onboard humidity compensation
has I2C bus in addition to UART
has accurate and detailed English documentation

I2C bus and up to 10K ppm are the big ones, for home or industrial use these are important, for standalone office ‘too many people not enough airflow’ sensing, probably not

3 Likes

really cool! I have been looking for a way to monitor co2 inside of HA, I ordered a MH-Z before I saw this from banggood but after reading this I ordered the SCD30 from digikey.

Has anyone designed a 3d printed case to house both the sensor and a node mcu? Also, there is no reason a D1 mini couldnt be used instead of the larger node mcu, correct?

1 Like

That’s correct, any ESP or Arduino board can be used, including Wemos D1 and the smaller ESP01, allowing room for low power applications.

The case I used is a generic one, I used a bigger one to leave some space between the board and the sensor. Although the D1 doesn’t really warm up I didn’t want to alter the temperature sensor readings.

1 Like

@mikehaguy Accidentally, I had also built one of the CO2-monitors in my collection with a Wemos D1. Concerning the case, I found that standard cases for an Arduino work very well - just ensure that it has some openings to let fresh air in.

@Ombra Concerning the temperature readings: I found that I need to adjust the temperature offset for different realizations of my CO2-monitors (the offset varies from 5-7 degrees in my cases)

@alf That much deviation?
I found a discrepancy of 2c compared with a DHT22 placed close to the SCD30.
Anyway you can fix it with a template, monitor it for 24hrs and see if the trend compared to another reference thermometer is satisfactory.

@Ombra As you said, the offset is no big deal as it can be easily changed with the function setTemperatureOffset(). Interesting though that you only have 2 degrees (I measured my offset also with a DHT22 and with an additional cheap temperature device from the supermarket).

the offset is greater if there is poor airflow, proximity to other heat sources, and is also dependent on the orientation of the sensor, since the hotter parts should be at the top (diode) and the temp sensor on the bottom, and there should be no insulation there to cause heat buildup, it radiates about 60mW

I got my SCD30 setup and I am seeing an interesting thing on my graph. The Co2 levels in my basement spike from 500-600ppm to around 1200ppm randomly throughout the day. I THINK I have correlated it to my boiler running. It seems when my steam boiler runs for a while, then stops, about 5 min later the CO2 level spikes.

I was under the impression the SCD30 is temperature compensated but it sure seems it gives a high reading when the basement gets warm after the boiler runs for a while… anyone any ideas?

it may be picking up actual carbon dioxide or even possibly monoxide, do you have a CO detector in that area?

I have a nest protect in the area. AFAIK they are pretty sensitive when it comes to detecting CO. That being said, I think you are right. I have a feeling my boiler has an issue.

I’m sure there’s some source of CO2 you never noticed until now, in this case probably is your boiler.
It’s been few months I’m using the SCD30 now, and its behavior is quite regular.

According to the datasheet this sensor uses the temperature sensor to correct the CO2 reading, and in some cases it can be even fed by a pressure input to have very accurate readings (seems that NDIR readings are influenced by the altitude). Perhaps the latter is an extreme case where really accurate ppm reading is a must.

Further reading of the docs explaining the large temperature difference of the C sensor is due to the heat generated by the unit itself, therefore as someone said before changing the offset fix the problem.

2 Likes

I do not think it has an issue, I think it is just venting carbon dioxide when it boils, since water naturally absorbs it from the atmosphere, and will release it when it gets near boiling

2 Likes

That makes sense, I notice my SCD30’s temperature reads about 4F higher than it should. Perhaps that is throwing off my readings a bit, do you have any idea if the temp is reading higher than it actually is would that make the CO2 reading higher or lower?

I am going to look into calibrating/offset the temp sensor as I saw some posts about it in this thread.

The boiler is most definitely the source of the increased CO2, I am sure of that now but richieframe says its probably normal so that is good atleast.

Thanks that is really interesting and good to know. It also makes me feel a lot better than I dont have some kind of major issue. I posted in a heating forum and they had me worried because they were saying its likely I had a gas leak in the boiler breaching. The only CO sensor I have is my Nest protect so I am not sure how sensitive it is. I dont really want to spend $50-$100 for a low level CO detector if I dont have to but I guess it might be the only way to know for sure?

Thanks!

The temperature sensor onboard it’s used to correct the CO2 readings using an internal algoritm, my understanding is that altough they provide you access to the temp sensor, showing you the actual temperature is not its main purpose.

A boiler having a gas leak would produce gas/methane emissions rather than CO2.
An incomplete combustion or a leakage from the gas chamber or the exhaust would produce either CO2 and the more dangerous CO. If you suspect anything like that, after a check of you system I’d rather suggest a carbon monoxyde sensor (and spend some money for a very good one, when it comes to health nothing is too much expensive).