IchigoJamに赤外線人感センサーを付けて、人数カウンターを作ってみました。
建物やイベント会場などの入口に置いて、通過する人数をカウントするシステムです。
100円ショップで買った大型タッパーのふたに、IchigoJamとモニタを貼り付けています。
ACアダプタとケーブルをまとめれば、タッパーに入れて持ち運べます。
共立エレショップの「DC/DCコンバータモジュール」を使って、電源を12VのACアダプタ1本にまとめています。
赤外線センサー部分。パナソニック電工の「焦電型MPモーションセンサNaPiOn スポット検出タイプ AMN33111」と10kΩの抵抗が付いているだけです。
※追記:秋月電子で同等のセンサーが安く買えます。
焦電型赤外線センサー PaPIRs(VZ) 5m EKMC1601112
IchigoJamのIN4端子につないで、人間の赤外線を感知した時にIN4入力が「1」(HIGH)になるようにしています。
プログラムの動作画面。1時間区切りのカウント人数と、通算の人数を表示します。
プログラムは以下のとおりです。
時間計測にはTICK関数を使い、「TICK()=3610」の時に1分経過したとみなして、それを60倍して1時間の区切りとしています。1分経過の理論値は「TICK()=3600」なのですが、それで1時間を計測すると10秒ほど短くなってしまうので、「3610」で1分にしています。これで1時間当たりの誤差は1秒程度です。人数カウンターなので、数秒の誤差があっても問題になりません。
10 '*Counter* 20 CLV:CLS:L=60 30 ? "=== COUNT START ===":? 40 I=0:J=I:C=0:T=0:M=0:CLT 50 GOSUB 220 60 '@TIMELOOP 70 I=IN(4):IF INKEY()=32 I=1 80 IF I=1 AND J=0 GOSUB 160 90 J=I 100 IF TICK()>3609 THEN CLT:M=M+1 110 IF M<L GOTO 60 120 '*HOUR PASS 130 BEEP:M=0:H=H+1:IF H>23 THEN H=0 140 C=0:?:GOSUB 220 150 GOTO 60 160 '@COUNT 170 C=C+1:T=T+1 180 LED 1 190 GOSUB 220:WAIT 120 200 LED 0 210 RETURN 220 '@PRTCOUNT 230 ? "Hour=";H;" Count=";C;" Total=";T 240 ? CHR$(30); 250 RETURN
ただ、焦電センサーの検知範囲が結構広く、センサーの前を人間が1回通過すると2カウントしてしまうことが多いです。プログラム側で、1回カウントするとその後2秒間はカウントしないようにしているのですが。
入口での人数カウントとして考えると、そもそも往復分を考えて1/2にしないと実人数になりませんし、家族連れなどがまとまって通ると1カウントしかしない弱点もあります。
実際に運用してみて、いろいろ調整が必要でしょう。