I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

I tried another air quality sensor CCS811.

Unlike my previous project BME680,

we can easily calculate the eCO2 and TVOC

from the reading of sensor.

IAQ stands for Indoor Air Quality

https://en.wikipedia.org/wiki/Indoor_air_quality

and it has many indexes for the contents/condition of the air,

among them are CO2 and TVOC.

About CO2 level, there are so many web pages..

In general less than 1000 ppm seems to be preferrable,

but I borrowed a table like below

CO2 (ppm)

=====================

Poor     : 2500 <  CO2 (ppm)

Moderate : 1500 <= CO2 (ppm) <= 2500

Good     :         CO2 (ppm) < 1500

=====================

TVOC is Total volatile organic compound.

TVOC (ppb)

=====================

Level 5 Unhealty : Situation not acceptable : 2200 - 5500

Level 4 Poor     : Major objections         : 660 - 2200

Level 3 Moderate : Some objections          : 220 - 660

Level 2 Good     : No relevant objections   : 65 - 220

Level 1 Excellent: No objections            : 0-65

(TVOC guidelines issued by the German Federal Environment Agency)

=====================

schematic

schematic.JPG

with CY8CKIT-044

IMG_3077.JPG

TeraTerm log

000-TeraTermLog.JPG

Note: The sensor takes some time to reach its stable level.

When I sigh in front of the sensor (about 50cm distance)

CO2 goes up to 700ppm TVOC 47ppb, so the sensor seems to be working.

sigh.JPG

But only watch my breath was not fun, so I ran some comparison.

I asked my colleague to bring the board and sensor to the "smoking room"

Next 20 lines of data was measured on my desk in the office,

and second 20 lines of data was measured in the "somoking room".

The eCO2 went up about 10x and TVOC went up even more.

Office Desk

========================================

eCO2:   418 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   418 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   418 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   414 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   407 ppm [   Good   ] TVOC:     1 ppb [ Level 1: Excellent ]

eCO2:   404 ppm [   Good   ] TVOC:     0 ppb [ Level 1: Excellent ]

eCO2:   404 ppm [   Good   ] TVOC:     0 ppb [ Level 1: Excellent ]

eCO2:   418 ppm [   Good   ] TVOC:     2 ppb [ Level 1: Excellent ]

eCO2:   420 ppm [   Good   ] TVOC:     3 ppb [ Level 1: Excellent ]

eCO2:   432 ppm [   Good   ] TVOC:     4 ppb [ Level 1: Excellent ]

eCO2:   436 ppm [   Good   ] TVOC:     5 ppb [ Level 1: Excellent ]

eCO2:   450 ppm [   Good   ] TVOC:     7 ppb [ Level 1: Excellent ]

eCO2:   453 ppm [   Good   ] TVOC:     8 ppb [ Level 1: Excellent ]

eCO2:   450 ppm [   Good   ] TVOC:     7 ppb [ Level 1: Excellent ]

eCO2:   439 ppm [   Good   ] TVOC:     5 ppb [ Level 1: Excellent ]

========================================

After running the sensor for a while, currently my office desktop is

eCO2: 638 ppm, TVOC: 36 ppb

Smoking Room

========================================

eCO2:  3969 ppm [   Poor   ] TVOC:   543 ppb [ Level 3: Moderate ]

eCO2:  4675 ppm [   Poor   ] TVOC:   651 ppb [ Level 3: Moderate ]

eCO2:  6213 ppm [   Poor   ] TVOC:   885 ppb [ Level 4: Poor ]

eCO2:  3563 ppm [   Poor   ] TVOC:   481 ppb [ Level 3: Moderate ]

eCO2:  3563 ppm [   Poor   ] TVOC:   481 ppb [ Level 3: Moderate ]

eCO2:  3466 ppm [   Poor   ] TVOC:   467 ppb [ Level 3: Moderate ]

eCO2:  3969 ppm [   Poor   ] TVOC:   543 ppb [ Level 3: Moderate ]

eCO2:  4166 ppm [   Poor   ] TVOC:   573 ppb [ Level 3: Moderate ]

eCO2:  3518 ppm [   Poor   ] TVOC:   475 ppb [ Level 3: Moderate ]

eCO2:  5262 ppm [   Poor   ] TVOC:   740 ppb [ Level 4: Poor ]

eCO2:  3622 ppm [   Poor   ] TVOC:   490 ppb [ Level 3: Moderate ]

eCO2:  3748 ppm [   Poor   ] TVOC:   510 ppb [ Level 3: Moderate ]

eCO2:  4242 ppm [   Poor   ] TVOC:   585 ppb [ Level 3: Moderate ]

eCO2:  3622 ppm [   Poor   ] TVOC:   490 ppb [ Level 3: Moderate ]

eCO2:  3622 ppm [   Poor   ] TVOC:   490 ppb [ Level 3: Moderate ]

eCO2:  5096 ppm [   Poor   ] TVOC:   715 ppb [ Level 4: Poor ]

eCO2:  6094 ppm [   Poor   ] TVOC:   867 ppb [ Level 4: Poor ]

