【Seeed UG 2020】 Wio Terminal のバッテリーベースの情報を見たり Web Bluetooth API と連携させるための準備をしたり

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

先日入手した Wio Terminal用のバッテリーの情報をチェックしてみたり、また公式サンプルの中で Web Bluetooth API と連携させるサンプルを試す準備を行って、2つのサンプルを試します。

ちなみに、Wio Terminal に関する記事を前に書いたことがあり、公式サンプルの 2つを組み合わせて試した内容を書いていました。
　●Wio Terminal の光センサーの値を画面上にグラフで表示してみた - Qiita
　　https://qiita.com/youtoy/items/997ab110c595fb33263f

## Wio Terminal用バッテリーベースの情報を見てみる
先日、Wio Terminal用バッテリーベースを購入しました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">定期投稿<br>近所のコンビニ（略 <a href="https://t.co/fe5KZtFUx2">pic.twitter.com/fe5KZtFUx2</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1337649600526602240?ref_src=twsrc%5Etfw">December 12, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

購入元は、以下のスイッチサイエンスさんのオンラインサイトです。
おおまかな内容しか把握してなかったので、あらためて仕様の情報を見直してみます。

●Wio Terminal 用バッテリーベース（650 mAh） - スイッチサイエンス
　https://www.switch-science.com/catalog/6816/

そして、上記のページの下部を見ると、以下のブログへのリンクが記載されていました。

●Wio Terminalのバッテリーが新しくなりました - Seeed K.K. エンジニアブログ
　https://lab.seeed.co.jp/entry/2020/12/10/120000

スイッチサイエンスさんの販売ページや上記のブログ記事を見ると、仕様の詳細の情報を得ることができました。ブログ記事にも書かれている内容で、個人的には、この辺りが気になる/嬉しいところです。

> また、Groveコネクタを6つ付いていて、Wio Terminalにより多くのGroveモジュールを接続することを可能にします。（Wio TerminalにはGroveコネクタが2つ）
> 四つのGroveアナログ/デジタルポート、一つのGrove I2Cポート、一つのGrove UARTポート

> マグネット内蔵、ホワイトボードなどに貼り付ける可能

> 黒い丸は押しボタンで、これをプッシュするとバッテリーからWio Terminalの電源供給をON/OFFできます。バッテリーの付け外しや保管時はOFFしましょう。バチっとなるので。

## Wio Terminal とブラウザを通信させる
それでは、 Wio Terminal を使った開発の準備の話へ入ります。

### Web Bluetooth API
今回試そうとする内容は、ブラウザから Bluetooth による通信が行える Web Bluetooth API です。

これまでも何度かガジェットとの通信を行う場合に使ったことがあり、例えば以下の記事で書いた内容などに利用しています。

