先日研究室の懇親会で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 氏に感謝します。ありがとうございます。

ところでこれ、実際に使うのかなぁ…

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください