市販のモーション・センサを使う
「Gainer互換Pepperでフィジカル・コンピューティング」の第6章ではセンサとして市販の焦電センサ・ユニットを改造して利用しました。単体の焦電型センサ・モジュールの使い方も説明しましたが、別のパナソニック製のモーション・センサ・ユニットが入手できましたので、Pepperで試しました。
【人体検出用赤外線センサ NaPiOn(ナピオン)】
ナピオンはパナソニック電工の販売している人体検出用赤外線センサ・ユニットです。人体の発生する赤外線を検知することで、人がいるかどうかをセンスするためのセンサです。トイレなどの照明の自動点灯に利用されています。
http://panasonic-denko.co.jp/ac/j/control/sensor/human/napion/index.jsp
いくつかタイプがあるようですが、今回はディジタル出力をもち微動を検知することのできるAMN32112を使いました。検出距離は最大2メートルで近距離の検知用です。また、検出範囲は水平および垂直方向に91度と広範囲をカバーしています。
筆者は秋葉原の千石電商で、1050円で入手しました。ほかにも長距離をカバーする物や、検知範囲を絞ったものなど数種類の異なる特性をもつセンサが入手可能です。用途に合わせて選択してください。
【回路】
動作電圧範囲が3Vから6Vとなっていますので, Pepper経由で5Vを直接給電します。また、出力はディジタルで検知した場合にセンサ内部のスイッチがONになり出力に5Vの電圧が出力されます。未検知の場合には出力がオープンになるようですので,センサ出力とグラウンドの間に10kオームの抵抗を挿入しプルダウンすることにしました。
回路が簡単なので、ブレッドボードへの実装もすぐに終わると思います。
【プログラム】
Processingでプログラムを作成します。モード1のアナログ入力チャネル0から値を読み込んで、動作を確認をしました。
/* Analog Input [0] */
import processing.gainer.*;
PFont myFont;
Gainer gainer;
void setup(){
size(250,250);
gainer = new Gainer(this,Gainer.MODE1);
myFont = loadFont("CourierNewPSMT-24.vlw");
textFont(myFont, 24);
frameRate(30);
}
void draw(){
int v;
gainer.peekAnalogInput(); // read analog port
v = gainer.analogInput[0]; // Display Control
background(v);
fill(255, 0, 0);
text("Analog[0] = " + v ,30, 120);
}
【動作確認】
ProcessingからRunを選択すれば、画面のセンサの読み取り値が表示されます。動作画面を示します。
検出された場合には,200程度の大きな値が、検知されない場合には100より小さな値が表示されると思います。
桑田喜隆


コメントする