Skip to main content

Arduino対応ボード向けMicroPython

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

組み込みデバイス向けMicroPythonのコンパイル

MicroPythonとは

MicroPythonは、Python 3とほぼ互換性のあるプログラミング言語のソフトウェア実装で、C言語で記述され、マイクロコントローラ上で動作するように最適化されています。

MicroPythonは、Pythonコードをバイトコードにコンパイルするコンパイラと、そのバイトコードを実行するランタイムインタプリタで構成されています。ユーザーにはインタラクティブなプロンプト(REPL)が提供され、サポートされているコマンドを即座に実行できます。また、コアPythonライブラリの選択が含まれており、MicroPythonには低レベルハードウェアへのアクセスを提供するモジュールが含まれています。

ファームウェアのビルド方法(Xiao SAMDを例にしてみましょう)

Seeeduino XIAO SAMDは、すでにMicroPython開発をサポートしています。

ステップ1: 関連ソフトウェアの準備

"arm-none-linux-gnueabi"は、Debianベースのシステムでaptのようなパッケージマネージャを使用してインストールできるツールチェーンです(パッケージ名はgcc-arm-linux-gnueabi)。Ubuntuでは、arm-none-linux-gnueabiはubertooth-firmware-sourceに含まれています。また、gcc、python、git、makeなどの必要なツールをインストールして環境を準備する必要があります。そのため、以下のコマンドを実行します。

sudo apt update
sudo apt install cmake make gcc ubertooth-firmware-source python3 git

ステップ2: ワークスペースの切り替えとソースコードのクローン

ソースコードをクローンし、必要なサブモジュールのコードをダウンロードします。

以下のコマンドを順に実行します。

cd ~
git clone https://github.com/micropython/micropython
cd ~/micropython
git submodule update --init --recursive

ダウンロードする情報はこのファイルに含まれており、ダウンロード先のパスとコードリポジトリのアドレスが記載されています。

cat ~/micropython/.gitmodules 

ステップ3: mpy-crossのビルド(MicroPythonクロスコンパイラ)

ほとんどのポートでは、最初にMicroPythonクロスコンパイラをビルドする必要があります。このプログラム(mpy-crossと呼ばれる)は、Pythonスクリプトを.mpyファイルに事前コンパイルするために使用され、これらのファイルをポートのファームウェア/実行可能ファイルに含めることができます(フリーズ)。mpy-crossをビルドするには、以下を使用します。

cd ~/micropython/mpy-cross
make

次のステップ: 外部依存関係のビルド

Seeeduino XIAO SAMDは、すでにMicroPython開発をサポートしています。これは、ARMアーキテクチャのSAMDチップに基づくコントローラです。そのため、バージョン番号を指定し、対応するディレクトリに移動してコンパイルします。

cd ~/micropython/ports/samd
BOARD=SEEED_XIAO make V=1

最終ステップ: ファームウェアの書き込み

生成されたファームウェアはここにあります。ファームウェアをデバイスにコピーすると、XIAO SAMDでMicroPythonが利用可能になります。

ls ~/micropython/ports/samd/build-SEEED_XIAO/ |grep firmware.uf2
sudo cp ~/micropython/ports/samd/build-SEEED_XIAO/firmware.uf2 /media/$USER/Arduino/

ファームウェアのテスト

以下のコードをコピーすると、青色のLEDが点滅するのが確認できます。

from machine import Pin, Timer

led = Pin(19, Pin.OUT)
Counter = 0
def fun(tim):
global Counter
Counter = Counter + 1
state = Counter%2
led.value(state)

tim = Timer(-1)
tim.init(period=1000, mode=Timer.PERIODIC, callback=fun)

ご覧の通り、Seeeduino XIAO SAMDはすでにMicroPython開発をサポートしています。

このプロセスを参考にして、他のデバイス向けにMicroPythonファームウェアをコンパイルすることもできます。

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...