IoT窓センサーを作ることにした
お部屋のIoT化を進めています。
引っ越しして部屋が1Fになったため、防犯対策が喫緊の課題です。というわけで、IoT窓センサーを作ることにしました。
窓の開閉および窓の錠の開閉を検出して、何かしらの形でインターネットに通知を送る、というデバイスです。
お出かけや就寝前、あるいは外出中に、ひと目で自宅の施錠状況を確認できると便利です。(私はよく鍵をかけ忘れてしまうので…。)
コンセプトとしては「Leafee」という商品と全く一緒です。なんですが、こちらの商品は連携がイマイチそうだったので採用しません。APIが公開されていないし、IFTTT等のサービスとの連携もできないようでした。自宅の機器を連動させたスマートホームを実現するにあたって、これでは困ります。
というわけで「無いなら作る」の精神で作っていきたいと思います。
はじめに要件を整理していきます。
要件
- 電池で駆動すること 有線での給電はなし
- 窓などの移動するものに取り付けるので線があると取り回しが面倒
- 頻繁な電池交換なしに、安定して動作すること
- 取り付け・取り外しは工具無しでできること
- 窓のすき間に設置できる程度の薄さであること
- 防犯のため、開閉のあとすぐに通知が発行されること
- ブザー、ライトなどとの連携を考える
- Wi-Fi もしくは BLE などの無線通信で外部機器と通信を行えること
要件としてはこんなもんでしょうか。 これを具体化することにします。
- 180日間電池交換無しで動作
- 取り付けは両面テープ 跡が残らないもの
- 厚さ 15mm以下
- 電源はボタン電池 CR2032
- 平均消費電力は 50uA 以下
- CR2032 電池の容量を 225mAh とすると、(225[mAh] / (24[h] * 180[days]) = 0.052...[mA] )
- 開閉検知時に割り込みを発生させる
概略設計
上記の要件から、だいたいの構成が決まってきました。
まず、メインのマイコンにはESP32を使用します。ほぼこれ一択です。
ESP32とバッテリや各種センサが搭載された M5StickC というステキなプロダクトを見つけましたが、消費電力の関係(※参考)で今回のプロダクトには採用できませんでした。
センサとしては、リードスイッチを用いることにします。窓ガラスに本体、窓の錠のレバーに磁石を貼り付けて、施錠を検知します。
センサの選択肢として ESP32 内蔵のホールセンサもありましたが、こちらは却下です。おそらくマイコンに通電している状態でないと動作しませんので、消費電力が大きくなりそうです。使えればワンチップで機能を実現できてスマートなんですけどね。
電源についてです。
電池は要件のところでも触れましたが、ボタン電池 CR2032 とします。
ESP32の推奨電圧は 3.3V ですので、CR2032 の 3V から昇圧するため DC/DC を入れます。 無負荷時の DC/DC 自体での消費電力にも注意が必要です。
省電力が求められるので、マイコンから DC/DC への電源供給を切れるようにする必要があるかもしれません。このあたりは素子の選定をしてから決まってきそうです。
メカですが、適当に3Dプリンタでケースを作り、3Mの両面テープ(3M コマンドタブ)で貼り付けられるようにしておきます。フリスクケースもありかも。
ソフト面ですが、そんなに大したことはしないのであまり気にしていません。
ESP32での開発が初めてなのでどこまでライブラリが揃っているか不安ですが、幅広く使われている製品ですし、今回の要件は比較的一般的なものだと思うので、おそらく問題ないでしょう。
処理の流れとしては、複雑なことはせず
センサ検知→起動→Wifi/BLE接続→センサ状態読み込み→通知送信→電源OFF/DeepSleep
というのを実装すれば良いかなと思っています。
最後に
今回は概略設計まで終えました。
使うデバイスがおおよそ見えてきたので、部品を買ってブレッドボードでプロトタイピングしていきます。
学生の頃以来のデバイス開発なので、開発の中で勘と腕を取り戻して行きたいところです。