macOSでM5StickVをはじめる

# はじめに

2019年7月に発売された「[M5StickV](https://docs.m5stack.com/#/en/core/m5stickv)」をmacOS[^macOS]で試した時の記録です。まだ使い始めたばかりで大きく勘違いしている可能性もありますので、お気づきの点などありましたらコメント等でご指摘いただけると助かります。

[^macOS]: MacBook Pro（15-inch, 2018）と10.14.6（18G87）の組合せで確認しています。


# ファームウェアのダウンロード

1. ファームウェア（例：公式ウェブサイトの記事「[M5StickV Quick Start](https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start)」中でリンクされている[`M5StickV_Firmware_0830_beta.kfpkg`](https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/docs/M5StickV_Firmware_0830_beta.kfpkg)）をダウンロード
2. [Kflash_GUIのGitHub](https://github.com/Sipeed/kflash_gui/releases)よりmacOS対応版（例：v1.5.2）をダウンロードし、ディスクイメージファイルをダブルクリックして開き、Kflash_GUIをアプリケーションフォルダに移動する
3. M5StickV付属のUSB A-Cケーブル[^cable]でMacBookと接続
4. Kflash_GUIをダブルクリックして起動する（もし起動直後に終了してしまう場合にはTerminalを起動して`open /Applications/kflash_gui.app`で起動する[^launch_issue]）
5. `Open File`ボタンをクリックし、最初にダウンロードしたファームウェアを指定する
6. `Board`に`M5StickV`、`Port`に`/dev/cu.usbserial-********** (M5Stack Intf)`、`Baudrate`に`1500000`、`Speed mode`に`Slow mode`を選択し、Kflash_GUIでファームウェアを書き込み

[^launch_issue]: 現時点では原因不明だが、Kflash_GUIのGitHubには[この件に関するissue](https://github.com/sipeed/kflash_gui/issues/7)が登録されている。

[^cable]: 市販されているUSB C-CケーブルやUSB A-Cケーブルで試したところ、電源の供給もデバイスとしての認識もされない場合があった。M5Stackに問い合わせたところ、電源線だけでなくデータ線も接続されているUSB A-Cケーブルであれば動作するはずとのことだった。

<img width="520" alt="Kflash_GUI v.1.5.2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92577/502c7ef8-f3ab-d7bd-a80f-39180d3ec20c.png">



# Hello World

1. MaixPy IDE v0.2.4を[dl.sipeed.com](http://dl.sipeed.com/MAIX/MaixPy/ide/_/v0.2.4/maixpy-ide-mac-0.2.4.dmg)または[CDN](http://dl.cdn.sipeed.com/maixpy-ide-mac-0.2.4.dmg)からダウンロード
2. **ツール**＞**Select Board**で**M5StickV**を選択
3. 画面左下の「接続する」ボタンをクリックし、Kflash_GUIで選択したのと同じシリアルポートを選択しする
4. 画面左下にある▶ボタン（開始）をクリックして実行する

<img width="258" alt="MaixPy IDE's connect button" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92577/56347632-7377-b2d1-0c6a-3b9a2b0096ee.png">

<img width="1440" alt="MaixPy IDE" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92577/12e0308c-c14b-46f6-6f30-7d93e74e6eed.png">

# uPyLoader

1. [uPyLoaderのGitHub](https://github.com/BetaRavener/uPyLoader/releases)よりmacOS対応最新版（v0.1.3）をダウンロード
2. uPyLoaderを起動し、`Connection`でKflash_GUIで選択したのと同じシリアルポートを選択する
3. `Connect`ボタンを押す
4. M5StickVが再起動して起動画面が表示されたら、すかさずAボタン（LCDの隣にあるボタン）を押す
5. 初回はファイル転送に必要なスクリプトが見つからないというダイアログが表示される
6. **File**メニューから**Init transfer files**を実行する（これにより`__upload.py`と`download.py`が作成される）
7. **File**メニューから*Navigate*を実行し、PC側のフォルダを選択して*Open*する

以上により、M5StickVとPCの間でファイル転送ができるようになります。必要なファイル転送が終了したら、`Disconnect`をクリックして接続を解除します。

<img width="819" alt="uPyLoaderの画面例" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92577/36f8cc2d-c68b-190a-403c-1c093d054e16.png">


# 独自モデルの使用

Ghee Sung氏による記事「[Maixpy GO Mobilenet Transfer learning for Image Classfication](https://iotdiary.blogspot.com/2019/07/maixpy-go-mobilenet-transfer-learning.html)」を基にして、MobileNet v1をベースに転移学習し、M5StickVなどに搭載されているK210用に変換するまでの一連の流れを実行できるGoogle Colabノートブックを公開しました。

https://colab.research.google.com/drive/1mirG8BSoB3k87mh-qyY3-8-ZXj0XB6h6

また、独自モデルを作成できる[V-Training](https://docs.m5stack.com/#/en/related_documents/v-training)というサービスがM5Stackにより開始されました。


# リファレンス
- [M5StickV Quick Start](https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start)
- [Maixpy GO Mobilenet Transfer learning for Image Classfication](https://iotdiary.blogspot.com/2019/07/maixpy-go-mobilenet-transfer-learning.html)