2018/04/30

無線LANモジュールESP-WROOM-02と傾斜スイッチでポストへの投函を検知する電池駆動センサを作ってみた

個人でも安く容易に入手できて、かつ技適取得済みで安心の、ESP-WROOM-02(ESP8266)。恥ずかしながらつい先日教えてもらって初めてその存在を知ったので、使い方の勉強がてら動くものを作ってみました。

今回作ったのは、家のポストにモノが投函されたことを検知してIFTTT経由でLINE通知してくれる電池駆動のセンサ。仕上がりはこんな感じ。


我が家のポストは外にあって電源が取れない場所にあるので、ESP-WROOM-02の「deep sleep」機能(超低消費電力でのスリープ動作)を使って、乾電池での長期間駆動を目指します。似たようなことをやっているINTERNET Watchの記事などを参考に、以下の方針で作りました。
  • 普段はESP-WROOM-02はdeep sleepモードで寝かせとく
  • ポストにモノが投函されたことをESP-WROOM-02のリセットピンにつないだ傾斜スイッチで検知、deep sleepから起こす
  • 起きたら、自宅の無線LAN APにつないでIFTTTにWEBHOOK、通信終わったらすぐまたdeep sleepモードで寝かす

傾斜センサの部分は「型想い」と両面テープでポストのフタの内側へ、センサ本体と電池ケースは3Mの面ファスナーで着脱できるようにポストの内側へ、それぞれ固定しました。



ESP-WROOM-02上で動いているコード(Arduinoのコード)は以下に置いておきます。
nikotan/esp8266_PostMonitor.ino - GitHubGist

Arduinoのコードで動かせるってすばらしい。手軽にネットワーク機能を使ったデバイスを試作できて楽しいです。今回作ったものは今のところちゃんと動いていますが、どれくらい長期間駆動できるかはまだ不明。しばらく様子を見てみます。


※今回のハードとソフトを作るにあたっては、以下の記事などを参考にしました。

2018/04/22

Raspberry PiとWEBカメラで洗濯機の動作状況をモニタリングして、洗濯終了をLINEに通知するIoTボットを作ってみた

家の一階にある洗濯機で洗濯が終わったかどうかを、二階のリビングにいても分かるようにしたい!というわけで、タイトルのとおりです。

洗濯終了を判定するための手がかりとしては、洗濯終了時に鳴るビープ音、洗濯機の使用電力(電流)、などがありそうですが、今回は操作パネルの表示を使います。我が家の洗濯機には、操作パネルの中に洗濯終了時にだけ点灯する場所があったので、この場所の点灯状況で洗濯終了が自動判定できちゃいます。


Raspberry PiにつないだWEBカメラで操作パネルの特定位置の点灯状況を判定するだけなんですが、操作パネルをうまく写せるカメラの固定場所があまりない、というのが実は問題です。ちょっと離れた場所から監視せざるを得ないので、向きをざっくり合わせるだけでも使える、とか、カメラが多少動いたりしても使える、とかするための工夫が必要です。


基本的な方針は以下の通りですが、点灯状況を監視したい場所の近くにARマーカーを貼って、これを基準に監視場所の画像を切り出して点灯状況の判定をするようにしました。
  • ARマーカを点灯状況を監視すべき場所の近くに貼付
  • WEBカメラで撮影した画像からARマーカを検出
  • 検出したARマーカを基準に監視場所の画像を切り出して点灯判定
  • 点灯していると判定された場合にはIFTTT経由でLINEに「洗濯が終わっています」を通知
Raspberry Pi用のPythonコードは備忘録がてら以下に置きます。
nikotan/WashingMonitor

誤報対策で苦労しましたが、今は安定して動いてます。結構便利。


ARマーカーの検出のために使ったOpenCVのarucoライブラリや、arucoライブラリを使うためのRaspberry Pi上でのOpenCVのビルドや、IFTTTを使ったプッシュ通知などについては、以下記事を参考にしました。