VSCode + MicroPython環境の構築(2025.6時点)

# はじめに
[過去の記事](https://qiita.com/tbkMoriguchi/items/e7b4fbfbbfcbd7d52b86)にて、PCよりUnit-Roller485を、RS485通信を使用してコマンドを送信し、動作させた。
現状PCから制御している状態だが、M5Stackからの制御へ換装したいと思い、M5Stack上でPythonベースで動作するものを調査していると「**MicroPython**」というものを発見した。
**VSCode**にも拡張機能が存在するとのことであったため、汎用性を考慮し、VSCode上でMicroPython環境構築を実施したところ、躓いた部分も多少あったため**2025年6月**時点での環境構築手順を本記事に記そうと考えた。

# 目的
本記事では、**VSCode + MicroPython**環境の構築手順を説明する。

# 準備物
#### ○ハードウェア系
* PC(Windows10)
* M5Stack
  →本記事では**M5Stack Gray**を使用した。
* USB Type-Cケーブル(PC-M5Stack接続用)

#### ○ソフトウェア系
* VSCode
  →追加で**vscode-m5stack-mpy**という拡張機能をインストールする。
* **[USBドライバ](https://docs.m5stack.com/en/download)**(環境に応じてインストール)
* **[M5Burner](https://docs.m5stack.com/en/download)**(ファームウェアインストール用ソフト)
　→本記事ではファームウェアとしてUIFlowを使用した。

# USBドライバのインストール
PCとM5StackをUSB接続後、デバイスマネージャーより「Silicon Labs CP210x(or CP2104) USB to UART Bridge(COM～)」と表示されているかを確認する。(**COM～**情報も必要になるため、ここで確認しておくと良い。)

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/9ca39641-c025-4b68-88c8-4b806480ea3d.png">

もし上記表示のような状態でなければ、上記の「**準備物**」内**USBドライバ**(下線付) or [ここ](https://docs.m5stack.com/en/download)からM5Stack周辺ソフトウェアのダウンロードサイトにアクセスする。その後、「**USB Driver & Open source Library**」の下部にある、「**CP210x～**」を環境に合わせてダウンロード・インストールする(下図参考、本記事ではWindows向けを使用)。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/4897b23e-32e0-47b9-bdf4-6f0d9d57ba1d.png">

# M5Burnerのインストール
M5Stackへのファームウェア書き込み用ソフトとして、本記事では「M5Burner」を使用した。
※ファームウェア書き込み方法についてはいくつかあるが、本記事ではM5Burnerのみ記載する。

[USBドライバをダウンロード先](https://docs.m5stack.com/en/download)と同じサイト内、「**UIFlow Firmware Burning Tool**」の下部にある、「M5Burner～」を環境に合わせてダウンロード・インストールする(下図参考、本記事ではWindows向けを使用)。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/45f7d475-c264-407b-8045-1686a742efb8.png">

# UIflowの書き込み(PC側)
前述のM5Burnerを使用して、実際にM5Stackにファームウェアを書き込む。
書き込み手順を以下に示す。
※本記事では**ver. 1.14.4**を使用する。

1. USBケーブルを使用してPCとM5Stackを接続する。
1. M5Burnerを起動する。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/327f522e-2f98-4b2f-9562-b5f6860da30d.png">
1. All or 使用するM5Stackに対応する機器のページを左側のタブから選択する。
→M5Stack Grayは「**CORE**」を選択する。
1. 上部の検索欄に「UIFlow」を入力する。
1. 使用するM5Stackに対応するファームウェアをダウンロードする。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/d2eafe2b-c2d7-4e76-8958-1a838658a84b.png">
※本記事では「**UIFlow2**」ではなく「**UIFlow**」を使用するため注意。
1. 「**Burn**」より、ファームウェアの書き込みを実施する。
→COMポートはデバイスマネージャーにて確認する。
　書き込み条件を設定し、「Next」をクリックする。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/31aa1dbe-490c-4cfa-99d9-720a6ee88305.png">
1. 「**WiFi Configuration**」については入力せず、「Next」をクリックする。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/31dabaef-c598-4d35-b8e3-0efde8cb01aa.png">
1. ファームウェア書き込みが終わるまで待機する。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/1da9ba16-5cf2-47fb-9d27-b3414eb29b84.png">
1. 正常終了後、「Burn Successfully, click here to return」をクリックする。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/b4e8a55a-4050-4d3b-b93d-fe7a96346213.png">

上記にて、M5Stackへのファームウェア書き込みが終了となる。
次にM5Stack側での操作手順を記載する。

# UIflowの書き込み(M5Stack側)
ファームウェア書き込みが終了したM5Stackは以下の画面遷移をする。

**起動時画面**

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/fd3ef2a8-4ba2-430f-ab23-4c823d0dd33d.jpeg">

**一定期間経過後**

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/c596396b-4b27-4f8c-a79a-a05f45d4f99f.jpeg">

初期状態では「**Wi-Fiモード**」となっている。これはWi-Fi経由でPython実行ファイルを書き込むモードとなる。本記事ではUSBからの書き込みを行うため「**USBモード**」に変更する。
USBモードへの変更手順を以下に示す。

2. M5Stack左側にある再起動スイッチ(赤色のスイッチ)を押下する。
2. 起動後直ぐに、M5Stack正面 右側のスイッチを押下する(レンチアイコン、「**Setup**」文字の下のスイッチ)。
2. 押下出来ていた場合、「**Setup**」ページへ画面が遷移する。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/48c5ed97-309f-44f4-9fd4-9a986506c81c.jpeg">
※上の画面が表示されていない場合は、再度1.から実施する。
2. 「**Switch mode**」より、初期設定の「**Internet Mode**」を「**USB Mode**」に変更する。
**変更前**
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/037d496e-416e-41c5-83e0-80e31c5f8ca7.jpeg">
**変更後**
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/08912098-2381-47ba-b878-6c9de0bafbe3.jpeg">
2. Setupメニュー最下部にある「**Reboot >>**」より再起動を実施する。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/1c18b087-f3b7-497b-a253-a2b2f3eee9aa.jpeg">
2. 変更出来ていた場合、以下のような画面が現れる。
<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/ae0c779f-f83f-4346-8113-df2a01593ec9.jpeg">

上記により、M5Stack側のセットアップが完了となる。

# VSCode拡張機能のMicroPythonのセットアップ

VSCodeの拡張機能に「**vscode-m5stack-mpy**」という、UIFlowを搭載したM5StackとUSB経由にて読み書きを可能にするものがある。

拡張機能タブより、検索欄に「M5Stack」「MicroPython」等入力すると、前述の拡張機能が表示されるため、それをインストールする。
※本記事では**ver. 1.1.10**を使用する。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/1cb5f36c-6b99-4481-a562-65ca2b25bcc3.png">

インストール完了後、VSCode内 左下に「**Add M5Stack**」表示されるのを確認する。
※M5StackとPCを未接続の場合はUSBケーブルにて接続し、接続先ポートを確認しておく。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/8a18e755-6f28-4ab7-b912-48bbf7a8f620.png">


:::note warn 
**インストール完了後に「Add M5Stack」が表示されない場合**

[VSCode 拡張機能Q&Aページ](https://marketplace.visualstudio.com/items?itemName=curdeveryday.vscode-m5stack-mpy&ssr=false#review-details)にもコメントあるように、「**Add M5Stack**」が表示されないケースがある(筆者もそうであった)。

効果があった対応を以下に示す。(詳細：[vscode-m5stack-mpy Github Issueページ](https://github.com/curdeveryday/vscode-m5stack-mpy/issues/13#issuecomment-1895764675))
※Node.jsのコマンドを使用するため、インストールの必要有。

VSCodeのターミナルを開き、
```python:VSCode ターミナル
cd .vscode/extensions/curdeveryday.vscode-m5stack-mpy-1.1.10
# 1.1.10の部分は拡張機能のバージョン、拡張機能が存在するディレクトリはようかくｎ
npm rebuild @serialport/bindings
```
を実行する。上記が正常に実行できない場合は、以下のどちらか or どちらも実行し、再度上記を実施することで解決すると考えられる。

**・実行ポリシーがないため、コマンドが実行できない場合**
```python:VSCode ターミナル
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
# 「RemoteSigned」がリターンされれば、正常に実行ポリシーは付与されている。
```
**・パッケージがないため、コマンドが実行できない場合**
```python:VSCode ターミナル
npm install -g prebuild-install
npm install node-addon-api
```

筆者環境では上記2つを対応後にコマンドを実行し、「Add M5Stack」が表示された。
参考：[【m5go】VScodeの左下に Add M5Stackが出ない時](https://zenn.dev/s3pt3mb3r/articles/54b41a21c1a4e8)
:::

M5StackをPCと接続した状態でをAdd M5Stackをクリックすると、VSCode内 上部検索欄にポート選択用のチェックボックスが現れるため、デバイスマネージャーにて確認したM5Stackとのポートを選択する。

チェックボックスの表示

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/1beb25c2-fd4c-469c-94b1-b1d7c7936a15.png">

接続しているM5Stackと対応するポートを選択して「OK」をクリック

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/66bdb5e8-e82b-4e7f-8075-74b824cb436c.png">

正常に接続が完了した場合、下図のように「**M5STACK DEVICE**」下と「Add M5Stack」の右側にそれぞれ接続したポートが表示される。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/d025503f-ce4e-4b62-88f7-241b91760d9d.png">

「M5STACK DEVICE」内では実際にM5Stack内のディレクトリを見ることができる。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/9a3dc44a-03d3-4e18-9fac-7b08a982ce4e.png">

上記にて、VSCodeとmicropythonを搭載したM5Stackの環境構築が完了した。

# 動作確認

動作確認として、デフォルトで生成されるmain.pyスクリプトを実行する(LCD上に文字列を表示する処理)。

```python: main.py
from m5stack import lcd

lcd.font(lcd.FONT_DejaVu18)
lcd.setTextColor(lcd.GREEN)
lcd.text(0, 60, "This is the default program. For online programming on UIFlow, click the reset button and hold the middle button during startup until it enters the online programming mode.")
```

スクリプトの実行は、実行したいスクリプトを選択した状態で、VSCode内 右上にある実行ボタンより可能である。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/4dd196b3-30b2-4477-af07-99b94b862045.png">

実際の動作を以下に示す。

<img width=10%><img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4040526/ecbed3b3-e454-4b7f-8153-ac2c518ca926.gif">

上記にて、VSCodeからM5Stack内のスクリプトを実行可能なことが確認できた。

# まとめ

上記にて**VSCode + MicroPython**環境を構築できた。
本環境ベースでUnit-Roller485をM5Stackから動作させることを次の目標として実装していこうと考えている。