概要
設計リソース
評価用ボード
型番に"Z"が付いているものは、RoHS対応製品です。 本回路の評価には以下の評価用ボードが必要です。
- EVAL-ADICUP3029 ($52.97) Ultralow Power Cortex-M3 Arduino Form Factor Compatible Development Board
- EVAL-CN0569-PMDZ ($42.80) Infrared Light Angle Sensor Module for Gesture Recognition
デバイス・ドライバ
コンポーネントのデジタル・インターフェースとを介して通信するために使用されるCコードやFPGAコードなどのソフトウェアです。
機能と利点
- 高集積の光学フロント・エンド
- 強度測定および方向測定用のデュアル光学センサー
- オープンソースのジェスチャ検出アルゴリズム
参考資料
-
CN0569 User Guide2022/05/05WIKI
-
ラピッド・プロトタイピングを実現するためのソリューション2024/04/15PDF4 M
-
CN0569: 赤外線ジェスチャ認識モジュール (Rev. 0)2022/05/05PDF432 K
-
赤外線を利用するジェスチャ認識モジュール、HMIアプリケーションに最適2024/12/12
回路機能とその特長
非接触のユーザ・インターフェースは急成長している技術トレンドとして、ヘルスケア、アクセス制御、およびコンスーマ製品において普及が進んでいます。この技術は、身体的に直接触れる必要のないヒューマン・マシン・インタラクションを可能にします。これら非接触のシステムでは、手を振る動作や「スワイプ」といった体の動きをジェスチャ認識技術を利用して検出し、動作をコマンドとして解釈します。このような操作方法は、カメラや光センサーなど、光に反応するデバイスによって取得されたデータが頼りです。
ビジョン・ベースおよび光学ベースのシステムは、反射光のみに依存します。公共空間やノイズの多い環境など、バックグラウンド・ノイズや周囲の音のために言語ベースの非接触ユーザ・インターフェース・システムでは正確なデータ取得が困難な場所においてこの技術は最適です。
図 1 に示す回路は、一般的なジェスチャ認識アプリケーションに向けた低価格の光学システムです。このリファレンス設計では、赤外線のパルスを空中に送信し、光学センサーが受信した反射光データを読み出します。ジェスチャ認識の対象物(人の手など)は、この空間に入ると光学センサー上に赤外線を反射します。リファレンス設計はこの反射光を検出し、対象物の位置に基づいた応答を生成します。
ジェスチャの検出範囲は最大 20cm(代表値)、サンプル・レートは最大 512 サンプル/秒で、アプリケーションに応じて適した応答時間とノイズ除去性能に調整することができます。
I2C Pmod のフォーム・ファクタを備えているため、外部の開発プラットフォームと容易に接続できます。アルゴリズムは、ホスト・コンピュータ上で Python や MATLAB などの高水準言語を使用して作成することができ、その後、組込みのデバイスに移植します。

回路説明
ジェスチャ認識を使用することで、ユーザ・インターフェースは手の動きとパターンを検出し、コマンドに変換することができます。この技術を実現するには、システムで次の 3 つの基本機能を処理する必要があります。
- ジェスチャの開始と終了を検出
- ジェスチャ動作中の手の動きを追跡
- 手の動きに基づいてジェスチャを識別
赤外線光学角度センサー
この回路で中心となるのは、ADPD2140 赤外線光学角度センサーです。このデバイスは、赤外線の入射角度を 2 軸、単一点で測定することができ、複数のデバイスを使用した三角測距も可能です。ADPD2140 の放射感度領域は 0.31mm2 で、領域内は共通のカソード端子を持つ 4 つのフォトダイオード・チャンネルに分割されています。0.2V の逆電圧で動作しているとき、4 チャンネルすべての接合容量と逆暗電流の代表値は極めて低い値になります(接合容量が 12.7pF、逆暗電流が 1.74pA)。また、ADPD2140 は±35º の画角内で線形応答を保つことができるため、高精度のアライメントは不要です。
ADPD2140 パッケージには、可視光をシャープにカットオフする光学フィルタが内蔵されているため、太陽光や室内照明の下でもレンズを外付けすることなく、センサーのダイナミック・レンジを維持できます。このリファレンス設計用に赤外線光源を選定する場合、ADPD2140 内蔵の光学フィルタを透過する800nm 以上の波長で動作する部品を選ぶことが重要です。また、光源は、反射光が±35º の画角内に収まるようセンサーとの距離を保って配置します。このリファレンス設計では、850nm の赤外線エミッタ 1個を光源として使用し、1 つめの ADPD2140 から6mm、2つめのADPD2140から19mm離して配置しています(図2 参照)。広角度で強い光が入射すると測定に影響するため、3D プリンタで作製したバッフルを ADPD2140 それぞれの周りに配置し、入射光を約±35º 以内に制限しています。

