CHIRIMENでGroveジェスチャーセンサーを使ってみる

![image.png](http://chrmn.dfm.lrv.jp/blog/GroveGesture/image.png)

> この記事は[fabble](http://fabble.cc/tadfmac/chirimen-i2c-paj7620-gesture)に投稿した記事を再編したものです。

# Summary

CHIRIMENで[Grove ジェスチャー](https://www.switch-science.com/catalog/2645/)のセンサー情報を読み取ってみます。

## Grove ジェスチャーとは?

PAJ7620U2というジェスチャー認識モジュールを搭載したセンサーモジュールです。

https://www.seeedstudio.com/Grove-Gesture-p-2463.html

I2C通信で制御することができ、Seedstudioの[Grove](http://wiki.seeed.cc/Grove_System/)に対応したコネクタを装備しています。

# 材料①：CHIRIMEN基本セット

まずは、CHIRIMENを使うために最低限必要となるモノです。

1. CHIRIMEN本体と付属品（USBケーブル、USB電源ケーブル、HDMIケーブル）×1セット ([Echigo Rev.1](https://www.switch-science.com/catalog/2833/)に全て含まれます)
2. USBチャージャー（5V、1A以上の電流が供給できるもの）×1
3. モニター（HDMI接続可能なもの）×1
4. CHIRIMENと接続してWebアプリを開発するためのPC

上記材料が揃ったら、すぐにCHIRIMENを使った実験が始められます。
まずは、[CHIRIMENクイックスタートガイド](https://chirimen.org/docs/ja/quickStart.html)などを参照して、CHIRIMEN用のWebアプリの開発方法を一通り習得しておいてください。

## CHIRIMENのピンヘッダについて

購入した状態のCHIRIMENにはCH-1とCH-2のスルーホールにピンヘッダやピンソケットが付属していません。

実験を行う場合にいずれか導入して方が便利になる場合があります。
他に利用されている環境に合わせ、下記1.2.いずれか導入することをおススメします。

### 1.ピンソケット

Arduino UNOのようにピンソケットをハンダ付けすることで、安価に販売されているオスーオスのジャンパーケーブルが利用可能になります。

### 2.ピンヘッダ

Raspberry Piと同じ方式で、こちらはメスのジャンパーケーブルがそのまま利用可能になります。

###3.なにもつけない

バネ式の特殊なジャンパーケーブルのみ利用可能です。

# 材料②：センサーと接続用ジャンパーケーブル

今回は、**CH-1とCH-2のスルーホールにピンヘッダが導入されている** ことを前提に記載します。

**センサーとCHIRIMENとの接続に必要な部品**

- [GROVE - Gesture](https://www.switch-science.com/catalog/2645/) ×1
- [GROVE - 4ピン-ジャンパメスケーブル](https://www.switch-science.com/catalog/1048/) ×1

ピンヘッダが導入されていれば、今回はGROVE - 4ピンジャンパメスケーブルを利用しますので、直接接続できて便利です。

## ピンソケットを導入している場合

CH-1、CH-2にピンソケットを導入されている方は、[GROVE - 4ピン-ジャンパメスケーブル](https://www.switch-science.com/catalog/1048/)との接続に変換が必要です。

下記いずれかがお手軽です。

- [両端ロングピンヘッダ](http://akizukidenshi.com/catalog/g/gC-09056/) を使う（※秋月は40ピン1繋がりで売ってますが、1ピンづつ切り離して使います。） ※切り離しにニッパが必要です
- [L型ピンヘッダ](http://akizukidenshi.com/catalog/g/gC-05336/) の曲ってる方を真っ直ぐに伸ばして使う ※切り離しにニッパと、曲げにラジオペンチが必要です
- 硬いジャンパーワイヤーを真っ直ぐに伸ばして使う ※曲げにラジオペンチが必要です

1. がお勧めです。

# 接続

図のように、CHIRIMENとGROVEジェスチャーセンサーを接続します。

![schematic.png](http://chrmn.dfm.lrv.jp/blog/GroveGesture/schematic.png)

- GROVEジェスチャー[GND]→CHIRIMEN[CH2-17]
- GROVEジェスチャー[VCC]→CHIRIMEN[CH1-17]
- GROVEジェスチャー[SDA]→CHIRIMEN[CH2-12]
- GROVEジェスチャー[SCL]→CHIRIMEN[CH2-11]

接続が終わったら、HDMIケーブルとモニター、USBケーブルとPC、USB電源ケーブルと電源をそれぞれ繋いでCHIRIMENを起動しましょう。

> 5Vデバイスだけど3.3Vに電源を繋いでいるのはなぜ?
> 今回接続するGROVEジェスチャーセンサーは、5Vの電源入力を想定した設計になっていますが、公式WIKIページから参照可能な回路図によると3.3Vに降圧する電源レギュレータとI2Cラインにレベルシフタ回路が入っています。
> しかし、このレベルシフタ回路に含まれるプルアップ抵抗の影響で、5Vの電源にセンサーを接続するとCHIRIMEN側のI2Cバス回路にも5Vの電圧がかかることになりますので避けたいところです。
> このためセンサーの定格電圧ではありませんが、動作できているため3.3Vに繋いでいます。I2Cレベルシフタをもう１段入れたくなるかもしれませんがデータシートを見るとやめたくなるはずです。

# CHIRIMENへWebアプリをインストールする

それではサンプルアプリをインストールしてみましょう。

githubより[examples](https://github.com/chirimen-oh/examples)一式をダウンロード後、その中に含まれる[i2c-PAJ7620-Gesture](https://github.com/chirimen-oh/examples/tree/master/i2c-PAJ7620-Gesture)にPolyfillを導入後、CHIRIMENへパッケージ型アプリとしてインストールしてください。
Polyfillの導入やCHIRIMENへのアプリインストール手順はここでは省略します。他のセンサーと同様ですので、下記URLを参考に実施してください。

- [CHIRIMENでUVセンサ(VEML6070)を使う](http://fabble.cc/kohichi000000/chirimen-veml6070)
- [CHIRIMEN Hello world - seki_noga](http://fabble.cc/naokisekiguchi/chirimenhelloworld)

## インストールに成功したら

こんなアイコンがCHIRIMENのホーム画面に追加されるはずです。

![icon](http://chrmn.dfm.lrv.jp/blog/GroveGesture/gesture-512.png)

# アプリを起動してみよう

CHIRIMENへアプリをインストールできたら、さっそく起動してみましょう。
最初の起動時は、ログ確認のため、FirefoxのWebIDE経由から▶︎マークをクリックして起動してみてください。（図参照）

![startup](http://chrmn.dfm.lrv.jp/blog/GroveGesture/startup.png)

下記のような画面が表示されたら起動成功です。

![display](http://chrmn.dfm.lrv.jp/blog/GroveGesture/small_display.png) 

## うまく起動できなかったら?

起動成功画面が表示されなかったら、残念ながら、なんらかのエラーが発生しているようです。
慌てず、ログを確認してみましょう。
ログを確認するには、FirefoxのWebIDEから「スパナ」のマークをクリックします。図の通り操作してLogを表示してみてください。

![log](http://chrmn.dfm.lrv.jp/blog/GroveGesture/loga.png) 

## エラー解決へのヒント

下記をまずは疑ってみましょう。

### 1. Polyfill入れ忘れ

Polyfillを入れ忘れていると、I2Cへのアクセスが正しく行えません。
webi2c.jsやworker.jsが正しくインストールされているか、確認してみましょう。

### 2. 配線の間違い or 接触不良

今回のプログラムは初期化中にI2Cデバイスから特定の値の読み込みに成功しないと初期化エラーになります。正しく配線できているか確認してみましょう。

adb shell経由でi2cdetectコマンドを発行してみることでデバイスが正しく接続できているか確認することができます。（図参照）0x73番のデバイスが認識されているか確認してみてください。

> $ i2cdetect -y -r 0

![i2cdetect](http://chrmn.dfm.lrv.jp/blog/GroveGesture/i2cdetect.png) 

その他、CHIRIMENにI2Cモジュールを接続する時に良く起こるエラーと解決方法については下記記事にまとめました。

[CHIRIMENにI2Cデバイスが繋がんない時に確認すること](http://qiita.com/tadfmac/items/8c3e79ed3d95c31ee72d)

問題解決できると良いのですが。。

# センサーを使ってみよう

アプリ起動に成功したら、いよいよ、ジェスチャーセンサーを使ってみましょう。

![view](http://chrmn.dfm.lrv.jp/blog/GroveGesture/gesture-view.png)

## 設置

ジェスチャーセンサーには向きがあります。
上の図の左側の画像のように見えるように設置してください。
（コネクタ側が裏面になり、コネクタが左側に来る方向になります）

## 動作確認

手をかざして上下左右に動かすと、図の赤字のようにCHIRIMENに接続されたディスプレイに表示されるはずです。
上下左右だけでなく、センサーへ手を近づけたり離したりすると図の右側のような表示にもなります。

これらの動作が一通り確認できらら、センサーデータの読みとりに成功しています。

おつかれさまでした！

# 参考

- [Grove ジェスチャー](https://www.switch-science.com/catalog/2645/)
- [CHIRIMENクイックスタートガイド](https://chirimen.org/docs/ja/quickStart.html)
- [CHIRIMENでUVセンサ(VEML6070)を使う](http://fabble.cc/kohichi000000/chirimen-veml6070)
- [CHIRIMEN Hello world - seki_noga](http://fabble.cc/naokisekiguchi/chirimenhelloworld)
- [GROVE - Gesture](https://www.switch-science.com/catalog/2645/) ×1
- [GROVE - 4ピン-ジャンパメスケーブル](https://www.switch-science.com/catalog/1048/) ×1
- [両端ロングピンヘッダ](http://akizukidenshi.com/catalog/g/gC-09056/)
- [L型ピンヘッダ](http://akizukidenshi.com/catalog/g/gC-05336/)
- [CHIRIMENにI2Cデバイスが繋がんない時に確認すること](http://qiita.com/tadfmac/items/8c3e79ed3d95c31ee72d)