M5StickV
https://m5stack.com/collections/m5-core/products/stickv https://gyazo.com/859dfcde77a1ee856ed0c5a1795bed87
M5Stack(本家)のページ
スイッチサイエンスの販売ページ
M5StickVファームウエアプレリリース版
http://dl.sipeed.com/MAIX/MaixPy/release/master/
Gitでコミットされるたびに生成される。
ファイル名の並びに注意
日付を見て最新版を選ぶ
kflash_GUI最新版
MaixPy
https://github.com/sipeed/MaixPy
https://maixpy.sipeed.com/en/
MaixPy IDE
ファームウエアはv0.4.0_44以降を使うこと
M5StickV Quick Start(情報が古い部分があるので注意)
https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start
V-Training
https://docs.m5stack.com/#/en/related_documents/v-training
もくじ
私的FAQ
ファームウエアの更新方法
メモ
私的FAQ
サイズは?(2019年9月28日追加)
48.24mm(W)×23mm(D)×21mm(H)
https://twitter.com/saitotetsuya/status/1177846678155513857
起動時の音が大きい(2019年9月2日追加)
デフォルトのboot.pyでは起動音を再生する際のボリュームの値が最大(100)に設定されているので,値を小さくすればよい。
code:boot.py
32: player.volume(100)
↓
32: player.volume(5) # 値を小さくする
マイクが使えない(2019年8月23日追加)
現状のM5StickVではマイクが使えないとのこと。
https://twitter.com/M5Stack/status/1164753358101463044
ハードウエアの問題なので,ファームウエアやソフトウエアの更新では直らない。
https://twitter.com/M5Stack/status/1164861382707179520
マイクは2019年末に発売するM5StickV+(WiFiを搭載したM5StickV)でサポートする。
https://twitter.com/M5Stack/status/1164866596663226368
マイクの機能が必要なユーザは,2019年9月30日までに購入先に連絡してね。
M5Stack Storeで購入した場合
official@m5stack.comへメール
https://twitter.com/M5Stack/status/1164861139370405895
スイッチサイエンスで購入した場合
現在本家に確認中とのこと
https://twitter.com/ssci/status/1164785376361250817
動け!M5StickVのマイク(Togetter)に経緯がまとめられています。
Maix IDEでM5Stickに接続できない(2019年8月13日追加,2019年8月23日更新)
MaixPy IDE v0.2.4とMaixPy v0.4.0_39で対応しました。
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)さん,とりまとめありがとうございます。
M5Stack公式が確認したmicroSDカードの一覧(2019年8月13日追加)
exFATではなくFATでフォーマットした方が良いようです(2019年8月13日追加)
maixpy_v0.4.0_39_g083e0cc_m5stickv.binでFix SD card stability issues during low battery on M5StickVが取り込まれたので,充電容量が低くなった場合にmicroSDが見えなくなる問題は解決したかも?(2019年8月13日追加)
M5StickVにkflash_guiで書き込めない(2019年8月13日追加)
M5StickVが選択できるv1.5.3を使いましょう。
M5StickV Quick Startからリンクされているのはv1.2.5なので,それを使う場合はBoardをAutoにしましょう。
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 - - - - ○
https://twitter.com/nnn112358/status/1160898552593145856
電源のオンオフのしかたは?
電源ボタンを2秒長押しでオン,6秒長押しでオフ
通電していると電源をオフにしても再度起動してしまう。
仕様みたいです。
M5StickCでは電源が切れるんですけどね……
アプリをインストールしたい
起動プロセスに関しては電源投入時に動くプログラムはどこにある?を参照
以下のいずれかでインストール
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の読み書きができない。
http://dl.sipeed.com/MAIX/MaixPy/release/erase_spiffs.kfpkg をkflash_guiでM5StackV に書き込んでみると直ることがあります。
バッテリは載ってるの?
200mAh Li-Poバッテリが載っています。
何か面白いアプリはないの?
/icons/twitter.iconミクミンP/Kazuhiro Sasao( @ksasao)さんのBrownie(ぶらうにー)がおすすめです。
カメラに写った物体を認識して,Aボタンを押すとそれが何かかわいい声で教えてくれます。
(動作している様子の動画が見られます)
/icons/twitter.iconミクミンP/Kazuhiro Sasao(@ksasao)さんのBrownie Learnもおすすめです。
「学習と推論が簡単にエッジデバイスでできることが確認できる」(@ksasaoさん)
グー,チョキ,パーの手の形を学習して推論するサンプルになっています。
使用方法
最新のファームウエアに更新する必要があります。
ファームウエアの更新方法を参照
を入手し,展開した中にある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コードを作成します。
公式QR Codeメーカーなどで作れます。
Brownieを起動し,QRコードを見せると「カメラを向けてください」とアナウンスされ,学習モードに入ります。
注意:QRコードを見つけるたびに学習モードに入るので,識別させたくて学習させたくないときはQRコードにカメラを向けないようにしましょう。
学習したいモノにカメラを向けます。画面に赤い枠が何回が表示されるので,そのまま待ちます。
「データを登録しました」と言われたら学習終了です。
識別したいモノにカメラを向けて,うまく識別できると指定した音声ファイルを再生します。
M5StickVに搭載されている6軸センサはMPU6886だよね?
初期ロットにはMPU6886ではなくSH200Qが搭載されている個体があるとのこと。
M5StickVの6軸センサについて(144Labグループ開発者ブログ)を参照
電源投入時に動くプログラムはどこにある?
/flashか/sdにboot.pyという名前で置いておけば起動時に実行されます。
SDカードを挿している場合はSDカード側(/sd/boot.py)が優先されます。
相性の悪いカードだとmicroSDを挿していてもそっちを見ないので注意
相性に関してはmicroSDカードからブートできない。microSDカードからブートしてバッテリー駆動にすると動作が不安定になる。を参照
/flashにboot.pyが存在せず,SDカードも挿さっていない場合は,ファームウエアのデフォルトのboot.pyが/flash/boot.pyに書き込まれて実行されます。
M5StackV上にあるファイルを簡単に編集したい。
シリアルコンソールで接続するとコマンドプロンプトからpye(MicroPython Editor)が使えます。
code:console
>> pye('/flash/boot.py')
キーバインドはpye(MicroPython Editor)に書いてあります。
以下で十分?
カーソルキーで移動
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をダウンロードする。
ダウンロードしたEasyLoader_M5StickV_1022_beta.exeを起動する。
M5StickVが接続されているCOMポートを選択してBurnボタンを押すと,裏でkflash.exeとfirmware_M5StickV.kfpkg(=M5StickV_Firmware_1022_beta.kfpkg)をダウンロードしてM5StickVに書き込んでくれる。
https://gyazo.com/1b470aebcb1c20242d7ce2e275ebfe00
https://gyazo.com/dd2daa34c6a53726b85befe18e4fc42d
https://gyazo.com/4f7c49a9bcc89a88b808997d44896c94
2. kflash.pyを使う
https://github.com/sipeed/kflash.py
M5StickVのボード名はgoE
インストール
ソースから
code:console
$ git clone https://github.com/sipeed/kflash.py
$ 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
INFO FT2232 mode
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 ---
MAIXPYPll0:freq:832000000
MAIXPYPll1:freq:398666666
MAIXPYPll2:freq:45066666
MAIXPYcpu:freq:416000000
MAIXPYkpu:freq:398666666
MAIXPYFlash: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
init i2c2
MAIXPY: find ov7740
--- exit ---
3. kflash_GUIを使う
kflash_GUI v.1.5.3をインストール
kflash.pyのGUIラッパー
起動方法は2通り
Windows,Linuxのバイナリを利用して起動する
Linuxのバイナリは毎回用意されるが,WindowsとmacOSのバイナリは場合による。
Pythonで起動する方が楽
展開して適当なフォルダに置き,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
$ git clone --recursive https://github.com/sipeed/kflash_gui.git # kflashがsubmoduleになっているので--recursiveが必要
$ 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以降(まだプレリリース)
プレリリース版
http://dl.sipeed.com/MAIX/MaixPy/release/master/
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
メモ
MaixPyで動く
出荷時にはboot.pyが書かれている
https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_m5stickv/builtin_py/_boot.py からboot.pyが生成される
boot.pyが存在しない状態で再起動すると,ファームに書かれているboot.pyが復活する
Aボタンを押すとカメラ側に付いているLCDのオンオフができる。
顔認識した結果がシリアルに出てくる。
code:console
MAIXPY: find ov7740
{"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
MAIXPYPll0:freq:832000000
MAIXPYPll1:freq:398666666
MAIXPYPll2:freq:45066666
MAIXPYcpu:freq:416000000
MAIXPYkpu:freq:398666666
MAIXPYFlash:0xc8:0x17
open second core...
gc heap=0x80184b70-0x80204b70
MaixPy sd_init | SD_CMD0 is FF
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
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.
>>
ソースの中身
fpioa_managerって何?
FPIOA: Field Programmable Input and Output Array
board.pyのリンクが切れている
https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_m5stickv/builtin_py/board.py
M5StickV Quick Start
kflash_GUIのインストール
kflashのGUI版
M5StickV Quick Startのリンクは 1.2.5 だが最新版は1.5.3
1.5.1でM5stickVがサポートされた
Linuxのバイナリのみ提供
Pythonでkflash_guiを起動する
macOSのdmgを作るために起動しているcreate-dmgは
Homebrewで入る
シリアルコンソールを開いたまま「download」ボタンを押すと怒られるので注意
https://gyazo.com/f94b5b74e40645f1e51136991eda60d2
uPyUploader
最新は0.1.4(2018年9月17日)
Connectionにwifiしかない(UARTが見えない)
Aボタンを押しながらM5StickVをUSBケーブルで接続すると自動的に現れる。
Connectボタンを押すとM5StickVが再起動してboot.pyが動いてしまうのでエラーになる。
M5StickVのAボタンを押したままuPyUploaderのConnectボタンを押す。
saitotetsuya.icon不安定で使えない
ampy
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
mpfshell
code:console
$ mpfshell
** Micropython File Shell v0.9.1, sw@kaltpost.de **
-- Running on Python 3.7 using PySerial 3.4 --
mpfs /> open COM5
Connected to MaixPy
mpfs /flash>
rshell
using Rshell with windows
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のコマンドライン
pye: Micropython Editor
code:console
>> pye('/flash/boot.py')
Ctrl-zでアンドゥ,Ctrl-sで保存,Ctrl-qで抜ける。
MaixPy IDE
まだ対応ボードに入っていないので使えない
2019/07/18 v0.2.3でサポート
ファームウエア0.4.0以上が必要
M5StickVに焼いてみたけど,MaixPy IDEの接続ボタンで接続できない。
コンソールを開いて,コンソール側の再生ボタンを押せばいい
MaixHub
AIモデルを構築・共有・実行できる?
MobileNetを訓練・変換し,Sipeed MaixPy上で実行する
Train, Convert, Run MobileNet on Sipeed MaixPy and MaixDuino !
環境構築
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を実行
その他
#m5stack