「Arduinoの基礎 - PIRモーションセンサ」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br> <br> 実際に、PIRセンサで人の動きを検出し…」)
 
編集の要約なし
 
2行目: 2行目:
ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br>
ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。<br>
<br>
<br>
実際に、PIRセンサで人の動きを検出して、モーションを検出した場合にLEDを点滅させる。<br>
使用するセンサは、PIRモーションセンサ(JST)(Sparkfun ID : SEN-13285)である。<br>
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。<br>
<br>
<br>
使用するセンサは、PIR Motion Sensor(JST)(Sparkfun ID : SEN-13285)である。<br>
このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、<br>
このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、赤外線の動きによって何かの動作を検出した時に、アラームピンをLowにセットする。<br>
赤外線の動きによって何かの動作を検出した時、アラームピンをLowにセットする。<br>
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。<br>
<br>
<br>
アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。<br>
アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。<br>
12行目: 12行目:
具体的には、<code>pinMode</code>関数を使用して、PIRモーションセンサからの入力ピンは<code>INPUT_PULLUP</code>としてプルアップする。<br>
具体的には、<code>pinMode</code>関数を使用して、PIRモーションセンサからの入力ピンは<code>INPUT_PULLUP</code>としてプルアップする。<br>
[[ファイル:Arduino PIR 1.png|フレームなし|中央]]
[[ファイル:Arduino PIR 1.png|フレームなし|中央]]
<br>
<br><br>
  <source lang="c++">
 
== サンプルコード ==
以下の例では、PIRセンサで人の動きを検出して、モーションを検出した場合にLEDを点滅させている。<br>
  <syntaxhighlight lang="c++">
  const int PIN_PIR_SIG = 5;
  const int PIN_PIR_SIG = 5;
  const int PIN_LED = 10;
  const int PIN_LED = 10;
37行目: 40行目:
     }
     }
  }
  }
  </source>
  </syntaxhighlight>
<br>
また、以下の例では、LEDの点滅に加えて、ブザーを使用して音を再生する盗難防止警報システムである。<br>
[[ファイル:Arduino PIR 2.jpg|フレームなし|中央]]
<syntaxhighlight lang="c++">
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);
}
</syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Arduino]]
[[カテゴリ:Arduino]]

2020年11月20日 (金) 01:38時点における最新版

概要

ここでは、ArduinoでPIR(Passive Infrared)センサを使用する方法を記載する。

使用するセンサは、PIRモーションセンサ(JST)(Sparkfun ID : SEN-13285)である。
このセンサの動作電圧は5[V]〜12[V]まで可能で、ピン配置は、赤がパワー、白がグラウンド、黒がアラームである。

このセンサは、電源投入後、約2秒ほど周囲の状況のスナップショットを取得した後、
赤外線の動きによって何かの動作を検出した時、アラームピンをLowにセットする。

アラームピンはオープンコレクタなので、プルアップ抵抗が必要である。
Arduinoにはビルトインのプルアップ抵抗を持っており、ピンの設定時にINPUT_PULLUPを指定すれば、それを利用することができる。
具体的には、pinMode関数を使用して、PIRモーションセンサからの入力ピンはINPUT_PULLUPとしてプルアップする。

Arduino PIR 1.png



サンプルコード

以下の例では、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の点滅に加えて、ブザーを使用して音を再生する盗難防止警報システムである。

Arduino PIR 2.jpg
 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);
 }