- [toio を音で制御してみた（Audio用の Teachable Machine でベルやタンバリンの音を機械学習） - Qiita](https://qiita.com/youtoy/items/37f70bb4ce630e6cbd92)
- [【JavaScript 2020】 #UIFlow の BLE UART を使ったブラウザから #M5Stack_Core2 （ #M5Stack ）への文字の送信 - Qiita](https://qiita.com/youtoy/items/3da58570972803134f6c)
- [【toio 2020】 #toio のシェイク検出の情報を Web Bluetooth API で受け取り Smoothie Charts（smoothie.js）でリアルタイムにグラフ化 - Qiita](https://qiita.com/youtoy/items/82cf0e90e11bf68c0507)
- [Web Bluetooth API で BLE（Chrome と micro:bit をつなぐ） - Qiita](https://qiita.com/youtoy/items/cd2c3d4770d4ad75a321)

### 公式サンプル
Wio Terminal での Web Bluetooth API 利用について公式の情報を見てみると、日本語版の「[Wio Terminalをはじめよう - Seeedウィキ（日本語版）](https://wiki.seeedstudio.com/jp/Wio-Terminal-Getting-Started/
)」からたどった先のサンプルでは Web Bluetooth API の話は出てなさそうでした。一方で、英語版の「[Get Started with Wio Terminal - Seeed Wiki](https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/)」からたどると、Web Bluetooth API を使うサンプルのページがありました。

以下が日本語版のページのメニュー。
![Wio_Terminalをはじめよう_-_Seeedウィキ（日本語版）_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/162712fa-d111-8fdb-94ce-f59ef28563f6.jpeg)

以下は英語版のメニュー。
![Get_Started_with_Wio_Terminal_-_Seeed_Wiki_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/cccea892-7da4-eea8-3f87-3d186628180b.jpeg)
![Get_Started_with_Wio_Terminal_-_Seeed_Wiki2_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/48f36c1b-d992-a86d-8a85-8459b49f0096.jpeg)

メニュー上のほうに「Bluetooth」という項目があり、展開すると以下の項目が出てきます。
その中に、「[Web Bluetooth APIs](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/)」という部分があります。

![Get_Started_with_Wio_Terminal_-_Seeed_Wiki3_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/885b9218-e5dd-dd3f-8691-22f99e5b2ccb.jpeg)

そして、[Web Bluetooth APIs](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/) のページを開くと、デバイスを手で持って回転させたりしていて、それと連動してディスプレイ上にグラフが描画されていく様子が出てきます。

![Web_Bluetooth_APIs_-_Seeed_Wiki.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/e43f0ad3-1299-560f-0a3a-ac9dbf529df3.jpeg)

その下に手順が書かれていましたが、手順のポイントになりそうな部分は以下がありました。
（もし、Wio Terminal を使った開発自体が初めての方は、[日本語版Wiki の Getting Started のページ](https://wiki.seeedstudio.com/jp/Wio-Terminal-Getting-Started/)もご参照ください）

- ファームのアップデート・ライブラリのインストール
   - Realtek RTL8720 Wireless core のファームウェアと、ライブラリが 2つ（Seeed_Arduino_rpcBLE、Seeed_Arduino_rpcUnified）です
      - 手順は、[Bluetooth に関する Overview](https://wiki.seeedstudio.com/Wio-Terminal-Bluetooth-Overview/) を参照（さらに、[こちらの Overview](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/#update-the-wireless-core-firmware)を参照）
      - RTL8720 のファームを Windows でアップデートする話は、 @matsujirushi さんの [Qiita の記事](https://qiita.com/matsujirushi/items/030ca18a48d99b23a4cb)もありました
- バッテリーの情報を使うサンプル
   - Wio Terminal へのプログラムの書き込み
      - [Arduino Set-Up](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/#arduino-set-up) を参照
   - [公式の HTML のサンプル](https://github.com/ansonhe97/WioTerminal-WebBluetooth/blob/main/webbluetooth.html)をダウンロードし、Chrome/Edge で開いてデバイスとの接続を試す
      - [Web Bluetooth API HTML Website](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/#web-bluetooth-api-html-website) を参照
- 加速度センサを使うサンプル
   - 加速度センサ用のライブラリを追加
      - [Accelerator Overview](https://wiki.seeedstudio.com/Wio-Terminal-IMU-Overview/) を参照
   - Wio Terminal へのプログラムの書き込み
      - [Arduino Set-up](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/#arduino-set-up_1) を参照
   - [公式の HTML のサンプル](https://github.com/Seeed-Studio/Seeed_Arduino_Sketchbook/blob/web-bluetooth/docs/index.html)をダウンロードし、Chrome/Edge で開いてデバイスとの接続を試す
      - [Web Bluetooth API HTML Website](https://wiki.seeedstudio.com/Wio-Terminal-Web-Bluetooth/#web-bluetooth-api-html-website_1) を参照

ファームのアップデート・ライブラリのインストールは、ダウンロードするファイルや書き込みの作業が複数あるため、公式の情報をよくチェックしながら進めるのが良さそうです。

## 動作確認結果
サンプルを試した際の画面などをいくつか載せてみます。

### サンプル 1つ目： バッテリーの情報の送信
こちらは、Chrome で表示した Webページ上で、Wio Terminal を検出できた状態の画面です。
![ペアリング.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b88c6ca9-bdae-f136-f910-75abb12c21c7.jpeg)

こちらは、上記のペアリング操作をした後、BLE経由で受信した情報をコンソールに表示した際の画面です。
![バッテリー情報.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/58033fcc-5d34-9178-0c42-cc2b738f09fb.jpeg)

### サンプル 2つ目： 加速度センサの情報の送信
こちらは、Chrome で表示した Webページ上で、Wio Terminal を検出できた状態の画面です。

![加速度センサ_ペアリング.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/800d9f77-3e62-f88c-632c-f4426c418b44.jpeg)

そして、その Webページ上にグラフが描画されている様子がこちらです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/WioTerminal?src=hash&amp;ref_src=twsrc%5Etfw">#WioTerminal</a> の加速度センサの情報を、ブラウザに表示。<br>公式サンプルを動かしてみた時の様子です！ <a href="https://t.co/1w8PSDgpDC">pic.twitter.com/1w8PSDgpDC</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1341584227930804224?ref_src=twsrc%5Etfw">December 23, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

無事にサンプルを動作させることができました。

## まとめ
サンプルを動かした後に、過去に作ったものと組み合わせてみたり等を試したかったところですが、前準備等に思ったより時間がかかってしまったので、この記事ではサンプルを動作させるところまでとなりました。

また別途、BLE 経由で他デバイスともつなげてみたり、Wio Terminal の外付けモジュールを組み合わせてみたり、いろいろ試してみたいと思います。