### 4.6 プロジェクト:スマート給餌システム このプロジェクトでは、超音波モジュールが動物が給餌エリアにいるかどうかを検出し、Servoが自動的に家禽用の給餌箱を開きます。さらに、IoTを組み込むことで、このような給餌システムのリモート監視が可能になり、非常に便利になります。 全体として、自動化とリモート操作により、このシステムの給餌プロセスが最適化されます。 ![img](../media/cout6.png) --- #### 4.6.1 フロー図 ![image-20230607085516167](../media/image-20230607085516167.png) --- #### 4.6.2 Servo **説明:** **Servo**は、**RC Servo Device**とも呼ばれ、フィードバック付きのモーターです。一般的に、Servoは正確な位置制御と高いトルクを出力し、ロボットプロジェクト、RCカー、飛行機、航空機で最もよく使用されます。 ![img](../media/cou64.png) --- **内部構造:** ![img](../media/cou61.png) - ① Signal(S): マイクロコントローラーからの制御信号を受信します。 - ② Potentiometer: Servoのフィードバック部分。出力軸の位置を測定します。 - ③ Embedded board (Internal controller): Servoのコア。外部制御信号と位置のフィードバック信号を処理し、Servoを駆動します。 - ④ DC motor: 実行部分。速度、トルク、位置を出力します。 - ⑤ Gear system: モーターからの出力を、特定の伝達比に応じて最終出力角度にスケーリングします。 --- **Servoの駆動:** Signal(S)はPWMを受信してServoの出力を制御し、**出力軸の位置はPWMのデューティサイクルに直接依存します**。 例えば: - パルス幅1.5msの信号をServoに送ると、その軸(ホーン)は中央位置(90°)に回転します。 - パルス幅が`0.5ms`の場合、軸は最小(0°)に回転します。 - パルス幅が`2.5ms`の場合、軸は最大(180°)に回転します。 **注:最大角度はServoの種類によって異なります。170°のものもあれば、90°のものもあります。それにもかかわらず、Servoは通常、パルス幅1.5msの信号を受信すると、半分(最大値の)動きます。** ![img](../media/cou62.png) Servoの周期は通常20msで、`50Hz`の周波数でパルスを生成します。ほとんどのServoは40〜200Hzで正常に動作します。 --- **配線図:** **Servoをio26に接続します。** **注意:黄色をS(信号)、赤をV(電源)、黒をGNDに接続してください。逆に接続しないでください!** ![img](../media/couj61.png) --- **テストコード:** - シリアルポートを初期化し、変数**item**を80で定義します。 ![img](../media/st78.png) - **item**をServoの角度80°から180°に設定し、15msごとに1°回転させます。 ![img](../media/st79.png) - Servoは15msごとに1°回転し、180°から80°まで動きます。 ![img](../media/st80.png) 完全なコード: ![img](../media/st81.png) **テスト結果:** 給餌箱はゆっくりと開閉し、制御可能です。 **注:SG90サーボは180°回転できます。給餌箱が小さいため、100°の 回転で箱を完全に閉じるのに十分です。** - 80°:全開 - 120°:半開 - 180°:閉じる ![img](../media/cou63.gif) --- **注意** **指を箱に入れないでください。挟まれる可能性があります!** **Servoを損傷する可能性があるため、ドアを物で塞がないでください!** --- #### 4.6.3 超音波センサー **説明:** ![img](../media/cou65.png) **回路図:** ![img](../media/couy61.png) --- 人間が聞くことができる音波の周波数は20Hz〜20KHzですが、超音波はその範囲を超えています。 **超音波:** ![img](../media/cou66.png) 超音波モジュールは、圧電効果によって電気と超音波を相互に変換し、超音波を送受信します。 この種の波は、指向性、強い透過性、音響エネルギーの集中が容易という特徴があります。 ![img](../media/cou67.png) この超音波測距システムでは、まずMCU(ESP32開発ボード)で40KHzのオリジナル方形波を生成し、超音波モジュールを駆動してそれを放出するようにプログラムします。すぐに、モジュールは増幅および整形された反射波(Echo)を受信した後、物体までの距離を計算します。ここで、放出と反射の持続時間を記録し、時間差に基づいて距離を計算します。 簡単に言えば、MCUはモジュールを制御して超音波を放出し、それが障害物に遭遇した後に跳ね返ってモジュールによって受信されます。それらの間の時間差は、距離を計算する上で重要な要素です(空気中の音速は340m/sです)。 --- **配線図:** **超音波モジュールのEchoをio13に、Trigをio12に接続します。** **注意:黄色をS(信号)、赤をV(電源)に接続してください。逆に接続しないでください!** ![img](../media/couj62.png) --- **テストコード:** 正しいピンを設定します:Trigをピンio12に、Echoをピンio13に。 ![img](../media/st83.png) **テスト結果:** このキットでは、検出範囲は3〜8cm以内です。 シリアルモニターを開いて観察します。 ![img](../media/st82.png) --- #### 4.6.4 スマート給餌システム **説明:** スマート給餌システムは、超音波モジュールとサーボを介して家禽にインテリジェントに給餌します。前者は動物までの距離を検出し、後者は給餌箱の開閉を制御します。ペットが箱の近くで検出されると、サーボが箱を開けて給餌します。 --- **配線図:** **超音波モジュールのEchoをio13に、Trigをio12に接続します。サーボをio26に接続します。** **注意:黄色をS(信号)、赤をV(電源)、黒をGNDに接続してください。逆に接続しないでください!** ![img](../media/couj63.png) --- **テストコード:** コードフロー: ![img](../media/flo6.png) コード: - シリアルポートを初期化します。変数を定義し、180を割り当てます。 ![img](../media/st84.png) - ピンを正しく設定し、受信した値を表示します。 ![img](../media/st85.png) - 検出された距離値を判断します。2cm〜7cm以内であれば、給餌箱が開きます。 ![img](../media/st86.png) 完全なコード: ![img](../media/st87.png) **テスト結果:** 動物が検出されると、給餌箱が開きます。 --- **注意** **指を箱に入れないでください。挟まれる可能性があります!** **Servoを損傷する可能性があるため、ドアを物で塞がないでください!** --- #### 4.6.5 FAQ Q: Servoが動作しません。 A: 底板を取り付ける際に、Servo自体またはワイヤーが引っかかっている可能性があります。取り付ける前に、Servoをまず180°に調整してください。方法については、取り付けガイドを参照してください。 --- Q: 検出距離が不正確です。 A: 検出する際は、送信ヘッドから測定してください。このモジュールは高精度検出器ではないため、誤差が生じる可能性があります。 ![img](../media/cou69.png) ---