11 Replies Latest reply on Feb 24, 2019 7:31 PM by MoTa_728816

    I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project

    MoTa_728816

      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

        • 1. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
          MoTa_728816

          本サンプルは 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

          • 2. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
            user_60849

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

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

             

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

             

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

             

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

            • 3. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
              MoTa_728816

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

               

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

              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

              1 of 1 people found this helpful
              • 4. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                user_60849

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

                 

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

                 

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

                • 5. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                  user_60849

                  度々すみません。

                   

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

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

                   

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

                   

                  ・ボード


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

                   

                  ・ワイヤーケーブル


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

                   

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

                  • 6. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                    MoTa_728816

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

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

                     

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

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

                     

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

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

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

                     

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

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

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

                     

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

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

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

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

                     

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

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

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

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

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

                     

                    moto

                    1 of 1 people found this helpful
                    • 7. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                      user_60849

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

                       

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

                       

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

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

                       

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

                      • 8. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                        MoTa_728816

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

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

                         

                        半田付け.JPG

                         

                        moto

                        1 of 1 people found this helpful
                        • 9. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                          MoTa_728816

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

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

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

                           

                          ジャンパJ9設定.JPG

                          moto

                          1 of 1 people found this helpful
                          • 10. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                            MoTa_728816

                            最後に センサーモジュールと 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

                            2 of 2 people found this helpful
                            • 11. Re: I2C Gas Sensor for Monitoring IAQ (CCS811) Sample Project
                              MoTa_728816

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

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

                               

                              How I recycle the data (aka Return of CCS811)

                               

                              moto

                              1 of 1 people found this helpful