高齢の親曰く「洗濯機の運転終了メロディー音が小さくて聞き取れない、洗濯が終わったことに気が付かず、いつの間にか洗濯していたこと自体を忘れてしまう」という。それはボケてるんじゃないか?という話もあるが、とりあえずそうではない、という前提で以下の話を進めることにする。一般的に全自動洗濯機の場合は洗濯物を投入して洗剤やら何やらを投入しスタートすると、洗濯、濯ぎ、脱水を適切に行ってピロピロいって終わる、その最後のピロピロ音が聞き取れないということなのだ。
高齢ゆえに耳が遠い(可聴周波数が狭くなって高域が聞こえない)
そもそも運転終了メロディー音の音量が小さい
洗濯機を置く場所がリビングから遠く、ドアなどを閉めていると聞こえにくい
理由としては様々なことが考えられるが、高齢者は一般的に高い周波数が聞こえにくくなるのは事実としてある。昔の洗濯機のブザー音は「ビーーーーーーー」となんとも味気ないうるさい音がしていたわけだが、まぁあれだとわかるのかも。今そんな洗濯機は売られていないだろう(二層式は今でもそうなのだろうか)。
ということで洗濯の完了をわからせるために運転終了メロディー音を爆音で鳴らしたいわけなのである。完了通知とかスマート家電化はいろいろなアプローチがあって簡単なのはSwitchBot プラグミニを使用して消費電力をモニターし、洗濯が完了すれば消費電力量が低くなることをトリガーとして洗濯の完了を検知して通知する、みたいなことだ。実際自分の洗濯機で試してみると、複数回通知されてしまった。
この原因は何かというと、洗濯→濯ぎ→脱水という各工程に移るその時に消費電力量がゼロに近いインターバルがあるらしくそれを拾ってしまうのであった。何W以下と何分待機という条件をそれぞれうまいこと調整すればうまくいくかもしれない、洗濯が終了して濯ぎに移る、或いは濯ぎが終了して排水を行い、脱水に移るまでの間隔が3-4分程度あるようで、その間の消費電力がほぼゼロなのだろう。
それをうまいこと調整したとして、高齢者にはスマホで通知など意味がなくとにかく洗濯機の運転終了メロディー音を爆音で鳴らしたいわけなので、例えばそのトリガーで別のSwitchBot プラグミニに接続した何か音が鳴るものをONにする、みたいなことを一旦考えたのだが、SwitchBot プラグミニが2個必要で且つAC電源接続と同時に何か音が鳴るもの、が必要である。突き詰めて考えていくと結構煩わしい。他に何があるか。洗濯機側を一切改造しない(※)という制約条件で考えると、
カメラを使って洗濯機の電源のONとか残り時間とかの表示を監視・判断させる
運転終了メロディー音を検知して判断させる
消費電流を検知して判断させる
一番いいのは3つ目である。カメラも不要だしマイクも不要だ。但しAC電流を測定するセンサーが必要である。我が家の洗濯機日立ビートウォッシュ8kgの消費電力はスペック的には255Wであったので、一般的には200-400W程度と考えられる(乾燥機能がないモデルの場合)。乾燥機付きのドラム式の12kgクラスになると1240Wとドライヤー並みになるが、つまりおよそ200W以上を検知できれば良いということになる。
(※)洗濯機側を一切改造しないというのは、だって実家の洗濯機のメーカーが三菱だったかシャープだったかイマイチ思い出せないし、型番に至っては不明だし、詳細スペックが不明なのである。実家において何を使っているわからないのに自分の洗濯機でデバッグしてみる必要があるので、それがそのままうまくいくとは限らないし、そりに合わせたハードウェア的なカスタマイズをしてしまっても意味がないので出来る限りソフトウェアで吸収するべきなのだ。実際のところどうなのか、消費電流を測ってみることにした。
こんな感じで途中にクランプ式の電流計を入れ、この状態で電流を測りながら洗濯してみると、3A前後で変動することがわかった。まぁ、中華製のテスターなので値そのものはあまり信用していない。
洗濯、濯ぎ、脱水中は3A前後を示す。但しやはり、途中途中はゼロに近くなる。それがこれ。
0.09Aを示しているがこれは洗濯から濯ぎに移る給水中、または濯ぎから脱水に移る排水中などの消費電流値である。単純にこの値を正しいと仮定すると0.09A x 100V=9Wは消費しているのだが、3A(300W)から見るとOFFに見えてしまうのだろう。
さて、この測定を何にやらせるかであるが、Wi-FiやBluetoothに対応はしているものの技適がないので使えないESP32C3 SuperMiniがやはり最適か。センサーはSCT013-005 5A 1Vの非侵襲的スプリットコア変流器センサーを使用。これでAC100Vの片側線にクランプして電流を測定してESP32C3 SuperMiniに判定させる。
何か音が鳴るもの、は何が良いか。余っているPC用のスピーカー、ここではELECOMのマルチメディアスピーカ - MS-87SVの片割れを使うこととした(スピーカーと筐体だけ使えればいいので何でもいい)。PAM8403のアンプ基板モジュールを使い、片chだけ使用。電源は余っていたDC5VのACアダプターを使う。
スピーカーに穴あけ加工をしてセンサーのためのジャックと、プッシュスイッチ、ボリュームを取り付ける。あとは中にESP32C3 SuperMiniとPAM8403のアンプ基板モジュール、分圧抵抗などを仕込んで改造する。中身で使ったのはスピーカーだけ。
回路的にはこんな感じになった
画像は実験中で電解コンデンサがあるが、実際は積層セラミックコンデンサに落ち着いた。
これでソフトを焼く
pitches.hはネットに転がっているやつ
デバッグは難航したが、何とか形になってシリアルポートからはこのようなログを得た(中略)。補正値(ここでは0.7)をテスターの値を見ながら何度か調整。
Calibration start… === Calibration Report === Samples: 2000 Average midpoint: 2258.363 StdDev: 22.016 Min: 2124 Max: 2379 ========================== rawAvg=2258 I_rms(A)=0.000 currentNow=OFF rawAvg=2254 I_rms(A)=0.000 currentNow=OFF rawAvg=2254 I_rms(A)=0.000 currentNow=OFF rawAvg=2249 I_rms(A)=0.000 currentNow=OFF rawAvg=2250 I_rms(A)=0.000 currentNow=OFF rawAvg=2127 I_rms(A)=3.191 currentNow=OFF rawAvg=2386 I_rms(A)=3.175 currentNow=OFF rawAvg=2160 I_rms(A)=3.167 currentNow=ON rawAvg=2313 I_rms(A)=3.196 currentNow=ON rawAvg=2199 I_rms(A)=3.174 currentNow=ON rawAvg=2251 I_rms(A)=0.000 currentNow=ON rawAvg=2253 I_rms(A)=0.000 currentNow=ON rawAvg=2253 I_rms(A)=0.000 currentNow=OFF Detected OFF, timer started rawAvg=2252 I_rms(A)=0.000 currentNow=OFF rawAvg=2251 I_rms(A)=0.000 currentNow=OFF rawAvg=2259 I_rms(A)=0.000 currentNow=OFF rawAvg=2256 I_rms(A)=0.000 currentNow=OFF rawAvg=2257 I_rms(A)=0.000 currentNow=OFF rawAvg=2254 I_rms(A)=0.000 currentNow=OFF rawAvg=2255 I_rms(A)=0.000 currentNow=OFF rawAvg=2256 I_rms(A)=0.000 currentNow=OFF rawAvg=2255 I_rms(A)=0.000 currentNow=OFF rawAvg=2256 I_rms(A)=0.000 currentNow=OFF Buzzer START (auto after stop) Buzzer FINISHED rawAvg=2251 I_rms(A)=0.000 currentNow=OFF 13行目に洗濯が始まるのだが、3回連続判定としているのは確実性を上げるため。20秒インターバルで電流を測定し、3回連続でONならONとし、OFFならOFFとする。ON→OFFを検知したのち、210秒後にBuzzer STARTする。また、任意のタイミングでPUSH SWを押しても音は鳴るし、鳴っている最中に押すと停まるようにしてある。それで音量を調整すればよい。実機で4回連続判定に改め、待機時間は4分にした。
...