Arduino対応ボード向けMicroPython
この文書は 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ファームウェアをコンパイルすることもできます。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。