9日目に続けて bpi:bit 用 MicroPython について書きます。昨日は MicroPython のファームウェアをインストールするところまででした(12/10 に新しい firmware.bin がリリースされました)。本日は mpfshell というツールを使って Hello World を実行します。
mpfshell ツール
mpfshell はリモートで MicroPython ボードを操作するためのツールです。Windows 版は bpi:bit MicroPython ダウンロードサイトに Windows-Mpfshell.exe
という名前であります。Linux や macOS の場合は intellij-mpfshell-1.1.1.zip
をダウンロードして、展開した中にある scripy/mpfshell.py を使います。
起動はたとえば、macOS の場合では 次のようにします。シリアルポートの指定は起動してからでも open コマンドで指定できます。シリアルポートの /dev/
は省略できます。
$ python3 mpfshell.py cu.wchusbserialfa1440
Documented commands (type help <topic>):
========================================
EOF close get lexecfile ls mput open quit runfile
cat exec help lls md mpyc put repl
cd execfile lcd lpwd mget mrm pwd rm
Undocumented commands:
======================
c e ef lef o q r rf
All support commands, can input help ls or other command if you don't know how to use it(ls).
looking for computer port...
serial name : cu.Bluetooth-Incoming-Port
serial name : cu.wchusbserialfa1440
input ' open cu.wchusbserialfa1440 ' and enter connect your board.
Connected to esp32
** Micropython File Shell v0.8.1, sw@kaltpost.de & juwan@banana-pi.com **
-- Running on Python 3.6 using PySerial 3.4 --
mpfs [/]>
mpfshell を使えば、Unix/Linux 風のコマンドで bpi:bit を操作できます。ls や cat を使って bpi:bit のファイルシステムにあるファイルを操作できます。
mpfs [/]> ls
Remote files in '/':
boot.py
wifi_cfg.py
mpfs [/]> cat wifi_cfg.py
WIFI_SSID = 'webduino.io'
WIFI_PSWD = 'webduino'
HOST_NAME='bit2438'
mpfs [/]>
Wi-Fi の設定
さて、今 cat コマンドで wifi_cfg.py の中身を見ましたが、bpi:bit の Wi-Fi 設定はこのファイルで行います。これを自分の環境用に直しておかないとシリアルに no AP found
というメッセージは頻繁に出でうるさいので、ここで直してしまいましょう。実際は正当な設定ツールがあるのですが、けっこうまだるっこしいしいので直接このファイルを更新します。 wifi_cfg.py の中身は次もフォーマットです。
WIFI_SSID = "WiFiアクセスポイント"
WIFI_PSWD = "WiFiアクセスポイントのパスワード"
HOST_NAME = "ボードのネットワーク名" # オプション
これを自分の Wi-Fi 環境用に設定したファイルを用意してから、以下のようにして mpfshell の put コマンドで転送します。
mpfs [/]> put wifi_cfg.py
mpfs [/]>
REPL の起動
mpfshell から repl コマンドを実行すると REPL が起動します。おなじみ "Hello, World!" を print してみましょう。
mpfs [/]> repl
*** Exit REPL with Ctrl+] ***>
MicroPython v1.9.4-817-g72effc642-dirty on 2018-12-10; ESP32 module with ESP32
Type "help()" for more information.
>>> print('Hello, World!')
Hello, World!
>>>
このボードのちょっとおもしろいところは microbit モジュールが用意されていて、micro:bit の LED スクロールなどがそのまま使えるところです。
>>> import microbit
>>> microbit.display.scroll('Hello, World!')
>>>
本日はここまです。サンプルコードは githubにたくさん用意されているので、bpi:bit を持っていたら試してみてください。