eCO2:  5368 ppm [   Poor   ] TVOC:   756 ppb [ Level 4: Poor ]

eCO2:  3969 ppm [   Poor   ] TVOC:   543 ppb [ Level 3: Moderate ]

eCO2:  5658 ppm [   Poor   ] TVOC:   801 ppb [ Level 4: Poor ]

========================================

moto

11 Replies
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

本サンプルは CQ出版 インターフェース 2019年3月号に

https://interface.cqpub.co.jp/magazine/2019年3月号/

ふえる今どきセンサNote

その14 CO2&総揮発性有機化合物センサ

として掲載されました。

I contributed this sample project to a Japanese technical magazine

"Interface" Mar/2019 edition.

moto

0 Likes

興味があり書籍を購入しました。

建築士でTVOCなどの測定に興味がありました。

1 ページのみであり、おそらくセンサー計測専門の方ならすぐに実行出来ると思うのですが、どのように使えば良いのか分かりませんでした。

センサーは秋月などで購入できると思うのですが、どのようにセットして実装すれば良いのか、初心者なので手順書みたいなのがあれば拝見したいです。

センサーを構築して、C言語でコンパイルする技術なのではと想像しましたが、このような利用法は経験がありませんでしたので、装置の構築からコード実装まで手順書や購入先等のリストがありますと参考になります。

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

お問い合わせありがとうございます。

本サンプルプロジェクトを動かすのに必要な

PC以外のハードウェアとソフトウェアは以下の通りです。

ハードウェア

===================================================

マイコン基板 CY8CKIT-044

https://www.marutsu.co.jp/pc/i/12189671/

センサーモジュール CCS811 エアークオリティセンサモジュール

https://strawberry-linux.com/support/11811/1906029

===================================================

ソフトウェア

===================================================

開発ツール PSoC Creator

https://www.cypress.com/products/psoc-creator-integrated-design-environment-ide

ターミナルエミュレータ TeraTerm

https://ja.osdn.net/projects/ttssh2/

CCS811サンプルプロジェクト

※このスレの最初に添付されています。

test_ccs811_181130.cyprj.Archive01.zip

===================================================

PSoC とその開発環境 PSoC Creator の機能を十分にお使いいただくのには

下記のビデオテュートリアルなどをご覧いただくことが望ましいかと思います。

https://www.cypress.com/products/psoc-creator-integrated-design-environment-ide

とりあえず最短でサンプルプロジェクトを動かすまでの手順概要をお知らせします。

手順概要

(1) PSoC Creator をダウンロードしてインストールしてください。

(2) TeraTerm をダウンロードしてインストールしてください。

(3) このスレの最初に添付されているサンプルプロジェクトはダウンロードして、

  PC上のご都合の良いフォルダーにて解凍してください。

※パス名は短く、スペースや日本語が含まれないフォルダーが良いと思います。

(4) ハードウェア(マイコン基板とセンサーモジュール)を

 インターフェースの記事で記載されているように結線してください。

(5) マイコン基板とPCをマイコン基板に付属のUSBケーブルで接続してください。

(6) (3) で展開したフォルダ内の

test_ccs811_181130.cyprj

000-project.JPG

 というファイルをダブルクリックすると、PSoC Creator が立ち上がります。

001-PSoCCreator_started.JPG

(7) PSoC Creator のメニューアイコンから虫のアイコン Debug を選択しますと、

プログラムが自動的にコンパイル(構築)され評価基板に書き込まれます。

002--StartDebug.JPG

デバッガが立ち上がると PSoC Creator の画面が下記のようになります。

003-Debugger-ready.JPG

(8) ここで基板からの出力を見る為に TeraTerm を立ち上げます。

004-TeraTerm-Started.JPG

基板の設定に合わせる為に TeraTerm の設定を行います。

メニューから端末設定を選択します。

005-TeraTerm-端末設定.JPG

改行コードの受信(R) を AUTO にして OK を選択してください。

メニューからシリアルポート設定を選択します。

006-TeraTerm-シリアルポート設定.JPG

ポート(P) は実際につながっている基板のCOM番号に合わせてください。

ボーレートは 115200

データは 8bit

パリティは none

ストップビットは 1bit

フロー制御は none

に設定後、OKを選択します。

(9) Debugger 開始

ここまでの作業でプログラムを実行する準備が出来ましたので

デバッガのメニューから Resume を選択します。

007-Resume.JPG

これで、このスレの最初にあったようなセンサーの動作がTeraTermに出力され始めます。

(10) Debugger 終了

動作確認ができたなら、デバッガは終了して PSoC Creator も終了します。

008-Stop.JPG

以上の作業で、マイコン基板 (CY8CKIT-044)に、CCS811のサンプルプログラムが書き込まれました。

電源を落としてもマイコン基板のプログラムは残っています。

以降は PC上のTeraTerm だけで、センサ出力の観測が可能となります。

以上

moto

0 Likes

ご丁寧な解説有難うございます。

早速ハードを購入して試してみます。

取り急ぎお礼のコメントでした。

0 Likes

度々すみません。

画像中の白色のボードとワイヤーケーブルは別途購入しないといけないと思いますが、

