【初心者向け】TVOCセンサー(AGS10)で空気の質をチェック!簡単DIYで快適な生活を(Arduino編)

最終更新日

Comments: 11

こんにちは!

 

今回は電子工作ステーションさんから面白いセンサーがあるから是非使ってほしいとのことで、使ってみたいと思います‼

そのセンサーは「ガスセンサーモジュール (AGS10)」という物で、TVOCに反応するセンサーです。

 

TVOCと言われてもイマイチ分からないかと思います。

TVOCは揮発性有機化合物と言い、ざっくりに簡単に言うと、汚染物質のことです。

 

つまり、TVOCの数値が高いほど人体の健康を害することになります。

 

詳しくはこちらのサイトを見ていただくと分かりやすいです↓

TVOC を理解する: 揮発性有機化合物について知っておくべきこと

①「 部品準備

・ガスセンサーモジュール (AGS10)

電子工作ステーション 690円(送料無料)

※電子工作ステーションさんでははんだ付けをしてくれるサービスがあります。

300円掛かりますが、それをしてもらえばはんだ付け不要で作れるようになります。

はんだ付けサービス

 

・Arduino Uno

今回は使い勝手が良いType-CモデルのArduinoUnoを使っていますが、それ以外でも勿論問題ありません。

電子工作ステーション 1190円(送料無料)(互換ボード)(Type-C)

※UNO以外、Nanoとかでも大丈夫です。

 

・ジャンパーワイヤー(オス・メス)(4本)

電子工作ステーション 110円(500円以上で送料無料)

 

・Type-C通信ケーブル(無い場合)

※Androidスマホでよく使うやつです。充電専用ケーブルもあるので、必ず充電専用では無く通信にも対応したケーブルをお使いください。

電子工作ステーション 370円


②「回路」

回路は簡単で、定番のI2C接続で完了です‼

ガスセンサー (AGS10) Arduino Uno
VCC 3.3V
GND GND
SCL SCL
SDA SDA

 

③「ライブラリー準備」

下記のgithubからAGS10ライブラリーをダウンロードし、解凍してArduinoのライブラリーフォルダーに入れます‼

AGS10_sensor

 

ダウンロードしたら展開(解凍)し、ArudinoIDEのLibraryフォルダー内に入れます。

 

③「プログラム」

ArduinoIDEを起動し、ファイルののスケッチ例から「AGS10」→「AGC10-readTVOC_basic」を選択すると、下記のコードが出てきます。

これで書き込めれば完了です‼

 

ちなみに、AGS10は、MEMS(微小電気機械システム)技術を用いたガスセンサーモジュールです。

MEMSはメムスと読み、ざっくり言うと、微小な電気機械システムのことです。

 

原理は、金属酸化物半導体表面にガスが接触すると抵抗値が変化する性質を利用して、ガスの存在と濃度を検知しているそうです。


④「結果」

濃度レベル基準表

濃度レベル TVOC(ppm)
快適 0~660
やや快適 661~1430
やや汚染 1431~2200
汚染 2201~3300
やばい 3301~

 

シリアルモニターを開き、数値を確認してみましょう。

起動時は異常に高い数値になっていますが、数分放置すると正常な値になります。

 

そして確認したところ、

1000前後!

 

そして外に出してみたところ、

流石外‼

測定したところは都会の5階ですが、空気が良い田舎とかだったらもっと低くなるのかも?

 

お次は塩の香りが抜群のスクラブソルトを嗅がせてみます‼

1800くらいまでいきましたね!

 

最後はシンナーが入っているマニュキュア!

これは嗅ぐだけで強烈で頭が痛くなってきます‼

 

果たしてどんな数値になるのか?

数秒嗅がせただけでこの破壊力‼

そりゃ短時間嗅ぐだけで頭も痛くなりますわ…

 

こんな感じで、日常生活上の環境をモニタリングすることで、より良い空間作りに約立てられますね!

 

AGS10センサーと以前ご紹介したほこりセンサー(DSM501A)を組み合わせれば、部屋環境を更に把握できるようになりますので、

是非応用してみてください^^

 

ほこりセンサーとArduinoを使ってダスト取得(DSM501A)

11件のフィードバック

  1. このセンサーの結果をディスプレイ(https://electronicwork.shop/items/63f16ee7e2f3b60f8b651ed 00.96インチOLEDディスプレイモジュール (SSD1306) (ホワイト))で映したいのですが、回路やコードなど教えてくださいますでしょうか?よろしくお願いします。
     

    • コメント頂きありがとうございます。
      こちらのサイトを参考に作って頂ければ上手く動くかと思います↓
      https://toccho.net/2025/04/28/solderless-hc-sr04/

      イメージとしては、hc-sr04をAGS10に変えるだけです。
      プログラムもhc-sr04関連のところをAGS10に変えるだけです。

      もし上手くいかないようでしたらまたコメントくださいませ。
      ちょっと最近時間が無く、簡易的な説明しかできなくて申し訳ないですが頑張ってください^^

      • arduinoNANOではなく、arduino Unoでやりたいのですがどうしたら良いのでしょうか。
        できればコードもお願いします。
        返信よろしくお願いします。

        • コメントありがとうございます。
          nanoもunoもコードも配線も同じなので、全く同じで配線、プログラムで大丈夫ですね!

          コードの方も作りましたが動作確認はしていません。
          これで多分動くはずです!
          (#includeの部分の文言は小文字の<>でかこってくだい。システムの都合上コメントだと反映されませんでした)

          #include AGS10.h
          #include Wire.h
          #include Arduino.h

          #include Adafruit_SSD1306.h

          //ディスプレイ変数の宣言
          Adafruit_SSD1306 display(0);

          // declare sensor
          AGS10 sensor = AGS10();

          // declare data variable
          int tvoc;

          void setup() {
          // begin a serial monitor
          Serial.begin(9600);

          // initialize sensor
          sensor.begin();

          //ディスプレイの初期化
          display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

          }

          void loop() {
          tvoc = sensor.readTVOC();
          Serial.println(tvoc);//ppm

          display.clearDisplay(); // ディスプレイをクリア

          //表示表示
          display.setTextSize(1); //文字サイズを設定
          display.setTextColor(WHITE); //文字色を設定
          display.setCursor(1, 0); //文字の開始位置を設定
          display.print(tvoc); //変数nをディスプレイ出力するよう設定
          display.print(“tvoc”);

          delay(1000);
          }

          • ご返信ありがとうございます。
            上記のコードで書き込みしてみたのですが、シリアルモニターにしか映らなく、ディスプレイに映りません。どうしたらよいでしょうか。
            ちなみに、ディスプレイは、5Vにしています。
            3.3Vにする場合、分岐しても電圧は、足りるのでしょうか?

  2. arduinoNANOではなく、arduino Unoでやりたいのですがどうしたら良いのでしょうか。
    できればコードもお願いします。
    返信よろしくお願いします。

  3. ご返信ありがとうございます。
    上記のコードで書き込みしてみたのですが、シリアルモニターにしか映らなく、ディスプレイに映りません。どうしたらよいでしょうか。
    ちなみに、ディスプレイは、5Vにしています。
    3.3Vにする場合、分岐しても電圧は、足りるのでしょうか?

    • すみません重要な文が抜けていました。

      display.display(); //ディスプレイ表示

      これをdisplay.文の一番下に入れていただければ表示されます‼

      • 映せました!ありがとうございます。自由研究に使用したいと思います。
        おすすめのセンサーや、面白い、便利なセンサー教えてください。

  4. 映せました!ありがとうございます。自由研究に使用したいと思います。
    おすすめのセンサーや、面白い、便利なセンサー教えてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする