ESPr Developerで人感センサを使ってみる(3)

先日より、人感センサとESPr Developerを使った実験を続けています。


使っているセンサは、パナソニックの「焦電型赤外線人感センサ PaPIRs」のうち、普及タイプの標準検出型である「EKMC1601111」ですが、これまでの実験で、以下の問題が生じました。

  1. 人が近くにいても、少しの動きでは検知できない。
  2. 遠くにいる人の動きも検知してしまう時がある。

センサを違うものに変更すれば状況が改善するかも?と考え、高機能タイプの微動検出型である「AMN32112」を試してみましたが、結果に大きな違いは見られませんでした。
そのため、値段の安い普及タイプを使って、さらに調査を継続することにしました。

まずは、調査環境について。
これまでは、我が家のリビングに子供がいるかどうかを判定しようとしていましたが、もっと、人の在・不在が分かりやすい環境の方が調査しやすいと思い、今後は、トイレで調査することにします。
我が家のトイレには窓がなく、外光も入ってこないので、人を検知しやすい環境です。
トイレで人を検知した時に、メールを送信することで、離れて暮らす家族の安否確認ができるようにすることを目標にします。

スケッチは、前回から変わらず「センサからの信号を常時監視し、一定期間中に1度でもHighに変化すると、その期間に人がいたと判定する」ものです。
これをトイレに設置するだけで、簡単に人を検知できると思っていたのですが、実験してみると、実際は人がいないにも関わらず、人がいたと誤判定されることが頻繁に起こってしまいました。

誤判定のたびにメールが送られていては、安否確認になりません。

人感センサのパンフレットに「焦電素子の性質上、稀に突発性雑音出力により不要な検出信号が出力されることがあります。」という記載があります。センサからスパイクノイズか何かが発生しているのではないか?と考え、スケッチを「センサからの信号を1秒毎にチェックし、一定期間中に1度でもHigh状態があれば、その期間に人がいたと判定する」というように変更しました。
これで試したところ、前より頻度は減りましたが、やはり、誤判定が生じていました。

センサからの信号がどのような状態なのか?が気になったので、検出信号のパルス幅などを観測し、シリアルモニタで確認してみました。
その結果、人がいない時でも、長ければ幅1秒程度のパルス信号が、数回連続して発生する場合があることが分かりました。
誤検出信号はスパイクノイズではなく、本当に人がいる時の正しい検出信号との切り分けは困難です。

我が家のトイレには、誤検知の要因になるものはなさそうなのですが、もしかしたら、温水便座とか、トイレの外を通る人とか、何かに反応して検出信号が出力されているのではないか?と考えました。
これの確認のため、同じ構成の回路をもうひとつ準備し、同じ場所に設置して、両者の観測結果を比較しました。
その結果、どちらの回路も誤検知しているのですが、誤検知するタイミングは異なっており、誤検知に規則性もありませんでした。
つまり、何かに反応して誤検出信号が出力されている訳ではなく、ランダムに発生しており、やはり、誤検出信号を切り分けるのは困難です。

ここまでの調査の結果では、正常な検知と誤検知を区別する方法は、検出期間ぐらいしか思いつきません。
誤検出期間は、1回につき、せいぜい2〜3秒程度ですが、正常な検知では、1回のトイレ利用につき、1分程度は人がいると思われます。
よって、スケッチを「センサからの信号を1秒毎にチェックし、一定期間中にHigh状態が15回以上あれば、その期間に人がいたと判定する」というように変更しました。

これで、しばらく様子を見ることにしました。
ただ、この方法ではサジ加減次第で結果が変わるため、あまり筋が良くありません。なんだか、どんどん泥沼にはまってきた感じです。

 

あと、この回路をトイレに置くということで、トイレにあっても違和感がないように、ケースを作りました。

色は白で、センサを上向きにも横向けにもできるように置けそうなケースを探しました。

センサの先端をケースから出さないといけないので、大きな穴をあけるために、リーマと面取りカッターを購入しました。

電池式の安い電動ドライバと、百円ショップに売っていた5mmのドリル刃を使って穴を開け、リーマで穴を広げたあと、電動ドライバに面取りカッターを取り付けて、穴をあけた切り口をなめらかにしました。

結構きれいに仕上がりました。これならトイレに置いていてもそんなに気にならなさそうです。