測光用フロント・エンド
CN0569 の測光用フロント・エンドに使用されているのはADPD1080 で、これは、LED ドライバ、トランスインピーダンス・アンプ、積分器、A/D コンバータ、デジタル信号処理、I2Cインターフェースが内蔵された高集積デバイスです。
ADPD1080 は、赤外線 LED のパルス駆動、ADPD2140 の応答の検出、アナログの光電流からデジタル・コードへの変換、およびI2Cを介した外部マイクロコントローラへのデータ送信を実行します。8 個並列の高性能フォトダイオード入力チャンネルを備えた小型の ADPD1080 は、ADPD2140 と組み合わせて使用することで、LED の同期パルスを使用した光学角度センサー向けに低価格のディスクリート・ソリューションを実現します。
CN0569 は、2 個の ADPD2140 赤外線センサーを ADPD1080 に接続して使用しており、ジェスチャと距離の両方の検出が容易にできます。図 3 に代表的な測定チャンネルの簡略化したブロック図を示します。

ADPD1080 に搭載された 3 つの LED ドライバ(LEDX1、LEDX2、LEDX3)で外部 LED を駆動します。3 つの LED ドライバは電流シンクで動作し、LED 電源からそれぞれに流れる電流の平均値は式 1 を使用して計算できます。

