冷凍庫の温度を監視したい!
ある日、地元口内(くちない)にあるNPO様から「なんとかならないか?」と相談を受けました。内容はというと、「事務所から離れた通信手段のない遠隔地にある冷凍庫の温度を監視したい」というものでした。なんでも、以前冷凍庫が故障して保管していた商品が全部使い物にならなくなったことがあったそうで、それ以来毎日事務所から離れたところにある冷凍庫まで車で行って目視で温度を確認しているし、仕事が休みの日であっても心配なので見に行っているとのことだったのでなんとかしてあげたい!と思い解決策を考えることにしました。
通信手段を確保せよ!
冷凍庫には温度計が付いているそうなので、WEBカメラで温度計を監視するのが手っ取り早いかな?と思ったのですが、通信手段がないことにはWEBカメラでの監視も無理なのでとにかく通信手段をなんとかしようと調べることにしました。
IoT で通信といえば SORACOM がすぐ思いつくところですが、他にもないかな〜と調べていると「sakura.io」なるものを見つけました。Raspberry Pi に搭載できるLTEモジュールが用意されていてしかも月額が60円/モジュールと格安だったので、ランニングコストがほぼかからないのは魅力的だな〜と思い採用に大きく傾いたのですが、用意されている開発用のドキュメントを見てこれなら行けそうだ!と確信が持てたので「sakura.io」を採用することに決定しました。
sakura.io
機器構成
sakura.io の通信モジュールではサイズの大きいデータを送信することができないのでWEBカメラによる温度計の監視は断念しました。そのかわりに、温度センサをラズパイに接続して読み取った温度データを定期的に sakura.io のプラットフォームに送信することにしました。
部品の調達
通信手段さえ確保できればこっちのもの!あとは必要なハードウェアを揃えて実装し、ちょっとしたプログラムを組むだけです。てことで amazon で以下のものを取り揃えました。
コンピュータはもちろん Raspberry Pi
温度センサはドキュメントや Python 用のライブラリが充実している DS18B20
今回のシステムの要である通信モジュール
Raspberry Pi と通信モジュールの橋渡し
通信モジュールの動作確認
とりあえず通信モジュールの動作を確認したかったので仮組してモバイルバッテリーにつないでドキュメント通りに動かしてみたのですが通信ができない。。。なぜだ〜?ドキュメントのトラブルシューティングを見てみると「電圧降下等でsakura.io通信モジュールの起動に失敗している」という記述があるのを見つけました。おそらくモバイルバッテリーのアンペアが足りないんだろうな〜ということでACアダプタを追加で購入しました。
機器の安定動作には 3A は欲しいところ
実装!実装!
ACアダプタで電源を確保することで無事に通信モジュールの動作を確認することができました。電源大事ですね。
では温度センサをラズパイに接続して、専用ケースに実装していきましょう!
温度センサの動作にはプルアップ抵抗が必要なので 10k の抵抗を使用しました。温度センサは冷凍庫内外の温度をそれぞれ計測できるよう2つ接続しました。
アンテナやセンサ、電源を通すためにケースを加工しました。
基盤は裏からしっかりネジで固定しました。
フタを閉めれば完成!アンテナがつのみたいでカワイイですね。
温度センサによる温度の読み取り
今回使用した温度センサ DS18B20 については温度データを取得するのに便利なライブラリが公開されているので使用させていただきました。
github.com
温度データの送信
温度センサより取得したデータは cron により定期的に送信することにしました。データ送信用の Python コードは sakura.io のドキュメントを参考にしました。
sakura.io
温度データの取得
プラットフォームに送信されたデータは json 形式で取得できるので HTML と Javascript で温度閲覧用のページを作成しました。
以上で「冷凍庫温度遠隔監視システム」の完成です!
喜びの声
このシステムのおかげで毎日冷凍庫まで通わなくても、好きなときに好きな場所で確認できるので大変助かっているとのお声をいただきました。私としても地元NPOの力になれてとても嬉しかったです。なにより、開発しているときの試行錯誤が楽しかったです!
要改善点
開発・設置は2018年11月に行ったのですが、これまでに2回ほど温度データが最新に更新されないという事態が発生しました。sakura.io はソフトバンクの回線を利用しているので、ソフトバンクで通信障害が発生すると温度データを送信できなくなります。また sakura.io で障害やメンテナンスが発生すると同様に温度データを送信できなくなります。現状では、一度温度データの送信に失敗するとラズパイを再起動しないといけないので結局冷凍庫まで行ってもらって再起動していただきました。NPO様からは別にこのままで良いよ〜と言っていただいておりますが、いずれかのタイミングで改善策を施したいと思っております。
参考
www.fromblue.jp
qiita.com
api.sakura.io
github.com
make.bcde.jp
developer.mozilla.org