【Seeed UG 2019】GROVE と MESH の組み合わせ（2019/12/24）

この記事は 「[Seeed UG Advent Calendar 2019](https://qiita.com/advent-calendar/2019/seeed_ug)」の 24日目 の記事です。

このカレンダーへは以下の記事を1つ投稿していたのですが、今回は2つ目の記事になります。
Seeedさんの製品の話ではないですが、GROVE関連の話という関連性で。

- 2019年に購入したものや一番活用したもの 〜今年の振り返り〜
    - https://note.com/youtoy/n/n1053a9be4612

## はじめに

今回、タイトルにあるとおり「[GROVE](http://wiki.seeedstudio.com/Grove_System/)」と「[MESH](https://meshprj.com/jp/)」の話です。
具体的には「MESH GPIOブロック用Groveボード」に関する内容です。

3日前のアドベントカレンダー用に書いた記事で少しだけ登場していたのですが、試したりなどはできてなかったので今回のカレンダーでその辺りをやっていこうと思います。

- 最近買った電子工作が関連する MESH用の製品など
    - https://qiita.com/youtoy/items/53bfaebc03a339ef83ec

### GROVE について

GROVE は、電子部品を使った電子工作が便利になる、モジュールとマイコンボードを専用コネクタで接続するようにした仕組みです。

<img width="483" alt="Grove_System_-_Seeed_Wiki.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/61399561-d813-5219-8831-f53f36c3b864.jpeg">

電子工作での配線などをシンプルに行うことができるようになります。
また、GROVE に対応した様々なセンサーやアクチュエーターなどが販売されています。

### MESH について

MESH は、プロトタイピング・もの作りを簡単にしてくれるデバイスです。
以下の画像にあるような、センサーやLED・ボタンなど、それぞれの機能をもったブロックがあります。

![mesh.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9d8901fe-8593-e8c1-6de2-8d56f54015c7.jpeg)

そして、その各ブロックを使ったプログラムを、スマホ・タブレット用のアプリ上でビジュアルプログラミングで作成できます（スマホ・タブレットとの通信は Bluetooth）。

<img width="876" alt="mesh2.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c33933d8-e74a-a4e1-7848-cf984e6a07f4.jpeg">

どんなものを作ることができるのかは、[公式ページの MESHレシピのページ](https://recipe.meshprj.com/jp/)にたくさん掲載されている作例を見ていただくのが良さそうです。

#### MESH GPIOブロックについて

今回用いるのは上記の MESH の複数ある種類の中の 1つ、「[GPIOブロック](https://meshprj.com/jp/tag/MESH-100GP-GPIO.html)」です。

![MESH GPIO.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/cd44cfb1-b37c-e45f-cdae-b84e224adb0e.jpeg)

使い方の例が、[MESH公式ブログ]にも掲載されていたりします。

- [GPIOタグの使い方講座　第１回　「身近なものをスイッチに！」](https://blog.meshprj.com/entry/2017/08/25/GPIO1)
- [GPIOタグの使い方講座　第２回　「LEDを光らせよう！」](https://blog.meshprj.com/entry/2017/08/25/GPIO2)
- [GPIOタグの使い方講座　第３回　「モーターを回そう！」](https://blog.meshprj.com/entry/2017/08/25/GPIO3)
- [GPIOタグの使い方講座　第４回　旗を自動でふらせよう！](https://blog.meshprj.com/entry/2017/08/25/GPIO4)
- [GPIOタグの使い方講座　第５回　「歩く恐竜をコントロール！」](https://blog.meshprj.com/entry/2017/08/25/GPIO5)

## MESH GPIOブロック用Groveボード

### 概要

今回は上記の MESH の GPIOブロックで GROVE のセンサーなどが利用可能になる「[MESH GPIOブロック用Groveボード](https://www.switch-science.com/catalog/3438/)」の話です。

<img width="450" alt="MESH_GPIOブロック用Groveボード_-_スイッチサイエンス.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ed8eea80-c1af-77b1-d4b6-f82723581de4.jpeg">

上記のページに書かれているとおり「デジタル入力1個、アナログ入力1個、デジタル出力2個（DOUTとPWM）の計4個のコネクタがあり、電源電圧 3.3V のモジュールを利用可能」です。

また、どんなモジュールを利用できるかは、[MESH の公式ページのリスト](https://support.meshprj.com/hc/ja/articles/360021591354-MESH-GPIO%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E7%94%A8Grove%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E6%B8%88%E3%81%BF%E3%81%AEGrove%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E4%B8%80%E8%A6%A7)や[スイッチサイエンスさんが独自に動作確認をしたモジュールのリスト](http://trac.switch-science.com/wiki/grove-mesh)を見てみるのが良さそうです。

### 実際に使ってみる

仕様について、上記の [MESH の公式ページ](https://support.meshprj.com/hc/ja/articles/360021591354-MESH-GPIO%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E7%94%A8Grove%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%E6%B8%88%E3%81%BF%E3%81%AEGrove%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E4%B8%80%E8%A6%A7)や[スイッチサイエンスさんの公式ページ](http://trac.switch-science.com/wiki/MESH_Accessories)に記載があります。
ここでは、スイッチサイエンスさんのページでの記載を見てみます。

> CN1～4の4つのグローブコネクタがありますが、それぞれすべて役割が異なります。
　CN1　デジタル入力用　：　MESH GPIOのDIN1とDIN2が割り当てられています。
　CN2　アナログ入力用　：　MESH GPIOのAINが割り当てられています。（デジタル入力のDIN3も割り当てられています。）
　CN3　デジタル出力用　：　MESH GPIOのDOUT1とDOUT2が割り当てられています。
　CN4　デジタル（PWM）出力用　：　MESH GPIOのPWMが割り当てられています。（デジタル出力のDOUT3も割り当てられています。）
>
残念ながらすべてのGROVEモジュールを接続することは出来ません。動作電圧が5Vのタイプ、I2CやUARTの通信で動作するタイプのモジュール等、接続できないものがあります。
**GROVEモジュール用の3.3Vの電源はMESH GPIOのVoを利用していますので、必ずVoの出力をHIGHに設定してください。**

上記の太字にした部分は、最初に適当に使ってみようとしてはまった部分です。
アナログ・デジタルの IN/OUT の部分のみ設定していて「動作しない・・・」とハマっていました。

以下が、[Grove - Vibration Motor](http://wiki.seeedstudio.com/Grove-Vibration_Motor/) を動作させてみたときの様子です。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">MESH GPIOブロック用Groveボードで、<br>Grove - Vibration Motor を動作させてみた。 <a href="https://t.co/vDNgiPjzrm">pic.twitter.com/vDNgiPjzrm</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1209264045032738816?ref_src=twsrc%5Etfw">December 24, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

プログラムはこんな感じにしました。
<img width="437" alt="IMG_0124.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a6569e03-80c3-240c-a2f6-8b7365c6d1c1.jpeg">

### おわりに

今回、購入していたものの眠らせてしまっていた MESH GPIOブロック用Groveボードを使って、GROVEモジュールを MESH を使って動かしてみました。
まだ今回試したもの以外にも様々対応しているようなので、それも試せればと思います。