イベント好きエンジニア鈴木さんのブログ

何かとイベントに行くのが好きなエンジニア鈴木さんのブログです。

MacでM5 Stick Vのソフト開発できるようになるまで

今回は実家に帰ったのでM5 Stick Vを触ってみることにしました。 なんか場所を変えると普段あんまやれないことをやれたりするじゃないですか。あれです。

M5 Stick Vとは

M5Stick VはAIOT(AI + IoT)カメラです。これだけで顔認識や物体認識などができてしまいます。
https://www.switch-science.com/catalog/5700/

SoCはKendryte社のK210です。 他のM5 Stackと同じのようにArduinoのスケッチ描いて……みたいにはいかない模様。

とりあえず動かす

Quick StartだとEasy Loaderをダウンロードって書いてあるけどWindowsしかないので無視。
次にQuickStartのページから、Kflash_GUIMac版とfirmwareをダウンロード。
Kflash_GUIを起動したらこんな感じで設定してDownloadをクリック。

f:id:suzu_hack:20190817120834p:plain

firmwareの書き込みが始まります。 うまくいったら"Download Success"というメッセージが出ます。

次にシリアル接続をします。
まずは接続先を確認しましょう。
ターミナルを開き以下のコマンドを実行します。

ls /dev/tty.*

バイスの一覧が出てきます。

/dev/tty.Bluetooth-Incoming-Port     /dev/tty.usbserial-00002014

この中でtty.usbserial-00002014というのがそれっぽいのでこれに接続します。
接続はscreenコマンドを利用します。
インストールされてない場合はhomebrewなどでインストールしてください。

screen /dev/tty.usbserial-00002014 115200

うまく行くとこんな感じになります。

[MAIXPY]Pll0:freq:832000000
[MAIXPY]Pll1:freq:398666666
[MAIXPY]Pll2:freq:45066666
[MAIXPY]cpu:freq:416000000
[MAIXPY]kpu:freq:398666666
[MAIXPY]Flash:0xc8:0x17
open second core...
gc heap=0x8016fbe0-0x801efbe0
[MaixPy] init end

 __  __              _____  __   __  _____   __     __
|  \/  |     /\     |_   _| \ \ / / |  __ \  \ \   / /
| \  / |    /  \      | |    \ V /  | |__) |  \ \_/ /
| |\/| |   / /\ \     | |     > <   |  ___/    \   /
| |  | |  / ____ \   _| |_   / . \  | |         | |
|_|  |_| /_/    \_\ |_____| /_/ \_\ |_|         |_|

M5StickV by M5Stack : https://m5stack.com/
M5StickV Wiki       : https://docs.m5stack.com
Co-op by Sipeed     : https://www.sipeed.com

[MAIXPY]: result = 0
[MAIXPY]: numchannels = 1
[MAIXPY]: samplerate = 44100
[MAIXPY]: byterate = 88200
[MAIXPY]: blockalign = 2
[MAIXPY]: bitspersample = 16
[MAIXPY]: datasize = 158760
init i2c2
[MAIXPY]: find ov7740

ここままだとデフォルトのコードが実行された状態なので、Ctrl+Cでデフォルトコードを停止させます。
すると
">>>" というマークが出てコマンドを入力できる状態になるのでコマンドを入力します。

import lcd

lcd.init()
lcd.draw_string(100, 100, "hello world", lcd.RED, lcd.BLACK)

LCDhello worldと出てきたら成功。
終了したい場合はCtrl+A, K(controlキーを押しながらaとdを順番に押す)です。

ここまでで、一応M5 StickVのプログラミングができるようになりましたが、これだけだと再起動するたびにプログラムが消えてしまうので、ファイルをアップロードしてプログラムを書き換えられるようにします。

プログラムを書き換える

uPyLoaderの準備

uPyLoaderをダウンロードします。 https://github.com/BetaRavener/uPyLoader/releases/tag/v0.1.3
ちなみに最新は0.1.4だが、mac版がないので一つ古いバージョンをダウンロードしました。

uPyLoaderを開きます。
Connectionを先ほど開いたシリアルポートを選択します。
M5 Stickが立ち上がる時にLCD隣の大きなボタンを押しながら起動します。
ちなみにM5 Stickの電源を落とすのは、SDカードリーダ隣のボタンを6秒長押しです。
USBで接続されていれば勝手に再起動します。
再起動した状態でuPyLoaderのConnectボタンを押します。
うまくいけば右側にファイルのリストが表示されます。

f:id:suzu_hack:20190817120917p:plain

File -> Init transfer files

を選択するとファイル転送の準備ができます。

バックアップ

念の為M5 StickV内のファイルはバックアップを取っておきましょう。
boot.pyを上書きしても削除したら復活するらしいのでしなくても良さそう。

右側のリストからboot.pyを選択します。PC Pathを任意のディレクトリにします。
PC Pathの右隣にあるTransferボタン(左ではないので注意)を押すと設定したディレクトリにファイルが保存されます。

プログラムの書き換え

boot.pyを書き換えます。
boot.pyを作成し、適当なプログラムを作成します。
書き込めるかの確認だけなので先ほどと同じhello worldを表示するプログラムを作りました。

import lcd

lcd.init()
lcd.draw_string(100, 100, "hello world", lcd.RED, lcd.BLACK)

uPyLoaderの左側のパネルから作成したboot.pyを選択しMCU name:右隣にあるTransferボタンを押すとファイルが転送されます。
m5Stickを再起動すると起動後hello worldが表示されます。

この要領でファイルを書き換えればM5 StickVでいろいろできるようになります。

以上、MacでM5 StickVで開発できるようになるまででした。
素敵なM5 StickVライフを!