サーモカメラとRaspberry Pi で熱源監視、Slackの通知で火災防止

先日実装した弊社の社内IoT。事務所内の工作テーブル付近に設置、ハンダごてを始めとする機器の発熱をサーモカメラで監視しています。取得したサーモグラフィをWeb上で確認出来るようにし、火災防止に役立てています。

サーモカメラでハンダごて熱監視

事務所退室の際に、ハンダごての電源が切られているかどうかを毎回確認するという行為をIoTプロダクトに肩代わりさせることが今回のプロトタイプの目的です。 上の写真が実際の設置風景です。窓に貼り付けてハンダごてが普段定位置として置かれているエリアを観測しています。

環境

  • mac OS X El Capitan
  • Raspberry Pi Zero W
  • OS 2017-08-16-raspbian-stretch-lite.img
  • サーモカメラモジュール OTK-THG02(*現在は取扱がない模様)

手順

まず楢ノ木技研のサイトでOTK-THG01/02/03シリーズ・シリアルモード仕様書をダウンロード。仕様書に従いハンダ付けをしていきます。(今回はUSBは使わずシリアル通信で行うので、あらかじめシリアル通信モードに変更) Raspberry Pi Zero Wとの接続は以下の通り。
  • TX – RX
  • RX – TX
  • 5V – 5V
  • GND – GND
MACとシリアル接続します。 Arduino IDEでシリアルポート通信画面を表示。通信速度38400で改行コードはCRCFにすることに注意。

OTK-THG02USBサーモグラフィモジュール2をつなげたサーモカメラ Raspberry Pi Zero Wとシリアル通信する

ls /dev/tty.*
#モジュールが改行コードが[CR+LF]である必要がある
#[コマンド]→[エンター]→[ctrl+J]の順番に入力する!
screen /dev/tty.usbserial-A1032MA9 38400
#ラズパイとシリアル通信
#モジュールが改行コードが[CR+LF]である必要がある
#[コマンド]→[エンター]→[ctrl+J]の順番に入力する!
screen /dev/ttyS0 38400
picocom -r -l /dev/ttyS0 38400
#READコマンドを送信する。
READ
  • raspi-configのインターフェースのシリアル通信設定の許可(loginシェルなどはNO ハードウェアアクセスでYES)
  • /boot/cmdline.txtのコンソール部分削除
  • シリアル待ち受けサービスストップ(sudo lsof | grep ttyS0してagettyが出てくるならサービスを落とす)
設定は自動で変わる場合があるので、これらのチェックは非常に重要です。動かない時は全てチェック。
起動
 python serial-thermo.py 問題なく動くことを確認。 裏で起動させておく。 nohup python serial-thermo.py & 止める時は下記コマンド #プロセス調べる
ps aux | grep python
#プロセス強制終了
sudo kill -9 プロセス番号

実行結果

温度情報が解像度16*4の形で送信されてきます。 左上はカメラから見て実際の左上で見た通りの順番に並んでいます。
READ
+0169+0155+0171+0167+0163+0160+0160+0141+0140+0143+0137+0146+0148+0150+0153+0150
+0165+0162+0167+0160+0164+0157+0139+0134+0149+0146+0140+0146+0141+0147+0143+0157
+0160+0128+0162+0163+0160+0141+0137+0137+0141+0144+0138+0146+0143+0140+0143+0146
+0110+0138+0151+0154+0138+0134+0136+0143+0140+0143+0146+0138+0147+0139+0148+0142

アラートの仕様

アラートの条件は以下の通りです。
  • 20時以降、最大温度が平均温度との差分で10度以上高く、それが10分以上続いた場合。
  • 時間帯を問わず、温度が100度以上の場合にもアラート発生。

温度の可視化

Web上での可視化にはGrafanaとInfluxDBを使用しています。以前行ったオフィスIoT Sense HATを使った気圧・温湿度のセンシングでもこちらを使用していました。 下の画像はハンダごてのスイッチを入れて計測したもので、Maxはカメラで撮影してる範囲内で最も熱い値を指しています。 このサーモカメラは16*4ピクセルと検出解像度が低いのですが、今回のハンダごての熱源監視においては、ソフトウェアによる制御と合わせて問題なく認識できました。

温度推移グラフ

下の図はWeb上で見ることが出来る温度推移です。 12:37ごろまでMaxの値は一定ですが、そのあと12:37ごろに少し上がっています。このときにはハンダごてにある席に人が座っていた時間帯で、その後13:04ごろから急に上がっているのが、ハンダごてのスイッチを入れたタイミングです。

サーモグラフィ

サーモグラフィ画像はGUIはWEBから見れるようにスクラッチ開発したものです。 本来の性能としては秒間8フレームの撮影・表示が可能ですが、今回に限っては必要ないので、フレームレートは秒間2フレームに落としています。加えてデータのPOSTは30秒に1回としているので、画面の更新も30秒に1回。 systemdで自動起動設定をしているので、電源を挿し直したとしても特に設定し直すこと無くサービスが起動するようになっています。 上はハンダごてのスイッチを入れた直後。 こちらはハンダごてスイッチをいれてから10分後ぐらいの画面です。 検知するとSlackに通知が来るようにしました。こちらにはSlackのWebhookを使ってます。 アラートの仕様に従い、Slackにサーモカメラの熱監視情報が流れてきます。消し忘れていた場合、このコメントを見れば気づけます。 設置後、実際にSlackのアラートを見て消し忘れに気がつくシーンがあり、早速役に立ったようです。 元は思いつきから始まりましたが、こうして稼働させることが出来ました。 日常の風景の中から、IoTで塞げるかも知れない穴を見つけて、そこに自分たちで作ったものを導入してみる。すると、そこからまた発見できることがあります。 もしかしたらそれは日常を飛躍的に変化するものかもしれませんし、逆にむしろ必要ないものかもしれません。それを作ってみて、動かしてみて、試作品と共に過ごしてようやく見えてくるのではないでしょうか?私たちは社内研究で、そうした価値の発見にも挑んでいきたいと思っています。

最後に

XSHELLは、IoTの受託開発や相談を受け付けています。IoTによる効率化を目指したい。IoTで何が出来るか聞きたい。などなど、是非お問い合わせ下さい。 自分たちでIoTシステムを作りたいときはisaaxを使いましょう! ]]>

上部へスクロール