注釈

こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、同じ興味を持つ仲間と一緒にさらに深く学びましょう。

参加する理由は?

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

  • 学びと共有: スキル向上のためのヒントやチュートリアルを交換します。

  • 独占的なプレビュー: 新製品の発表や先行プレビューに早期にアクセスできます。

  • 特別割引: 最新製品を特別割引で購入できます。

  • 祝祭プロモーションとプレゼント: ギフトやホリデープロモーションに参加できます。

👉 一緒に探索して創造しませんか?[ここ]をクリックして今すぐ参加!

2.10 人の動きを検出する

このレッスンでは、Raspberry Pi Pico 2 Wを使用して、 パッシブ赤外線(PIR)センサー で人の動きを検出する方法を学びます。PIRセンサーはセキュリティシステムや自動照明など、動きの検出が必要なアプリケーションで広く使用されています。これらのセンサーは、暖かい物体(人や動物など)が放出する赤外線放射を検出します。

PIR(受動赤外線)モーションセンサーモジュール

必要なコンポーネント

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

キットをまとめて購入するのが便利です。こちらがリンクです:

名前

このキットのアイテム

購入リンク

Pico 2 W スターターキット

450+

Pico 2 W Kit

これらのコンポーネントは、下記のリンクから個別に購入することもできます。

SN

コンポーネント紹介

数量

購入リンク

1

Pico 2 Wの概要

1

2

マイクロUSBケーブル

1

3

ブレッドボード

1

買う

4

ジャンパーワイヤー

数本

買う

5

PIR(受動赤外線)モーションセンサーモジュール

1

買う

回路図

sch_pir

PIRモジュールが人が通ったことを検出すると、GP14がHIGHになります。それ以外の場合はLOWになります。

注釈

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

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

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

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

img_PIR_TTE

配線

wiring_pir

コードの記述

注釈

  • 2.10_detect_human_movement.ino ファイルを pico-2w-kit-main/arduino/2.10_detect_human_movement パスで開くことができます。

  • または、このコードを Arduino IDE にコピーします。

  • Upload ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択するのを忘れないでください。

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);  // 次のチェックまで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秒)を確保してください。

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

  • 干渉:

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

まとめ

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