.. note:: こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!ラズベリーパイ、アルドゥイーノ、ESP32について、同じ趣味を持つ人々とさらに深く探求しましょう。 **参加する理由は?** - **専門家によるサポート**: コミュニティとチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学びと共有**: 技術を磨くためのヒントやチュートリアルを交換しましょう。 - **独占プレビュー**: 新製品の発表やちら見せに早期アクセスが可能です。 - **特別割引**: 最新製品を特別割引価格でお楽しみください。 - **祝祭プロモーションとギブアウェイ**: ギブアウェイや休日のプロモーションに参加しましょう。 👉 私たちと一緒に探求し、創造しませんか?[|link_sf_facebook|]をクリックして今すぐ参加! .. _ar_pir: 2.10 人間の動きを検出する ========================== このレッスンでは、Raspberry Pi Pico 2にパッシブ赤外線(PIR)センサーを使用して人間の動きを検出する方法を学びます。PIRセンサーは、セキュリティシステム、自動照明、その他の動きの検出が必要な用途で一般的に使用されています。これらは、視界内の人間や動物などの暖かい物体が放出する赤外線を検出します。 **必要なもの** このプロジェクトには、以下のコンポーネントが必要です。 全てのキットを購入するのが便利ですが、こちらがリンクです: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - 名前 - このキットのアイテム - リンク * - Newton Lab Kit - 450以上 - |link_newton_lab_kit| 個別に購入することもできます。以下のリンクからどうぞ。 .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - コンポーネント - 数量 - リンク * - 1 - :ref:`cpn_pico_2` - 1 - |link_pico2_buy| * - 2 - Micro USBケーブル - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - 数本 - |link_wires_buy| * - 5 - :ref:`cpn_pir` - 1 - |link_pir_buy| **回路図** |sch_pir| PIRモジュールが誰かの通過を検出すると、GP14は高電位になり、そうでない場合は低電位になります。 .. note:: PIRセンサーには2つのポテンショメーターがあります: * **感度調整**: 検出範囲を制御します。 * **時間遅延調整**: 動きが検出された後に出力がHIGHのままになる時間を制御します。 初期テストでは、両方のポテンショメーターを反時計回りに最小位置に設定します。これにより、センサーは最も敏感で遅延時間が最短の設定になり、即座に反応を観察することができます。 |img_PIR_TTE| **配線図** |wiring_pir| **コードの書き方** .. note:: * ファイル ``2.10_detect_human_movement.ino`` を ``newton-lab-kit/arduino/2.10_detect_human_movement`` から開くことができます。 * あるいは、このコードを **Arduino IDE** にコピーしてください。 * **Raspberry Pi Pico 2** ボードと正しいポートを選択し、「Upload」をクリックします。 .. code-block:: python 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センサーの前で動くと、「動きを検出!」とシリアルモニターに表示されます。 * 動かなくなるか、センサーの範囲から出ると、短い遅延の後に「動きが終了!」と表示されます。 **コードの理解** #. PIRセンサーの読み取り: PIRセンサーの現在の状態を読み取ります。動きが検出されるとHIGHになり、検出されないとLOWになります。 .. code-block:: Arduino val = digitalRead(pirPin); #. 動きの検出: * 動きが検出され、それが最初の検出である場合、「動きを検出!」と表示し、pirStateを更新します。 * 動きが終了した場合、「動きが終了!」と表示し、pirStateを更新します。 .. code-block:: Arduino 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センサーの設定を調整する方法を理解することで、セキュリティ、自動化、またはインタラクティブなプロジェクトに合わせてカスタマイズできます。