English version is available here.
はじめに
aitendo の A500BP(450円)は、安い上に、電源電圧 4.5-20V(Raspberry Pi の5V Pin から給電可能), 出力は 3.3V(Raspberry Pi の GPIO 電圧) の ON, OFF と相性もバッチリです。そこで、電子工作一切なし、ジャンパ線(5本75円) 3本で単に Raspberry Pi につなげて、GPIO をポーリングするだけの簡単な shell を書くと、手持ちのカメラモジュール付き Raspberry Pi model A+ がたったの10分で人感カメラになってしまいました。
つきましては、単なる備忘録ではございますが、大変僭越ながらこの場をお借り致しましてその旨ご報告させていただきます次第にございますれば、効率的でない部分等、至らぬ所をご指摘いただければ幸いに存じます
2015.06.19 補足
A500BP が現在品切れになっているようです。お忙しい中お時間を割いてこの記事を見てくださり試してみようかと思って頂いた積極的な諸兄諸姉におかれましては、せっかくのアクティブなモチベーションに水を刺すような無粋な事になってしまい誠に申し訳ございませんでした
他に aitendo で売っている PIR だと DSUN-PIR(395円)とSB00412A-1(495円)の二つがA500BP(450円)と同様に使えておりますので、この二つのセンサーについて合わせて補足としてご報告させて頂きます次第でございますれば、御不興をご容赦いただければ幸いに存じます
2015.06.24 補足
A500BPの販売が再会したみたいです、06.19 のは補足というよりむしろ蛇足だったかも...
A500BP
安くて面白いモジュールが沢山あって、自由に身動きがとれる広い店内と殺伐としていない店員さん達というなにもかも秋葉原らしからぬ(?)ところがみんな大好きなaitendoの PIR(Passive Infra-Red)センサーモジュールです。生き物の発する熱赤外線の分布の変化を検知して 3.3V のオン/オフでしらせてくれる仕組みなのだそうです。この手のセンサーモジュールで業務用だと電工さんのNaPiOn が有名ですが、それと比べて見た目はなんとも無骨ですがずいぶん安いです
RPi との接続
こんな感じで両端がソケットのジャンパ線 3本で RPi と接続します
接続は以下のように 5V と +, GPIO と out、GND と - をそれぞれ接続します
RPi | A500BP |
---|---|
DC 5V | + |
GPIO | out |
GND | - |
RPIのピン配列の通り、5V もGNDも GPIO も沢山あります。どれをつかってもいいのですが、例えば 12番ピンのGPIO18番と、そのそばの4番ピンの5V, 6番ピンの GNDを使うとすると配線は下の図のようになります
DSUN-PIR (2015.06.19 補足)
並べてみると A500BP(左の赤い方)と外見はとてもよく似ています(右の緑色のが DSUN-PIRです)
395円と A500BPよりさらに安く、しかも検知間隔調整だけでなく検知感度調整もできてしまうDSUN-PIR。このセンサも Raspberry Pi との接続は A500BP 同様に 5V と +, GPIO と out、GND と - をそれぞれ接続します
RPi | DSUN-PIR |
---|---|
DC 5V | + |
GPIO | out |
GND | - |
ただ、センサー側のピンの配置は A500BP とは逆なので以下のようになります
A500BP の接続に対して
DSUN-PI だとこんな感じにセンサーを180度回転させてジャンパ線に繋ぐかんじになります
クリーム色のつまみが二つあり、 右側が検知間隔調整、 左が検知感度調整です。感度は右に回すと敏感になりました。検知間隔は右にまわすとゆっくりになりました
shell スクリプトは A500BP と全くおなじです
SB00412A-1 (2015.06.19 補足)
並べてみると A500BP(左の赤い方)より随分小さいです(右の緑色のが SB00412A-1です)
このセンサも Raspberry Pi との接続は A500BP 同様に 5V と +, GPIO と out、GND と - をそれぞれ接続します
RPi | DSUN-PIR |
---|---|
DC 5V | + |
GPIO | out |
GND | - |
ドキュメントでは 3.3V でも動作するようなのですが、私が購入した個体がたまたまそうだったのかもしれませんが 3.3V では少し動作が不安定だったので、A500BP 同様、5V で接続したところ、安定して動作しました
5Vで使用する場合、RPi 側の配線は A500BP や DSUN-PIR と全く同じです。
検知間隔などの調整ツマミはなく、私の購入した個体は検知してだいたい10秒ぐらいでオフに戻るようでした
shell スクリプトは A500BP と全くおなじです
shell スクリプト
人(とか恒温動物とか)を検知したら撮影日時.jpgというファイル名で写真を撮影する処理は以下のような流れになります
- GPIO の初期化。使用する GPIO の番号を /sys/class/gpio/export に書く
- GPIO の値を覚えておき
- GPIO の値が 0 (Low) から 1 (High) に変わったら写真を撮る
具体的には以下のようになります。私の場合、カメラをびろ〜んとのけぞらせて使っているので -vf と -hf で撮影画像を反転させています
#定数
gpio=18 #GPIO18番を使用
dulation=1 #ポーリング間隔(秒)
width=384 #撮影写真幅
height=288 #撮影写真高さ
# gpio がまだ初期化されていなければ初期化
if [ ! -d /sys/class/gpio/gpio${gpio} ]
then
echo $gpio > /sys/class/gpio/export
fi
value=/sys/class/gpio/gpio${gpio}/value #gpio の値
prev_value=`cat $value`
while :
do
current_value=`cat $value`
if [ ${prev_value} -eq 0 ]
then
if [ $current_value -eq 1 ]
then
now=`date +%Y%m%d%H%M%S`
raspistill -o $now.jpg -w $width -h $height -t 1 -vf -hf
fi
fi
prev_value=${current_value}
sleep ${dulation}s
done
撮影時のカメラモジュールの赤い LED はこの様に消す事も可能です
A500BP は人等を検知して Hight 状態になってから一定時間後に自動で Low 状態にもどります。この時間は 3秒 〜 300秒の範囲で調整可能で、下の写真の右下のクリーム色の部分をプラスドライバで左にまわしきると3秒ぐらい、右にまわしきると300秒ぐらいになります。微調整は難しいです
考察
日本はこれからさらに少子高齢化が進み、不足する労働力を自動化、ロボット化で乗り越えていかなければいけないのだそうです。
とは言え、それが高価だったり、手間が大変だったりするようではそんな事もなかなか進まず世の中が大変な事になってってしまうかもしれません。少なくとも高価な製品の購入や業者さんへの発注が必要なようでは、小さな会社や予算規模の小さい団体、それから個人等、私達のような小さき者達は対応できずにどんどんおいていかれることになってしまうのでしょうか
Raspberry Pi で遊んでいると、どうもそうではなさそうな気がしてきてしまいます。例えば人感センサーとかがこんなに安くてこんなに簡単に使えてしまった事実を鑑みるにつくづく、もしかすると皆様も薄々感じられていることなのかもしれませんが、今、世の中にはすばらしいパーツとコードがキラキラと沢山提供されていて、それを組み合わせるだけで自分で作れてしまう物は結構あって、多くの課題が案外そんなことで解決してしまうのではないか、私達小さき物達の未来も意外と明るいのではないか、と若輩者のわたくしもそのように感じ始めてしまいました今日この頃でございます。それにしても Raspberry Pi はすばらしい