SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

IchigoJamで人数カウンター

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カウントしかしない弱点もあります。
実際に運用してみて、いろいろ調整が必要でしょう。