Arduino用APDS9960 ジェスチャー、RGB、近接センサー

Arduino用APDS9960 ジェスチャー、RGB、近接センサー

このチュートリアルでは、ジェスチャー検出、RGB色検出、近接検知の機能を組み合わせたAPDS9960センサーモジュールの使い方を解説します。この多機能センサーはさまざまな方向への動きを検知でき、手のジェスチャーに基づいてモーターやライト、その他のデバイスを制御するプロジェクトに組み込むことができます。チュートリアルの最後には、センサーの配線方法とArduinoプロジェクトでの基本的なジェスチャー検出の実装方法がわかるようになります。

APDS-9960 gesture sensor module -1

APDS9960モジュールはコンパクトで配線が最小限で済むため、インタラクティブなプロジェクトに最適です。Arduino IDEを使ってセンサーをプログラムし、検出したジェスチャーをシリアルモニターに表示します。視覚的なガイドは、(in video at 00:00)のビデオを参照してください。

ハードウェア解説

このプロジェクトの主要な構成要素はAPDS9960センサーモジュールです。このモジュールは左スワイプ、右スワイプ、上スワイプ、下スワイプといったジェスチャーを検出できます。また、RGBの色値と近くの物体への近接を測定します。センサーはI2Cを使用してArduinoと通信し、配線やコーディングの手間を簡素化します。

APDS9960には複数の内蔵センサーが搭載されています:ジェスチャーセンサー、RGBカラーセンサー、環境光センサーです。ジェスチャーセンサーは赤外線LEDと光検出器を使用して手の動きを検出し、RGBセンサーは色を識別するために赤、緑、青の光強度を測定します。近接センサーは物体がセンサーにどれだけ近いかを判定し、さまざまな用途で役立ちます。

データシートの詳細

製造元アバゴ・テクノロジーズ
部品番号APDS-9960
ロジック/IO電圧1.8 V から 3.6 V
供給電圧3.3 V
出力電流(チャンネルあたり)最大20 mA
ピーク電流(チャンネルあたり)100 mA
PWM周波数に関する指針該当なし
入力論理閾値0.3 V(低)、0.7 V(高)
電圧降下 / Rドレイン・ソース間のオン抵抗(DS(on))/ 彩度最大0.5 V
熱限界−40〜85°C
パッケージ6ピンLGA
備考 / バリエーションなし

  • 必ずAPDS9960に3.3Vで電源を供給してください。より高い電圧はセンサーを損傷する可能性があります。
  • 複数のデバイスを接続する場合は、I2Cラインに適切なプルアップ抵抗を設けてください。
  • 干渉を避けるため、センサーを直射日光の当たらない場所に設置してください。
  • 安定性のため、電源ピンの近くにデカップリングコンデンサを配置してください。
  • 近接検出の検知範囲(通常は約20 cm)に注意してください。

配線手順

Arduino wiring for APDS9960 Gesture sensor
Arduino wiring for APDS9960 Gesture sensor

APDS9960センサーモジュールをArduinoに配線するには、次の手順に従ってください:

  • 接続するVCCAPDS9960のピンをArduinoの3.3Vピンに接続する。
  • 接続してくださいGNDピンをArduinoのGNDピンのいずれかに接続してください。
  • 接続するSDAArduinoのピンにA4ピン(I2Cのデータ線)。
  • 接続するSCLArduinoのピンにA5ピン(I2Cのクロック線)。
  • 接続するINTピンをデジタルピンに2割り込み処理のためのArduino上で。

別のArduinoモデルを使用している場合、SDAおよびSCLピンは異なることがあるので注意してください(例:Arduino Megaでは、使用するピンが異なります)SDAピン20およびSCL(ピン21上)。お使いのボードのピン割り当てを必ず確認してください。異なる構成については、動画の02:30の箇所を参照してください。

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

setup関数では、シリアル通信とAPDS9960センサーを初期化します。割り込みピンはジェスチャーイベントを受け取るように設定されています。以下はsetupコードの抜粋です:

void setup() {
  pinMode(APDS9960_INT, INPUT);
  Serial.begin(9600);
  Serial.println(F("APDS-9960 initialization..."));
  if (apds.init()) {
    Serial.println(F("Initialization complete"));
  } else {
    Serial.println(F("Initialization failed"));
  }
}

このコードは、センサーが使用できるように必要な設定を行い、シリアルモニタにフィードバックを表示します。

次に、センサーによって検出されたジェスチャーの処理方法を定義します。そのhandleGestureこの関数はswitch文を使ってジェスチャーの方向を判定します。以下はその抜粋です:

void handleGesture() {
  if (apds.isGestureAvailable()) {
    switch (apds.readGesture()) {
      case DIR_UP:
        Serial.println("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        break;
      // Additional cases for left, right, near, and far
    }
  }
}

この関数はジェスチャーが利用可能かどうかをチェックし、方向を読み取って結果をフィードバックとしてシリアルモニタに表示します。実装の詳細については、記事下に掲載されている全コードを必ず参照してください。

デモンストレーション/期待される内容

プログラムを実行すると、手を異なる方向に動かすと検出されたジェスチャがシリアルモニタに表示されるはずです。たとえば、上にスワイプすると "UP"、下にスワイプすると "DOWN" と表示されます。近・遠のジェスチャを行うときは(ビデオの10:00)1秒ほど手を静止させてください。

センサーの近接検出には注意してください。手をセンサーに対してあまりに速く、または遠くへ動かすと、ジェスチャーを正確に認識できないことがあります。これはパフォーマンスに影響を及ぼす一般的な問題です。

動画のタイムスタンプ

  • 00:00- APDS9960センサーの紹介
  • 02:30- 配線手順
  • 05:15- コードの説明
  • 10: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 for APDS9960 Gesture sensor
Arduino wiring for APDS9960 Gesture sensor
87-This is code for an APDS9960 gesture, RGB, and proximity sensor module (6-pin).
言語: C++
コピーしました!

リソースと参考文献

ファイル📁

フリッツィングファイル

他のファイル