Tags:

シンプルで簡単なPIR(人感センサー)の使い方

By 文系なArduino 2014年6月18日水曜日

PIR(人感)センサーとArduinoマイクロコントローラを使って、人感センサーアラームを作ります。


単純な工程で製作できるため、Arduinoに関する(PIRセンサーからの)デジタル入力および(今回は大音量のブザーへの)デジタル出力を使用する基礎を学ぶには最適の方法です。

危険の有無にかかわらず便利なアラームであり、誰かの知するための必須アイテムと言えるでしょう。さらに、ブレッドボード上で完結するので、半田付けなど不要です!


製作工程

ステップ1:部品を揃える


2、3の部品を揃えれば十分です。半田付け不要のブレッドボードと既にカット済みのジャンプワイヤを使用するため、Arduinoに接続するためのコンピュータとUSBケーブル以外の部品は必要ありません。


ステップ2:Arduinoとブレッドボードを接続


・Arduinoのデジタル入力/出力の2番ピンをブレッドボードの1列目に接続します。
・Arduinoの5Vピン、およびその近くのグラウンド(GND)ピンを、それぞれブレッドボードの2列目と3列目に接続します。

ステップ3:人感センサーを接続


・PIRセンサーのGNDピン(マイナス)、VCCピン(プラス)、出力ピンを確認します。
・PIRセンサーのGNDピン、VCCピン、出力ピンを、それぞれブレッドボードのGND列、5Vピン、デジタル2番ピンに接続するように差し込みます。
・注意:上記にて紹介した以外のセンサーをお持ちの場合は、メスヘッダ、ワイヤ、相互接続ケーブルなどを積み重ねて、センサーのピンが適合するように延長させることが必要となる可能性があります。

ステップ4:LEDを差し込む


・LEDの負極(長い方の足)をArduinoのデジタル13番ピンに差し込みます。
・LEDの正極(短い方の足、またはLED基板の平面側の足)をArduinoの隣接するGNDピンに差し込みます。

ステップ5:圧電ブザーを接続


・圧電ブザーの赤いワイヤをArduinoのデジタル10番ピンに接続します。
・圧電ブザーの黒いワイヤはArduinoのGNDピンに接続します(ピンの電子ブロックに予備のピンが一つあります)。
・注意:ブザーの極性はどちらでも構わないため、これらの2つのワイヤは差し替え可能です。

ステップ 6: Arduinoのプログラム設定

・Arduino IDEソフトウェアを起動させます。本ソフトウェアはここから無料でダウンロードできます。
http://arduino.cc/en/main/software
・コンピュータとArduinoにUSBケーブルを差し込みます。
・Arduinoボード用にボードとポートの設定を行います。今回は、Arduino Unoです。
・以下のPIRアラームのスケッチをArduinoにアップロードします。

// PIRセンサーを使用して動作を感知するすとブザーが鳴るコード
// 詳しくは、http://blog.makezine.com/projects/pir-sensor-arduino-alarm/を参照してください。
// コードについてはJohn Park, at jp@jpixl.netまでEメールを送ってください。
// :に基づきます。
// Limor Fried of Adafruit製のPIRセンサーテスター
// michael@thegrebs.comによる電子音コード


int ledPin = 13;                // LED用のピンを選択する。
int inputPin = 2;               // (PIRセンサー用の)入力ピンを選択する。
int pirState = LOW;             // 動作が感知されないと仮定してから、開始する。
int val = 0;                    // ピンステータスの読み取りは変更可能。
int pinSpeaker = 10;           //PWNピン(デジタル9、10または11番ピン)にスピーカーをセットアップする。

void setup() {
  pinMode(ledPin, OUTPUT);      // 出力をLEDに指定する。
  pinMode(inputPin, INPUT);     // 入力をセンサーに指定する。
  pinMode(pinSpeaker, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  val = digitalRead(inputPin);  // 入力値を読み取る。
  if (val == HIGH) {            // 入力が「HIGH」であるかどうか確認する。
    digitalWrite(ledPin, HIGH);  // LEDの電源を入れる。
    playTone(300, 160);
    delay(150);

   
    if (pirState == LOW) {
      // たった今電源を入れたところです。
      Serial.println("Motion detected!");
      // 出力の変更は印刷するだけでいいのです。
      pirState = HIGH;
    }
  } else {
      digitalWrite(ledPin, LOW); // LEDの電源を切る。
      playTone(0, 0);
      delay(300);  
      if (pirState == HIGH){
      // たった今電源を切ったところです。
      Serial.println("Motion ended!");
      // 出力の変更は印刷するだけでいいのです。
      pirState = LOW;
    }
  }
}
// 期間の単位はミリ秒、周波数の単位はヘルツ
void playTone(long duration, int freq) {
    duration *= 1000;
    int period = (1.0 / freq) * 1000000;
    long elapsed_time = 0;
    while (elapsed_time < duration) {
        digitalWrite(pinSpeaker,HIGH);
        delayMicroseconds(period / 2);
        digitalWrite(pinSpeaker, LOW);
        delayMicroseconds(period / 2);
        elapsed_time += (period);
    }
}

ステップ 7:アラームを検証

・アラームの電源を入れると、PIRセンサーは不気味な光を放ちます。アラームが室内の赤外線量を測定している間は、全く動かずにいるか、部屋を退出してください。
・次に、動くことでブザーが鳴りLEDが点灯するか検証しましょう。
・PIRセンサーArduinoアラームでは、20フィート(約6メートル)先までの動作を感知できるのは驚きの一言です。もう誰ひとりとしてあなたのヨーヨーを盗もうとは思わないでしょう。

注意:ゾンビの感知に関してはお約束できかねます。

<こちらの記事はhttp://makezine.com/projects/pir-sensor-arduino-alarm/の記事を意訳したものです。>

Post Tags:

文系なArduino

Aduinoとraspberry PiとWebサービスで食べている「文系」です。マレーシアとシンガポールを拠点としてITコンサルタントとしても活躍し、中国語教師としても活躍中の身でもあります。IT農業をシンガポールで始めようと計画中です。

No Comment to " シンプルで簡単なPIR(人感センサー)の使い方 "