M5StickVはRISC-VベースのAIoT
M5StickVの概要
M5StickVはM5Stackが販売している、
M5StackはもともとスタッカブルなIoTデバイスであるM5Stackや、
さらに親指大サイズの筐体の中にVGAサイズのイメージセンサーと135x240の小型液晶ディスプレイ、
M5StickVはスイッチサイエンスを始めとして国内のいくつもの店舗で入手可能です。当初の品薄感も少しずつ解消しているようですので、
35mmフィルムが入りそうなサイズのケースから、
電源を切るにはmicroSDカードスロットのある面のボタンを6秒以上押し続けてください。ちなみに満充電の場合は電源が切れずに再起動してしまうようです。多少放電してから電源を切ると良いでしょう。
ファームウェアのアップデート
M5StickVの初期ファームウェアは、
ファームウェアのアップデートはM5StickVのUSB Type-CポートとPCを接続して行います。データ通信・
GUI版・
シリアルポートの権限設定
Ubuntuからファームウェアをアップデートするには、
まず現在のユーザーをdialoutグループに追加します。
$ sudo usermod -a -G dialout $(whoami)
あとは一度ログインしなおせば、idコマンドで確認してみてください。ちなみにdialoutグループに追加したあと、newgrpコマンドを実行すると、
$ newgrp dialout
ただし大抵のLinuxディストリビューションでは、
ファームウェアのダウンロード
ファームウェアはM5StickV Quick StartのM5StickV_」
ちなみに
GUI版によるアップデート
GUI版のアップデートツールである
Kflash_
$ cd ~/ダウンロード $ tar xvf kflash_gui_v1.5.3_linux.tar.xz $ cd kflash_gui/
同梱されているkflash_」
$ ./kflash_gui
左上の一番左のボタンは言語切り替えです。とは言え英語と中国語
設定が必要なのは
ファームウェアの更新にはそれなりの時間がかかります。しばらくそのままで待ちましょう。
更新が完了したら
ちなみにシリアルポートへの書き込み権限がない場合は、
Kflash_~/.config/」
CLI版によるアップデート
CLI版のKflashはPython 3製のアプリケーションです。ちなみにGUI版も内部ではCLI版を利用しています。このアプリケーションはpip3コマンドを用いてインストール可能です。
$ sudo apt install python3-pip $ sudo pip3 install kflash
PySerialなど必要なライブラリも一緒にインストールされます。
CLI版のKflashを使う場合は、/dev/」/dev/」x」
$ kflash -p /dev/ttyUSB0 ~/ダウンロード/M5StickV_Firmware_0830_beta.kfpkg [INFO] COM Port Selected Manually: /dev/ttyUSB0 [INFO] Default baudrate is 115200 , later it may be changed to the value you set. [INFO] Trying to Enter the ISP Mode... ._ [INFO] Automatically detected goE/kd233 [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 Flash: On-Board [INFO] Initialization flash Successfully [INFO] Extracting KFPKG ... [INFO] Writing maixpy.bin into 0x00000000 Programming BIN: |===========================================================================================================| 100.0% 9kiB/s [INFO] Writing m5stickv_resources.img into 0x00d00000 Programming BIN: |===========================================================================================================| 100.0% 10kiB/s [INFO] Writing facedetect.kmodel into 0x00300000 Programming BIN: |===========================================================================================================| 100.0% 9kiB/s [INFO] Rebooting...
microSDカードを利用する
M5StickVにはmicroSDカードスロットが備わっています。これを利用することでファームウェアを書き換えることなくアプリケーションをインストールしたり、
ただしM5StickVにはmicroSDカードとの相性問題が存在します。初期のファームウェアでは動くもののほうが少なかった状況ですが、
microSDカードのフォーマット
M5StickVはexFATにも対応しているものの、
ちなみに最新のファームウェアなら複数パーティションも正しく認識できるようです。よって大抵の場合、
もし何らかの理由でパーティションをひとつにして、partedコマンドから設定します。
$ sudo parted (修正対象のストレージのデバイスファイル) (parted) mklabel msdos (parted) mkpart パーティションの種類? primary/プライマリ/extended/拡張? primary ファイルシステムの種類? [ext2]? fat32 開始? 0% 終了? 100%
/dev/」/dev/」X」
パーティションを作り直したら、mkfs.コマンドでフォーマットしてください。
$ sudo mkfs.vfat (修正対象のパーティションのデバイスファイル) mkfs.fat 4.1 (2017-01-24)
ほぼ繰り返しになりますが、/dev/」/dev/」X」
microSDカードにアプリをインストール
M5StickVはアプリケーションとして内蔵Flash上のboot.
Flash上のboot.boot_変数の中身を参照してください。boot_変数の中身をそのままboot.としてmicroSDの先頭パーティションに保存すれば、
たとえば次のように編集すると、
$ sed -i "s/player.volume(100)/player.volume(50)/" boot.py
標準のアプリ以外であれば、
Brownieのインストール方法はリリースページから最新のイメージをダウンロードし、
シリアルコンソールによるデバッグ
M5StickVではUSBケーブル越しにシリアルコンソールを取得可能です。Ubuntuならminicomやgkermitなどいくつかのシリアル通信ソフトウェアがありますが、
$ sudo apt install screen
screenをインストールしたら、
$ screen /dev/ttyUSB0 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
起動状態でscreenを接続すると、
標準のアプリケーションの場合、
MicroPython v0.4.0-46-gf46e4c423-dirty on 2019-08-30; M5StickV with Kendryte K210 Type "help()" for more information. >>> >>>
あとは普通にPythonのREPLを使う感覚で、help()と入力すると基本的な使い方が表示されます。特にソフトリセットがかかる
>>> help()
Welcome to MicroPython on the Sipeed Maix!
For generic online docs please visit https://maixpy.sipeed.com
Official website : http://www.sipeed.com
Control commands:
CTRL-A -- on a blank line, enter raw REPL mode
CTRL-B -- on a blank line, enter normal REPL mode
CTRL-C -- interrupt a running program
CTRL-D -- on a blank line, do a soft reset of the board
CTRL-E -- on a blank line, enter paste mode
For further help on a specific object, type help(obj)
For a list of available modules, type help('modules')他にもhelp(モジュール名)でモジュールのドキュメントを表示できます。
>>> help(lcd) object <module 'lcd'> is of type module __name__ -- lcd init -- <function> deinit -- <function> width -- <function> height -- <function> type -- <function> freq -- <function> set_backlight -- <function> get_backlight -- <function> display -- <function> clear -- <function> direction -- <function> rotation -- <function> mirror -- <function> draw_string -- <function> XY_RLUD -- 0 YX_RLUD -- 32 XY_LRUD -- 64 YX_LRUD -- 96 XY_RLDU -- 128 YX_RLDU -- 160 XY_LRDU -- 192 YX_LRDU -- 224 BLACK -- 0 NAVY -- 15 DARKGREEN -- 992 DARKCYAN -- 1007 MAROON -- 30720 PURPLE -- 30735 OLIVE -- 31712 LIGHTGREY -- 50712 DARKGREY -- 31727 BLUE -- 31 GREEN -- 2016 CYAN -- 2047 RED -- 63488 MAGENTA -- 63519 YELLOW -- 65504 WHITE -- 65535 ORANGE -- 64800 GREENYELLOW -- 45029 PINK -- 63519
他にも各種モジュールの使い方はMaixPyの
とりあえずディスプレイに何か文字列を表示させたいなら、
>>> import lcd >>> lcd.draw_string(0, 0, "Test", lcd.WHITE, lcd.BLACK)
MicroPythonそのものはほぼPythonそのままです。Ubuntuに標準でインストールされているPython実装
さらにMircopython-Editorが搭載されているので、
>>> os.listdir("/")
['flash', 'sd']
>>> os.getcwd()
'/sd'
>>> os.listdir()
['boot.py']
>>> pye("boot.py")キーバインドはMicropython-Editorのhelp.