ESP8266(WROOM02)でトイレセンサー

トイレの自動点灯照明はメーカーに関わらず明るさの判定/点灯時間/モーションセンサーによる制御がイマイチでどうもしっくりこない。特に便秘ぎみで力んでもがいているとき不意打ちで消灯されてしまうと一気に集中力が途切れてしまう。あぅ~もうちょっとだったのに...って感じ。(-_-;) 手や体を揺すったりして消灯を回避しようとするのだがそうすると逆に集中できなくなったりもする。この問題?を解決するためにトイレ用の自動照明を作りたいとは思っていたのだがセンサーをどうするかでず~~~と迷っていた。

まず、便座に座っている状態を検出する必要がある。自動洗浄トイレであれば便座スイッチなるものが内蔵されているはずなのでそれを利用する方法もあるが製品依存になるし配線が出てしまい見た目にスマートでないのでボツだ。便座に座っている人間を感知するには市販されている超音波/赤外線/レーダーセンサーなどが使えそうだがトイレというデリケートな空間でもあるので見た目に怪しさを感じるゴツいものやデカいもの、カメラのように見える物などは使いたくはない。で、最近になってこれはと思うセンサーを見つけてしまった。

Pololuパルス幅出力距離センサ(最大距離 50 cm)

試してみたところ便座に座っている状態が完璧に検出できることが確認できた。30㎝ちょい程度が安定して認識できる距離かな。小型で組み込みもしやすそうだったので早速回路を設計してみた。

CPUはESP8266(WROOM02)を使い、TPLinkのHS105を直接制御してトイレ照明を点灯させる仕様だ。

ちなみに光センサーはATtiny10+LEDの組み合わせ。部品代は40円以下と超格安で感度もいいので使い始めるとやめられなくなる。かっぱえびせんみたいなセンサーだ。(笑)

ATtiny10で光センサーモジュールを作ってみた。

【仕様】
当初はトイレ専用で考えていたが、ハンダこて、アイロン、ヒーター等の消し忘れ防止などにも使えそうなので汎用的な仕様で考えてみた。

・オン制限時間が設定可能。※オン制限時間を設定した場合の電源オンは手動スイッチのみとなり、オン後の時間延長はセンサーで可能。
・オフ遅延時間が設定可能。
・光センサーのモードと閾値が設定可能。
・PIR/DDSセンサーの有効無効が設定可能
・手動オン/オフが可能。

【回路図】
CPUのプルアップ/プルダウンを有効活用した結果、抵抗は1個だけとなった。コンデンサも可能な限り少なくなるよう考えてみた。

【完成基板】
センサの配置がイマイチかも...

【設置したところ】
PIRセンサーが入口に対し真横を向いてるためトイレの入り口付近の検出がうまくできない。それを解決するため超小型パラボラ型リフレクターを3Dプリンターで作ってみた。適当な計算により設計したパラボラの表面に熱反射材として百均のアルミテープを張っただけのお粗末なものであるがトイレの入り口の外側でも感知できるほど確かな効果が実感できる。
ちなみにPIRセンサーの代わりに検出範囲の広いドップラーセンサーを使うという方法もあるがトレイ室内に風や振動等で揺れたり動いたりする物があったりトイレのドアをガタつかせただけでも反応してしまうことに注意が必要だ。
センサーは、便座を閉めたときより上側、腰付近を狙って設置すると良いだろう。

【天井裏に設置するリモートスイッチ(TPLink-HS105)】
我が家はダウンライトで天井裏にHS105を設置することになる。簡単に設置できるようにするため事前に次のようなものを用意して置いた。あとは配線を差し込むだけでOKだ。
※電気工事士の資格のない人は安全のためにも業者にお願いするべし。

【センサー設定ページ】
ライトセンサーのFeedbackは、トイレ照明制御などのように電源オンによる照明の点灯がライトセンサーに反映されてしまうような場合にチェックする。チェックすると電源オン時はライトセンサーが無視されるようになる。

【修正履歴】
2021-11-17
照明スイッチをオフにするとHS105の電源も切れてしまい電源のオンオフ状態が合わなくなってしまうため、HS105との通信エラー時に電源状態を不明(POWER_UNKNOWN)に設定するようにした。これで通信再開後に電源のオンオフ状態の同期がとれるようになる。

2021-10-10
照明が点灯しっぱなしになる現象が発生。HS105との通信エラーによるものと予想し通信が成功するまで1秒間隔でリトライするようにしてみた。

【ファームウェア】

【参照ライブラリ】
ESP8266/ESP32用のネットワーク管理ライブラリ
ATtiny10で光センサーモジュールを作ってみた。
TP-LINK WiFiスマートプラグをESP32(Arduino)から制御する