NaPiOnで動体検知をしてみる 2014/4/8
我が家のねこちゃんのおしっこを採尿しないといけなくなりましたが
いつもねこちゃんを見張っているわけにもいかずそれならばと
ねこのトイレの前に人体検出赤外線センサNaPiOnを置いて
ねこが近づくと離れた場所でブザーが鳴るようにしてみました。

   使用したNaPiOnはデジタルタイプのAMN31112です。
 標準検出タイプ
 動作電圧: 3V〜6V
 消費電流: 170μA
 出力:検出時100μA 未検出時は出力オープン
NaPiOnの詳細は→ http://www3.panasonic.biz/ac/j/control/sensor/human/napion/

電子ブザーは以前秋月電子で買ったもので1.5Vでも鳴るものです。

ここで悩ましいのが電池動作時の電圧です。
TWE-Lite DIPは2.3V〜3.3V NaPiOnは最低電圧が3Vです。
しかしNaPiOnは2Vくらいまで動作することを確かめてあったので
気にせず電池動作させてみました。




子機は間欠1秒で動作させます。
NaPiOnは動体検出時に最大100μAの電流出力(VoutはVDD-0.5V)なのでこの回路だと
検出時にTWE-Lite DIPのデジタル入力はLoになり未検出時はオープン状態になります。
親機は検出時にデジタル出力がLoになり電子ブザーが鳴ります。
デジタル入出力1を使えば親機にToCoSticを使えばToCoSticのLEDが赤く点灯します。
ToCoSticのWindowsアプリに出力がLoになるとブザーを鳴らしてくれるような
機能があれば親機を作らずにすむのですけどね。

TWE-Lite DIPは間欠モード時にデジタル入力がLo→Hiに変化しても親機に伝わりませんが
1秒ごとの通知コマンドでHiが伝わるのでブザーが鳴りっぱなしになることはありません。

NaPiOnは検出物との間にガラスなどがあると極端に検出しにくくなります。
この性質を利用して子機をタッパなどの容器に入れるとねこちゃんが近くに来た時だけ
検出するようになります。裸のまま置くとちょっと近づいただけで検出しまくりです。

今回使ったNaPiOn(AMN31112)は電圧が2V以下になると検出しっ放しとなるようです。
TWE-Lite DIPは2.1Vが限界のようなので検出しっ放しにはならないと思いますが
NaPiOnにも個体差があるはずですので子機もACアダプタで3.3V連続モードで
駆動すればこのへんの問題はないかと・・
低消費電流(47μA)タイプのNaPiOnだと動作電圧が2.2V〜3Vなのですが入手できません。

使ってみた感じは意外と便利。
おしっこの採尿の役目が終わったあともねこちゃんがトイレを使ったら
すぐにトイレの片付けをしてあげられたりします。
ももちろん人間が近づいても反応しますが・・ 防犯対策にも使えますね
親機は持ち運びもできるので電源スイッチを付けて必要な時だけ使っています。



NaPiOnとTWE-Liteはベストマッチかも・・  
2014/10/28 追記
デジタルタイプのNaPiOnの出力は検出中ずっと出力があるのではなく不定期な
パルス状の波形が何発も出ます。どんな時にどんな波形になるのかはよくわかりません。
マイコンで処理をする時は検出・非検出のさじ加減が悩ましいところです。
TWE-Liteなら1発でも検出すれば間欠時間分だけブザーを鳴らしたりできます。
たとえば間欠1秒だと最大1秒間(注1)インターラクティブモードで間欠時間を任意に設定
すればその設定した時間だけブザーを鳴らせます。
もちろんずっと検出中ならば検出中はずっと鳴っています。
ただこの方法ではリトリガの機能は働きませんがNaPiOnの出力が一発でおさまることは
まずないので特に問題となることはないでしょう。

(注1)最大1秒と書いたのは間欠一秒の場合通知コマンドが飛ぶのが1秒間隔です。
  NaPiOnが最初に検出したパルスは通知コマンドと通知コマンドの間に発生するので
  最初の1回目はどんなに長くても1秒となります。




アナログ入力を利用してNaPiOnで動体検知 2015/9/4

TWE-Liteの標準アプリ[V1-06-17]でPWM周波数が個別に設定できるようになりました。
複数箇所の動体検知をする場合にアナログ入力を利用してNaPiOnの動体検知をすれば
PWM出力に接続した圧電スピカーの音程の違いでどこのNaPiOnが検知したか
すぐにわかるようにできないか考えてみます。

ついでに[V1-06-16]以降では子機の間欠受信モードがサポートされました。
この機能を使って必要な時以外は動体検知をお休みさせる機能も付けてました。
間欠受信モードは「TWE-Lite DIPを試す」のページで説明しています。 こちら

おまけとして動体検知しているTWE-Liteからちゃんと電波が受信できているか
確認できるようにもしてみました。単純なことですがこれはけっこう重要だったりします。

