SiPEED MAixを動かしてみた


トラ技の今月号(2019年11月号)の特集は、SiPEED MAixです。
実はこのボード、約1年ほど前にIndiegogoのクラウドファンディングで入手していたのですが、当時は時間が確保できずに積みボードになってしまっていました。

せっかく特集記事もあることだし・・・と、遅ればせながら引っ張り出してきて、動かしてみました。

購入したものはM1w dock suitというもので、現在も継続して販売されています。当時は16ドル+送料5ドルでした。今もそれほど変わらず安価に入手できるようです。

このキットはカメラモジュールとTFT LCDモジュールが付属していますので、まずそれらをボードに接続します。
下のように、コネクタの黒いプラスチックを引き起こしてから、リボンケーブルの電極部分を下にして差し込み、プラスチック部分を再度倒してロックします。


ボードにはUSBシリアルのチップとしてCH340が搭載されています。
このドライバは自動ではインストールできませんので、あらかじめインストールしておきます。
私は、以下のSparkfunのサイトからダウンロードしました。

How to Install CH340 Drivers – learn.sparkfun.com

ファームウェアとしては最初からMicroPythonが書き込まれています。
USB-Cケーブルを接続すると、LCDにWelcomeメッセージが表示され、シリアルポート経由でMicroPythonのREPLにアクセスできます。

起動スクリプトはこんな感じになっていました。

>>> import os
>>> os.listdir()
['f  63200 /Maix.bin', 'f    550 /pwm.py', 'f    540 /init.py']
>>> f=open('init.py')
>>> print(f.read())
import uos
import os
import machine
import platform
import board
board_info=board.board_info()
pin_init=platform.pin_init()
pin_init.init()
test_gpio_pin_num=18
fpioa=machine.fpioa()
fpioa.set_function(test_gpio_pin_num,63)
test_pin=machine.GPIO(7,2,0)
lcd=machine.st7789()
lcd.init()
lcd.draw_string(116,121,"Welcome to MaixPy")
fpioa.set_function(board_info.LED_R,fpioa.GPIO0)
fpioa.set_function(board_info.LED_B,fpioa.GPIO1)
fpioa.set_function(board_info.LED_G,fpioa.GPIO2)
if test_pin.value() == 0:
    print('test')
    machine.test()

>>>

これは古いファームウェアなので、まずは最新のファームウェアに書き換えます。
専用のファームウェア書き換えツール(kflash_gui)があるので、以下からダウンロードします。

Release v1.5.3 · sipeed/kflash_gui

ファームウェアは以下からダウンロードできます。現時点では0.4.0が最新のようです。
何種類かありますが、「maixpy_v0.4.0_50_gcafae9d.bin」をダウンロードします。

Releases · sipeed/MaixPy

ファームウェア書き換えはシリアルポート経由です。
書き込み終わって起動してみると、液晶表示が180度反転して背景色も変わっています。

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

Official Site : https://www.sipeed.com
Wiki          : https://maixpy.sipeed.com

MicroPython v0.4.0-50-gcafae9d on 2019-09-21; Sipeed_M1 with kendryte-k210
Type "help()" for more information.
>>>

組み込みモジュールは以下のようになっていました。
大分充実していますね。

>>> help('modules')
KPU               gc                random            uio
Maix              hashlib           re                ujson
__main__          heapq             sensor            uos
_boot             image             socket            urandom
_thread           json              struct            ure
_webrepl          lcd               sys               usocket
array             machine           time              ustruct
audio             math              touchscreen       utime
binascii          math              ubinascii         utimeq
board             micropython       ucollections      uzlib
builtins          modules           ucryptolib        video
cmath             nes               uctypes           zlib
collections       network           uerrno
errno             os                uhashlib
fpioa_manager     pye_mp            uheapq
Plus any modules on the filesystem
>>>

サンプルスクリプトが以下のサイトにあるので、まずはこれを動かしてみました。
Webからコピーして、MicroPythonのREPLにCTRL-EでPasteすれば動かせます。

sipeed/MaixPy_scripts: scripts for MaixPy ~ have a good time~

沢山のスクリプトがありますが、やはりmachine_visionフォルダが気になります。
現在は5つのスクリプトが入っています。

demo_find_face.py
カメラから顔画像を探すスクリプトです。顔認識のためのモデルを別途フラッシュに書き込んでおく必要があります。
モデルのファイルはこちらです。

http://dl.sipeed.com/MAIX/MaixPy/model/face_model_at_0x300000.kfpkg

フラッシュへの書き込みは、上述のファームウェア書き込みツールが使用できます。
記事冒頭の写真は顔認識の例です。

demo_find_green_blob.py
カメラから緑色の領域を探すスクリプトです。
実行するとこんな感じです。

demo_fps_display.py
カメラ画像をLCDに表示し、FPSを測定します。

demo_image_deal.py
画像処理のサンプルです。

demo_scan_qr_code.py
QRコードスキャンのサンプルです。
QRコードを認識した結果はREPL側へ出力されます。

全般的に、想像していたよりもかなり高速で、ちょっと驚きました。
名刺の半分ほどのサイズのマイコンボードで、ここまでできてしまうのですね。

コメント