温室度センサと二酸化炭素センサで快適な室内チェック
第1回:reTerminalと各種センサを使った室内環境測定器の制作準備
こんにちは、ヨシケンです!
今回の連載では、ラズパイ(Raspberry Pi) Computeモジュールに液晶画面が一体となった「reTerminal」というデバイスを活用し、昨今のコロナ禍において重要な室内空気環境の見える化と、理想的な環境づくりができるセンサデバイスを制作。
今回は、温湿度センサと二酸化炭素センサを使って、部屋の快適度を測り、エアコンや換気を促すような機能を付けたいと思います。リモートワークなど、自宅で働く時に環境をチェックできるものにします。
今回の記事の流れ
デバイスに必要なもの一覧:
名前、説明 | デバイス |
---|---|
reTerminal Seeed社が提供するRaspberry Pi Compute Moduleを使ったデバイス。 |
|
二酸化炭素センサ CCS811というセンサにより、二酸化炭素濃度を400ppmレベルから計測可能。 |
|
温湿度センサ 温度、湿度が計測できるデジタルセンサーです。 |
|
Grove Base HAT for Raspberry Pi ラズパイの40ピンに差すだけで、Grove端子が簡単に接続できるハット型拡張機。 |
1. 部屋の快適度を測るセンサ
暑い日々が続いて家の中でも熱中症になる人が増えています。そんな熱中症を避けるため、室温と湿度から快適度を測る不快指数を計測して、エアコンなどが必要ならアラートを出すようにします。気温と湿度から計測される、その場所が快適かどうかの指数が不快指数です。その計算式は、以下のようになっています。
不快指数:DI = 0.81T + 0.01H x (0.99T – 14.3) + 46.3
ここでTは気温(℃)、Hは湿度(%)とします。この気温と湿度を測るために温湿度センサを使用するのです。これはGroveという4本の端子でラズパイなどと接続する手軽な構成になっています。
また、部屋に人が出入りする場合や、あまり空気の循環が良くないと、健康にも悪影響を及ぼします。その時は二酸化炭素を計測し、換気を促す必要があります。空気中の二酸化炭素の含有率が1,000 ppm以下にするべきとの指針が出ています。
その二酸化炭素の含有量を測るために、二酸化炭素センサを使用。これはCCS811というチップを搭載し、二酸化炭素及び金属酸化物(MOX)の含有量などを計測することができます。eCO2というパラメータで、二酸化炭素を400〜29206 ppmの範囲で測ることも可能。
これらのセンサをreTerminalに接続するために、便利な拡張機があります。ラズパイの40ピンに差すだけで、Grove端子などが簡単に接続できるGrove Base HAT for Raspberry Piです。
これで、不快指数や換気を促すように表示する画面を、reTerminal上に作成したいと思います。ある数値を超えた時にアラートを出し、窓を開けるなどの行動を促します。
2. 温湿度センサで不快指数を計測
それでは温湿度センサをreTerminalに接続してみましょう。まず、ラズパイの40ピンにGrove HATを接続します。向きは写真の方向に差し込むだけです。
Grove HAT上のDigital 1(写真で左上)に、温湿度センサを接続します。
Grove端子だと幾つケーブルがあっても、差す場所をあまり考慮することなく接続できるので簡単ですね。このDigital 1のラズパイの接続は、GPIO 5番になります。あとでこのGPIO番号を指定するので、覚えておいてください。
この温湿度センサをコントロールするのに、NODE-Redを使用します。前回記事や、こちらの記事を参照して、NODE-Redをインストールし、起動しておきましょう。また追加でreTerminalのノード、Dashboardノードもインストールしておきます(パレットからnode-red-contrib-reterminalとnode-red-dashboardを選んで、追加を押す)。
次に、この温湿度センサが使用しているDHTというセンサのためのノードをインストールします。NODE-Redパレットからnode-red-contrib-dht-sensorを検索し「ノードを追加」を押します。
以下のように、「Raspberry Pi」のところに、「rpi-dht22」が追加されました。
それではこのDHTノードを使って、ロジックを作っていきましょう。まずはフロー上に、以下のようなノードを配置します。
定期的に計測をおこなうための「タイムスタンプ」、先ほどの「rpi-dht22」、「Function」、「ゲージ」を設定します。
詳細の設定として、「rpi-dht22」を開いて、センサを「DHT11」、Pinは「BCM GPIO」の「5」番を選びます。このGroveの温湿度センサは、DHT22でなく11を使っているので、間違えないでくださいね。
「rpi-dht22」と「Function」を接続し、以下のようなコードを記述してください。これはDHT11からの信号を温度tempと湿度humidとして取得し、数値を四捨五入しています。
温度と湿度が画面に表示されるよう、ダッシュボードの「ゲージ」設定を以下のようにおこないます。同様に湿度も「レベル」ダッシュボードを指定し、設定。
そして、ここで計測された温湿度から、不快指数を計算します。ファンクションを追加し、以下のようなコードを記述してください。msg.calcという関数を作って、先ほど説明した不快指数の計算式を入れます。
msg.calc = 0.81x msg.temp + 0.01 x msg.humid x (0.99 x msg.temp – 14.3) + 46.3
これが不快指数になるので、その閾値が70や90を超えたところで、それぞれ適当なメッセージを入れます。70以下であれば問題ないので「快適です」、70から90では「注意」、それ以上はクーラーなどを入れないと危険なのでアラートの文言を記述します。また警告のための色 dicolor や絵文字 diimg をセットしてもいいかもしれません。
さあ、これを「デプロイ」してみましょう。
ダッシュボードの画面を表示すると、結果が表示されたでしょうか?
今の部屋の状態だと、室温、湿度ともに高くて不快指数に注意が必要ですね。クーラーの温度を省エネ推奨温度でもある28℃に設定して冷やしたり、ドライ設定にして湿度を下げることで不快指数を改善できるはずです。
3. 二酸化炭素センサで換気を促す
次に、部屋の空気の対流度を測り、適度に換気を促せるようにします。そのためには、二酸化炭素センサで空気中の二酸化炭素の含有量をreTerminalで計測できるようにします。
まず、この二酸化炭素センサに5本のケーブルを差し、Grove HATに以下のように接続。
CCS811側(左から) | ラズパイ側 |
---|---|
GND | GND |
VCC | 3.3V |
SDA | SDA |
SCL | SCL |
RST | 3.3V |
WAKE | GND |
INT | NA |
NODE-RedからCCS811センサーをコントロールできるような、ノードが用意されています。パレットから、node-red-contrib-ccs811-airquality-sensorを指定し、追加してください。
これで、CCS811 air qualityがノードに追加されたので、フローに持ってきます。また「inject」を追加してトリガーにします。
injectノードの中には「getMeasurement」という値を指定。これにより「eCO2」というところに二酸化炭素濃度(ppm)が出力されます。右側のデバッグ結果のところには、400 ppmなどと結果が出てくるようになりました。
また二酸化炭素濃度の結果を元に、アラートを出し、換気を促すため、Dashboardボタンを追加します。Labelのところに以下のような設定を追加し、二酸化炭素濃度がある一定以上(1000 ppm)ならアラートを出して、色を変えるようにします。
<font size=8><u>換気指数</u><br>{{msg.co2img}} {{msg.co2}} {{msg.co2img}}<br>{{msg.co2msg}}
全体的なフローはこのようになりました。reTerminalに標準で付いている、光センサの値も表示するようにしています。
デプロイして、Dashboardを開くと不快指数と換気指数が表示されます。
ちょっと室温が高いですが、部屋の状況はまずまずのようです。
作ったデバイスを部屋に置いてみましょう。不快指数が上がったら、エアコンの温度を調節するよう赤いアラートが出ます。また換気指数が1000 ppmを超えたら、換気するように心がけましょう。
4. まとめ
今回の連載ではRaspberryPi Compute Moduleが入ったreTerminalを活用し、二酸化炭素センサなどを使って室内環境を計測、数値から効率的に部屋の換気がおこなえるようなデバイスを作っていきます。
今回の第2回で、ラズパイの入ったreTerminalにセンサを追加して、温度や湿度、二酸化炭素などを測れるようにしました。
また、温湿度から不快指数を計算して、その数値が一定値以上だと、エアコンなどを調整するようアラートを出すようにもしました。
さらに、二酸化炭素センサーを使って、部屋の換気状況を測定し、窓を開けるよう促すことも。
次回は、天気予報の情報を取って、熱中症に備えたりできるような情報端末にしようと思います。また気圧の変化などから頭痛、天気痛の情報を表示できるようにする予定です。
お楽しみに!
今回の連載の流れ
第1回: reTerminalと各種センサを使った室内環境測定器の制作準備
第2回: 温室度センサと二酸化炭素センサで快適な室内チェック(今回)
第3回: 天気情報から熱中症や天気痛予防も表示
第4回: インターネットから他の機器にも接続してホームオートメーションの完成!