Arduino用の手のジェスチャーによるサーボ位置の制御

Arduino用の手のジェスチャーによるサーボ位置の制御

このチュートリアルでは、手のジェスチャーを使ってサーボモーターを制御する方法を学びます。手を左または右に動かすことで、サーボモーターがそれに応じて反応します。このプロジェクトでは、APDS-9960ジェスチャーセンサーを使用して手の動きを検出し、それをサーボの位置に変換します。詳細な視覚的説明については、(動画の00:30で)動画をチェックしてください。

APDS-9960 gesture sensor module -1

使用する主要なコンポーネントには、サーボモーターとAPDS-9960ジェスチャーセンサーが含まれます。サーボモーターは、検出されたジェスチャーに基づいて特定の角度に回転し、APDS-9960センサーは手の動きを解釈します。このセットアップにより、物理的な接触なしでサーボを直感的に制御することが可能になります。

ハードウェアの解説

サーボモーターは特定の角度に回転できる小型デバイスで、精密な位置決めを必要とするアプリケーションに最適です。通常、電源(赤)、グラウンド(黒)、信号(オレンジ)の3本のワイヤがあります。信号ワイヤは、サーボを指定された角度に移動させるためのコマンドを受信します。

APDS-9960は、ジェスチャー、周囲光、色を検出できる多用途センサーです。I2Cを介してArduinoと通信し、電源とデータ転送のためにいくつかのピンが必要です。このセンサーは、上、下、左、右などの動きを検出でき、これを使用してサーボを制御します。

データシートの詳細

製造業者ブロードコム
部品番号APDS-9960
ロジック/IO電圧2.4 - 3.6 V
供給電圧2.4 - 3.6 V
出力電流(チャネルごと)最大20 mA
PWM周波数ガイダンス該当なし
入力ロジック閾値0.3 V(低)、0.7 V(高)
電圧降下 / RDS(on)/ 飽和度該当なし
熱的限界-40から85 °C
パッケージ6.0 x 3.0 mm
ノート / バリアントジェスチャーセンサー、RGB光センサー
  • サーボに適切な電圧(通常は5V)が供給されていることを確認してください。
  • APDS-9960をI2C通信を使用してArduinoに接続します。
  • ジェスチャーセンサーの割り込みピンに注意してください。
  • 必要に応じてプルアップ抵抗を使用して、安定した信号検出を行ってください。
  • 異なる照明条件でセンサーをキャリブレーションして、より高い精度を確保してください。
Arduino wiring of APDS9960 to control Servo motor using hand gesture

コンポーネントを配線するには、サーボモーターから始めます。赤いワイヤーをArduinoの5Vピンに接続し、黒いワイヤーをグラウンド(GND)に接続し、オレンジの信号ワイヤーをピンに接続します。9これにより、Arduinoがサーボの位置を制御できるようになります。

次に、APDS-9960 ジェスチャーセンサーを配線します。接続するV_NArduinoの3.3Vにピンを接続し、GND地面にピンを刺す。INTピンはピンに接続する必要があります。2Arduino上で、〜の間にSDASCLピンはピンに行くA4A5それぞれ。この構成により、センサーはArduinoと効果的に通信できるようになります。

コード例とウォークスルー

セットアップ関数では、サーボとジェスチャーセンサーを初期化します。行myservo.attach(9);サーボを以前接続したピン9にバインドします。これにより、サーボはArduinoからコマンドを受け取ることができます。

APDS-9960 gesture sensor -3
void setup() {
 myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 // Set interrupt pin as input
 pinMode(APDS9960_INT, INPUT);
 // Initialize Serial port
 Serial.begin(9600);
}

次に、ループ関数内でシステムがジェスチャーをどのように処理するかを定義します。メソッドhandleGesture();利用可能なジェスチャーをチェックし、対応するアクションを実行します。たとえば、検出されたジェスチャーが左の場合、サーボは180度に移動します。

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_LEFT:
        myservo.write(180);  // added by RoboJax
        break;
      case DIR_RIGHT:
        myservo.write(0);   // added by RoboJax
        break;
    }
  }
}

最後に、ループはジェスチャーを継続的にチェックし、検出されたジェスチャーに基づいてサーボの位置を更新します。正確なジェスチャー認識を得るために、さまざまな照明条件でセットアップをテストすることを確認してください。

デモンストレーション / 期待すること

すべてが配線され、コードがアップロードされると、手を左または右に動かすことでサーボを制御できるようになります。サーボは左のジェスチャーで180度回転し、右のジェスチャーで0度に戻ります。ジェスチャーが検出されない場合は、センサーの位置と周囲の光の条件を確認してください(動画の05:30で)。

  • イントロダクション - 00:00
  • ハードウェアの概要 - 01:30
  • 配線指示 - 03:00
  • コードの説明 - 04:30
  • デモンストレーション - 06:00

画像

APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -1
APDS-9960 gesture sensor module -1
Arduino wiring of APDS9960 to control Servo motor using hand gesture
Arduino wiring of APDS9960 to control Servo motor using hand gesture
APDS-9960 gesture sensor -3
APDS-9960 gesture sensor -3
12-Source code for controlling a servo with your hand
言語: C++
コピーしました!

リソースと参考文献

まだリソースはありません。

ファイル📁

ファイルは利用できません。