CO2センサCCS811をESP32で使ってみる

BME280→ESP32による温度湿度気圧値のgoogle spreadsheetへの書き込みができたので、何か別のセンサでもやってみようと考え、あっちこっち見て回ると、CO2濃度の測定が多いようだ。でもよく使われているMH-Z19はAliexpressでも3000円弱なので(これでも世間では格安扱いしている)、もう少し安いものはないかと探すとCCS811が浮上した。Aliで714円(CJMCU-811という品番のもの)で買えた。

f:id:cheapkilltime:20210124100358j:plain

CCS811はadafluitやsparkfunのライブラリがあり、シリアル読み取りは余裕かと思ったが、これらのライブラリをarduino IDEに導入して、サンプルのプログラムでCO2濃度の読み取りをしても、センサ自体の認識はされるものの、測定値の読み取りができない。個人のブロク等でもサンプルプログラムをベースにしているので、コピペして書き込んでも結果は同じ。

https://nmzfish.hatenablog.com/entry/2020/05/19/200000

こちらのブロクのプログラムをベースにI2Cアドレスやデータ転送レートを一部自分の環境に合わせて変更してESP32に書き込んだら、なぜかすんなり読み込みができた。

後は前回のBME280-ESP32のプログラムに継ぎはぎして、CCS811の測定値をgoogle spreadsheetにあげる。

f:id:cheapkilltime:20210124095544j:plain

CCS811は、2日のエージングが必要ということになっているが、20日ぐらい運転して測定値がどうなるか確認した。

f:id:cheapkilltime:20210124100758p:plain

f:id:cheapkilltime:20210124101013p:plain

CCS811は総揮発性有機化合物を測定するもので、CO2値はそこからの振り分けで算出されているよう。https://qiita.com/AmbientData/items/9daeab2a1409528a8df5

測定を行っている場所では石油ファンヒータを利用していて、特にOFFにしたときに石油の匂いがするのだが、値が突出しているのはその時で、それは致し方ないとして、大きな値が出るとセンサ値はその日一日中高い傾向が続き、翌日はそのより戻しで今度は400ppm近い値が続く傾向があり、石油ファンヒーターとの相性は悪いセンサという結論になった。空調による気温の急激な変動も測定値が狂う原因なようで、センサのボードにはサーミスタを取り付ける部分がある。R3に10kのサーミスタ、R4に10kの抵抗を付ければいいらしい(0805サイズ)。そのうちやってみよう。