ここで、
ILED_AVERAGE は LED 電源から LED ドライバに流れる平均電流値(mA)、
ILED_PEAKは LEDドライバを流れるピーク電流の設定値(mA)、
tLED_PULSEは LED パルス幅(µs)、
tLED_PERIODは LED パルスの周期(µs)です。
式 2 に示すように、ADPD1080 の LED ドライバを流れるピーク電流の設定値は、電流の粗設定値、電流の精細設定値、電流のスケール係数の 3 つの係数の積です。
ここで、
ILED_COARSEは LED ドライバを流れる電流の粗設定値、
ILED_FINEは LED ドライバを流れる電流の精細設定値、
LED_Current_Scaleは LEDドライバを流れる電流のスケール係数です。
この 3 つの係数は、ADPD1080 の LED コントロール・レジスタによって決定します。
- 電流の粗設定値は、ILED1_COARSE、ILED2_COARSE、および ILED3_COARSE を使用して調整します。
- 電流の精細設定値は、ILED1_FINE、ILED2_FINE、およびILED3_FINE を使用して調整します。
- 電流のスケーリング係数は、ILED1_SCALE、ILED2_SCALE、および ILED3_SCALE を使用して選択します。
LED ドライバを流れる電流の粗設定値の基本値は 50.3mA で、LSB 当たり 19.8mA ずつ増加します。同様に、LED ドライバを流れる電流の精細設定値の基本値は 0.74mA で、LSB 当たり22µA ずつ増加します。これらの設定の最終値は式 3 と式 4 を使用して計算できます。電流のスケール係数の選択肢は 10%か100%の 2 つのみで、ILEDx_SCALE ビットの値で決まります。電流スケールの値は、式 5 を使用して計算できます。LED コントロール・レジスタの詳細については、ADPD1080 データシートを参照してください。
ここで、
ILEDx_COARSE は LED コントロール・レジスタ・ビットの 10進数値、
ILEDx_FINE は LED コントロール・レジスタ・ビットの 10 進数値、
ILEDx_SCALE は LED コントロール・レジスタ・ビットの 2 進数値です。
LED の損傷を防ぐため、ピーク電流の設定値は赤外線 LED の実際の順電流定格およびパルス処理能力を超えないように設定する必要があります。
サンプリング期間中、LED がパルス駆動され、トランスインピーダンス・アンプ段でフォトダイオード電流を電圧に変換します。出力電圧は、タイム・スロットとして設定された時間の間、積分されます。SLOTA_AFE_WIDTH レジスタでタイム・スロット A、SLOTB_AFE_WIDTH レジスタでタイム・スロット B の積分時間を設定し、1 ビットは積分時間 1µs に対応します。
LED がオフになると、逆の極性で同じ時間の間、積分されます。その後、積分器の出力は ADC でデジタル化されます。この同期サンプリング・シーケンスによって周辺光が除去されるため、測定値は LED からの反射光のみで決まります。
ADPD1080 の測定パスは詳細な設定が可能で、トランスインピーダンス・ゲイン、積分時間のオフセット、平均化、その他のパラメータをエンド・アプリケーションに合わせて調整できます。詳細については、データシートを参照してください。
ジェスチャ認識
ADPD1080 が測定したフォトダイオードのデータを使用してジェスチャ認識アルゴリズムで処理することにより、手の基本的な動きを識別できるようになります。ADPD2140 データシートにジェスチャ認識のシンプルかつ効果的な方法が記載されており、これを CN0569 に適用することができます。
- ADPD1080 データシートに記載された手順に従ってADPD1080 の 32kHz クロックと 32MHz クロックを補正します。
- MODE レジスタを通常動作に設定します。
- 先入れ先出し(FIFO)と割込みを使って ADPD1080 のレジスタから光電流データを読み出します。
- それぞれのチャンネルから ADPD1080 の ADC オフセットを差し引きます。チャンネル 1~4 に対して、SLOTA_CHx_OFFSET レジスタにタイム・スロット A の、SLOTB_CHx_OFFSET レジスタにタイム・スロット B の ADCオフセットが格納されています。
オフセットのデフォルト値はすべて 0x2000 です。これらのオフセットを変更するには、各チャンネルの 16 ビット出力を ADC コードで測定して、それを ADC オフセット・レジスタ SLOTx_CHx_OFFSET 内の既存 16 ビット数値(公称値は0x2000)に追加します。次に、この結果を ADC オフセット・レジスタに書き込みます。オフセットが正しく差し引かれると、センサーの画角内に対象物がない場合の強度の読出し値 L はゼロ・コードに近い値になります。
- 式 6 を使用して光電流データから光の強度を計算します。
- 光の強度をモニタリングします。強度値がプリセットした閾値を超えることによってジェスチャの開始を検出します。閾値はデフォルトで 1000 コードに設定されていますが、アプリケーションに応じて変更できます。図 4 に、センサーから12.7cm および 30.5cm 離した位置に手をかざしたときの静的測定の結果(代表値)を示します。

- ジェスチャの開始時には、次式を使用してジェスチャ・オブジェクトの角度位置を計算します。
- 光強度のモニタリングを続けます。プリセットしたサンプル数(デフォルト値は 5 サンプル)をモニタリングした後、ジェスチャが終了したかどうかチェックを開始します。ジェスチャの終了は、強度値がプリセットした閾値を下回ることによって検出します。
- ジェスチャの終了時には、上記の式を使用してジェスチャ・オブジェクトの新しい角度位置を計算します。
- 開始時と終了時の角度位置の間の距離と傾きを次式を使用して計算します。
- ジェスチャの開始時および終了時の角度位置、距離、およびこの 2 点間の傾きを基にジェスチャの種類を決定します。ジェスチャは以下の基準を使用して判別できます。


