先日研究室の懇親会でLT会をしました。
そこで、「3.5年ぶりに冷蔵庫を稼働した話」と題して、冷蔵庫を稼働した話(?)と、缶ビールの温度監視システムもどき(?)を作った話をしました。
大したものじゃないですし、雑な作りですが、せっかくモノを作ったので記事としてまとめてみます。
概要
冷蔵庫に入れたビールの温度を監視し、十分に冷えたらそれを通知するシステム を作りました。
物理の全体像は下図のようになっています。
ビールの温度を直接測るのは難しそうだったので、缶に温度センサを当てて、缶の温度 を取得するようにしました。500mlペットボトルの上部を切り取り、内側に温度センサを付けて、それを缶ビールにかぶせることで温度センサが缶ビールに接するようにしています。ビール自体の温度と缶の温度は差がありそうですが、そこは目標温度で適当に調整します。
冷蔵庫のドアにはゴムパッキンが付いているので、ドアにケーブルを挟むことで、温度センサのみを冷蔵庫の中に入れることが可能です[ref]よく考えたら冷蔵庫のドアのケーブルを通した部分に若干隙間が開いてしまい、冷蔵庫の冷却効率が落ちているかもしれませんが、確認はしていません。[/ref]。
一応、結露が怖いので、冷蔵庫の中に入れる温度センサは、缶ビールとの接着部分以外をホットボンドで塗りたくっておきます。
使わないときは温度センサのケーブルは抜いておき、使用時にケーブルをさして、ペットボトルの上部を缶ビールに被せます。簡単に抜き差しできるようになっています。
Raspberry Piが温度センサを認識したら、その10秒後に監視を開始する仕組みになっています。
アーキテクチャ
温度センサは秋月電子でモジュール化されて売られている ADT74100 を採用しました。そのままでも売られています[ref]注文した翌日の朝に届きました。早い。[/ref]。
温度センサにより取得した温度をI2Cで Raspberry Pi に送り、それをPythonのプログラムにより読み取り制御します。
通知には Slack とSlackの Incoming Webhooks を使いました。
ADT7410はI2Cで温度を送ってくれるのでAD変換などしなくて良いですし、モジュール化されているので適当に配線するだけで使えます。Raspberry Piは小さなパソコンと同じように使えますし、SlackのIncoming Webhooksも適当にPOSTするだけで良いですし、かなり楽に開発ができる構成になっています。
Raspberry Pi とその設定
Raspberry Piは、(たぶん)1のModel Bを使用しました。数年ぶりに動かしたので、かなり古い上にバージョンもうろ覚えです。
OS は Raspbian (7.11) 、Pythonのバージョンは 3.2.3 で動作を確認しました。これらも古いですね、はい。
ADT7410 との I2C 接続の設定は、I2Cを使う(設定編) | Make. とか Raspberry Pi と温度センサーで自宅の温度を可視化 · Yuichi Takada とか Raspberry Pi で I2C を利用するための設定 - Qoosky を参考にして設定します。
プログラム
プログラムはPythonで作りました。Gistで公開しています。
snakazawa/beer_monitor.py
ADT7410の温度取得部分は、Make.様の記事「I2C温度センサー(ADT7410)を使う | Make.」に載っているコードを使わせてもらっています。
プログラム中の定数は以下のように設定します。
- SLACK_URL : 通知に使うSlackのIncoming WebhooksのURLを設定します。
- DURATION : 温度の定期通知の間隔を秒で指定します。
- GOAL_TEMP : 目標の温度を摂氏で設定します。缶ビールの温度がこの設定値以下になると完了通知を行い、監視を終了します。
待機時にも1秒ごとに温度の読み取りを試します。読み取りに成功したら、温度センサーが接続されたとして、10秒後に監視を開始します。
監視中に温度の読み取り時に失敗したら、温度センサーが取り外されたとして、監視を終了します。
ちょっとコードが汚くてわかりづらいですね…
通知結果
Slack通知の結果は以下のようになります。
デモ用に目標温度を高く、通知間隔を短く設定しています。
ビールが冷えたときの通知は、メンションを飛ばしても良いかもしれません。
おわりに
Raspberry Pi、ADT7410(温度センサー)モジュール、SlackのIncoming Webhooksを使って缶ビールの温度監視システムもどきを作りました。
久しぶりに半田付けをしたり、Raspberry Piを弄ると楽しいですね。
最後に、アイデアを出してくれた @aucuba 氏、設計を手伝ってくれた @urano 氏に感謝します。ありがとうございます。
ところでこれ、実際に使うのかなぁ…
失礼致しました。Amazonで日本のラズベリーパイを販売している林遠です。
ブログを拝見しました。弊社のラズベリーパイ4bレビューブログ記事を書きしてくれませんか。
こちらは無料でサンプルを提供します。
連絡メールはjp02@vertue.cnです。
御返事お待ちしております。どうぞよろしくお願いします。
失礼致しました。日本のラズベリーパイを販売している林遠です。
ブログを拝見しました。弊社のラズベリーパイ4bレビューブログ記事を書きしてくれませんか。
こちらは無料でサンプルを提供します。
連絡メールはjp02@vertue.cnです。
御返事お待ちしております。どうぞよろしくお願いします。