MicroPythonでUSBマウス

pybmouse.gif

MicroPythonの動作しているSTM32のボードをUSBマウスとして動作させ、PCに接続してみました。
ボードは以前も使ったNUCLEO-F767ZIです。
これは以下のページのサンプルをそのまま使ったもので、上のように、MicroPythonのコードでPCのマウスポインタを動かすことができます。
(画像はLICEcapでキャプチャしました。)

8. Making the pyboard act as a USB mouse — MicroPython 1.9.3 documentation

USBデバイスとして動作するUSBポートは、プログラムを書き込むST-LINKではなく、ボードの反対側についているUSB端子のほうです。
PCへの接続は、以下のようにマウス用とプログラミング用の2本のUSBケーブルが必要になります。

pyb-usb-test.jpg

マウス用のUSBポートは、MicroPythonを動かしている場合、初期状態ではPCからはUSBマスストレージとして認識されます。
このストレージでアクセスできるのは、REPLからosモジュールでアクセスできるものと同じファイルシステムです。
以下のように「PYBFLASH」というドライブ名で見えています。

pybcdc.png

先に、このストレージにある「pybcdc.inf」をPCにコピーしておいてください。
マウスのデバイスドライバをインストールする際に必要になります。
次のステップ以降では、このストレージへのアクセスができなくなります。

コピーしたら、ストレージのboot.pyをメモ帳などで開いて修正します。
コメントアウトされている

#pyb.usb_mode('VCP+HID') # act as a serial device and a mouse

の先頭の#を削除して、この行を有効にして保存します。
これでリセットすると、MicroPythonはマスストレージではなくHIDデバイスとして起動します。

初回起動時はWindowsからマウスとして認識されないので、さきほどコピーしたpybcdc.infを使ってデバイスをインストールする必要があります。

以下のようなコードを入れて、osc(200,20)等と入力すると、マウスカーソルが水平方向に動きます。

USBマスストレージとしてアクセスできるように戻したい場合は、ST-LINK側からboot.pyをuPyCraftなどを使って書き換えてください。

コメント