- d がプリセットした閾値より小さい、または|m| = 1 の場合、ジェスチャは「クリック」。
- |m| > 1 および ySTART > yENDの場合、ジェスチャは「上にスワイプ」。
- |m| > 1 および ySTART ≤ yENDの場合、ジェスチャは「下にスワイプ」。
- |m| < 1 および xSTART > xENDの場合、ジェスチャは「左にスワイプ」。
- |m| < 1 および xSTART ≤ xENDの場合、ジェスチャは「右にスワイプ」。
「上にスワイプ」と「下にスワイプ」のジェスチャ動作を行ったときの強度の計算結果(式 6)を図 5 に、角度の計算結果(式7 および式 8)を図 6 に示します。これらのデータ・セットでは、ジェスチャ・オブジェクトは ADPD2140 と LEDから 5cm程度上の位置にあります。図 5 の強度測定値によってジェスチャの開始と終了を決定し、図 6 の角度位置によってどのジェスチャが行われたかを決定します。「スワイプの方向」は任意であり、アプリケーションそれぞれでのデバイスの向きに基づいて決定します。


電源レギュレーションおよびレベル変換
CN0569 は 3.3V Pmod プラットフォームのボードと互換性がありますが、ADPD1080 に 1.8V 電源が必要となります。
LT1761 は低ノイズ、低ドロップアウトのマイクロパワー・レギュレータで、1.8V~20V の幅広い入力電圧範囲を持ち、最大100mA の出力電流を提供します。このデバイスで出力電圧が1.8V に固定されたタイプには、入力用、出力用、およびノイズ低減用のコンデンサが必要です。
ADPD1080 は 1.8V ロジックをデジタル・ラインで使用するため、このリファレンス設計にはレベル変換機能が搭載されており、3.3V ロジックで動作するコントローラ・ボードと互換性を確保しています。ADPD1080 の I2C バスには、1.8V へのレベル変換にも対応するホットスワップ可能な 2 線双方向バス・バッファLTC4313-3 を介してデータ・ラインとクロック・ラインを接続します。図 7 に ADPD1080 の I2C バスのデータ・ラインおよびクロック・ラインを LTC4313-3 に接続するセットアップを示します。
同様に、ADPD1080 の GPIO0 には、シングル・チャンネルのレベル変換器 ADG3301 を介してデータ・ラインを接続します。

バリエーション回路
より広い検出範囲が要求されるアプリケーションでは、VCSEL(垂直共振器面発光レーザー)を使用することもできます。その場合、ADPD1080 の LED ドライバをディスエーブルし、代わりに GPIO ピンで VCSEL のドライバをトリガできるように構成します。
内蔵の LED は 1 つの LEDX 出力によって駆動されており、この出力は最大 370mA のパルス電流を供給します。最大 3 つのLEDX 出力を並列に接続し、高強度の外部 LED に最大 1.11A のLED 駆動電流を供給することもできます。
回路の評価とテスト
このセクションでは、ADICUP3029 開発プラットフォームを使用して CN0569 回路評価用ボードを評価するためのセットアップと手順について説明します。
EVAL-CN0569-PMDZ の詳細については、CN0569 ユーザ・ガイドを参照してください。
必要な装置
以下の装置を使用します。
- EVAL-CN0569-PMDZ 回路評価用ボード
- EVAL-ADICUP3029 開発プラットフォーム
- ホスト PC(Windows、Linux、または Mac)
- Python(3.6 以上)
- CN0569 Theremin の Python スクリプト
- Micro USB ケーブル
セットアップとテスト
上述したアルゴリズムに基づいて基本的なジェスチャ検出のデモを実行するには、以下の手順に従ってください。
- I2C Pmod ポートを使用して、EVAL-CN0569-PMDZ 回路評価用ボードを EVAL-ADICUP3029 開発プラットフォームに接続します。
- Micro USB ケーブルを使用して、EVAL-ADICUP3029 開発プラットフォームをコンピュータに接続します。システムのテスト・セットアップについては、図 8 を参照してください
- コンピュータに接続した後、構築済みの HEX ファイルをDAPLINK ドライブにドラッグして ADICUP3029 にアップロードします。最新の HEX ファイルについては、ユーザ・ガイドを参照してください。
- EVAL-ADICUP3029 開発プラットフォームの 3029_RESET ボタン(S1)を押します。
- コンピュータで CN0569 Theremin の Python スクリプトを実行します。
- CN0569 リファレンス設計ボード上に手をかざしてジェスチャ動作を行い、コンピュータ端末でジェスチャの測定結果を確認します。
