Jupyter LabでMicroPython
Nano 33 BLE Sense

概要

ArduinoでMicroPythonであれば、Arduino Lab for MicroPythonを利用するのが公式ですが、 Jupyter Labから、Arduino Nano 33 BLE Sense上のMicroPythonにアクセスしてみました。

自分で何かを作ったわけではなく、他の方が作成したものを、想定していない組み合わせて動かしただけです。たまたま動作したというのが正しく、動作保証があるわけでもありません。また、REPL以外は試していません。

システム構成

Windows 10のWSL2上でJupyter Labを実行し、Windows 10に接続したArduino Nano 33 BLE Sense上のMicroPythonを操作します。

Jupyterには、MicroPythonを操作するための、MicroPython Kernelをインストールします。このカーネルは、ESP8266/ESP32用と書いてあるのですが、Arduino Nano 33 BLE SenseのMicroPythonでも利用できました。

Jupyter kernel to interact with a MicroPython ESP8266 or ESP32 over its serial REPL.

今回利用したのは、以下のような環境です。

インストールしたのは、以下の通りです。

MicroPythonのインストール

MicroPythonをArduino Nano 33 BLE Senseで動作させるためには、MicroPythonをボードにインストール必要があります。この操作は、Windows上から実行しました。

具体的な方法は、MicroPythonのインストールを参照してください。

WSL2からUSBポートを利用する

Windows 10のUSBポートに接続したデバイスを、WSL2から利用するには、usbipdというソフトウェアを利用します。

WSL2を利用しない場合は、この部分の設定は不要です。

usbipdのインストール

usbipdをWindows 10にインストールします。

ここから、最新版のmsiファイルをダウンロードし、実行することで、インストールできました。

詳細な方法は、インストール方法を参照してください。

設定

usbipdをインストールした後は、USBポートをWSL2から操作するために、usbipdを実行します。

管理者モードで、Powershellを立ち上げます。ArduinoをPCに接続した状態で、usbipd listコマンドを実行してみます。例えば、以下のような結果になります(一部の結果だけを抜粋しています)。

1
2
3
4
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                     STATE
1-2    2341:025a  USB シリアル デバイス (COM6)               Not shared

私の環境では、COM6はArduinoを示しています。上記の場合、STATEが「Not shared」となっているので、WSL2とは共有されていません。

このとき、WSL2上で、lsusbを実行すると、私の環境では以下のようになりました。

1
2
3
4
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

次に、usbipdを使い、デバイスのbindとattachを行うことで、COM6が、WSL2から利用できるようになります。

まず、bind処理を行います。busidは、usbipd listで出てきたBUSIDです。この時点で、状態は、「Not shared」から「Shared」に更新されています。

1
2
3
4
5
PS C:\> usbipd bind --busid 1-2
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                     STATE
1-2    2341:025a  USB シリアル デバイス (COM6)               Shared

次に、attach処理を行います。この時点で、状態は、「Shared」から、「Attached」に更新されています。この状態で、WSL2からUSBポートが見えるようになります。

1
2
3
4
5
6
7
8
PS C:\> usbipd attach --wsl --busid 1-2
usbipd: info: Using WSL distribution 'Ubuntu-24.04' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Detected networking mode 'nat'.
usbipd: info: Using IP address 172.25.128.1 to reach the host.
PS C:\> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                     STATE
1-2    2341:025a  USB シリアル デバイス (COM6)               Attached

このとき、WSL2上で、lsusbを実行すると、私の環境では以下のようになりました。3行目で、Arduinoが認識されているのがわかります。

1
2
3
4
5
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 2341:025a Arduino SA Board in FS mode
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$

最後に、デバイスファイル名を確認します。

私の場合は、/dev/ttyACM0でした。

1
2
3
$ ls -l ttyACM0
crw-rw---- 1 root dialout 166, 0 Feb 24 08:01 ttyACM0
$

当該ファイルへ、jupyterを実行するユーザーがアクセスできるようにアクセス権を設定してください。

Jupyter Lab

Jupyter LabからArduino Nano 33 BLE上のMicroPythonにアクセスします。

以下では、Pythonの仮想環境(venv)を利用しています。

Jupyter Labのインストール

Jupyter Labのインストールは、こちらを参照してください。

MicroPython Kernelのインストール

Jupyter Labから、Arduino上のMicroPythonにアクセスするには、Jupyterに、MicroPython Kernelをインストールする必要があります。

https://github.com/goatchurchprime/jupyter_micropython_kernel/ にインストール方法が記載されています。

私は、以下の方法でインストールしました。

1
2
(venv)$ pip install jupyter_micropython_kernel
(venv)$ python -m jupyter_micropython_kernel.install

このあと、カーネルを確認すると、MicroPython Kernelが追加されていることがわかります。

1
2
3
4
(venv)$ jupyter kernelspec list
Available kernels:
  python3        /home/user/.local/share/jupyter/kernels/python3
  micropython    /home/user/.local/share/jupyter/kernels/micropython

Jupyter Labの起動

Jupyter Labを起動します。

1
(venv)$ jupyter lab

ブラウザが開かれない場合は、jupyter labを起動した際に表示されるURLにアクセスしてください。

Notebookの下にある、MicroPython - USBを選択します。

通常の、Jupyter Labの画面に移行します。

まず、シリアルポートと接続する必要があります。%serialconnectコマンドを実行します。

1
serialconnect [SERIAL PORT] [BAUDRATE]

私の環境では、ポートや通信速度を指定しないでも動作しました。

MicroPythonのコマンドを実行します。1つ目は「Hello World」の表示、2つ目はLチカです。

その他

  • Lチカを無限ループにしてしまうと、割り込みが効かず、ブラウザからは停止できませんでした。
  • MicroPython関連のドキュメントは、MicroPythonを参照してください。

バージョン

Hardware:Arduino Nano 33 BLE Sense
Software:Jupyter

最終更新日

August 16, 2026

inserted by FC2 system