何を選んで良いか、初めての事でしたのでテキストの製品を教えて頂ければ有難く存じます。

自分なりに探してみましたが、次のような物でも良いのでしょうか。

・ボード


  https://www.marutsu.co.jp/pc/i/89808/

・ワイヤーケーブル


  https://www.marutsu.co.jp/pc/i/69681/

ご助言頂けますと有難く存じます。

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

先頭の画面で白色のボード (ブレッドボード) を使用しているのは

センサーモジュールへのピンソケット以外の半田付けを避けたかった為です。

もしセンサーモジュール上で必要な結線を半田付けで済ませるのであれば

このブレッドボードは不要です。(あると便利なのも事実ですが・・・)

私が使用しているブレッドボードは下記の URL のものですが、

ブレッドボードとして販売されているものであればどれでも大丈夫かと思います。

ミニブレッドボード BB−601(白): パーツ一般 秋月電子通商-電子部品・ネット通販

ワイヤーケーブルも CY8CKIT-044 に含まれているものがありますので

それをご使用になるのであれば追加購入は不要と思います。

(これもあると便利です。)

私が使用しているジャンパワイヤーは下記のシリーズですが、ご指定のものでも良いかと思います。

ブレッドボード・ジャンパーワイヤ 15cm赤 (10本入): パーツ一般 秋月電子通商-電子部品・ネット通販

http://akizukidenshi.com/catalog/g/gP-02936/

ブレッドボード・ジャンパーワイヤ 15cm緑 (10本入): パーツ一般 秋月電子通商-電子部品・ネット通販

後、一点ほど失念しておりましたのは、センサーモジュールに付けるピンソケットです。

もしジャンパワイヤーをセンサーモジュールに半田付けされるのであれば不要ですが、

試行錯誤などをされたい場合には、下記のようなピンソケットを半田付けしておいて

ジャンパワイヤーを抜き差しして使うと便利です。

分割ロングピンソケット 1x42 (42P): パーツ一般 秋月電子通商-電子部品・ネット通販

moto

0 Likes

ご回答有難うございます。

ジャンパワイヤーとセンサーモジュールは半田付けが必要なのでしょうか。

私は半田付けの経験も工具もなく、ジャンパワイヤーだけの抜き差しで

完結する内容だと思って取り組もうとしていました。

このような工具を製作する経験は未経験のため、初歩的な質問ばかりですみません。

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

センサーモジュールに付属のピンフレームを半田付けして使用するのであれば
ジャンパワイヤーは半田付けする必要はありません。

しかし、ピンフレームの半田付け 8 ヶ所とセンサーのアドレスを決定するために1ヶ所の半田付けは必要になります。

半田付け.JPG

moto

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

次に CY8CKIT-044 の I/O 電圧が 3.3V になっていることを確認します。

通常工場出荷時には 3.3V に設定されているようですが、

念の為、確認しておきます。

ジャンパJ9設定.JPG

moto

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

最後に センサーモジュールと CY8CKIT-044 の配線を行います。

雑誌に掲載した回路図では一般の I2C 同様に SDA, SCL を 10KΩの抵抗でプルアップしていましたが、

CY8CKIT-044 にて4.0 SCL, 4.1 SDA と書かれているピンを使用する場合には

基板内部でプルアップが行われているので外付けの抵抗は不要になります。

そのため、後は CY8CKIT-044 と センサーモジュールの対応するピンを

ジャンパワイヤーで接続してやるだけで動作準備が完了となります。

(1) まず、作業しやすいようにセンサーモジュールと CY8CKIT-044 を並べて置きます。

IMG_3438.JPG

(2) 次に I2C の信号 SCL, SDA及び GND をつなぎます。

CY8CKIT-044 → CCS811モジュール

4.0 SCL → 3番ピン  (写真で白色の線)

4.1 SDA  →  2番ピン       (写真で緑色の線)

GND      → 1番ピン      (写真で黒色の線)

IMG_3439.JPG

次に CY8CKIT-044 の 3.3V 出力ピンをセンサーモジュールの電源(VDD) 4番ピン とつなぎます。

IMG_3440.JPG

続いて、CY8CKIT-044 の V3.3 の左にある RESET と書かれたピンを

センサーモジュールの 8番ピン (nRESET) に接続します。

IMG_3441.JPG

最後に CY8CKIT-044 の 5.5 と センサーモジュールの 5番ピン (nWAKE) を接続します。

IMG_3442.JPG

これで接続は完了しましたので、USBケーブルを PC に接続して、

TeraTerm を立ち上げて、CY8CKIT-044 に接続後、

PSoC Creator からデバッグを行えば測定が開始され

TeraTerm 上に下記のような表示が現れます。

TeraTerm-log-190222.JPG

以降は、PSoC Creator なしで TeraTerm だけで空気品質の測定が可能になります。

moto

0 Likes
MotooTanaka
Level 9
Level 9
Distributor - Marubun (Japan)
First comment on blog Beta tester First comment on KBA

このプログラムの出力を CSV 形式にした版とその使用方法について

下記に投稿しましたので、ご参照ください。

How I recycle the data (aka Return of CCS811)

moto

0 Likes