【Seeed UG 2021】 micro:bit と Groveモジュールの話（2021年12月）

この記事は、[2021年の Seeed UG のアドベントカレンダー](https://qiita.com/advent-calendar/2021/seeed_ug) の 25日目の記事です。

## 今回の内容
この記事では、自分が良く使っている「Grove Shield for micro:bit」や、micro:bit で使える Groveモジュールに関係した話を書いていこうと思います。

公式ページでいうと、以下が関連する内容になります。

- 日本語版
   - [micro:bit Grove 入門キット - Seeedウィキ（日本語版） ](https://wiki.seeedstudio.com/jp/Grove-Inventor-Kit-for-microbit/)
   - [Micro:bit紹介 - Seeedウィキ（日本語版）](https://wiki.seeedstudio.com/jp/microbit-wiki-Page/)
- 英語版
   - [Grove Inventor Kit for micro:bit - Seeed Wiki](https://wiki.seeedstudio.com/Grove_Inventor_Kit_for_microbit/)
   - [microbit wiki Page - Seeed Wiki](https://wiki.seeedstudio.com/microbit_wiki_page/)

## Grove Shield for micro:bit について
自分が Groveモジュールと micro:bit を合わせて使う場合、「Grove Shield for micro:bit」を使うことが良くあります。
「Grove Shield for micro:bit」は、[「Grove Inventor Kit for micro:bit」というキット](https://wiki.seeedstudio.com/Grove_Inventor_Kit_for_microbit/)の中に含まれていたり、単品でも購入できたりするシールドで、micro:bit で Groveモジュールを扱うのを便利にしてくれます。

自分は、以下のツイートなどに出てくる LEDテープを使う場合に、特によく利用しています。

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">新バージョンのmicro:bit（v2）と micro:bit用GROVEシールド v2.0 の組み合わせ。<br><br>このシールド用の拡張機能が新バージョンの micro:bit でも動くことを念のため確認！ <a href="https://t.co/cCh9o8SNQV">pic.twitter.com/cCh9o8SNQV</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1332870348044259328?ref_src=twsrc%5Etfw">November 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

わりと最近だと、ダイソーで売っているおもちゃの刀を光らせるのに使ったりしました。

<iframe width="560" height="315" src="https://www.youtube.com/embed/4PrwiB_koXQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

### MakeCode と組み合わせて利用する
このシールド と MakeCode を組み合わせて使う場合、　特定の Groveモジュールに関しては専用の拡張ブロックが用意されています。
専用の拡張ブロックに対応したモジュールの中には、Wi-Fi に接続するモジュールもあったりします（それについて、過去に以下の記事を書いています）。

●【IoTLT 2020】 micro:bit を使った IoT（Grove - UART Wifi V2 との組み合わせ、IFTTT利用） - Qiita
　https://qiita.com/youtoy/items/459289951134544e73eb

また、縁あって以下のエンジニアブログに、このキットに関する記事を寄稿させていただいたこともあり、そこで上で話題に出している専用ブロックを使っています。

●micro:bit（マイクロビット）用のビジュアルプログラミング環境でGroveモジュールを使う 〜マイクロビット用Grove Inventor キット〜 - Seeed K.K. エンジニアブログ
　https://lab.seeed.co.jp/entry/2020/05/22/120000

## micro:bit で Groveモジュールを使う
特定の Groveモジュールには専用ブロックが用意されていますが、それ以外のモジュールも MakeCode標準のブロックと組み合わせて micro:bit で使うことができます。

それについて、冒頭に掲載していた「[microbit wiki Page](https://wiki.seeedstudio.com/microbit_wiki_page/)」のほうに[「Grove compatible with Micro:bit」という部分](https://wiki.seeedstudio.com/microbit_wiki_page/#grove-compatible-with-microbit)があり、そこには以下のような対応表が掲載されています。

![ページ1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f82a1ed9-041d-8d4f-4bb7-92ccd9446145.jpeg)
![ページ2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/46736573-0ecd-ad1a-482a-288c6a7f1bb6.jpeg)
![ページ3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f35f890d-553c-9cbc-da45-fb4112ff5b72.jpeg)
![ページ4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/880ccd1f-37eb-a5d2-4ae2-2e6188493890.jpeg)
![ページ5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/e625221f-207c-06b6-5ea1-075ffc01edb0.jpeg)
![ページ6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a5a8b41d-7202-dcb2-1044-7d2fdf133ec8.jpeg)

ご覧の通り、かなり大量の Groveモジュールが並んでいます。
この中の一番右の列を見ると、先ほど話に出していた MakeCode の専用拡張ブロックがあるかどうかが分かるようになっています。
![右端の列.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9a083156-e9d1-6e42-8c00-af8ca6337572.jpeg)

その他、[スイッチサイエンスさんの「micro:bit用GROVEシールド v2.0」のページ](https://www.switch-science.com/catalog/5434/)を見ていくと、以下の部分に [Excelファイルへのリンク](https://github.com/SeeedDocument/Bazzar_Attachment/raw/master/110060762/Grove%20Modules%20for%20microbit%20v2.xlsx)が掲載されています。
![micro_bit用GROVEシールド_v2_0_-_スイッチサイエンス.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bf5492ed-09a6-e896-7ba6-042db8d71adb.jpeg)

このファイルを開くと、ここでも MakeCode で利用可能な Groveモジュールの表が掲載されていて、色付きで見やすい表になっています（ただし、上記の Wiki の表と比べて、掲載されているモジュールの数がかなり少ないような...）。
![Excelの表.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/13ced6a7-05f0-716f-70fb-176b5da23702.jpeg)

### MakeCode と組み合わせて利用する
専用ブロックがあるモジュールは、公式の Wiki　に使い方が出てたりするので、専用ブロックがないものをいくつか試してみようと思います。

#### Grove振動センサー（SW-420）
最初は、以下の振動センサを試してみます。
　●Grove振動センサー（SW-420）- Grove Vibration Sensor - Seeed Studio
　　https://jp.seeedstudio.com/Grove-Vibration-Sensor-SW-420-p-3158.html
　●Grove - Vibration Sensor(SW-420) - Seeed Wiki
　　https://wiki.seeedstudio.com/Grove-Vibration_Sensor_SW-420/

仕様的には、MakeCode の以下を使うことになりそうです。
　●Digital Read Pin
　　https://makecode.microbit.org/reference/pins/digital-read-pin

適当に試しているとうまくいかず、その後に試行錯誤したり調査をしているとプルアップをする必要がありそうだと分かりました。
![振動センサ（プルアップ）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/96cfc946-7572-5062-ea26-af8293412043.jpeg)

そして、「振動センサ プルアップ」というキーワードでさらに調べていたら、以下の記事が出てきました。
 ●micro:bitを使ってみる ４８ 〜Grove振動センサ - MSR合同会社
 　https://msr-r.net/try-microbit-48/
「プルアップ・プルダウンなし」でも大丈夫とのことだったので、以下でも想定通りの動きになることを確認してみました。
![振動センサ（プルアップ・プルダウンなし）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/439c1969-5d1e-eaec-83f8-354549ca042b.jpeg)

上記を動作させている様子はこちらです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/OfLMyK4BsN4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

無事に動作しているようです。

#### Grove スイッチ（P）
次はこちらです。
　●Grove スイッチ(P) - Grove Switch(P) - Seeed Studio
　　https://jp.seeedstudio.com/Grove-Switch-P-p-1615.html
　●Grove - Switch(P) - Seeed Wiki
　　https://wiki.seeedstudio.com/Grove-Switch-P/

仕様を見ると、先ほどと似たような感じで使えそうです。
試しに以下のプログラムで動かしてみました。
![スイッチ（P）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b332d2aa-dd86-ca63-8eec-be5342d77d05.jpeg)

上記を動作させている様子はこちらです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/WcknaCTA1Us" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

想定している通りの動作を確認できました。

#### Grove 光センサー v1.2
次は、アナログ入力を試していきます。
試すセンサーは、以下の光センサーです。
　●Grove 光センサー v1.2 - Grove Light Sensor - Seeed Studio
　　https://jp.seeedstudio.com/Grove-Light-Sensor-v1-2-LS06-S-phototransistor.html
![光センサーとの組み合わせ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/0445a6b4-f71a-3ae2-6246-045104753f7c.jpeg)

MakeCode で、センサーで取得した値をシリアル通信で出力する、という単純なプログラムを作って動かしてみます。
![光センサー.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/d2f7f349-a0ac-633d-cf0e-7541e918aaae.jpeg)

MakeCode上でシリアル通信の出力を表示させつつ、センサーの近くを手で覆ったり、覆っている手を遠ざけたり、ということをやってみると、以下のグラフが得られました。
![グラフ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/25c15966-c014-80ed-e75a-a6afbcfb1bfb.jpeg)

## おわりに
今回、micro:bit で Groveモジュールを使う話を、まとまりがない感じで色々と書いていきました。
まだまだ自宅に micro:bit　とは組み合わせてない Groveモジュールがあるので、それらもまた今後使っていければと思っています。

### 気になった内容
「振動センサ」の部分に登場していた記事のタイトルに「４８」という番号がついていたので、他にも micro:bit　に関する記事がたくさんありそうだと思って調べてみたら、以下一覧ページがありました。
　●【連載】micro:bitを使ってみる - MSR合同会社
　　https://msr-r.net/category/%e3%80%90%e9%80%a3%e8%bc%89%e3%80%91microbit%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%bf%e3%82%8b/

その中で気になる記事が 1つあったので、メモとして残してみました。
また、別の機会に試すことができたらと思います。
　●マイクロビットとM5Stackでゲートウェイをつくる - MSR合同会社
　　https://msr-r.net/gateway-microbit-and-m5stack/