本手順では、以下を前提とする。
VS Code がインストール済みであること
VS Code に Microsoft から提供されている Python 拡張機能がインストール済みであること
Chromebook の Linux(Crostini)上で動作する VS Code を使い、micro V2 向けの MicroPython プログラムを開発する環境を構築する。
この環境では、次の流れを VS Code から実行できる。
VS Code
↓
複数の .py ファイルを編集
↓
Ctrl + Shift + B
↓
古い microbit.hex を削除
↓
新しい microbit.hex を生成
↓
Downloads にコピー
↓
micro:bit の MICROBIT ドライブを確認
↓
micro:bit へ転送
↓
成功 / 失敗をターミナルに表示
対象環境:
Chromebook
ChromeOS
Crostini Linux
VS Code
micro V2
MicroPython 2.1.2
Node.js は使用しない
VS Code のターミナルで実行する。
sudo apt update
sudo apt install -y \
python3 \
python3-pip \
python3-venv \
git \
screen
例:
mkdir -p ~/maicrobit-python
cd ~/maicrobit-python
VS Code で開く。
code ~/maicrobit-python
python3 -m venv .venv
Crostini / Linux の Python 仮想環境では、実行ファイルは通常 .venv/bin/ 配下に作成される。
.venv/bin/python
.venv/bin/pip
.venv/bin/microbit-fs
仮想環境を有効化して使うこともできる。
source .venv/bin/activate
ただし、VS Code の tasks.json などは別シェルで実行されるため、仮想環境が有効化されていることを前提にしない方が確実である。
そのため、本ドキュメントでは以降、原則として .venv/bin/... を明示して実行する。
pip を更新する。
.venv/bin/python -m pip install --upgrade pip
.venv/bin/pip install micropython-microbit-fs
インストール確認:
.venv/bin/microbit-fs versions
micro V2 用として 2.1.2 が利用できることを確認する。
例:
micro:bit V2:
2.1.2
VS Code の補完や型解析を改善するため、micro Foundation の Type Stub を使用する。
mkdir -p .stubs
git clone \
https://github.com/microbit-foundation/micropython-microbit-stubs.git \
.stubs/micropython-microbit-stubs
.vscode/settings.json を作成する。
{
"python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
"python.analysis.extraPaths": [
"${workspaceFolder}/.stubs/micropython-microbit-stubs/lang/en/typeshed/stdlib"
],
"python.analysis.typeCheckingMode": "basic"
}
VS Code には Microsoft の Python 拡張をインストールしておく。
main.py
from microbit import *
display.show(Image.HEART)
while True:
if button_a.was_pressed():
display.show("A")
if button_b.was_pressed():
display.show("B")
sleep(10)
注意:
python main.py
のように PC 上の通常 Python として実行しない。
microbit モジュールは micro 上の MicroPython 環境で提供される。
推奨例:
maicrobit-python/
├── main.py
├── sensor.py
├── display_utils.py
├── build/
├── .venv/
├── .stubs/
└── .vscode/
├── settings.json
├── tasks.json
└── flash_microbit.sh
from microbit import button_a, button_b, sleep
from sensor import get_tilt
from display_utils import show_status
while True:
if button_a.was_pressed():
show_status("A")
elif button_b.was_pressed():
show_status("B")
else:
tilt = get_tilt()
show_status(tilt)
sleep(200)
from microbit import accelerometer
def get_tilt():
x = accelerometer.get_x()
if x < -300:
return "LEFT"
elif x > 300:
return "RIGHT"
else:
return "CENTER"
from microbit import display, Image
def show_status(status):
if status == "A":
display.show("A")
elif status == "B":
display.show("B")
elif status == "LEFT":
display.show(Image.ARROW_W)
elif status == "RIGHT":
display.show(Image.ARROW_E)
elif status == "CENTER":
display.show(Image.HAPPY)
else:
display.clear()
MicroPython では通常の Python と同様に、
from sensor import get_tilt
や、
import sensor
を利用できる。
micro を USB 接続する。
ChromeOS の「ファイル」アプリで MICROBIT ドライブを確認する。
必要に応じて MICROBIT を右クリックし、
Linux と共有
を実行する。
Linux 側から確認:
ls /mnt/chromeos/removable/
正常なら、MICROBITが表示される。
.vscode/flash_microbit.sh
#!/bin/bash
BUILD_FILE="build/microbit.hex"
DOWNLOAD_FILE="/mnt/chromeos/MyFiles/Downloads/microbit.hex"
MICROBIT="/mnt/chromeos/removable/MICROBIT"
echo
echo "========================================"
echo " micro:bit Build & Flash"
echo "========================================"
echo
# ----------------------------------------
# 0. 古いHEXを削除
# ----------------------------------------
echo "[0/4] 古いHEXを削除しています..."
rm -f "$BUILD_FILE"
rm -f "$DOWNLOAD_FILE"
if [ -e "$BUILD_FILE" ] || [ -e "$DOWNLOAD_FILE" ]; then
echo "❌ OLD HEX DELETE FAILED"
exit 1
fi
echo "✅ OLD HEX DELETE SUCCESS"
echo
# ----------------------------------------
# 1. HEX生成
# ----------------------------------------
echo "[1/4] HEXをビルドしています..."
mkdir -p build
if .venv/bin/microbit-fs add *.py \
--v2=2.1.2 \
--output "$BUILD_FILE"
then
echo "✅ BUILD SUCCESS"
else
echo "❌ BUILD FAILED"
exit 1
fi
# 実際に生成されたか確認
if [ ! -f "$BUILD_FILE" ]; then
echo "❌ HEX FILE NOT CREATED"
exit 1
fi
echo
# ----------------------------------------
# 2. Downloadsへコピー
# ----------------------------------------
echo "[2/4] Downloadsへコピーしています..."
if cp "$BUILD_FILE" "$DOWNLOAD_FILE"
then
echo "✅ DOWNLOAD COPY SUCCESS"
else
echo "❌ DOWNLOAD COPY FAILED"
exit 1
fi
# コピー結果を確認
if [ ! -f "$DOWNLOAD_FILE" ]; then
echo "❌ DOWNLOAD HEX NOT FOUND"
exit 1
fi
echo
# ----------------------------------------
# 3. micro:bit確認
# ----------------------------------------
echo "[3/4] micro:bitを確認しています..."
if [ ! -d "$MICROBIT" ]; then
echo "❌ MICROBIT NOT FOUND"
echo
echo "ChromeOSの「ファイル」で"
echo "MICROBIT → 右クリック → Linuxと共有"
echo "を確認してください。"
echo
exit 1
fi
echo "✅ MICROBIT FOUND"
echo
# ----------------------------------------
# 4. micro:bitへ転送
# ----------------------------------------
echo "[4/4] micro:bitへ転送しています..."
if cp "$BUILD_FILE" "$MICROBIT/microbit.hex"
then
sync
echo
echo "✅ COPY TO MICROBIT SUCCESS"
else
echo
echo "❌ COPY TO MICROBIT FAILED"
exit 1
fi
echo
echo "========================================"
echo " ✅ BUILD & FLASH SUCCESS"
echo "========================================"
echo
実行権限を付ける。
chmod +x .vscode/flash_microbit.sh
.vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "micro:bit: Build & Flash",
"type": "shell",
"command": "${workspaceFolder}/.vscode/flash_microbit.sh",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}
VS Code で、「Ctrl + Shift + B」を押す。
正常時には次のように表示される。
========================================
micro:bit Build & Flash
========================================
[0/4] 古いHEXを削除しています...
✅ OLD HEX DELETE SUCCESS
[1/4] HEXをビルドしています...
Using bundled micro:bit V2 MicroPython v2.1.2
Adding: display_utils.py
Adding: main.py
Adding: sensor.py
Written to: build/microbit.hex
✅ BUILD SUCCESS
[2/4] Downloadsへコピーしています...
✅ DOWNLOAD COPY SUCCESS
[3/4] micro:bitを確認しています...
✅ MICROBIT FOUND
[4/4] micro:bitへ転送しています...
✅ COPY TO MICROBIT SUCCESS
========================================
✅ BUILD & FLASH SUCCESS
========================================
ビルド前に、build/microbit.hex と Downloads/microbit.hex を削除する。
これにより、古いHEXが残っている → 今回のビルドが失敗 → 古いHEXを新しいものと誤認という事故を防止できる。
削除後に、
if [ ! -f "$BUILD_FILE" ]; then
で新しい HEX が本当に生成されたか確認する。
次のように直接 Downloads を出力先にすると、
.venv/bin/microbit-fs add *.py --v2=2.1.2 --output /mnt/chromeos/MyFiles/Downloads/microbit.hex
環境によっては次のエラーが発生する。
ValueError: '/mnt/chromeos/MyFiles/Downloads/microbit.hex' is not in the subpath of '/home/.../maicrobit-python'
原因は、microbit-fs が処理終了時に出力先を現在の作業ディレクトリからの相対パスとして表示しようとする処理にある。
そのため、本環境では、プロジェクト内 に build/microbit.hexを作成し、Downloads/microbit.hex へコピーという方式を採用する。
生成された HEX に複数の .py ファイルが含まれているか確認できる。
.venv/bin/microbit-fs list build/microbit.hex
例:
main.py
sensor.py
display_utils.py
micro が Linux 側からシリアルデバイスとして見えているか確認する。
ls /dev/ttyACM*
例:
/dev/ttyACM0
シリアルモニタを開く。
screen /dev/ttyACM0 115200
MicroPython 側:
from microbit import *
while True:
print(
running_time(),
accelerometer.get_x(),
accelerometer.get_y(),
accelerometer.get_z()
)
sleep(100)
VS Code ターミナルに値が表示される。
ライントレースや PID 制御を行う場合は、次のように分割すると管理しやすい。
main.py
motor.py
line_sensor.py
pid.py
役割例:
main.py
└─ 全体の動作シーケンス
motor.py
├─ 左モーター
├─ 右モーター
├─ 前進
├─ 後退
└─ 停止
line_sensor.py
├─ ラインセンサー取得
└─ センサー補正
pid.py
├─ PID演算
├─ 誤差管理
└─ PIDリセット
config.py
├─ KP
├─ KI
├─ KD
├─ BASE_SPEED
└─ 各種しきい値
今後は基本的に次の操作だけでよい。
1. VS Code を開く
2. main.py や各モジュールを編集
3. Ctrl + Shift + B
4. ターミナルで確認
✅ OLD HEX DELETE SUCCESS
✅ BUILD SUCCESS
✅ DOWNLOAD COPY SUCCESS
✅ MICROBIT FOUND
✅ COPY TO MICROBIT SUCCESS
5. micro:bit の動作を確認
6. 必要ならシリアルログを確認
7. コードを修正
8. 再度 Ctrl + Shift + B
❌ MICROBIT NOT FOUND
確認項目:
ls /mnt/chromeos/removable/
MICROBIT が無い場合は ChromeOS のファイルアプリで micro を Linux と共有する。
❌ BUILD FAILED
Python ファイルや microbit-fs の処理を確認する。
手動実行:
.venv/bin/microbit-fs add *.py \
--v2=2.1.2 \
--output build/microbit.hex
❌ DOWNLOAD COPY FAILED
確認:
ls /mnt/chromeos/MyFiles/Downloads
Linux から ChromeOS の Downloads が見えるか確認する。
❌ COPY TO MICROBIT FAILED
確認:
ls -l /mnt/chromeos/removable/MICROBIT
micro の接続状態と Linux 共有状態を確認する。
COPY TO MICROBIT SUCCESS は、Linux 側の cp コマンドが正常終了したことを示す。
micro の MICROBIT ドライブは通常の USB メモリとは異なり、HEX を受信すると本体へ書き込み処理を行う。
そのため、転送後に microbit.hex がドライブ上に残らない場合があっても、それだけで失敗とは判断しない。
実際の確認は、
✅ COPY TO MICROBIT SUCCESS
↓
micro:bit の書き込みLED動作
↓
プログラム起動
までを見る。
最終構成:
Chromebook
│
├─ ChromeOS
│
│ ├─ Downloads
│ │ └─ microbit.hex
│ │
│ └─ MICROBIT
│
└─ Crostini Linux
│
└─ VS Code
│
├─ main.py
├─ sensor.py
├─ display_utils.py
├─ その他 .py
│
├─ .venv
│ └─ microbit-fs
│
├─ build
│ └─ microbit.hex
│
└─ .vscode
├─ settings.json
├─ tasks.json
└─ flash_microbit.sh
これにより、VS Code 上で micro V2 用 MicroPython プログラムを複数ファイルで管理し、Ctrl + Shift + B でビルドから micro 転送まで実行できる。
本ドキュメント作成時点で使用している主要構成:
micro:bit : V2
MicroPython : 2.1.2
Python : 3.11 系
OS : ChromeOS + Crostini Linux
Editor : VS Code
Build tool : micropython-microbit-fs(.venv/bin/microbit-fs)