Kflash(CLI操作)とMaixPy IDEでUnitV AI Cameraの環境構築

## これは何か？

MacにMaixPy IDEをインストールして、UnitV AI Cameraを動かすためのTips。ハマりやすいポイントとともに書いていきます。

## 私の環境

長いので折りたたみます。

<details><summary>OS</summary>

```
                    'c.          shirokuma89dev@shiro89dev.local
                 ,xNMM.          -------------------------------
               .OMMMMo           OS: macOS 14.1.2 23B92 arm64
               OMMM0,            Host: Mac14,2
     .;loddo:' loolloddol;.      Kernel: 23.1.0
   cKMMMMMMMMMMNWMMMMMMMMMM0:    Uptime: 5 days, 5 hours, 20 mins
 .KMMMMMMMMMMMMMMMMMMMMMMMWd.    Packages: 35 (brew)
 XMMMMMMMMMMMMMMMMMMMMMMMX.      Shell: zsh 5.9
;MMMMMMMMMMMMMMMMMMMMMMMM:       Resolution: 1710x1112
:MMMMMMMMMMMMMMMMMMMMMMMM:       DE: Aqua
.MMMMMMMMMMMMMMMMMMMMMMMMX.      WM: Quartz Compositor
 kMMMMMMMMMMMMMMMMMMMMMMMMWd.    WM Theme: Blue (Light)
 .XMMMMMMMMMMMMMMMMMMMMMMMMMMk   Terminal: iTerm2
  .XMMMMMMMMMMMMMMMMMMMMMMMMK.   Terminal Font: UDEVGothic35NFLG-Regular 16
    kMMMMMMMMMMMMMMMMMMMMMMd     CPU: Apple M2
     ;KMMMMMMMWXXWMMMMMMMk.      GPU: Apple M2
       .cooc,.    .,coo:.        Memory: 4441MiB / 24576MiB
```
</details>

<details><summary>Python</summary>

``` zsh:
% pip3 --version
pip 23.3.1 from /Users/shirokuma89dev/.pyenv/versions/3.12.0/lib/python3.12/site-packages/pip (python 3.12)

% python3 --version
Python 3.12.0
```
</details>


## ファームウェアをKflashで焼く

こちらのFirmwareからファームウェアを落とします。

https://docs.m5stack.com/en/quick_start/unitv/maixpy

![スクリーンショット 2023-12-14 9.31.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/86f3c5ba-3bdf-820c-4c28-f34d020d4442.png)

次にKfkashをインストールします。個人的にPythonでゴリゴリGUI化されたアプリはあまり好きではないのでCLIで操作します。CLI操作に慣れている人はこちらの方が楽だと思いますが、GUIじゃないと扱えない人はこちらの記事が参考になると思います。

https://qiita.com/Nabeshin/items/7d49ca51cfdb10b70014

まずkflashをpipでインストールします。あらかじめpythonがインストールされている必要があります。

``` zsh
% sudo pip3 install --upgrade kflash
```

次に以下を`.zshrc`に追記します。

```
export PATH=${HOME}/.local/bin:${PATH}
```

最後にUnitVをパソコンに挿して以下を叩きます。`~/Downloads`以降は先ほどのダウンロードしたファームウェアのパスを指定してください。

``` zsh
kflash -b 1500000 -B goE -S ~/Downloads/M5StickV_Firmware_v5.1.2.kfpkg
```

成功した時のメッセージを示しておきます。

``` zsh
% kflash -b 1500000 -B goE -S ~/Downloads/M5StickV_Firmware_v5.1.2.kfpkg
[INFO] COM Port Auto Detected, Selected  /dev/cu.usbserial-655272D492
[INFO] Default baudrate is 115200 , later it may be changed to the value you set.
[INFO] Trying to Enter the ISP Mode...
*
[INFO] Greeting Message Detected, Start Downloading ISP
Downloading ISP: |=================================================================| 100.0% 10kiB/s
[INFO] Booting From 0x80000000
[INFO] Wait For 0.1 second for ISP to Boot
[INFO] Boot to Flashmode Successfully
[INFO] Selected Baudrate:  1500000
[INFO] Baudrate changed, greeting with ISP again ...
[INFO] Boot to Flashmode Successfully
[INFO] Selected Flash:  On-Board
[INFO] Initialization flash Successfully
[INFO] Extracting KFPKG ...
[INFO] Writing maixpy.bin into 0x00000000
[INFO] Flash mode: DIO, Dual SPI serial throughput rates reach around 20 Mbps
Programming BIN: |=================================================================| 100.0% 53kiB/s
[INFO] Writing m5stickv_resources.img into 0x00d00000
Programming BIN: |=================================================================| 100.0% 57kiB/s
[INFO] Writing facedetect.kmodel into 0x00300000
Programming BIN: |=================================================================| 100.0% 54kiB/s
[INFO] Rebooting...
[INFO] The ISP stub tells us the k210 is rebooting ...
```

## MaixPy IDEのダウンロード

MaixPy IDEをダウンロードします。

http://dl.sipeed.com/shareURL/MAIX/MaixPy/ide/v0.2.5

ダウンロードできないときはブラウザの警告を確認してみましょう。ポップアップウィンドウがブロックされてるだけってことが結構あります。

![スクリーンショット 2023-12-14 9.15.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/353eefd2-bc9d-5f6c-df45-906511a1f1ce.png)

ダウンロードしたら該当の.dmgを開いて、.appをアプリケーションフォルダに移動します。その後.appを開きます。普通にダブルクリックするとセキュリティーに弾かれるので、右クリック→開くをすると開かせてくれます。

![スクリーンショット 2023-12-14 9.20.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/cc146441-3b98-d4ec-1d4a-4649c071d8a3.png)

## Example

ツール→Select Board→MtStickVを選択します。

![スクリーンショット 2023-12-14 9.55.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/621bfc63-f667-2f9b-5f4d-4cb17a2bda97.png)

左下のチェーンを押して、シリアルポートを正しいものを選択し（usbserialとか書いてあるやつ）OKを押します。

![スクリーンショット 2023-12-14 9.55.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/628782/32bff58a-3bc3-7efe-cb9b-501c360de4ee.png)

再生ボタンを押して画面がついたら成功です。