micro:bit をコマンドラインで使う
2020.01.12/2023.03.25更新
YouTube 動画でポイントを説明しています。画像をクリックすると再生できます。
今回は、micro:bit の Python プログラミングをコマンドラインで行えるようにします。
音楽を聴きながら、micro:bit を操作しているので、構成図には色々記載されていますが、要は青枠内です。
OSには、Raspbian Stretch を使用しています。
MicroPython を動かすには、micro:bit にランタイムのはいったHEXファイルを転送する必要があります。
色々な方法があるのですが、mu エディターを使って手っ取り早く、転送を行ってしまいます。
■MicroPythonのランタイムの書き込み(2023.03.25更新)
MicroPythonを使えるようにするためには、一番最初に、MicroPythonのランタイム(インタプリタ)をデバイスに転送する必要があります。
Google Chromeブラウザから、micro:bit の「プログラムしよう」を開きます。
「Pythonエディターへ移動する」をクリックします。
書かれているコードはそのままにして、「Send to micro:bit」ボタンを押します。
「BBC micro:bit CMSIS-DAP」を選んで、「接続」をクリックします。
初回書き込み時には、ランタイムルーチンの書き込みも行われるのでちょっとだけ時間が掛かります。
■MicroFS
BBC micro:bit上で動作するMicroPython用に用意されたコマンドラインツールです。
これにより、Pythonソースコードの転送が可能になります。
Ref.https://microfs.readthedocs.io/en/latest/
$ sudo pip3 install microfs
最新版にアップグレードする場合
$ sudo pip3 install --no-cache --upgrade microfs
MicroFSコマンドには短縮形の ufs を用います。mu エディターで初期転送を行った直後の様子を見てみると、
micro:bit内のMicroPythonファイルシステム上に、main.py という空のファイルが生成されています。
$ ufs ls
main.py
main.py は特別なファイルで、micro:bitを再起動すると、MicroPython はその main.py ファイルの内容を実行します。
HEXファイルは、MicroPythonファイルシステムの領域とは別の場所に転送されるようです。
■python コーディング
$ vi main.py
from microbit import *
display.scroll("Hello, World!")
$ ufs put main.py
micro:bit のリセットボタンを押すと、5x5のLED上を「Hello, World」の文字が流れます。
■Python コーディングエラーの検知
micro:bit はコーディングにエラーがあった場合、5x5のLED上にエラーメッセージを流します。
これを眺めて、ソースコードを修正するのは現実的ではありません。そこで、シリアルコンソール端末をインストールして、エラーを表示させます。
minicom:シリアルコンソール端末をインストールします。
$ sudo apt-get install minicom
micro:bitのデバイス名を調べます。
$ ls /dev/tty*
platformio をインストール済みであれば、簡単に見分けが付きます。
$ platformio device list
/dev/ttyACM0
------------
Hardware ID: USB VID:PID=0D28:0204 SER=90100074005b9901 LOCATION=1-1:1.1
Description: BBC micro:bit CMSIS-DAP - mbed Serial Port
/dev/ttyAMA0
------------
Hardware ID: 20201000.serial
Description: ttyAMA0
ボーレートを調べます。
$ stty < /dev/ttyACM0
speed 115200 baud; line = 0;
min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
下記のようなコーディングをしたとします。
$ vi main.py
from microbit import *
scroll("Hello, World!")
micro:bit に転送します。
$ ufs put main.py
minicom を起動して、micro:bitをリセットします。
$ minicom -b 115200 -o -D /dev/ttyACM0
MicroPython v1.9.2-34-gd64154c73 on 2017-09-01; micro:bit v1.0.1 with nRF51822
Type "help()" for more information.
>>> Traceback (most recent call last):
File "__main__", line 3, in
NameError: name 'scroll' is not defined
このように、エラーの箇所を簡単に見つけられます。
minicomを抜ける際には Ctrl-A、Qを選択してリセットせずに終了してください。
■micro:bit - クライアント間通信
応用例として、シリアルコンソールから文字を打ち込んで、micro:bit を操作してみます。
main.py にコードを書いてもよいのですが、習慣上、メインのファイルをいじるのは嫌なので、自作ライブラリー microbit_lib.py に飛ばす形にしてます。
$ vi main.py
from microbit_lib import *
main()
コンソールから、'a'を押すとLEDにハート、'b'でハッピー、'c'で私怒っちゃってますが表示されるプログラムです。また、'q'でループを抜けます。
$ vi microbit_lib.py
from microbit import display, Image, uart
QUIT = 113
img = { \
97:Image.HEART, \
98:Image.HAPPY, \
99:Image.ANGRY \
}
uart.init(baudrate=115200,bits=8,parity=None,stop=1,tx=None,rx=None)
def main():
while True:
if uart.any():
s = uart.read()
uart.write(s)
key = ord(s)
if key == QUIT:
break
elif key in img:
display.show(img[key])
else:
continue
$ ufs put main.py
$ ufs put microbit_lib.py
$ minicom -b 115200 -o -D /dev/ttyACM0
micro:bit リセットスイッチを押して、コンソールからキー入力してみましょう。
■参考文献・用語解説
BBC micro:bit
英国BBCの教育向けシングルボードコンピュータです。micro:bitはプログラミング可能な小さなコンピューターで、学習や教育が楽しく簡単に出来るようにデザインされています。
ufs 使用例
$ ufs --help
$ ufs ls
$ ufs rm remote.py
$ ufs put path/to/local.py
$ ufs put /path/to/local.py remote.py
$ ufs get remote.py
$ ufs get remote.py local.py
HEXファイル
https://microbit-micropython.readthedocs.io/ja/latest/devguide/hexformat.html
CMSIS-DAP(Cortex Microcontroller Software Interface Standard Debug Access Port)
CMSIS(シーエムシス)とは、ARM社が標準化したCortex マイクロコントローラ ソフトウェア インタフェース規格のことです。
VNC設定
ラズパイをパソコンからリモート操作する際に必要になります。
メニューアイコンから「設定」
→「Raspberry Piの設定」を開き、タブ「インターフェース」
→「VNC(Virtual Network Computing)」のラジオボタン「有効」をクリックして、「OK」ボタンをクリックします。
設定が反映されると、タスクバーの右側に「VNC」アイコンが表示されます。
続けてPC側の設定をします。
ブラウザで”VNC Viewere”を検索して、「Download VNC Viewere」のリンクを開きます。
Ref. https://www.realvnc.com/en/connect/download/viewer/
開いたサイトで、PCのOSを選択し、「DOWNLOAD VNC VIEWER」ボタンをクリックします。
|