M5Stack用のGROVEユニットをM5Stick-Cで使ってみる

# M5Stack用のGROVEユニットをM5Stick-Cで使ってみる
M5Stack用にM5Stack社から販売されているGROVEポート接続用のセンサーキットをM5Stickに接続して使ってみました。
今回はAliExpressの通販サイトから8つのユニットが8個同梱されたスターターキット的なセット[Environment Unit Kit](https://m5stack.com/collections/m5-unit/products/env-unit-kit)を購入してみました。
![IMG_0635.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/3d6701a3-dc12-29df-e0a2-e8a95578f6c3.jpeg)

## [ANGLE UNIT](https://m5stack.com/collections/m5-unit/products/angle-unit)
単純にGROVEに繋いでボリュームの回転角度をアナログ値として読み取ることのできるユニットです。
ボリュームはGROVEコネクタのG33に接続されているのでG33ピンの値をアナログ値で読み込むことで値を取得できます。
ボリューム最小で0、ボリューム最大で4095までの値を取得することができます。
M5Stick-Cの開発キットをインストールした際にインストールされているサンプルスケッチの「ANGLE]を使ってそのまま動作を試してみることができました。
![IMB_p2WMTB.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/13ee20ec-0344-2dad-fd4c-1d014f765b8b.gif)

## [EARTH moisture UNIT](https://m5stack.com/collections/m5-unit/products/earth-sensor-unit)
電極を地面に突き刺して電極間の誘電率を測ることで土壌中の湿度を測定するセンサーユニットです。
2本の電極をもつセンサーと半固定抵抗が搭載されたGROVEユニットです。
電極はGROVEコネクタのG33ピンに接続され、ピン間の電流の値をアナログ値で読み取ることができます。
また、G32ピンをデジタル値で読み取ることで半固定抵抗で設定された閾値を境として水分の有り無しをデジタル値として読み取ることができます。
このセンサーもサンプルのスケッチで動作しているように思えるのですが、残念ながら身の回りに受け木鉢などの適当な地面が無かったため実際の動作確認は行なっていません。
このユニットでもANGLEユニットと同様に電極間の誘電率を0から4095の間で得ることができるようですが電極を100％の水に浸けた状態でも値は3300程だったのでどのような状態で0へと近くのかは不明です。 (ちなみに写真はセンサーを「土壌」に見立てた紙ナプキンを水で湿らせたものに差し込んだ状態で撮影しています)
![IMG_0725.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/c664e32e-e238-0e5f-bfcb-ff7d948c421a.jpeg)

## [ENV SENSOR](https://m5stack.com/collections/m5-unit/products/mini-env-sensor-unit)
温度、湿度センサーのDHT12、温度、気圧センサーBMP280、2つのセンサーが収められたI2C接続のセンサーユニットです。
M5Stick-Cの場合には上記の2つのセンサーに加えて3軸地磁気センサーBMM150を加えた専用のENV HATが用意されているのであまり有り難みのないユニットです。
このユニットもサンプルスケッチの「ENV]を使ってその動作を確認することができますが、M5Stick-CとGROVEユニットの相性なのか？組み合わせによっては上手くユニットにリセットがかからないのか？動作しないケースがありました。
![IMG_0714.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/5e815656-ff92-90d5-a20c-f4211ca5da2b.jpeg)

## [HUB UNIT](https://m5stack.com/collections/m5-unit/products/mini-hub-module)
今回購入したキットに入っていたユニットで唯一何の役にも立たなかったものです。
GROVEユニットはその接続方法がI2C接続でユニットが持っているアドレスが重複しなければユニットを並列に接続することで1つのI2Cポートに複数のユニットを数珠繋ぎに接続でき、このHUB UNITもそのような利用方法を想定したユニットなのですが、購入したユニットの中でI2Cに対応したものは唯一ENV SENSORだけで他にはこのハブに繋げるユニットがありません。

## [IR UNIT](https://m5stack.com/collections/m5-unit/products/ir-unit)
赤外線送受信モジュールを搭載したユニットです。
G33に赤外線受光モジュールが接続されているのでユニットが赤外線を受信するとG33の信号がオンになります。
G32には赤外線送信モジュールが搭載されているのでピンG32をオンにすれば赤外線がモジュールから送信されます。
本来の使用目的としては自律ロボットとかに使う近接センサー用のようですが赤外線リモコンなどにも使えそうです。
![IMB_lmmi4H.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/4e4b2363-2f5e-32de-c446-ffae3729ab24.gif)

## [LIGHT UNIT](https://m5stack.com/collections/m5-unit/products/light-sensor-unit)
フォトレジスタを使った光センサーと半固定抵抗が搭載されたGROVEユニットです。
フォトレジスタはGROVEコネクタのG33ピンに接続され、ピンの値をアナログ値で読み取ることができます。
また、G32ピンをデジタル値で読み取ることで半固定抵抗で設定された閾値を境として明るさをオン・オフのデジタル値として読み取ることができます。
このユニットもサンプルスケッチの「ANGLE]を使ってその動作を確認することができますが、サンプルスケッチの一部に誤りがあって、これを修正しないとデジタル値の取得ができなかったので注意が必要です。
![IMG_0706.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/abdae00d-6460-e797-222d-56b9fda1f09f.jpeg)

## [RGB LED UNIT](https://m5stack.com/collections/m5-unit/products/rgb-unit)
Adafruit NeoPixel互換コントローラー[SK6812](https://cdn-shop.adafruit.com/product-files/1138/SK6812+LED+datasheet+.pdf)を使ったLEDユニットです。
ユニットには3つのフルカラーLEDが搭載されていて、この3つをsそれぞれAdafruit_NeoPixelライブラリを使って自由な色で点灯させることができます。
このユニットだけはユニットの両端にGROVEコネクタが付いているので多分RGBユニットを数珠繋ぎできるものと思われますが未確認です。
このユニットもサンプルスケッチの「RGB]を使ってそのまま動作させることができました。
![IMB_GRX64i.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/e86cbd8d-ea72-12b7-ca3f-b63c2a34fb8c.gif)

## [PIR Motion Sensor UNIT](https://m5stack.com/collections/m5-unit/products/pir-module)
パッシブ赤外線センサー([AS312](https://image.micros.com.pl/_dane_techniczne_auto/cz%20as312.pdf))を使った人体感知ユニットです。
センサーの感知範囲で人体の動きを感知すると約2秒間出力信号がオンになります。
これもサンプルのスケッチ「PIR」でそのまま動作させることができました。
![IMB_emd77K.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148717/9721d1a9-0da4-0d58-f40e-622c7d94442b.gif)