ESPr Door Sensorでトイレを監視してみました。

投稿者:

スイッチサイエンスのオフィスでは社員とアルバイトさん合わせて10~20人程が働いています。そのうち半数以上は男性なわけです。普段は基板の設計やプログラミングをしている私もその男性の一人です。そんな私には普段から悩みがありました。設計作業に集中してしまうとついついトイレに行くことを忘れてしまうのです。もう少しで一区切りがつく、もう少しでいい案が浮かびそうだ。集中しているときはわからないのですが、ふとした瞬間に自分はもう限界だということに気が付きます。しかし、そんな緊急事態に限ってトイレの個室は使用中。当社のオフィスには男性用個室は一つしかありません。幾度となくこの絶望感に打ちひしがれてきました。この問題を少しでも解決するため、自分の席からトイレの使用状況が分かるようにすることにしました。

今回使用するのは最近販売を開始したESPr Door Sensorです。
2741-1
ちなみに、この製品を作ったからトイレの情報を取ってみようと思ったわけではなく、トイレの使用状況が知りたいがためにこの製品を設計しました。

構成は次のような感じです。トイレに設置したESPr Door Sensorからの情報を机上のESPr Developerで受け取って処理します。ESPr DeveloperにLEDと抵抗を取り付けてトイレ使用中に光るようにします。
ESPrDoorSensor2

使う物リスト

設置手順
1.ESPr Developerの準備
まずはホストとなるESPr Developerの準備をします。 GPIO5とGPIO13にそれぞれLEDと抵抗を取り付けます。黄緑のLEDが扉の開閉確認、赤のLEDが定電圧警告用です。
Door_Sensor
こちらのスケッチ(GitHub)のSSIDとpasswordを社内のWi-Fiのものに書き換え、Arduino IDEを使ってESPr Developerに書き込みます。書き込み完了後にシリアルコンソールを開くと次のようなメッセージが表示されます。door_dev2
192.168.1.75
これがESPr DeveloperのIPアドレスです。サーバーが起動して待機状態に入りました。
これで机側の準備は完了です。

2.ESPr Door Sensorの準備
次にESPr Door Sensorにスケッチを書き込みます。スケッチはこちらです。(GitHub)
スケッチ中のSSIDとpasswordを社内のWi-Fiのものに設定。hostにホスト(ESPr Developer)のIPを入力して書き込みます。
const char* ssid = "ssid";
const char* password = "password";
const char* host = "192.168.1.75";
トイレの中で電源ケーブルを引き回したくなかったのでリチウムイオン電池(900mAh)を電源として使います。ESPr Door Sensorとリチウムイオン電池と磁石をそれぞれトイレのドアに張り付ければトイレ側の準備も完了です。
2741-10

動作確認
ESPr Developerのシリアル出力を確認するとドアの開閉に合わせて情報が送られてきていることがわかります。送信されてくる情報はドアの開閉状態と、その時のバッテリーの電圧です。
door_dev5

ドアが閉じるとESPr Developerに取り付けられたLEDが光ります。ESPr Door Sensorはリードスイッチの状態が変化するとリセットがかかりその度にWi-Fiに接続するところから始めるので、ドアの開閉とLEDの消灯・点灯には数秒のタイムラグがあります。
s-DoorSensor3s-DoorSensor2

バッテリー駆動させているので、どの程度バッテリーが持つのかが気になるところです。そこで実際にトイレに設置してログを取りバッテリーの電圧の変動を調べてみました。サンプルスケッチのままだとドアが開いた状態ではドアが閉まるまでスリープ状態ですが、今回はログを記録する都合上ドアが開きっぱなしの状態でも一時間に一度は情報を送信するようにしました。
batt_log
X軸のメモリを0分ピッタリにしていますが、実際には0分ピッタリの時間に記録しているわけではありません。

6/14の14:00~18:00の間に急激に電圧が落ちているポイントがありますが、ここは間違えてホスト側の電源をオフにしてしまっていたからです。書き込んだスケッチはホストとの通信が確立するまでスリープモードに入らずに接続を試み続ける設定になっています。そのためWi-Fi接続がしばらく維持されてしまい一気にバッテリーを消費してしまいました。

6/11(土)12(日)は人がいないので電圧低下が特に緩やかです。

ついでにトイレの利用回数も調べてみました。
batt_log
6/8、6/9あたりは利用回数が多い気がしますが、これは私がはしゃいでいるだけなので実態としては6/10日以降のような感じです。(6/14は一時的にログが取れていない時間帯がありますが)
多くても一日20回程度の使用頻度ですね。データを取るために通信頻度を増やしていますが、それでもこれくらいの頻度であれば900 mAhのリチウムイオン電池で3、4週間は動作してくれそうです。(スリープ時にリードスイッチOFFの状態では数十μA程度の待機電流ですみますが、リードスイッチONの状態ではリードスイッチに300 μA程の電流が流れ続けてしまうため、常時閉じている扉ではここまで長くバッテリーを持たせることはできません。)

何はともあれこれで自分の席からトイレの使用状況が分かるようになりました。これで設計に集中できそうです。