マウスジグラー
パソコンを付けたまま放置すると、一定時間で画面消灯やスリープに入ることがあります。
この動作を防ぐためにマウスを操作し、わずかにマウスポインタを動かすことを繰り返せばよいのですが、ずっと操作しづつけるのは大変です。
そこで、マウスジグラーという、マウスポインタを動かし続けるUSBデバイスがあります。
パソコンからは標準的なUSBマウスに見えるため、USBメモリなどの接続が禁止されているパソコンでも利用可能です。
マウスジグラーはAmazonなどでも取り扱いがあるのですが、怪しい輸入品が多く、手を出すのが怖そうです。
そのため、自作することにしました。
注意:オンラインゲームのチート対策ツールにチート用デバイスと認識される可能性があるため、使わないときはマウスジグラーを外しましょう。
Raspberry Pi Pico
Raspberry Pi Pico(以下、Pico)は、シングルボードコンピュータで有名なRaspberry Pi財団が出しているマイコンボードです。
1,000円ちょっとで買えるため、お手軽にデバイスを作るのに最適です。
Picoにはいくつかのシリーズがありますが、
今回は記事執筆時点で最新のPico 2を使います。
MicroPythonを導入
PicoのBootボタンを押しながら、PicoとPCをUSBケーブルで接続します。
すると、PC上ではストレージとして認識されます。
そのストレージ上に拡張子がuf2であるMicroPythonのファームウェアをコピーします。
コピーすると、自動的にストレージとしての認識が解除されます。
最新のPico2向けファームウェアは以下のサイトからダウンロードできます。
Thonnyを導入
以下のサイトからThonnyをインストールしてください。
以下、割愛しますが、ネット上でLチカなどと検索すると、ThonnyでPicoをプログラムする記事が見つかります。
PicoのLEDをチカチカ光らせることができる状態にして、次の節に移ります。
PicoをUSBデバイスとして作成
さて、ここからが本題。
MicroPythonにはマイコンをUSBデバイスとして認識させる仕組みが標準ライブラリにありますが、
USBのメッセージ処理を自分で実装する必要があり、とても大変です。
そこで、簡単にマウスとして認識させることができるパッケージを使います。
メニューバーの「ツール」から「パッケージを管理...」を開いてください。
パッケージ管理ウインドウ上部の検索ボックスに「usb_device_mouse」と入力し検索すると、
下図赤枠に導入したいパッケージが見つかるため、青色のリンクをクリックし、
インストールします。
すると、Picoのストレージ上にlib
フォルダが作られ、そこにパッケージのファイルがコピーされます。
あとは、Picoのストレージ上にmain.py
という名前でファイルを作り、
次節のソースコードを貼り付け保存します。
ソースコードの内容は、1秒ごとにLEDが点滅し、同時にマウスカースルが1ポイント分左右に動くというものです。
PicoをPCから取り出し、再度USB接続するとプログラムが自動的に動き出します。
ちなみにマウスとして認識されていても、Thonny上でプログラミングできるので、ツールバー赤色の停止ボタンを押してプログラムを停止させることができます。
ソースコード
import time
import usb.device
from usb.device.mouse import MouseInterface
import machine
led = machine.Pin(25, machine.Pin.OUT)
m = MouseInterface()
usb.device.get().init(m, builtin_driver=True)
while not m.is_open():
time.sleep_ms(100)
time.sleep_ms(1000)
while True:
m.move_by(-1, 0)
led.value(1)
time.sleep_ms(1000)
m.move_by(1, 0)
led.value(0)
time.sleep_ms(1000)