自室環境モニタシステム (ひとまず完成)

自室の環境モニタシステムをひとまず完成させた。前回の記事 の続き。

システムの概要

  1. 各種センサを Raspberry Pi に繋ぎ、データを収集する
    • 気温・湿度・気圧センサ BME280: I2Cバス経由
    • コンセント電圧・電流センサ: Arduino の自作シールド
  2. データを蓄積する
    • CSV でデータを保存。
  3. 収集したデータを可視化する
    • Raspberry Pi を munin ノードにして、センサデータのグラフを確認できるように。

ハードウェア

  • 気温・湿度・気圧センサ BME280 はブレッドボード上に用意して、I2C バスで Raspberry Pi と接続。
    • 使用したセンサ BME280 はかなり高機能なもので、自前での補正はもちろん、内部に IIR フィルタを備えていたり、オーバーサンプリングまでできたりする。今回は分〜時間単位での天気の変化を見るために使ったけど、データシートには応用例として indoor navigation (温度・湿度・気圧でセンサがある部屋を検出) や gaming (気圧センサでプレイヤの標高というか姿勢を検出) なんかも載っている。今回の用途にはかなりオーバースペックだった。
  • コンセント電圧・電流センサは専用の Arduino シールドを用意し、ケース内にきちんとパッケージング。Raspberry Pi とは USB で接続。
    • 電流センサには SR-3702 を利用。前回の試作時に使ったものよりは安価。カレントトランスだけあってサイズが大きいので、ACS712 のようなホール素子型のモジュールを使ってもよかったかもしれない。

ソフトウェア

センサデータのグラフの例

f:id:sobataro:20151230202417p:plain

↑ 1週間分の温度グラフ。晴れの日は日中と夜間の気温差があり、雨の日は温度差が小さくなるっぽい。

f:id:sobataro:20151230202425p:plain

↑ 同じく1週間分の気圧グラフ。意外と上下している。

f:id:sobataro:20151230202431p:plain

自宅サーバの消費電力グラフ。動画のエンコード中は140〜150Wくらい、それ以外のアイドル時は80〜100Wくらい消費している。11月26日に消費電力が20Wくらい増えているが、これは HDD を1台増設したため。

感想と今後の課題

  • 今回はじめて I2C を使えたのはよかったが、BME280 の制御プロトコルがやや複雑で、データシート記載の制御プログラムまる写しになってしまったのはやや反省。次はもう少し単純な I2C デバイスにして、ライブラリとかは使わずに自分で制御してみようと思う。
  • 当初は自室の環境モニタリングをするつもりだったが、サーバの消費電力も監視できるようにしたため、設置場所がサーバのある廊下になってしまった。Arduino シールドと BME280 側とを分離して、ちゃんと自室というか居住環境の状況をモニタできるようにすべきかもしれない。
    • とくに温度と湿度を監視できれば体調管理に役立ちそうなので、これはぜひやりたい。
  • 今回使ったセンサ以外にも、臭気センサや照度センサなどを購入してあるのだけど、時間の都合 + 前述の設置場所の都合で、今回は組み込んでいない。時間ができたらこのあたりもモニタできるようになると面白いかも。

参考文献