### 4.3 プロジェクト:警報システム このプロジェクトでは、PIRモーションセンサーとブザーを使用して、ESP32開発ボードで制御できる警報システムを構築します。 どのように機能するのでしょうか?KidsBlock IDEでのプログラミングを通じて、PIRモーションセンサーが電気信号を検出し、読み取ります。そして、人がいるかどうかを判断します。人がいる場合、ブザーが鳴ります。このようにして、この警報システムは家庭やオフィスにとって非常に低コストで実現できます。 --- #### 4.3.1 フロー図 ![image-20230606102303743](../media/image-20230606102303743.png) --- #### 4.3.2 PIRモーションセンサー **説明:** PIRモーションセンサーは、人体の発する熱を感知することで人の存在を検出します。 さらに、このセンサーは小型で使いやすいです。 ![img](../media/cou32.png) --- **回路図:** ![img](../media/couy31.png) **パラメータ:** - 電圧: 3~5V - 電流: 3.6mA - 電力: 18mW - 視野角: Y = 90°、X = 110°(理論値) - 検出距離: ≤5m --- **配線図:** **PIRモーションセンサーをio23に接続します。** **注意:黄色をS(信号)、赤をV(電源)、黒をGNDに接続します。逆接続しないでください!** ![img](../media/couj31.png) --- **テストコード:** IO23ピンの値を読み取り、人の動きがあるかどうかを判断します。 ![image-20250423083305405](../media/image-20250423083305405.png) **テスト結果:** シリアルモニターを開きます。 誰かがエリア内にいる場合、モニターに**Someone**と表示され、センサーの赤いLEDが消えます。しかし、誰もいない場合、**No one**と表示され、LEDは常に点灯します。 **注意**:PIRモーションセンサーは物体を透過できないため、動きを検出している間はセンサーを覆わないでください。 ![img](../media/st57.png) --- #### 4.3.3 ブザー **説明:** ブザーは電子音響装置であり、異なる周波数と持続時間で音を発し、DC電圧で駆動されます。そのため、コンピューター、プリンター、コピー機、警報器、電子玩具、自動車用電子機器、電話、タイマーなど、多くの電子機器でリマインダーや警報として使用できます。 ![img](../media/cou34.png) --- ブザーは**振動装置**と**共鳴装置**で構成されています。そして、パッシブブザーとアクティブブザーの2つのカテゴリがあります。 - **パッシブブザー**は、特定の周波数の`矩形波`信号を与えない限り、それ自体で`振動`して音を発することはできません。さらに、発する音は矩形波の周波数によって異なるため、パッシブブザーはメロディーをシミュレートできます。 - アナログ矩形波は、ピンの電力レベルを変更することで生成できます。例えば、ハイレベルが500ms続いた後、ローレベルがさらに500ms続き、再びハイレベルになります。 - **私たちは200〜5000Hzの矩形波でブザーを駆動し、周波数(f)を計算できます:*f=1/T*。Tは周期(ハイレベルとローレベルの合計時間)です。** ![img](../media/cou35.png) - **アクティブブザー**は、`DC電源`のみを必要とする駆動回路が含まれているため、外部の動機付けなしに自動的に音を発することができます。しかし、その音は比較的固定された周波数で単調です。 --- **この実験では、パッシブブザーを「音楽を再生する」ために使用します。** --- **回路図:** ![img](../media/cou38.png) **パラメータ:** - 電圧: 3~5V - 電流: ≤5mA - 電力: ≤25mW --- **配線図:** **ブザーをio16に接続します。** **注意:黄色をS(信号)、赤をV(電源)、黒をGNDに接続します。逆接続しないでください!** ![img](../media/couj32.png) --- **テストコード:** **方法1:アナログ矩形波** パッシブブザーは矩形波で駆動されるため、波をシミュレートします。 アナログ矩形波は、ピンの電力レベルを変更することで生成できます。ハイレベルが500us、ローレベルが500usです。これにより、ブザーが音を発します。また、持続時間で音量を調整できます。 1000us、1500us、3000us…を試してみてください。違いは何ですか? ![img](../media/cou36.png) コード: ![img](../media/st58.png) - delay関数では、時間単位はマイクロ秒です。したがって、以下のブロックは500msの遅延を表します。 ![img](../media/st59.png) 式によると: したがって、500usが持続時間であり、周波数 = 2kHz、つまりハイレベルとローレベルが1秒間に2000回交互に切り替わると計算できます。 --- **方法2:スピーカーブロック** スピーカー ![image24](../media/st60.png) コードブロックを使用してブザーを振動させます。 **スピーカーブロックは、特定の周波数のPWM信号を生成してブザーを振動させます。**持続時間と音色は関連するパラメータによって制御されます。 持続時間を定義する方法は2つあります。1つはtone()関数のパラメータを調整して持続時間を設定する方法、もう1つはnoTone()関数を使用して直接音を停止する方法です。tone()で持続時間を定義しない場合、noTone()が停止するまで音信号は常に生成されます。 ESP32ボードの場合、一度に1つの音しか生成できません。ESP32の1つのピンがtone()を介して音信号を生成している場合、別のピンでこの関数によって音を発することはできません。 **音階表** ![img](../media/cou37.png) コード: - ![image25](../media/st60.png) から「**Tone**」ブロックをドラッグし、ピンをIO16に設定します。 ![img](../media/st61.png) - 自由に周波数を選択できます。 ![img](../media/st62.png) - No Tone: すべての音をオフにするために使用されます。 ![img](../media/st65.png) 完全なコード: ![img](../media/st63.png) **テスト結果:** 方法1:ブザーが音を出し続けます。 方法2:ブザーがtone()関数を介して警報音を発します。 --- **拡張:音楽を再生する** tone()を介して音楽を再生します。 完全なコード: ![img](../media/st64.png) --- #### 4.3.4 警報システム この実験では、PIRモーションセンサー、ブザー、LEDを使用して警報システムを構築します。センサーが動きを検出すると、ブザーが音を発し、LEDが点滅して侵入を知らせます。 --- **配線図:** **PIRモーションセンサーをio23に、ブザーをio16に、LEDをio27に接続します。** **注意:黄色をS(信号)、赤をV(電源)、黒をGNDに接続します。逆接続しないでください!** ![img](../media/couj33.png) --- **テストコード:** コードフロー: ![img](../media/flo3.png) 完全なコード: ![image-20250423084431295](../media/image-20250423084431295.png) **テスト結果:** コードをアップロードすると、警報システムが動作を開始します。動きを検出すると、ブザーが鳴り、LEDが点滅します。 --- #### 4.3.5 FAQ **Q: ブザーの音色が実際の音色と正確ではありません。** A: この通常のブザーは音色をシミュレートするだけなので、専門的な要件を満たすことはできません。標準的な音色が必要な場合は、より専門的なスピーカーが必要です。 --- **Q: PIRモーションセンサーが誤報を出します。** A: このPIRモーションセンサーも専門的なものではありません。