勝手に消灯しないトイレの自動照明

以前に作ったトイレ照明用のセンサーが5年ほど経過したところでWiFi不調により誤動作するようになってしまった。

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

ちなみに、今までESP8266/32で作ってきたものは結果として数年程度の運用で廃棄したものがほとんど。なので、もう実運用で使う気にはなれない...

Raspberry Pi Zero 2Wでも数年程度の運用でWiFiに不具合が出たものが複数あったりしてWiFiの安定性や耐久性についてはあまり芳しくないようだが内臓WiFiが壊れたとしてもUSBのWiFiアダプターで代用できるため故障しても簡単に治せる。ということでオーバースペックではあるが安定性や耐久性を考慮しRaspberry Pi Zero 2Wで作り直してみた。

今回も汎用LEDによる光センサーにしたかったがGPIOの入力インピーダンスの関係で外付け回路なしでは厳しそうだったため入手しやすく安価なGY-302(BH1750)に変更し、人を検出するために使用していた赤外線距離センサーが高価かつ入手性も悪いため下記投稿の自作の赤外線近接センサーに変更した。

近接センサーをリモコンの赤外線LEDと受光ユニットで作る

自作の赤外線近接センサーは入手性の良い安い汎用部品で作れるし赤外線LEDの発光強度にもよるが赤外線反射率の高い物体なら1メートル程度離れていても検出できて照明の光でも誤動作しない。

なお、トイレの部屋の間取りや設置物の関係で人がいなくても近接センサーがオンしてしまうときはR2(220Ω)を470Ωなどより大きな抵抗にする必要があるので設定等で感度調整できるように改良したいところではある。

ついでに...トイレは毎日必ず使うものなのでその回数の記録とか一人暮らしの人のための見守り機能への対応などもいいかもしれない。

実験中、Raspberry PiのGPIOから赤外線LEDを直接駆動すると他のGPIOの入力が誤動作してしまうことがあったので2N7000経由で駆動するようにしてみた。

2N7000に発振防止用のゲート抵抗を入れるかどうかでしばし悩んだが抵抗無しでも発振することなく綺麗な波形が確認できたことや2N7000の入出力容量が小さいこととGPIOの出力インピーダンスが比較的高めなため抵抗は省略してしまったが...発振防止用の抵抗については理想駆動回路上での机上の理論だけが蔓延してるような気がするものの...ググったりAIに聞いたりするかぎり必要だと言う意見ばかりなので盲信者からのツッコミを避けるためのお守りとしても発振防止用の抵抗は入れておいたほうがいいのかもしれない。v(-_-;)

【設置】
以前の投稿では座ってる人を検出するために便器の横に設置していたが、センサー部を入口側に向けるようにトイレ奥の壁の中央付近に両面テープ等で貼り付けるのがお勧め。

便座のフタが開いてるときだけセンサーが隠れるように設置すると近接センサーがフタの開閉に反応しフタが開いてるときは消灯しなくなるので何かと便利。自動開閉するトイレにはお勧めの設置方法であるがフタが開くことで環境光センサーの光量が低下するためフタが開いてるときの照度で閾値(lux_threshold)を設定する必要がある。

トイレの照明は、TP-LINKのL510EというLED電球がお勧め。リモート操作&明るさの調整&点灯時に徐々に明るくなど夜中の目にもやさしい機能があってお手頃価格かつアマゾン等で普通に購入できる。

【回路図】

【完成した基板】


【アマゾンで購入した部品】
オーディオファン 赤外線センサー IR受信モジュール リモコン 受光部 など 電子工作 8個セット \733

5個 GY-302 光強度センサーモジュール BH1750FVI BH1750 3V-5V デュポンケーブル30ピン付き for Arduino AVR用 [\999]

Raspberry Pi Zero/Zero W プロトタイプ基板 [\346]

Geekworm Raspberry Pi Zero 2 W ヒートシンク、10mmアルミ合金 ヒートシンク (C296) [\999]

※その他の部品は秋月電子で購入。

【Raspberry Piの設定】
1. I2Cを有効化する。

2. I2Cの通信速度の設定

【ダウンロード(必要なソース一式)】
wclight.zip

【必要なライブラリ(上記ダウンロードに含まれている)】
Raspberry PiでFANをPWM制御する。(自作ライブラリ版)

【必要なコマンド】
TP-LINK Tapo P105/P110M のKlapプロトコル対応版 (Windows/Linux)

【コンパイル】

【インストール】

【照明制御スクリプト (tapo2用)】

【コンフィグ】

【ソースコード】