TWE-Lite DIPのバージョン
 子機:V1-06-16 または V1-06-17 間欠受信モードで動作させます(Mode5)
 親機:V1-06-17
  オプションビット「z」でPWM周波数を任意に設定
  ↓設定例↓
  a: set Application ID (0x67720102)
  i: set Device ID (--)
  c: set Channels (18)
  x: set Tx Power (03) 
 ← ここは「13」の方がいいかも
  t: set mode4 sleep dur (1000ms)  ← 間欠受信時間 標準は1秒
  y: set mode7 sleep dur (10s)
  f: set mode3 fps (32)
  z: set PWM HZ (1000,2000,3000,4000)  ← ここ
  o: set Option Bits (0x00000000)
  b: set UART baud (9600)
  p: set UART parity (N)


動体検知のしくみ
NaPiOnが未検出の時は間欠1秒の場合、1秒ごとにAI1の入力レベル0Vが
親機に通知されます。子機の入力レベルが0Vなので親機のPWM出力はLoのままで
圧電スピーカーは鳴りません。
NaPiOnが検出中に次の間欠送信があればその時にAI1の入力レベル700mVが
親機に通知されます。
(注1)
親機のPWM出力はおよそ50%Dutyの形波となり圧電スピーカーが鳴ります。
(注2)
PWM出力の周波数を変えておくと、どのNaPiOnが検知したか音程でわかります。

動体検知お休みモード
子機は間欠受信モードなので間欠送信したらそのあと親機のポート状態を受信します。
ここで親機のSW-1をONにしておくと子機のDO1がLoとなり74C00の2Pinに接続することで
NaPiOnが検知しても子機のAI1の入力レベルは0Vのまま変化しないので
親機の圧電スピーカーは鳴りません。
SW-1をOFFすればNaPiOnが検知した時ふたたび親機の圧電スピーカーが
鳴るようになります。

電波が受信できているか生死確認
子機DI1をグランドに接続しておくだけの簡単な方法です。
親機は子機からの間欠送信でDO1がLoになりLEDが点灯します。
しかし電波が受信できなくてもDO1はLoのままでLEDは点灯しっぱなしです。
ここで親機をリセットすればLEDは消えますが1秒以内に再度LEDが点灯すれば
正しく電波が受信できていることになります。
親機の場所を変えた時などけっこう役にたちます・・・

このほかリセットスイッチはNaPiOnが検知して鳴ったブザーを止めることもできます。
ブザーを止めたあともNaPiOnが検知すればまたブザーが鳴ります。

TWE-Liteにはデジタル入出力ポートとアナログ入出力ポートがそれぞれ4ポートづつあるので
この構成だと4箇所までNaPiOnでの動体検知ができることになります。


この方式の注意点
アナログ入力を利用したNaPiOnの動体検知では注意しておくことがあります。
子機間欠モードではアナログ入力が変化してもTWE-LiteはWAKEUPしません。
あくまで間欠送信時(タイマーWAKEUP時)にアナログ入力電圧が親機に通知されます。
ですから間欠送信時にNaPiOnが検知している必要があります。
間欠送信の間の1秒間(標準は1秒)に一瞬検知したようなものは検出できません。
ですが間欠時間を3秒にして3秒以上検知していたら通知するといった使い方も
できることになります。
一瞬でもNaPiOnが検知した事を知りたければデジタル入力ポートを使う必要があります。



(注1)(注2)について
TWE-Liteのアナログ入力電圧はVCCが3V時に約700mVで
Dutyが50%のPWM出力が得られます。 参考はこちら
今回の回路では74C00の出力に33Kと10Kで分圧し約700mVになるようにしていますが
ToCoSticでモニタしてみるとアナログ入力電圧は172mV程度になっています。
これはNaPiOnの出力パルス幅が短いためになると思われます。
172mVだとDutyは20%程度になりますがDuty50%も20%も音の違いはほとんどありません。

圧電スピーカーについて
手持ちの圧電スピーカー(秋月電子で購入・品名不明)は3VでPWM出力に直接接続して
ほどほどの音で鳴りましたが物によってはトランジスタでのドライブが必要かもしれません。
またNaPiOnの子機が複数ある場合はまとめてトランジスタドライブがいいかも。
回路図をクリックするとそちらの回路も見ることができます。

NaPiOnが複数同時に検知したら
この方式では最大4箇所の検知ができますが、さてさて同時に検知してしまったら??
たとえば1000Hzと4000Hzが同時に鳴れば、これくらいなら聞き分けることができるかも
しれませんが4つ同時に鳴るとお手上げかも・・・
まあこんなことはあまりないかもしれませんが一工夫が必要かもしれませんね・・

動体検知のお休みモードは
親機のブザーにスイッチを付けて鳴らなくすれば簡単ですが
子機のNaPiOnが検知するとLEDライトが点灯するような回路を組んでいる時など
親機からLEDライトの制御もできるので便利かもしれません。








ねこの部屋TOPへ ▲ページ先頭へ