概要
昔Atmel(現Microchip)のSAMマイコンを仕事で使うことがあって、理由あって自腹で買ったXplained Proボード(以下Xpro)。最近ではこれにMicroPythonをインストールできるようなのでやってみた。VScodeのmpremote拡張でファイル転送するのに少し手間取った。
インストール
参考にした手順書はこちら:
MicroPython – Python for microcontrollers https://micropython.org/download/SAMD21_XPLAINED_PRO/
- https://micropython.org/resources/firmware/bootloader-xplained-pro-v3.16.0-15-gaa52b22.hex (手順書の最新を参照のこと)からbootloaderをダウンロードする。
- 2つあるUSBコネクタのうちのDEBUG USBポートとPCを接続する。XPLAINEDと名付けられたドライブが現れる。すでにプログラムを書いている場合はRESETボタンを2回押す。
- hexファイルをXPLAINEDドライブにコピーする。
- USBを切断し、もうひとつのTARGET USBポートに接続するとSAMD21XPLドライブが現れる。
- https://micropython.org/resources/firmware/SAMD21_XPLAINED_PRO-20241129-v1.24.1.uf2 (手順書の最新を参照のこと)をダウンロードしてSAMD21XPLドライブにコピーする。SAMD21XPLドライブが消えればMicroPythonのインストール完了。
Xproボードではないオリジナルボードの場合はAtmel ICEなどで3を書き込めばいいのではないかな。
REPLの起動
USBを通して仮想COMポートができているので、TeraTermなどシリアルポートにアクセスできるターミナルソフトを使ってポートを開く。手元ではCOM17になっていた。

プロンプトが現れれば正しく動作しているということがわかる。
Lチカ
EmbeddedのHello,worldとも言われるLチカをやってみる。
まずMicroPythonでSAMD21マイコンを動かすための資料をあたる。LチカはようはGPIOをLow/Highすればいいので、まずはMicroPythonにおけるピンの制御方法を学ぶ。
Quick reference for the SAMD21/SAMD51 family — MicroPython latest documentation https://docs.micropython.org/en/latest/samd/quickref.html
p = Pin(“ピン名”)でピンのインスタンスを取得できるようだ。
Quick reference for the SAMD21/SAMD51 family — MicroPython latest documentation https://docs.micropython.org/en/latest/samd/quickref.html#pins-and-gpio
- p.value(0)でLow、p.value(1)でHighをセットできる
- p = Pin(“ピン名”, Pin.OUT)とすれば出力ピンにできる。
このあたりがわかればあとはLEDのピン名とLow/Highどちらで点灯するかがわかればプログラムを作ることができる。
Xproのユーザーガイドをあたる。

Xproのボタンのすぐ近くにあるLEDはPB30に割り当てられている。そしてそこに記載されているようにPB30をGND (LOW) にすれば点灯するようだ。
そこで次のようにコードを書いてみた。
from machine import Pin
import time
led = Pin("PB30")
while(True):
led.value(0)
time.sleep(1)
led.value(1)
time.sleep(1)
これをTeraTermに貼り付ければREPLで動作する。最後に空行つけてENTERすればLEDがチカチカ動き始めた。

たったこれだけでとりあえず動き始めるというのはとても便利だ。
停止はTeraTermでCTRL+Cを入力するか、XproのRESETボタンを押してもいい。
ところで、REPLでhelp()を実行してみるとpaste modeというのがあった。もしかしたらこっちのほうがいいのかもしれない。

Ctrl+Eでpaste modeに入るのでその間に貼り付け(TeraTermではALT+Vまたは右クリック)Ctrl+Dを押すとペースト終了=プログラム実行となるようだ。
ファイルの転送
次は.pyファイルを転送してREPLを使わなくてもLチカできるようにする。
Quick referenceの最後にmpremoteを使うと書いてある。
MicroPython remote control: mpremote — MicroPython latest documentation https://docs.micropython.org/en/latest/reference/mpremote.html
これにしたがって転送してみよう。
pip install --user mpremote
でインストール、
mpremote
で実行、なんだけど、違うCOMポートに接続されてしまった。複数COMポートがあるときは明示的に指定しないといけないようだ。
mpremote connect COM17
TeraTermでCOM17を開いているとエラーになるので(経験者)TeraTermの方の接続を閉じたうえでコマンドを実行すると無事接続できた。
mpremote connect COM17 run main.py
こうすると転送なしでプログラムを実行できるようだ。また、名前はmain.pyにしないといけないらしいということを学んだ。boot.pyがあればまずboot.pyが呼ばれ、続いてmain.pyが呼ばれるそうだ。
転送なしで実行させる、いわゆる「書き込む」には、次のようにやるようだ。
mpremote connect COM17 cp main.py :main.py
cp <source> <dist>で “:” がついた方がボード内のFlashROMになるらしい。転送後基板をリセットすると無事チカチカ動き出した。
書き込まれたファイルを確認するにはこう。
mpremote connect COM17 ls
VScode用拡張

その名も”MPRemote”という拡張があったのでインストールしてみた。
エクスプローラーでファイルを右クリックするとMPRemoteのメニューが追加されていた。runとcpが使えるようだ。ソースコードエディタの方で右クリックしても出てきた。

ところがrunはできるがcpがエラーになる。
PS C:\a_long_path> py.exe -m mpremote connect COM17 cp 'c:\a_long_path\main.py' ':\main.py'
cp c:\a_long_path\main.py :\main.py
mpremote: Error with transport:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: 2
結論からいうと、次のように ‘:\main.py’ を ‘:/main.py’ に変更してやるとcpできた。少しいじってやる必要があるのかもしれない。
py.exe -m mpremote connect COM17 cp 'c:\a_long_path\main.py' ':/main.py'
また、MPRemote vscodeは現時点で1.21.12が最新だったが1.21.3に戻せば
PS C:\a_long_path> py.exe -m mpremote connect COM17 cp 'c:\a_long_path\main.py' ':/main.py'
cp c:\a_long_path\main.py :/main.py
Up to date: /main.py
無事に動くことがわかった。
1.21.12でも、extension.jsの390行あたりで置換してやればよさそう?
390: remotePath = remotePath.replace(/\\/g, "/");
391: mpremote.upload(port, localPath, remotePath);
追記
複数のCOMポートがあるときはトップバーのあたりにポート選択メニューが表示された。そこから選べばいいようだ。

まとめ
古いXplained Proボードを引っ張り出してきてMicroPythonをインストールし、REPLの動作を確認した。また、Lチカを試してみた。そしてVScodeのメニューからスクリプトをダウンロード(PC→ボード)できるようになった。
なんだこれは。当時の苦労は何だったんだっていうくらい簡単だった。マイコンボードの敷居がここまで下がっているととても学習しやすいだろう。
参考サイト
- MicroPython – Python for microcontrollers https://micropython.org/download/SAMD21_XPLAINED_PRO/
- SAM D21 Xplained Pro USER GUIDE https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42220-SAMD21-Xplained-Pro_User-Guide.pdf


コメント