赤外線モーションセンサモジュールを使う

HC-SR505


HC-SR505の赤外線モーションセンサーを入手したので紹介します。
写真のようにHC-SR501をぐっと小さくしたような感じです。


ピン配置はこのようになっています。


早速HC-SR501と比較してみました。
性能比較ではArduinoを使用し、スケッチは以下のとおりです。
遠くからでもセンサーの反応状態が分かるように、センサーが反応したら13番ピン(オンボードLED)をONにします。
#define pirPin 2
#define outPin 13

int val;

void setup() {
  Serial.begin(112500);
  pinMode(pirPin,INPUT);
  pinMode(outPin,OUTPUT);
  digitalWrite(pirPin,LOW);
  digitalWrite(outPin,LOW);
}

void loop() {
  val = digitalRead(pirPin); //read state of the PIR
 
  if (val == LOW) {
    Serial.println("No motion"); //if the value read is low, there was no motion
    digitalWrite(outPin,LOW);
  }
  else {
    Serial.println("Motion!"); //if the value read was high, there was motion
    digitalWrite(outPin,HIGH);
  }

  delay(1000);
}

HC-SR501とHC-SR505の比較結果ですが、反応性能はほぼ同じか、若干HC-SR505の方が遠い距離で反応します。
一番違うのはVOUTがHIGHになった後の挙動です。
センサーが反応してからじっとしていると、HC-SR501の方は1秒か2秒後にはVOUTがLOWになりますが
HC-SR505の方は8秒から9秒間、VOUTがHIGHの状態がつづきます。

こ ちらのページで調べてみると、ちゃんとしたHC-SR501ならば、Trigger Modeのジャンパーピンで
"repeated trigger mode" か "unrepeated trigger mode" を選べるのですが、私の持っているHC-SR501は安物なので
このジャンパーピンが省略されています。

つまり(私の持っている)HC-SR501は "unrepeated trigger mode" になっていて
HC-SR505は"repeated trigger mode" になっているようです。
そのあたりを考慮して、プログラムによってはVOUTがONになった後の処理を変える必要があるかもしれません。
ライトセンサーとして使う場合は同じロジックでも問題ないでしょう。
HC-SR505の方がライトが灯いている時間が少し長くなるだけです。



よく似たモジュールにAM312があります。
SR505をさらに短くしたセンサーです。


VCCとGNDのピン配置がSR505とは逆になっています。
このセンサーは、"unrepeated trigger mode" になっていて、直ぐにVOUTがLOWになります。


続く....