nanaのアイコン画像

obnizで室内の二酸化炭素濃度を監視する。

nana 2021年05月14日に作成  (2021年05月14日に更新)

CO2 MH_Z19B obniz IoT コンテスト 2021

はじめに

最近CO2濃度の測定が流行っていますが、市販の測定器は値段が高く、なかなか手を出せていませんでした。
そこで、今回はobnizと、CO2センサであるMH_H19Bを用いて室内のCO2濃度を測定します。

電子工作はほぼ初心者なので、ブレッドボードの上に部品を接続していきます。

部品

  • obniz Board 1Y
  • MH Z19B

結線

MH Z19Bのv-, v+, Txd, Rxdピンを、obniz.wiredで指定するピンへと繋ぎます。

ソースコード

<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script>
  </head>
  <body>
    <div>
      <span id='co2'>測定開始中……。</span>
      <div id='warn' style='color: red;' />
    </div>
    <script>
      //type in your obniz ID
      var obniz = new Obniz("OBNIZ_ID_HERE");
      var limit = 1500;
      var interval = 1000 * 60 * 3;

      //during obniz connection
      obniz.onconnect = async function() {
        var led = obniz.wired("LED", { anode: 8, cathode: 9 });
        var err = obniz.wired("LED", { anode: 10, cathode: 11 });
        var sensor = obniz.wired("MH_Z19B", {vcc:0, gnd:1, sensor_tx:2, sensor_rx:3}) ;
        await sensor.heatWait(180);
        obniz.repeat(async()=>{
          err.off()
          obniz.display.clear();

          led.on();
          try {
            var v = await sensor.getWait();
            $('#co2').text('CO2: ' + v);
            if (v > limit) {
              $('#warn').text('室内のCO2濃度が高すぎます。換気を行なってください');
              err.on();
            } else {
              $('#warn').text('');
            }
            obniz.display.print("CO2: " + v);
          } catch(e) {
            $('#warn').text('sernsoring failed: ' + v);
            obniz.display.print(e);
            err.on();
          }
          led.off();
        }, interval);
      };
    </script>
  </body>
</html>

UARTのライブラリが存在するところまで調べてからこのセンサを購入したところ、MH_Z19Bのライブラリがexactに存在していたので、ライブラリがとても整備されていることに驚きました。すごい。
実装もすぐにリンクから読むことができ(必要ならPRを出すこともでき)、エコシステムができていることに驚きました。

ハマったところ

LEDを点灯させるページを読みながらLチカをしてみようとしたところ、上記ページに、

(ここで使用しているLEDは抵抗入りのLEDですが、もし抵抗入りではないLEDを繋ぐときは抵抗を繋いで下さい。)

とあることに気付かず、ピンに直接LEDを挿して点灯しようとしたところ、数個焼いてしまうなどしました。

感想

机の横に設置して動かしておくと、換気が必要になった時に赤色LEDで教えてくれるので、非常に便利です。

また、ちょっとしたプログラムの修正等もわざわざコンピュータへと接続したりすることは不要で、ブラウザのみで変更できたのも大変便利でした。

nana さんが 2021/05/14 に 編集 をしました。 (メッセージ: 初版)
nana さんが 2021/05/14 に 編集 をしました。
nana さんが 2021/05/14 に 編集 をしました。
nana さんが 2021/05/14 に 編集 をしました。
ログインしてコメントを投稿する