M5StickV
https://m5stack.com/collections/m5-core/products/stickv https://gyazo.com/859dfcde77a1ee856ed0c5a1795bed87
M5StickVファームウエアプレリリース版
Gitでコミットされるたびに生成される。
ファイル名の並びに注意
日付を見て最新版を選ぶ
kflash_GUI最新版
MaixPy
MaixPy IDE
M5StickV Quick Start(情報が古い部分があるので注意)
V-Training
もくじ
私的FAQ
サイズは?(2019年9月28日追加)
48.24mm(W)×23mm(D)×21mm(H)
起動時の音が大きい(2019年9月2日追加)
デフォルトのboot.pyでは起動音を再生する際のボリュームの値が最大(100)に設定されているので,値を小さくすればよい。
code:boot.py
32: player.volume(100)
↓
32: player.volume(5) # 値を小さくする
マイクが使えない(2019年8月23日追加)
現状のM5StickVではマイクが使えないとのこと。
ハードウエアの問題なので,ファームウエアやソフトウエアの更新では直らない。
マイクは2019年末に発売するM5StickV+(WiFiを搭載したM5StickV)でサポートする。
マイクの機能が必要なユーザは,2019年9月30日までに購入先に連絡してね。
M5Stack Storeで購入した場合
official@m5stack.comへメール
スイッチサイエンスで購入した場合
現在本家に確認中とのこと
Maix IDEでM5Stickに接続できない(2019年8月13日追加,2019年8月23日更新)
MaixPy IDEの配布先がに変更になりました(2019年8月16日) ここで配布されているMaixPy IDEを使う場合,ファームウエアv0.4.0_44以降を使う必要があります。 本体側にRaw REPLで編集しているファイルを流し込んで実行します。
本体のフラッシュに保存したい場合はツールメニューから「Save open file to board(boot.py)」(boot.pyとして保存する)もしくは「transfer file to board」(ファイルを選択してボードに転送する)を選ぶ。
microSDカードからブートできない。microSDカードからブートしてバッテリー駆動にすると動作が不安定になる。
もし載ってないもので動作確認が取れたら,上のドキュメントに追加してもらえるとみんなが幸せになります。
/icons/twitter.iconミクミンP/Kazuhiro Sasao (@ksasao)さん,とりまとめありがとうございます。 exFATではなくFATでフォーマットした方が良いようです(2019年8月13日追加)
M5StickVにkflash_guiで書き込めない(2019年8月13日追加)
M5StickVが選択できるv1.5.3を使いましょう。
kflash_guiのバージョンとBoardの設定による書き込み結果については,/icons/twitter.iconnnn@aNo研 (@nnn112358)さんが設定を調べてくださったものがあります。 table:対応表
Board\Ver 1.2.5 1.3.2 1.4 1.5 1.5.3
Auto ○ × × × ×
Maix Go ○ ○ ○ ○ ○
M5StickV - - - - ○
電源のオンオフのしかたは?
電源ボタンを2秒長押しでオン,6秒長押しでオフ
通電していると電源をオフにしても再度起動してしまう。
仕様みたいです。
アプリをインストールしたい
以下のいずれかでインストール
microSDカードの直下に必要なものをつっこんで再起動する
saitotetsuya.iconこれが一番簡単
ampy,rshellなどで/flash/に必要なファイルをコピーする
シリアルポートに接続できない。
デフォルトのboot.pyが動いていると,デモが起動してしまい,シリアル接続ができなくなります。
電源をオンにしたらAボタンを押し,接続できるまで何があっても押しっぱなしにしておきましょう。
再起動ごとにデモを起動しないようにするため。
ボタンを押しっぱなにしするのが面倒くさい場合,boot.pyの49行目を以下のように変更すると挙動が逆になります。
code:boot.py
49: if but_a.value() == 0: #If dont want to run the demo ↓
49: if but_a.value() == 1: #If dont want to run the demo デモプログラムを起動したいときはロゴが出たらAボタンを押します。
他のプログラムで同じシリアルポートを開いていると接続できません。
接続しているプログラムを落としましょう。
ampyやrshellで接続しようとするとcould not enter raw replと言って怒られる。
Raw REPLモードに入るのにシリアルにCtrl-aを送るタイミングが速すぎるのが原因です。
saitotetsuya.iconバナーとか表示してますしね……
それぞれ0.5秒程度のウェイトを指定することで回避できます。
ampyの場合
以下のどちらかを実行する
-dオプション(--delayオプションでも可)に秒数(小数可)を指定する。
例:ampy -d 0.5 -p COM5
環境変数AMPY_PORTにポートを指定しておけば,-pオプションで指定する必要がなくなる。
環境変数AMPY_DELAYに秒数(小数可)を指定する。この場合-dオプションでの指定は不要です。
rshellの場合
--waitオプションに秒数(小数不可)を指定する
例:rshell --wait 1 -p COM5
環境変数RSHELL_PORTにポートを指定しておけば-pオプションで指定する必要がなくなる。
どうしても/flashの読み書きができない。
バッテリは載ってるの?
200mAh Li-Poバッテリが載っています。
何か面白いアプリはないの?
カメラに写った物体を認識して,Aボタンを押すとそれが何かかわいい声で教えてくれます。
グー,チョキ,パーの手の形を学習して推論するサンプルになっています。
使用方法
最新のファームウエアに更新する必要があります。
を入手し,展開した中にあるsrcフォルダの内容をmicroSDにコピーします。 M5StickVにmicroSDを挿してM5StickVを起動します。
展開した中にあるQRフォルダにあるQRコード(gu.png,choki.png,pa.png)それぞれについて以下を実行します。
QRコードにM5StickVのカメラを向けます。
QRコードを識別すると「カメラを向けてください」と言われるので,推論したいモノにカメラを向けます。
それぞれグー,チョキ,パーの手を映します
画面に赤い枠が何回が表示されるので,そのまま待ちます。
「データを登録しました」と言われたら学習終了です。
グー,チョキ,パーを見せると「グーです」「チョキです」「パーです」と教えてくれるようになります。
おまけ:モノを識別したときに独自の発話をさせる方法
学習したモノを識別した時に発話させる音声ファイル(WAV形式)をmicroSDのvoiceフォルダ(/sd/voice)に置きます。
ここでは/sd/voice/robohon.wavとします。
置いた音声ファイルのベース名(例えばrobohon.wavならrobohon)のQRコードを作成します。
Brownieを起動し,QRコードを見せると「カメラを向けてください」とアナウンスされ,学習モードに入ります。
注意:QRコードを見つけるたびに学習モードに入るので,識別させたくて学習させたくないときはQRコードにカメラを向けないようにしましょう。
学習したいモノにカメラを向けます。画面に赤い枠が何回が表示されるので,そのまま待ちます。
「データを登録しました」と言われたら学習終了です。
識別したいモノにカメラを向けて,うまく識別できると指定した音声ファイルを再生します。
M5StickVに搭載されている6軸センサはMPU6886だよね?
初期ロットにはMPU6886ではなくSH200Qが搭載されている個体があるとのこと。
電源投入時に動くプログラムはどこにある?
/flashか/sdにboot.pyという名前で置いておけば起動時に実行されます。
SDカードを挿している場合はSDカード側(/sd/boot.py)が優先されます。
相性の悪いカードだとmicroSDを挿していてもそっちを見ないので注意
/flashにboot.pyが存在せず,SDカードも挿さっていない場合は,ファームウエアのデフォルトのboot.pyが/flash/boot.pyに書き込まれて実行されます。
M5StackV上にあるファイルを簡単に編集したい。
code:console
>> pye('/flash/boot.py')
以下で十分?
カーソルキーで移動
Ctrl-lもしくはCtrl-Spaceで領域指定の開始/終了
Ctrl-cもしくはCtrl-dでコピー
Ctrl-xもしくはCtrl-yでカット
Ctrl-vでペースト
Ctrl-sで保存
Ctrl-zで直前の編集のアンドゥ
Ctrl-qで終了
TeraTermの場合,以下のようにDELを送信するキーを設定しておくとDelete,Backspaceとも本来の操作になります。
https://gyazo.com/c487ec6b4c0531cd1c4908d167ddb4ac
ファームウエアの更新方法
1. EasyLoaderを使う(2019年8月30日時点ではWindowsのみ)
ダウンロードしたEasyLoader_M5StickV_1022_beta.exeを起動する。
https://gyazo.com/1b470aebcb1c20242d7ce2e275ebfe00
https://gyazo.com/dd2daa34c6a53726b85befe18e4fc42d
https://gyazo.com/4f7c49a9bcc89a88b808997d44896c94
2. kflash.pyを使う
M5StickVのボード名はgoE
インストール
ソースから
code:console
$ cd kflash.py
$ python setup.py install
パッケージから
kflash.exe(Windows)やkflash(Linux,macOS)もインストールされるので,python -m kflashで起動しなくてもいい。
code:console
$ pip install kflash
実行
code:console
$ python -m kflash -B goE -b 1500000 -t maixpy_v0.4.0_31_gc1d8a43_m5stickv.bin
ポート-pは指定しなくても自動的に見つけてくれる。
-f 0だとIn-Chip,-f 1だとOn-Board。デフォルトはOn-Board
M5StickVはOn-Board
-tを付けるとファームウエアを書いた後にM5StickVを再起動してPythonのminitermを起動する。
minitermを終了するのはCtrl-]
code:console
INFO COM Port Auto Detected, Selected COM5 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 INFO Selected Stage0 Baudrate: 1500000 Downloading ISP: |=======================================================================================| 100.0% 61kiB/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 Programming BIN: |=======================================================================================| 100.0% 49kiB/s INFO Rebooting... --- forcing DTR inactive
--- forcing RTS inactive
--- Miniterm on COM5 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
open second core...
gc heap=0x8016fbe0-0x801efbe0
__ __ _____ __ __ _____ __ __
| \/ | /\ |_ _| \ \ / / | __ \ \ \ / /
| \ / | / \ | | \ V / | |__) | \ \_/ /
| |\/| | / /\ \ | | > < | ___/ \ /
| | | | / ____ \ _| |_ / . \ | | | |
|_| |_| /_/ \_\ |_____| /_/ \_\ |_| |_|
init i2c2
--- exit ---
3. kflash_GUIを使う
起動方法は2通り
Windows,Linuxのバイナリを利用して起動する
Linuxのバイナリは毎回用意されるが,WindowsとmacOSのバイナリは場合による。
展開して適当なフォルダに置き,kflash_gui.exe(Windows),kflash_gui(Linux)を起動する。
Pythonで起動する
Python3で動く
miniconda環境の準備(Windowsでminicondaを使っている場合のみ)
code:console
$ conda create -n kflash_gui python=3.7 -y
$ conda activate kflash_gui
Gitでソースを入手
code:console
$ cd kflash_gui
Pythonの設定
code:console
$ pip install -r requirements.txt # conda install --file requirements.txtではインストールできない
$ pip install pyinstaller # バイナリを作る場合。pack.pyから呼ばれている
kflush_guiを起動
code:console
$ python kflash_gui.py
バイナリの作成(必要なら)
code:console
$ python pack.py
ファームウエアの入手
M5StickVで使うならv0.4.0以降(まだプレリリース)
プレリリース版
Gitでコミットされるたびに生成される。
ファイル名の並びに注意
日付を見て最新版を選ぶ
からmaixpy_v0.5.0_12_g284ce83_m5stickv.binを入手 kflash_GUIの設定を以下のようにする
Board Settings
Board: M5StickV
Burn To: Flash
Serial Settings
Port: M5StickVを繋いだCOMポート(Windows),/dev/ttyUSB?(Linuxの場合)
Baudrate: 1500000
Speed mode: Fast mode
https://gyazo.com/8a9ba7f7db25863ac6a06f592f8e4fa1
Open Fileボタンを押して,ダウンロードしたファームウエアを選択する。
Downloadボタンを押すとM5StickVのフラッシュに書き込まれる。
/icons/hr.icon
メモ
boot.pyが存在しない状態で再起動すると,ファームに書かれているboot.pyが復活する
Aボタンを押すとカメラ側に付いているLCDのオンオフができる。
顔認識した結果がシリアルに出てくる。
code:console
{"x":176, "y":45, "w":83, "h":110, "value":0.611305, "classid":0, "index":0, "objnum":1}
{"x":156, "y":118, "w":30, "h":33, "value":0.500000, "classid":0, "index":0, "objnum":1}
スプラッシュスクリーンが出て音が鳴った後にAボタンが押されていたらsys.exit()するようになっている。
これが面倒くさい場合は,boot.pyの49行目のAボタンの判定を逆にしておけば,通常はロゴを表示して終了し,Aボタンを押したまま起動すればデモになる。
code:boot.py
49: if but_a.value() == 0: #If dont want to run the demo ↓
49: if but_a.value() == 1: #If dont want to run the demo コンソールからCtrl-Cでboot.pyの実行が止められて,MicroPythonのプロンプトに戻る。
code:console
open second core...
gc heap=0x80184b70-0x80204b70
MaixPy sd_init | SD_CMD0 is FF __ __ _____ __ __ _____ __ __
| \/ | /\ |_ _| \ \ / / | __ \ \ \ / /
| \ / | / \ | | \ V / | |__) | \ \_/ /
| |\/| | / /\ \ | | > < | ___/ \ /
| | | | / ____ \ _| |_ / . \ | | | |
|_| |_| /_/ \_\ |_____| /_/ \_\ |_| |_|
init i2c2
Traceback (most recent call last):
File "_boot.py", line 38, in <module>
File "./boot.py", line 122, in <module>
NameError: name 'sys' isn't defined
MicroPython v0.3.2-44-ga21a2ba1c-dirty on 2019-06-30; M5StickV with Kendryte-k210
Type "help()" for more information.
>>
ソースの中身
1.5.1でM5stickVがサポートされた
Linuxのバイナリのみ提供
macOSのdmgを作るために起動しているcreate-dmgは シリアルコンソールを開いたまま「download」ボタンを押すと怒られるので注意
https://gyazo.com/f94b5b74e40645f1e51136991eda60d2
最新は0.1.4(2018年9月17日)
Connectionにwifiしかない(UARTが見えない)
Aボタンを押しながらM5StickVをUSBケーブルで接続すると自動的に現れる。
Connectボタンを押すとM5StickVが再起動してboot.pyが動いてしまうのでエラーになる。
M5StickVのAボタンを押したままuPyUploaderのConnectボタンを押す。
saitotetsuya.icon不安定で使えない
README.mdにあるコマンドの説明は古い
table:コマンド
get M5StickVにあるファイルの取得
ls M5StickVにあるファイル一覧の表示
mkdir M5StickVにフォルダを作成
put PC側にあるファイルをM5StickVに置く
reset M5StickVにソフトリセットをかけて再起動する
rm M5StickVにあるファイルの削除
rmdir M5StickVにあるフォルダを削除
run 指定したPC側にあるスクリプトをM5StickV上で実行して出力を表示
code:console
$ set AMPY_DELAY=0.5 # ampy.pyboard.PyboardError: could not enter raw replで怒られる問題に対応
# -d オプション(--delay)でも指定できる
$ set AMPY_PORT=COM5 # 毎回 -p を指定する必要がなくなる
$ ampy ls
/flash
$ ampy ls -l /flash
/flash/__download.py - 986 bytes
/flash/__upload.py - 977 bytes
/flash/boot.py - 3439 bytes
/flash/boot.py.orig - 3558 bytes
/flash/demo_scan_qr_code.py - 480 bytes
/flash/ding.wav - 158804 bytes
/flash/freq.conf - 12 bytes
/flash/startup.jpg - 27867 bytes
code:console
$ mpfshell
** Micropython File Shell v0.9.1, sw@kaltpost.de **
-- Running on Python 3.7 using PySerial 3.4 --
Connected to MaixPy
Windows環境ではcpができない
code:console
$ set RSHELL_PORT=COM5 # 毎回 -p を指定する必要がなくなる
$ rshell --wait 1 # --wait 1 で could not entery raw replで怒られる問題に対応。小数は使えない
Using buffer-size of 32
Connecting to COM5 (buffer-size 32)...
Waiting 1 seconds for serial port 'COM5' to exist.
Trying to connect to REPL . connected
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ... /flash/
Setting time ... Jul 23, 2019 22:23:50
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 2000
Welcome to rshell. Use the exit command to exit rshell.
$ ls -l /flash
986 Jan 1 2000 __download.py
977 Jan 1 2000 __upload.py
3439 Jan 1 2000 boot.py
3558 Jan 1 2000 boot.py.orig
480 Jan 1 2000 demo_scan_qr_code.py
158804 Jan 1 2000 ding.wav
12 Jan 1 2000 freq.conf
27867 Jan 1 2000 startup.jpg
MaixPyのコマンドライン
code:console
>> pye('/flash/boot.py')
Ctrl-zでアンドゥ,Ctrl-sで保存,Ctrl-qで抜ける。
まだ対応ボードに入っていないので使えない
ファームウエア0.4.0以上が必要
M5StickVに焼いてみたけど,MaixPy IDEの接続ボタンで接続できない。
コンソールを開いて,コンソール側の再生ボタンを押せばいい
AIモデルを構築・共有・実行できる?
MobileNetを訓練・変換し,Sipeed MaixPy上で実行する
環境構築
Kerasのインストール
TensorFlowとKeras環境はdockerで
code:console
$ docker pull tensorflow/tensorflow:1.13.1-gpu-py3-jupyter
ネットワーク回線が遅い場合は事前訓練したMobileNet v1モデル(mobilenet_7_5_224_tf_no_top.h5)をからダウンロードし,~/keras/modelsに置く。 mobilenet_7_5_224_tf_no_top.h5はwidth multiplier 0.75,入力イメージサイズ 224x224,最上位のsoftmaxを削除し層を切り離している?
データセットのダウンロード
Maix用MobileNetモデルの作成
元のmobilenet.pyの修正
自分用の訓練スクリプトの作成
訓練する
Kerasモデルをkmodelに変換
MaixPyでkmodelを実行
その他