とりあえず以下の紹介動画を作りましたのでそちらをどうぞ。
前々から作らないとなぁ。。。と思っていたものです。金曜日夜に時間があったので実装方法を調べて仮組みしてきました。
参考にしたサイトは以下です。
あとはArduinoのプログラムで繋げるだけです。
const int speaker_pin = 8; int cnt = 0; int p_tmp = 0; int p_sum = 0; void setup() { Serial.begin(9600); //for debug pinMode(speaker_pin, OUTPUT); // D8にスピーカー繋ぐ。 } void loop() { int piezo = analogRead(A1); p_sum += abs(p_tmp - piezo); p_tmp = piezo; if (++cnt > 50) { int cds = analogRead(A0); if (cds > 900 && p_sum > 9000) { tone(speaker_pin, 880, 300); //880Hz, 300ms } Serial.print("c:"); //for debug Serial.print(cds); //for debug Serial.print(" p:"); //for debug Serial.println(p_sum); //for debug cnt = 0; p_sum = 0; } delay(10); }
ちょっとだけ工夫というかそうしないと動かなかったのが、振動センサーの取り扱いですね。振動センサーの振幅を取るために速めにループを回して、その間に|前回ー今回|の振幅差を積算します。扇風機の風に揺らされて振動していれば積算値は大きくなるはずで、というところです。
ただ、この方法の問題点は、扇風機の角度は一定ではないので、動かすと振動センサーの基本姿勢?が変化するため閾値が変化してしまいます。そのたびにキャリブレーションしなければならない。。。振動していないときにオートキャリブレーションしないと使い物になりません。改善が必要です。
この装置を考えたときに、いろいろな解決方法を考えてみました。個人メモとして書いておきます。
(1)トイレに入ったら(超音波センサーで検知する)自動的に扇風機をつける → センサーが誤動作したら(センサーが正常でもセンサーの向きがかわったら)ずーっと扇風機が付けっぱなしになる。センサーと関係なく扇風機をオンオフできない。
(2)トイレの照明に人感センサーが付いているので、照明がついたら扇風機をつける → これはいける気がしたのですが、やはり電源をオン・オフするのはちょっと危険な気がします。万が一は火災の可能性もあるし。。。
(3)ということで、自動で扇風機をオンオフするのはやめて、ついていることを人に知らせることにしました。これならセンサーを取り外しても誤動作しても害は少なそう。
(4)もっと考えると、扇風機があまりに静かなので消し忘れに気づかないわけなので。。。扇風機が回っているときに音がなるようにすればいい。。。マイコンを使わなくてもいいソリューションが見えてきました。たぶん、それが一番いいような気がして、それに気づいたのですが、せっかくなので上記の動画にしてみた、というところです。
あ、あと、いつもは撮った動画をそのままYouTubeにあげておしまいなのですが、暇だったのでニコ動風??の動画を作ってみました。音声合成にMacで動くゆっくろいどを使わせていただきました。BGMはフリー音楽素材 H/MIX GALLERYから。動画編集はひさしぶりにPremiereと思ったのですが面倒なのでiMovieで編集しました。これだけでも1時間くらいかかって。。。いやYouTuberの方々はほんと凄い。。。本当やってみないとわかりません。