UIFlow で M5Station-BAT を軽く動かしてみた時のメモ

[M5Stack公式の Twitterアカウント](https://twitter.com/M5Stack)のツイートで、UIFlow側の対応が先行してお知らせされていた、「M5Station をビジュアルプログラミングの UIFlow で扱う話」です。
※ この記事では、Webサイト上で開発が行える UIFlow を対象とします

https://twitter.com/M5Stack/status/1557688429705854976

上に示したツイートが行われた時点と、その後しばらくの間は、M5Station を UIFlow で利用するためのファームウェアが提供されておらず、実機でプログラムを動かすことができない状況でした。

その後、8/16 の夕方ごろからファームウェアの提供が始まったため、それを利用可能になった当日にさっそく試してみたというのが、今回の記事の内容です。

https://twitter.com/youtoy/status/1559468902186627073

## 今回利用したデバイス「M5Station-BAT」
今回、自分が利用したデバイスは、以下の写真にうつっている「M5Station-BAT」です。

https://twitter.com/youtoy/status/1558600541705764864

M5Station-BAT は、2種類ある M5Station というデバイスのうちの片方です。2種類のデバイスは、以下のスイッチサイエンスさんのサイトで購入可能です。

- M5Station-BAT（電池なし） - スイッチサイエンス
   - https://www.switch-science.com/catalog/8299/
- M5Station-485 - スイッチサイエンス
   - https://www.switch-science.com/catalog/8298/

![M5Station 2種類](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a1a7953f-5051-d939-0dc3-4f285126381e.png)

自分が購入したほうの「M5Station-BAT」が「M5Station-485」と異なる部分は、3.7V 18650セルのバッテリが搭載可能という点です。「M5Station-485」のほうは、RS-485規格からの通信・電源供給ができるようになっています。

### M5Station とは？
M5Station-BAT の話をしましたが、「そもそも、M5Station はどんなデバイスか？」という話を記載していませんでした。
その部分も少し記載します。以下の記事や上で掲載したスイッチサイエンスさんの販売ページに書かれている内容を引用すると **「M5Stack社が発売した、工業用途向け開発プラットフォーム」** です。
※ 仕様の詳細は、上で掲載したスイッチサイエンスさんの販売ページを見ていただくのが分かりやすいかと思います

- [スイッチサイエンス、M5Stack社新製品の工業用途向け開発プラットフォーム「M5Station」を2022年8月5日より販売開始｜株式会社スイッチサイエンスのプレスリリース](https://prtimes.jp/main/html/rd/p/000000096.000064534.html)

M5Station は、過去に M5Stack社が販売しているデバイスのように、Wi-Fi/Bluetooth の両方を搭載していて、外から分かる物理的な部分に関するところでは「ディスプレイやボタン、Grove互換のコネクタなど」が利用可能です。

以下は、個人的に気になった特徴・ポイントです。
![気になった特徴](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b2acca3b-9968-9fe8-0904-73d0a8a86b19.png)

![特徴的だと思ったポイント](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/3f067456-b3fa-7564-b78a-4505c27afaae.png)

## 試した内容
### 動作している様子とプログラムの内容
今回、UIFlow で M5Station を動かす最初のお試しの結果と、作成したプログラムは以下のとおりです。

https://twitter.com/youtoy/status/1559473525324677120

https://twitter.com/youtoy/status/1559474134530535425

作成したプログラムの内容ですが、M5Station の 3つの入力用ボタン（A/B/C ボタン）を押すと、ディスプレイの背景・ディスプレイに表示された文字が変化するというシンプルなものです。

### おおまかな手順
作成したプログラムと、それが動いた時の様子は上に書いたとおりなのですが、その前段階の話も記載しておきます。

「ブラウザ上で動作するUIFlow」を使って M5Station を動かす手順は、おおまかには以下のとおりです。

1. ドライバをダウンロードしてインストールする
1. M5Burner（ファームウェアを書きこむソフト）をダウンロードしてインストールする
1. M5Burner で M5Station用のファームウェアをダウンロードして、M5Station への書き込みを行う（Wi-Fi に関する設定も書きこむ）
1. ファームウェアが書きこまれた M5Station の画面に表示される APIキーを使って、UIFlow と M5Station を紐付ける
1. UIFlow でプログラムを作成し、M5Station上で実行させる

#### ドライバ・M5Burner を準備する
上記の ドライバ・M5Burner のダウンロードは、M5Stack社のサイトから行えます。

ドライバは、以下のページ内の「USB DRIVER & OPEN SOURCE LIBRARY」というところでダウンロードできます。ご自身の環境に合わせて「CH9102_VCP_SER_MacOS v1.7、CH9102 MacOS(M1 Silicon)、CH9102_VCP_SER_Windows」のいずれかをご利用ください。

●m5-docs
　https://docs.m5stack.com/en/download
![ドライバのダウンロード](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/fb9226a1-52d4-79fd-a599-0e18b7fbb62c.png)

M5Burner については、同じページ内の「UIFLOW FIRMWARE BURNING TOOL」というところでダウンロードできます。こちらもドライバと同様、ご自身の環境に合わせたものをダウンロードしてください。

●m5-docs
　https://docs.m5stack.com/en/download
![M5Burnerをダウンロードする場所](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ee0bd472-738e-8b03-bbd9-368e5da62a9c.png)

#### M5Burner を使う
M5Burner（v3）の使い方は、以下の記事で詳しく解説されていますので、こちらをご覧ください。以下のページでは上記のドライバ周りの話にも触れられています。

●M5Burner v3の使いかた
　https://zenn.dev/saitotetsuya/articles/m5stack_m5burner_v3

M5Station用のファームウェアは、M5Burnerの左メニュー内の 「STATION」を選んで出てくる「UIFlow_Station」です（以下の画像で示したもの）。
![M5Stationのファームウェア](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/af58ebf5-482d-3f40-9280-b3efdf26946a.png)
記事執筆時点では、画像右上に「Alpha」と書かれているように、αバージョンになります。

上記の画像の右側のほうで、赤矢印で示した「Download」を押すことで、ファームウェアをダウンロードできます。その後の書き込みなどは、[上記の記事](https://zenn.dev/saitotetsuya/articles/m5stack_m5burner_v3)を見つつ進めてみてください。

#### APIキーを確認する
Wi-Fi の設定・ファームウェアの書き込みが完了したら、M5Station が再起動します。
起動後は、画面上に APIキーが表示されるのですが、これを UIFlow側で利用することになります。以下は、APIキーが表示されている様子です（※ APIキーの部分をぼかしています）。

![APIキーが表示されている状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/7919ac99-5224-93d3-8d1a-559f65bf58f6.png)

APIキーが表示されている状況になったら、開発に進みましょう。

#### UIFlow で開発可能な状態にする
ブラウザで UIFlow のサイト（ https://flow.m5stack.com/ ）にアクセスしたら、そこで表示される以下の画面で APIキーを入力してください。また、言語（Language の部分）は「日本語」を選んでおきましょう。

![UIFlowのAPIキー入力画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ad6491ac-c140-0a07-3c65-458829e951db.png)

さらに画面を下にスクロールすると、デバイスを示すアイコンが並んでいるので、M5Station に該当するものを選んで OK を押してください。
![M5Station を選択する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/5b9cf269-2b02-557a-c74b-5fc6ee5bb401.png)

それらの入力・選択が完了したら、右下にある緑色の「OK」ボタンを押してください。そうすると、開発用の画面が表示されます。
![開発用の画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/5243538d-67d9-8db4-0fbf-21bbc8f7977a.png)

今回の記事ではプログラムの作成方法の詳細は省きますが、この画面でプログラムを作成します。
プログラムを作成した後は、画面右下の「Run」と書かれた青いボタンを押すことで、プログラムを M5Station で実行できます。

## 余談
### 今回の内容を急ぎ試した背景
今回、M5Station用のファームウェアが公開されてからすぐに開発を試していましたが、その背景には同日の夜に開催されたイベントでの発表がありました。

●IoT縛りの勉強会! IoTLT vol.90 @秋葉原+YouTube - connpass
　https://iotlt.connpass.com/event/255506/

https://twitter.com/youtoy/status/1559507141199032320

発表準備に関しては、ファームウェアが公開されなくても問題ないよう、ひとまずは Arduino IDE を使ったお試しもやっていました。

https://twitter.com/youtoy/status/1559397551132278784

https://twitter.com/youtoy/status/1559405775378092032

その後、UIFlow 周りの状況を見守りつつ、発表当日の昼頃に[公式の Twitterアカウントに質問を送ってみたりもしました](https://twitter.com/youtoy/status/1559388733799305217)。

その質問にはすぐに回答してもらえて、「今日の午後」とのことでした。
その後は、15時ごろと18時ごろに状況を確認してみていたところ、18時ごろの時点でファームウェアが利用できるようになっていたのが確認できたため、急ぎ試してイベントの発表スライド・内容にもその話を追加したという流れがありました。

https://twitter.com/youtoy/status/1559407501225115649