【IoTLT 2020】 micro:bit を使った IoT（Grove - UART Wifi V2 との組み合わせ、IFTTT利用）

この記事は、[IoTLT Advent Calendar 2020](https://qiita.com/advent-calendar/2020/iotlt) の 13日目の記事です。
内容は、[Microsoft MakeCode for micro:bit](https://makecode.microbit.org/) を使って IoT の仕組みを作ることができる「[Grove - UART Wifi V2](https://wiki.seeedstudio.com/Grove-UART_Wifi_V2/)」の話です。

この Grove - UART Wifi V2 は、[micro:bit で Grove を使えるようになるシールド](https://www.seeedstudio.com/Grove-Shield-for-micro-bit-v2-0.html)と組み合わせて使うことで、micro:bit での Wi-Fi 接続が行えるようになったり、micro:bit から [IFTTT](https://ifttt.com/)・[ThinkSpeak](https://thingspeak.com/) といったサービスの利用ができるようになるものです。

![EloEFuZU4AAM4rm.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ce99e92b-262e-808c-8579-4e7bb037683b.jpeg)

micro:bit は新旧 2つのバージョンがありますが、今回は旧バージョンを使っています。本当は新しい v2 を使おうとしたのですが、2020年12月13日現在では Wi-Fi への接続処理が v2 を使った場合だとうまくいかなかったためです（Facebookグループで情報をもらい、また実際に自分でも試してみて確認しました）。

なお、micro:bit と「Grove - UART Wifi V2」の組み合わせは、前に軽く試してみたことがあり、その時の様子は以下となります。micro:bit の Aボタンを押したら、IFTTT経由で LINEアプリに通知がとぶ、というシンプルな内容を作ってためしていました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">CoderDojo御茶ノ水で始まった寿司打のバトルにけっこう時間をたくさん使ってしまいましたがw、<br>その後、MakeCode for micro:bitを使ったプログラミングを。<br><br>昨日ゲットした「Grove - UART Wifi V2」を使い、micro:bitのボタン押下で、IFTTT経由でLINE Notifyの通知を送るのに成功！<a href="https://twitter.com/hashtag/CoderDojo?src=hash&amp;ref_src=twsrc%5Etfw">#CoderDojo</a> <a href="https://t.co/waF0qrSFTF">https://t.co/waF0qrSFTF</a> <a href="https://t.co/T22P0ynpQY">pic.twitter.com/T22P0ynpQY</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1322374497740099586?ref_src=twsrc%5Etfw">October 31, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

## micro:bit で Grove・Wi-Fi・IFTTT を使う

### 今回使うシールドと Groveモジュール
今回、micro:bit から Wi-Fi につなぐ部分で使っている「[Grove - UART Wifi V2](https://wiki.seeedstudio.com/Grove-UART_Wifi_V2/)」は、名前のとおり接続部分が Grove となっています。micro:bit と Grove の端子は直接つなげられないのですが、この接続部を仲介してくれるシールドがあります。

そのシールドは、スイッチサイエンスさんだと以下の単体販売・Groveモジュールがセットになったキットでの販売の両方があります。

●micro:bit用 GROVE Inventor Kit - スイッチサイエンス
　https://www.switch-science.com/catalog/3389/
●micro:bit用GROVEシールド v2.0 - スイッチサイエンス
　https://www.switch-science.com/catalog/5434/

自分は、以前キットになっているほうを購入していました。また、縁あって以下のエンジニアブログに、このキットに関する記事を寄稿させていただいたこともあり、そちらで解説を書いたりしています。

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

シールドに関しては、よく micro:bit と LEDテープとを組み合わせて使うのに重宝していたりします。

なお、Grove - UART Wifi V2 のほうは、スイッチサイエンスさんでは売ってないですが、[マウザーさんのオンラインサイト](https://www.mouser.jp/ProductDetail/Seeed-Studio/113020011?qs=MLItCLRbWsw%2F93wgAIgzuA%3D%3D)で売っていたりしました。

### micro:bit用GROVEシールドの拡張ブロックと Wi-Fi利用関連のブロック（MakeCode の話）
この micro:bit用GROVEシールドを使って MakeCode でプログラムを組む場合、MakeCode用の拡張ブロックを利用すると便利です（※ 上記のエンジニアブログに寄稿した記事でも、解説を書いています）。

MakeCode の拡張機能の検索で、「Grove」をキーワードにして検索すると、以下のように拡張ブロックが出てきます。
![シールド用の拡張ブロック.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/7c8eeb07-5ee0-662f-1597-ce85a518dcac.jpeg)

そして、MakeCode に追加をすると複数の Groveモジュール用のブロックが追加され、その中に「Grove - UART Wifi V2」用のブロックも含まれています。

![Wi-FI1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b755ca3a-1ffb-27a8-f0a3-0254da0392c8.jpeg)

![Wi-Fi2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/553ebf0e-677c-39c7-cb67-78009feabb3d.jpeg)

内容としては、Wi-Fi の接続設定をする部分と 2つの外部サービス（IFTTT、ThinkSpeak）と連携する部分とがありました。

### micro:bit で IFTTT を使う
上で掲載していた拡張ブロックの画像の中で、以下の部分が IFTTT を使うためのブロックです。
IFTTT を利用されている方は察しがつくかもしれませんが、「[IFTTT の Webhooks](https://ifttt.com/maker_webhooks)」に対応した設定項目が並んでいるようです。

![b755ca3a-1ffb-27a8-f0a3-0254da0392c8.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/514805ba-7ff2-b679-8d3a-1e6084d41b45.jpeg)

これにより、micro:bit のボタンを押した時や、micro:bit のセンサーで特定の条件を満たした時などをトリガーにして、インターネット経由で別サービスに何らかのアクションを起こすことができます。

この記事の冒頭で以前お試しを行った際のツイートを引用していましたが、そこで掲載していた事例では「micro:bit の Aボタンを押すと、LINEアプリに通知が行われる」ということをやっていました。

micro:bit と Grove - UART Wifi V2 をつないだ状態は、以下の画像の通りでした。
![EloEGblU4AArunv.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/d622120c-9851-5461-a5b8-c94deb226be4.jpeg)

そして、MakeCode で作成したプログラムは、冒頭にも掲載していた以下の画像のとおりです。
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f35303836382f63653939653932622d323632652d383038632d383537392d3465376262303337363833622e6a706567.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bd3e38a0-c2f1-4106-e7c9-04978808ba29.jpeg)

また、IFTTT 側では Webhooks と LINE Notify を使う設定をして、それらにより micro:bit側でボタンを押すことで以下の画像にあるように LINEアプリへの通知を行う、という動作を実現しました。

![EloEHHxUcAEB7Kg.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f811ee1e-8b90-69ff-b484-a50885b70278.jpeg)

## まとめ
今回、Grove - UART Wifi V2 を使った micro:bit からの IFTTT利用の話を書きました。

今回の内容は動作確認を少しやってみた、というくらいの内容でしたが、さらに micro:bit側・IFTTT側のそれぞれで何らか追加の実装・設定をして、さらに何か面白そうな仕組みを作れないか、検討できればと思っています。

## アドベントカレンダーの前日・翌日の記事
昨日の担当は @tikit さんでした！

そして、次の日の担当は @ie4 さんです！