覚書-PAJ7620U2(ジェスチャーセンサー)

初めに

水中で非接触で機械の操作を、ジェスチャーセンサーが利用できないか調べるため購入して、いろいろいじってみた。その時の調査した結果をとりあえず書いてみる。

ただ結果としては、水中では、というか、センサーの配置に制限があったので、ハウジングケースのような厚めの筐体の内側に配置しても、ジェスチャーを認識しないということが分かった。残念。

ハードウェアの概要

30×30のイメージセンサーを持っており、IR940nmを照射し画像を受け取り。受け取った結果をDSPに通して、ジェスチャー・近接接近に関する情報処理をする。

ジェスチャー・近接接近とチップ制御は、I2Cで行う。

イメージセンサーの情報取り出しは、SPIで行う。SPIはこのチップがマスターになるみたいな感じ。

ベースクロックはGPIO1(MCLK)で与える。周波数は22~48MHz(Frame subtraction モード)、または44~48MHz(RAWモード)となる。

サスペンド時の消費電力は15μA、動作時は、1.5mA~2.82mA。

マニュアルを読むうえで必要な語彙

GPIOイメージデータ転送用のSPI用ピン
0:マスタークロック, 1:CS, 2:SCK, 3:DATA
INT_Nジェスチャー・PSの割り込みピン
PS近接感知、Proximity Sensor
OPOperation State:消費電力2.82mA
S1Standby 1 State:消費電力2.3mA
S2Standby 2 State:消費電力1.5mA
OPtoS1 StepOPからS1に移行する時間で、レジスタはObj_TIME_1(0x6B,0x6C)になる。
S1toS2 StepS1からS2に移行する時間で、レジスタはObj_TIME_2(0x6D,0x6E)になる。

ジェスチャーのモード

Operation State, Standby 1 State, Standby 2 Stateの3種類ある。
モードの手動変更は、Bank0, 0x45で行う。

オブジェクトが認識できない場合、OPtoS1 time(Bank1,0x6B,0x6C)経過するとS1に移行する。S1からさらにS1toS2 time(Bank1,0x6D,0x6E)で何もオブジェクトが検出できないと、S2に移行する。

オブジェクトが検出された場合、すぐにOPに移行する。

ジェスチャーと近接接近でのパラメータの違い

Bパラメータ名ジェスチャー近接接近
0Interrupt Enable(0x41,0x42)0x01FF0x0200
0AE_Exposure_UB(0x48, 0x49)0x003C0x0020
0Manual_GG(0x51:[0])FALSETRUE
0Manual_Exposure(0x51:[1])FALSETRUE
0LightThd(0x83)0x200x00
0UseBGModel(0x9F:[0])TRUEFALSE
1dac(0x41:[5:3])0x00x2
1dacref_sel(0x43:[2])FALSETRUE
1IDLE_TIME(0x65, 0x66)0x00960x0BCE
1IDLE_TIME_SLEEP_1(0x67,0x68)0x01970x0BCE
1IDLE_TIME_SLEEP_2(0x69,0x6A)0x01CD0x05E9
1Obj_TIME_1(0x6B,0x6C)0x04B00xC350
1Obj_TIME_2(0x6D,0x6E)0x012C0xC350
1Control_Mode(0x74:[2:0])0x00x5

Interrupt Enable(割り込みマスク)

RegBit内容
0x430
 1
 2
 3
 4前進
 5後退
 6時計回り
 7反時計回り
0x440ウェーブ
 1近接接近
 2物体あり
 3Wake Up
 4確認
 5中断
 7物体なし

近接接近のパラメータ

Pox_UBとPox_LBはアプリケーションノートでは、ジェスチャーから近接接近に変更した際に、その内容を変更していた。

時間についての基本的考え方

0.0323msを1Tとして計算されているらしい。

参照先掲示板

上記掲示板のノーマルモード・ゲーミングモードの切り替えに関する質問から考えるに、次のようなことが言える。

近接接近モードでのIDLE_TIMEが3022となっている。この時間はT*3022= 97.6106となる。

アプリケーションノートでは、近接接近モードの検知周波は10Hz(100ms単位)なので、近接接近モードの検知時間は25ms相当だと思われる。

ジェスチャーモードでは、アプリケーションノートのGesture Detection Operating State and State Machineの計算式から、3.55msがジェスチャーの解析時間だと思われる。それをもとに、120Hz、240HzになるようにIDLE_TIMEを調整する。

結果として、120Hzは148となり、240Hzは19となる。
デフォルト値の150では、119Hzと約120Hzになっていた。

S1とS2での計測周波数を調べたところ、次のような形になった。

状態設定値計算式周波数
S14071000/(407*0.0323+3.55)59.89Hz
S24611000/(461*0.0646+3.55)30Hz

初期パラメータの調査

アプリケーションノート、Grove、CHIRIMEN、mbedの情報を調査。

mbedは15, 20, 30の各距離のパラメータ変更についても記載があった。GroveとCHIRIMENは同じ、mbedはアプリケーションノートと同じ。

チップに書き込まれている初期値は、データシートと異なっていた。

これらはエクセルにまとめた。

最後に

ドキュメントのRecommended Mechanical Designをきちんと見ておけば。

カバーガラスが0.7mm以下とは。1cmあるアクリル越しではジェスチャーの検知はできないってあたりまえだよな。

コメント

タイトルとURLをコピーしました