MicroPython Linux版のインストール方法と使い方

MicroPythonにはESP8266などのマイコン版の他にLinux版が存在する。これをPCにインストールすると、MicroPythonのコードをESP8266などマイコンの実機ではなくPC上で直接動かすことが出来るうえに、upipでMicroPythonモジュールのインストールが簡単に出来、CPython(標準コマンドのPython)と同じような感覚で使えるようになる。

このMicroPython Linux版をUbuntu18.04にインストールしたので、メモ。

スポンサーリンク

MicroPython Linux版のビルド

必要パッケージのインストール。

$ sudo apt install build-essential libreadline-dev libffi-dev git pkg-config gcc-arm-none-eabi libnewlib-arm-none-eabi

適当な作業ディレクトリに移動してMicroPythonのソースコードをgit cloneする。

$ git clone --recurse-submodules https://github.com/micropython/micropython.git

mpy-crossディレクトリに移動してmake。

$ cd micropython/mpy-cross/
$ make

ディレクトリを移動してLinux用バイナリのビルド&インストール。

$ cd ../ports/unix/
$ make axtls
$ sudo make install

デフォルトでは/usr/local/binにインストールされるので、pathを通しておく。

MicroPython Linux版の使い方

コマンドラインからインタープリタを起動、使ってみる。

$ micropython
MicroPython v1.12-33-g007a704d8 on 2019-12-28; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>> print('Hello world!')
Hello world!
>>> 

以下のようなプログラムを作成して、

hello.py

def hello():
    print('Hello world from Function!')

if __name__ == "__main__":
    hello()

プログラムをコマンドライン引数に指定すれば実行される。

$ micropython hello.py 
Hello world from Function!

プログラムの先頭に#!/usr/local/bin/micropythonを記述し、ファイルに実行属性を付けておけばスクリプトとして動作させることも出来る。

upipを用いたモジュールのインストール

micropython -m upip –helpを実行すると、ヘルプメッセージを表示出来る。
例えば、コマンドラインで以下を実行すると、pystoneモジュールをインストール出来る。

$ micropython -m upip install micropython-pystone

MicroPythonのインタープリタからpystoneを実行。

>>> import pystone
>>> pystone.main()
Pystone(1.2) time for 50000 passes = 0.723
This machine benchmarks at 69156.3 pystones/second
>>> 

ライブラリの実体は~/.micropython/libにインストールされている。

MicroPythonで実行されているかプログラム中で知る方法

プログラムがMicroPythonで実行されているかどうかをプログラムの中で識別するには、sys.implementation.nameに’micropython’がセットされているかどうかを調べれば良い。

以下のように動作環境に応じてインポートするライブラリを切り替えればCPythonとソースコードを共通化出来る。

import sys

if sys.implementation.name == 'micropython':
    import (MicroPython用ライブラリ)
else:
    import (CPython用ライブラリ)

(以下、共通のコード)

まとめ

GPIOの操作などハードウエアがらみの部分は当然PCでは動かすことが出来ないが、それ以外の部分のソースコードを分離してデバッグするようにすれば、マイコンにプログラムを転送する手間が省けるのでプログラミングが非常に捗る。sys.implementation.nameのチェックでコードを切り替えればCPythonとソースファイルを共通化出来るので、Pythonコードのデバッグにデバッガ(pdb)を使いたい時などは非常に便利。

コメント