LoginSignup
43
28

最近朝起きると喉がカラカラになっているので、いい感じの湿度を保つ加湿器コントローラーを2時間で作る

Last updated at Posted at 2020-11-22

この記事は obniz Advent Calendar 2020 5日目の記事です。
obniz + 赤外線 LED で、リモコンコンセント OCR-05W を動かしてみます。

4 日目は@tseigo さんの「Node-RED から obniz ノードをつかって Grove Water Level Sensor をつなげてみる」でした。

朝起きると喉が痛い

最近、冬になって空気が乾燥してきていますね。
夜寝るときは気にならないのですが、朝起きると口から鼻から粘膜が乾燥してしまいます。

我が家にも超音波式の加湿器があるのですが、つまみで噴出量を調整するタイプのもので、

  • 量が少ないと加湿しきれず、朝喉がカラカラになり、
  • 量が多すぎると加湿は良いが、床がびちょびちょになり、

ちょうどつまみの回し具合を探し当てるのが大変です。

本記事では、加湿器の電源を自動で ON/OFF させることで、いい感じの湿度にしてくれるコントローラーを実働 2 時間で作成していきます。
(※材料は前もって用意しておいてください)

睡眠時の適切な湿度は50%~60%

布団の西川さんによると、寝室の湿度は**50%~60%**が丁度良いみたいです[1]。
今回はこの範囲を狙っていきましょう。

動作イメージ

用意する材料

  • obniz Board
  • 温湿度センサー SHT31
  • リモコンコンセント OCR-05W
  • 赤外線 LED
  • 抵抗
    • 5Ωのもの
    • セットで 100 円くらい
    • 秋月で買えます(ページ見つからなかった)
  • 加湿器
    • 電源をつけたり消したりしても継続して動くもの
    • ホームセンターで購入
  • その他あると良いもの
    • ブレッドボード
    • オスオスのピン or ジャンパワイヤ

加湿器コントローラーを作っていく

obnizと湿度センサー&赤外線LEDを接続する

プログラムを書く

基本動作としては、湿度を取ってきて、赤外線 LED から信号を送るだけのシンプルなプログラムです。
1 分間隔で動作するようにループさせています。
(追記:@il9437 さんのアドバイスにより改良。ありがとうございます。)

const Obniz = require('obniz');
const { on, off } = require('./signal');

const callback = async () => {
    const obniz = new Obniz(process.env.OBNIZ_ID);
    obniz.connect(); // obnizに接続
    await obniz.connectWait();
    const sensor = obniz.wired("SHT31", { vcc: 0, sda: 1, scl: 2, adr: 3, gnd: 4, addressmode: 5 });
    const irLed = obniz.wired('InfraredLED', { anode: 6, cathode: 11 });

    const { temperature, humidity } = await sensor.getAllWait();
    console.log(new Date(), temperature, humidity);

    if (humidity < 50) { // 湿度に応じてOCR-05WをON/OFF
        irLed.send(on);
    } else if (humidity > 60) {
        irLed.send(off);
    }

    obniz.close(); // 繰り返し実行するので1回毎に切断する
};

setInterval(callback, process.env.INTERVAL || 60 * 1000); // 1分毎に実行する

ソースコードは GitHub にアップしています。
https://github.com/tmitsuoka0423/obniz-auto-humidifier

SHT31 を使用して、上記の写真通りピンを接続すれば、そのまま使えるはずです。
ピンの位置を変える場合は、プログラムを修正してください。

実行する

以下のコマンドで動作します。
OBNIZ_IDは、obniz Board の画面に表示されている 4 桁-4 桁の数字を入れてください。

$ npx cross-env OBNIZ_ID=xxxx-xxxx node index.js

使ってみてわかったこと:ON/OFFさせる条件には幅を持たせた方が良い

最初は、

  • if 湿度 < 55% → 加湿器ON
  • else → 加湿器OFF

で制御していたのですが、湿度が 55%を行ったり来たりするたびに加湿器が ON/OFF され、気になり寝られず、すぐに以下の条件にプログラムを修正しました。

  • if 湿度 < 50% → 加湿器ON
  • else if 湿度 > 60% → 加湿器OFF

こうすることで、湿度が 50%未満になったら加湿器が ON になり 60%を超えるまで OFF になりません(逆も然り。)。
気にならないレベルになりました。使ってみるって大事ですね。

まとめ

実働 2 時間くらいで作りましたが、割と満足いくものができました。
寝てる間は加湿器を調整することはできないので、自動で制御させるのが良いですね。

6 日目は@youtoy さんです!

参考文献

  1. 良い睡眠の条件 - https://www.nishikawa1566.com/company/laboratory/topics/03/
43
28
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
28