注釈

こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!ラズベリーパイ、アルドゥイーノ、ESP32について、同じ趣味を持つ人々とさらに深く探求しましょう。

参加する理由は?

  • 専門家によるサポート: コミュニティとチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学びと共有: 技術を磨くためのヒントやチュートリアルを交換しましょう。

  • 独占プレビュー: 新製品の発表やちら見せに早期アクセスが可能です。

  • 特別割引: 最新製品を特別割引価格でお楽しみください。

  • 祝祭プロモーションとギブアウェイ: ギブアウェイや休日のプロモーションに参加しましょう。

👉 私たちと一緒に探求し、創造しませんか?[こちら]をクリックして今すぐ参加!

2.10 人間の動きを検出する

このレッスンでは、Raspberry Pi Pico 2にパッシブ赤外線(PIR)センサーを使用して人間の動きを検出する方法を学びます。PIRセンサーは、セキュリティシステム、自動照明、その他の動きの検出が必要な用途で一般的に使用されています。これらは、視界内の人間や動物などの暖かい物体が放出する赤外線を検出します。

必要なもの

このプロジェクトには、以下のコンポーネントが必要です。

全てのキットを購入するのが便利ですが、こちらがリンクです:

名前

このキットのアイテム

リンク

Newton Lab Kit

450以上

Newton Lab Kit

個別に購入することもできます。以下のリンクからどうぞ。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico 2

1

購入

2

Micro USBケーブル

1

3

ブレッドボード

1

購入

4

ジャンパーワイヤー

数本

購入

5

PIR動作センサーモジュール

1

購入

回路図

sch_pir

PIRモジュールが誰かの通過を検出すると、GP14は高電位になり、そうでない場合は低電位になります。

注釈

PIRセンサーには2つのポテンショメーターがあります:

  • 感度調整: 検出範囲を制御します。

  • 時間遅延調整: 動きが検出された後に出力がHIGHのままになる時間を制御します。

初期テストでは、両方のポテンショメーターを反時計回りに最小位置に設定します。これにより、センサーは最も敏感で遅延時間が最短の設定になり、即座に反応を観察することができます。

img_PIR_TTE

配線図

wiring_pir

コードの書き方

注釈

  • ファイル 2.10_detect_human_movement.inonewton-lab-kit/arduino/2.10_detect_human_movement から開くことができます。

  • あるいは、このコードを Arduino IDE にコピーしてください。

  • Raspberry Pi Pico 2 ボードと正しいポートを選択し、「Upload」をクリックします。

const int pirPin = 14;     // PIRセンサー出力ピンをGP14に接続
int pirState = LOW;        // PIRセンサーの現在の状態
int val = 0;               // PIR読み取り値を格納する変数

void setup() {
  Serial.begin(115200);    // シリアルモニターを初期化
  pinMode(pirPin, INPUT);  // PIRピンを入力として設定
  Serial.println("PIR Sensor Test");
  delay(2000);             // PIRセンサーの安定化を待つ
}

void loop() {
  val = digitalRead(pirPin);  // PIRセンサーを読み取る

  if (val == HIGH) {
    if (pirState == LOW) {
      Serial.println("Motion detected!");
      pirState = HIGH;
    }
  } else {
    if (pirState == HIGH) {
      Serial.println("Motion ended!");
      pirState = LOW;
    }
  }
  delay(500);  // 次のチェックまで半秒待つ
}

コードが実行され、シリアルモニターが開かれているとき:

  • PIRセンサーの前で動くと、「動きを検出!」とシリアルモニターに表示されます。

  • 動かなくなるか、センサーの範囲から出ると、短い遅延の後に「動きが終了!」と表示されます。

コードの理解

  1. PIRセンサーの読み取り:

    PIRセンサーの現在の状態を読み取ります。動きが検出されるとHIGHになり、検出されないとLOWになります。

    val = digitalRead(pirPin);
    
  2. 動きの検出:

    • 動きが検出され、それが最初の検出である場合、「動きを検出!」と表示し、pirStateを更新します。

    • 動きが終了した場合、「動きが終了!」と表示し、pirStateを更新します。

    if (val == HIGH) {
      if (pirState == LOW) {
        Serial.println("Motion detected!");
        pirState = HIGH;
      }
    } else {
      if (pirState == HIGH) {
        Serial.println("Motion ended!");
        pirState = LOW;
      }
    }
    

実用的な応用

  • セキュリティシステム: 侵入者や許可されていない動きを検出します。

  • 自動照明: 動きが検出されたときに照明を点灯します。

  • エネルギー節約: 一定期間動きが検出されない場合にデバイスを電源オフにします。

トラブルシューティングのヒント

  • 誤トリガー:

    • PIRセンサーは温度変化や日光などの環境要因に敏感です。

    • センサーを熱源や窓に直接向けないでください。

  • センサーが動きを検出しない:

    • センサーが初期化されるのに時間がかかることがあります(一部のセンサーは最大で60秒必要です)。

    • 感度のポテンショメーターを調整してください。

  • 干渉:

    • 電磁干渉を引き起こす可能性のある電子機器からセンサーを遠ざけてください。

まとめ

このレッスンでは、PIRセンサーをRaspberry Pi Picoと共に使用して人間の動きを検出する方法を学びました。ハードウェアのセットアップ、センサーの出力を読み取るコードの記述、そして動きに反応するテストを行いました。PIRセンサーの設定を調整する方法を理解することで、セキュリティ、自動化、またはインタラクティブなプロジェクトに合わせてカスタマイズできます。