テキスト ボックス:  PAJ7620U2

 

 

 

I2Cセンサーの種類

ジェスチャーセンサー

主な機能

上、下、右、左、近づく、遠ざける、時計回りの指、反時計回りの指、手を振る

の9種類の動きを認識します

I2Cデバイス名

PAJ7620U2

写真

 

GROVE - ジェスチャー

開発したデバイスの入手先 

製品名 品番・型番

スイッチサイエンス

GROVE – ジェスチャー(SEEED-101020083

デバイスのData-Sheet

http://www.pixart.com/upload/PAJ7620U2_GDS_v1.0_29032016_20160623194552.pdf

https://github.com/SeeedDocument/Grove_Gesture_V_1.0/raw/master/resources/PAJ7620U2_Datasheet_V0.8_20140611.pdf

デバイスの主な仕様

 

電源電圧

 

I2Cアドレス

I2C通信速度

検出距離、角度

検出速度

2.8~3.6V (LED専用電源入力が有り3V~4.2V

GROVE – ジェスチャーセンサーは5V動作回路です。

073

400Kbps

5~15cmの距離で視野は60°です。外来光の明るさは100K-Lux以内です。

標準モード:60°/S~600°/S ゲームモード:60°/S1200°/S

説明

人間の手の動き等を検出できるジェスチャーセンサーです。

赤外線を発光するLEDの反射を60×60pixのアレー状の光センサーで受けて動きの検出をしています。

テストの結果では、リアルタイムに近づきつつある等の検出では無く、ひとつの動作が完了してから、その動作は何?

だったのかの結果が返ってくる為、ワンテンポ遅れる感じがします。

むやみに、手を動かしてもダメなので、センサーの前でやさしく手を動かして下さい。

 

レジスタバンクと言う考え方でレジスタアクセスが行われています。また、レジスタは1bit単位での設定箇所が多くあり、I2Cセンサードライバーでは1bit単位の読み書きも個別にプロパティとして準備していますので、どのbitなのかを意識せず、利用できます。

 

通常のレジスタの読み書きは、register
address
を指定した後に処理を行いますが、I2Cセンサー・ドライバーを使用する場合は使用するプロパティにregister addressが紐づけして有る為レジスタアドレスの指定は不要でプロパティへ値の代入、読み出しのみで可能です。

 

 

 

 

開発・テスト風景

IMG_2421

IMG_2428

 

I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)

I2C suspend command (Write 0x01 to enter suspend state). I2C wake-up command is
slave ID wake-up. Refer to topic
I2C Bus Timing Characteristics and
Protocol

PS gain setting (Only functional at proximity detection mode)

Gesture detection interrupt flag mask

IDLE S1 Step, for setting the S1, Response Factor

Gesture/PS detection interrupt flag mask

IDLE S2 Step, for setting the S2, Response Factor

Gesture detection interrupt flag

OPtoS1 Step, for setting the OPtoS1 time of operation state to standby 1 state

Gesture/PS detection interrupt flag

S1toS2 Step, for setting the S1toS2 time of standby 1 state to standby 2 state

State indicator for gesture detection (Only functional at gesture detection mode)

Enable/Disable PAJ7620U2

PS hysteresis high threshold (Only functional at proximity detection mode)

 

PS hysteresis low threshold (Only functional at proximity detection mode

 

PS approach state,

 

PS 8 bit data (Only functional at proximity detection mode)

 

Object Brightness (Max.
255)

 

Object Size (Max. 900)

 

I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド

  プロパティ

機能名

機能説明

REGISTER_BANK

Register
Bank
を設定します。

Suspend

REGISTER_BANK0の場合、サスペンドを設定します。

Enable

REGISTER_BANK1の場合、PAJ7620U2EnabledDisableを取得または設定します。

Counter_Clockwise_Mask

REGISTER_BANK0の場合、反時計回りのジェスチャーのマスクを取得または設定します。

Clockwise_Mask

REGISTER_BANK0の場合、時計回りのジェスチャーのマスクを取得または設定します。

Backward_Mask

REGISTER_BANK0の場合、後退のジェスチャーのマスクを取得または設定します。

Forward_Mask

REGISTER_BANK0の場合、前進のジェスチャーのマスクを取得または設定します。

Right_Mask

REGISTER_BANK0の場合、右ジェスチャーのマスクを取得または設定します。

Left_Mask

REGISTER_BANK0の場合、左ジェスチャーのマスクを取得または設定します。

Down_Mask

REGISTER_BANK0の場合、下ジェスチャーのマスクを取得または設定します。

Up_Mask

REGISTER_BANK0の場合、上ジェスチャーのマスクを取得または設定します。

Wave_Mask

REGISTER_BANK0の場合、ウェーブジェスチャーのマスクを取得または設定します。

 

機能名

機能説明

Counter_Clockwise

REGISTER_BANK0の場合、反時計回りのジェスチャーを取得します。

Clockwise

REGISTER_BANK0の場合、時計回りのジェスチャーを取得します。

Backward

REGISTER_BANK0の場合、後退のジェスチャーを取得します。

Forward

REGISTER_BANK0の場合、前進のジェスチャーを取得します。

Right

REGISTER_BANK0の場合、右ジェスチャーを取得します。

Left

REGISTER_BANK0の場合、左ジェスチャーを取得します。

Down

REGISTER_BANK0の場合、下ジェスチャーを取得します。

Up

REGISTER_BANK0の場合、上ジェスチャーを取得します。

Wave

REGISTER_BANK0の場合、ウェーブジェスチャーを取得します。

State

REGISTER_BANK0の場合、状態を取得します。

IDLE_S1_Step

REGISTER_BANK1の場合、IDLE_S1_Stepを取得または設定します。

IDLE_S2_Step

REGISTER_BANK1の場合、IDLE_S2_Stepを取得または設定します。

OPTOS1_Step

REGISTER_BANK1の場合、OPTOS1_Stepを取得または設定します。

S1TOS2_Step

REGISTER_BANK1の場合、S1TOS2_Stepを取得または設定します。

ObjectBrightness

REGISTER_BANK1の場合、ObjectBrightnessを取得または設定します。

ObjectSize

REGISTER_BANK1の場合、ObjectSizeを取得または設定します。

PSGain

REGISTER_BANK1の場合、PSGainを取得または設定します。

Proximity_Mask

REGISTER_BANK0の場合、近接検出のマスクを取得または設定します。

 

機能名

機能説明

Proximity

REGISTER_BANK0の場合、近接検出を取得します。

PS_High_Thd

REGISTER_BANK1の場合、PS_High_Thdを取得または設定します。

PS_Low_Thd

REGISTER_BANK1の場合、PS_Low_Thdを取得または設定します。

PS_Approach

REGISTER_BANK1の場合、PS_Approchを取得します。

PS_8bits_Data

REGISTER_BANK1の場合、PS_8bits_Dataを取得します。

メソッド

機能名

機能説明

Init

I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。

Read

指定レジスタ読込

Write

指定レジスタ書込

定数

機能名

機能説明

定数値

REG_ADDR.REGISTER_BANK

レジスタバンク

0xEF

REG_ADDR.Suspend

レジスタバンク0、サスペンド

0x03

REG_ADDR.

GESTURE_DETECTION_INTERRUPT_FLAG_MASK

レジスタバンク0、ジェスチャー検出割り込みフラグマスク

0x41

REG_ADDR.

GESTURE_DETECTION_INTERRUPT_FLAG

レジスタバンク0、ジェスチャー検出割り込みフラグ

0x43

REG_ADDR.State

レジスタバンク0、ジェスチャー検出のための状態インジケータ

0x45

REG_ADDR.PS_High_Thd

レジスタバンク0PSヒステリシス高閾値

0x69

REG_ADDR.PS_Low_Thd

レジスタバンク0PSヒステリシス低閾値

0x6A

REG_ADDR.PS_Approach

レジスタバンク0PSアプローチ状態

0x6B

REG_ADDR.PS_8bits_Data

レジスタバンク08bitデータ

0x6C

REG_ADDR.ObjectBrightness

レジスタバンク0、被写体輝度

0xB0

REG_ADDR.ObjectSize

レジスタバンク0、オブジェクトサイズ

0xB1

REG_ADDR.PS_Gain

レジスタバンク1PSゲイン設定

0x44

REG_ADDR.IDLE_S1_Step

レジスタバンク1S1、レスポンスファクタ

0x67

REG_ADDR.IDLE_S2_Step

レジスタバンク1S2、レスポンスファクタ

0x69

REG_ADDR.OPTOS1_Step

レジスタバンク1OPtoS1ステップ時間

0x6B

REG_ADDR.S1TOS2_Step

レジスタバンク1S1toS2ステップ時間

0x6D

REG_ADDR_Enable

レジスタバンク1PAJ7620U2有効/無効

0x72

 

 

 

I2Cセンサードライバーを使ったVBでのサンプルソース

Imports I2CLibrary

Public NotInheritable Class PAJ7620U2Page

 Inherits Page

 

 Private Const PAJ7620U2_Address As Byte = &H73

 Private PAJ7620U2 As PAJ7620U2 = New PAJ7620U2()

 Private WithEvents RefreshTimer As DispatcherTimer = New DispatcherTimer()

 

 Public Sub New()

  InitializeComponent()

  Call Init()

 End Sub

 

 Private Async Sub Init()

  Await PAJ7620U2.Init(PAJ7620U2_Address)

 End Sub

 

 Private Sub btnStart_Click(sender As Object, e As RoutedEventArgs)


  PAJ7620U2.REGISTER_BANK = &H0

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.REGISTER_BANK)

 

  PAJ7620U2.Suspend = &H0

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.Suspend)

 

  PAJ7620U2.REGISTER_BANK = &H1

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.REGISTER_BANK)

 

  PAJ7620U2.Enable = &H1

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.Enable)

 

  PAJ7620U2.REGISTER_BANK = &H0

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.REGISTER_BANK)

 

  PAJ7620U2.Up_Mask = &H1

  PAJ7620U2.Down_Mask = &H1

  PAJ7620U2.Left_Mask = &H1

  PAJ7620U2.Right_Mask = &H1

  PAJ7620U2.Forward_Mask = &H1

  PAJ7620U2.Backward_Mask = &H1

  PAJ7620U2.Counter_Clockwise_Mask = &H1

  PAJ7620U2.Clockwise_Mask = &H1

  PAJ7620U2.Wave_Mask = &H1

  PAJ7620U2.Proximity = &H0

 

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.GESTURE_DETECTION_INTERRUPT_FLAG_MASK)

 

  RefreshTimer.Interval = TimeSpan.FromMilliseconds(100)

  RefreshTimer.Start()

 End Sub

 Private Sub Measurement(sender As Object, e As Object) Handles RefreshTimer.Tick

  RefreshTimer.Stop()

 

  PAJ7620U2.REGISTER_BANK = &H0

  PAJ7620U2.Write(PAJ7620U2.REG_ADDR.REGISTER_BANK)

 

  PAJ7620U2.Read(PAJ7620U2.REG_ADDR.GESTURE_DETECTION_INTERRUPT_FLAG)

  PAJ7620U2.Read(PAJ7620U2.REG_ADDR.State)

 

  If (PAJ7620U2.Up = 1) Then

   Debug.WriteLine(“Up”)

  End If

  If (PAJ7620U2.Down = 1) Then

   Debug.WriteLine(“Down”)

  End If

  If (PAJ7620U2.Left = 1) Then

   Debug.WriteLine(“Left”)

  End If

  If (PAJ7620U2.Right = 1) Then

   Debug.WriteLine(“Right”)

  End If

  If (PAJ7620U2.Forward = 1) Then

   Debug.WriteLine(“Forward”)

  End If

  If (PAJ7620U2.Backward = 1) Then

   Debug.WriteLine(“Backward”)

  End If

  If (PAJ7620U2.Clockwise = 1) Then

   Debug.WriteLine(“Clockwise”)

  End If

  If (PAJ7620U2.Counter_Clockwise = 1) Then

   Debug.WriteLine(“Counter_Clockwise”)

  End If

  If (PAJ7620U2.Wave = 1) Then

   Debug.WriteLine(“Wave”)

  End If

 

  RefreshTimer.Start()

 End Sub

 

 Private Sub btnStop_Click(sender As Object, e As RoutedEventArgs)

  RefreshTimer.Stop()

 End Sub

 

 Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs)

  RefreshTimer.Stop()

  PAJ7620U2.close()

  App.rootFrame.Navigate(GetType(MenuPage))

 End Sub

End Class