Arduinoの基礎 - PIRモーションセンサ
ナビゲーションに移動
検索に移動
概要
ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。
使用するセンサは、PIRモーションセンサ(JST)(Sparkfun ID : SEN-13285)である。
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。
このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、
赤外線の動きによって何かの動作を検出した時、アラームピンをLowにセットする。
アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。
Arduinoにはビルトインのプルアップ抵抗を持っており、ピンの設定時にINPUT_PULLUPを指定すれば、それを利用することができる。
具体的には、pinMode
関数を使用して、PIRモーションセンサからの入力ピンはINPUT_PULLUP
としてプルアップする。
サンプルコード
以下の例では、PIRセンサで人の動きを検出して、モーションを検出した場合にLEDを点滅させている。
const int PIN_PIR_SIG = 5;
const int PIN_LED = 10;
void setup()
{
pinMode( PIN_PIR_SIG, INPUT_PULLUP );
pinMode( PIN_LED, OUTPUT );
}
void loop()
{
int i = digitalRead( PIN_PIR_SIG );
if( i == LOW )
{
for( int j = 0; j < 5; j++ )
{
digitalWrite( PIN_LED, HIGH );
delay( 50 );
digitalWrite( PIN_LED, LOW );
delay( 50 );
}
}
}
また、以下の例では、LEDの点滅に加えて、ブザーを使用して音を再生する盗難防止警報システムである。
const int PIN_PIR_SIG = 2
const int PIN_LED = 7
const int PIN_BUZZER = 3
bool state = false;
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_PIR_SIG, INPUT_PULLUP);
pinMode(PIN_BUZZER, OUTPUT);
}
void loop()
{
if(digitalRead(PIN_PIR_SIG) == LOW)
{
if(!state)
{
state = true;
}
digitalWrite(PIN_LED, millis() / 100 % 2);
tone(PIN_BUZZER, millis() % 1000 + 200);
}
else
{
if(state)
{
digitalWrite(PIN_LED, LOW);
noTone(PIN_BUZZER);
state = false;
}
}
delay(100);
}