Grove Gesture Sensorは3.3Vでも（なんとか）動作します

# もらった物は使いたい

先日参加したSORACOM / Seeed共催の[Wio LTE ユーザーイベント](https://blog.soracom.jp/blog/2017/12/07/wiolte-user-event-report/)の景品としていただいたGrove Gesture Sensorですが、[Seeed社の公式Wiki](http://wiki.seeed.cc/Grove-Gesture_v1.0/)によれば動作電圧が5Vとのことで、3.3V仕様のWio LTEでは使えず残念に思っていました。

![スペックシート](https://qiita-image-store.s3.amazonaws.com/0/18746/4bba3d04-7948-b592-1b0e-cfa67b41609f.png)

せっかくのもらい物、放置するのももったいないので他のボードで使おうと調査を始めました。まずは素性を知らないと始まらないので、使用されているジェスチャー検出デバイス　PAJ7620U2の詳細を調べることにしました。

# PAJ7620U2とは

[PAJ7620U2](http://www.pixart.com/product_data.asp?product_id=151&productclassify_id=17&productclassify2_id=43&productclassify_name=Gesture%20Recognition&productclassify2_name=Integrated%20ISP%20Single-Chip&partnumber=PAJ7620U2)は台湾のPixArt Imaging社が製造しているIntegrated ISP Single-Chip（統合型シングルチップ画像処理プロセッサ、とでも訳せるか）です。見かけは小窓付きの黒いチップに過ぎませんが、中にはCMOSカメラと画像処理器が入っていて20cm程度の距離から9つのハンドジェスチャーを検出することができます。

![PAJ7620U2](https://github.com/SeeedDocument/Grove_Gesture_V_1.0/raw/master/img/400px-Gesture_sensor_3.png)

データシートをダウンロードして中身を見ようとしたところ、いきなり1ページ目から気になる記述を見つけてしまいました。

![データシート](https://qiita-image-store.s3.amazonaws.com/0/18746/f1d463b2-3136-d7d6-d232-372c239d2472.png)

電源電圧は2.8〜3.6Vとなっています。あれ、Grove Gesture Sensorは5Vデバイスなんじゃなかったのか？？

# 回路図を調べよう

これだけの情報では何とも判断できません。基板に供給された5Vが内部で3.3Vに変換され、チップに供給されている可能性もあるからです。そこで回路図を調べてみると

![回路図](https://qiita-image-store.s3.amazonaws.com/0/18746/c2910b32-12a5-33e5-95fc-08dc8f0d02f0.png)

基板に供給された電源は、電圧を調整する素子である3端子レギュレーター（[XC6206P332MR-G](https://www.torex.co.jp/products/single-type-voltage-regulators/series/?name=xc6206)）によって3.3Vに調整された後、PAJ7620U2に供給されていることが分かりました。そこでXC6206P332MR-Gの仕様を調べてみると、

![XC6206P332MR-G絶対最大定格](https://qiita-image-store.s3.amazonaws.com/0/18746/83958539-fac0-b7aa-5ba3-c5429db4589e.png)

何があっても守らなければならない定格値として、入力電圧は-0.3〜7.0Vとなっています。なので5Vの代わりに3.3Vを入れても問題ありません。一方、出力電圧は-0.3〜VIN+0.3Vとなっているので、3.3V出力設定のXC6206P332MR-Gであれば入力電圧が3.0Vを下回ってはいけないことになります。3.3Vはぎりぎりセーフという感じです。

これはあくまでもデバイスが壊れないという前提の数字なので、実際にうまく動作するかどうかはまた別の問題です。そこで仕様書から実際の測定データを見てみましょう。今回のケースとは少し違いますが、3.0V出力設定のデバイスに供給する電圧を変えた場合に実際の出力電圧がどうなるかのグラフが掲載されています。

![特性図](https://qiita-image-store.s3.amazonaws.com/0/18746/cb84784e-4f55-6cb8-640d-4293f01678fc.png)

取り出す電流が1mAの時は、入力電圧が3.0Vあればなんとか動作しています。しかし3.1V以下ではグラフが少し乱れており、動作が安定していないようです。電流が40mAになると入力電圧が最低でも3.1V必要で、それ以下では十分な出力電圧が確保できません。

一方、PAJ7620U2の消費電流はどれくらいかというと、実動作状態で2.82mAとのこと。なので、1mAの場合よりは厳しいが40mAよりは緩いという感じで、安定動作には入力電圧が3.4V以上である必要があります。とはいえ、PAJ7620U2の仕様上は電源電圧2.8Vでも動作することになっており、ホビーユースであれば3.3Vでも十分動作しそうです。

従って結論は

「3.3Vでも動くと思われるが、メーカーが想定した設計範囲外であろう」

となります。

# 動かしてみよう

5V / 3.3Vの両方を供給できる、STマイクロエレクトロニクスのNucleo-F411REに繋いで動作検証してみました。まずは仕様通り5Vを供給し、Grove Gesture Sensor側のSDA/SCLをNucleoのD14/D15端子に接続。

![Nucleo-F411RE + Gesture Sensor](https://qiita-image-store.s3.amazonaws.com/0/18746/dbd87a3e-b483-ba55-c608-06a0662bfafb.jpeg)

mbedのオンラインコンパイラから入手できるPAJ7620のサンプルを少し変更して動かしてみます。

![Result 5V](https://qiita-image-store.s3.amazonaws.com/0/18746/8ff0a32e-1601-82d8-a3fc-9fabf6dc6e7d.png)

9種類のジェスチャーが正常に取得できています。時計回り、反時計回り、ウェーブのジェスチャーはかなり認識が難しいというか、練習が必要そうです。引き続き、供給電圧を3.3Vに変更して実験してみます。

![Nucleo-F411RE + Gesture Sensor 3V3](https://qiita-image-store.s3.amazonaws.com/0/18746/f9d67afc-0335-8101-46c1-898c942dea36.jpeg)

![Result 3V3](https://qiita-image-store.s3.amazonaws.com/0/18746/e3fb0c11-5409-5405-a4fc-642f18255301.png)

見事！　特に使用感なども変わりません。

# まとめ

* Seeed社のGrove Gesture Sensorは5Vデバイスですが、3.3V電源でも（なんとか）動作します。
* ただし設計条件から外れていると思われるので、安定して動作しないかもしれません。

次はこいつをWioLTEで動かしてみたいですね。