テレワークで役立つ"マウスジグラー"をDIYしちゃおう!
はじめに
マウスジグラーというのは、一定時間ごとにマウスポインタを少しだけ動かす機能を持ったUSBデバイス。この動作により、PCを使用している状態を保ち、スクリーンセーバーの起動やスリープへの移行を防止することができます。
PCからは単なるUSBマウスとして認識されるため、セキュリティの関係で設定を変更したり、ソフトウェアをインストールしたりすることができないPCでも、問題なく使用できます。
例えば、「会社から貸与されたPCでのリモート接続において、少し離席しただけでPCがスリープしてしまい、同時にリモート接続が切断。作業を続けるためには再び接続操作をしなければならない…」といった面倒を回避することができます。
市場では製品としても出回っていますが、Digisparkというデバイスを使用すれば、少しの手間で作ることができます。
DIYと言っても、使用するのはPCだけ。何かを組み立てたり、ハンダ付けしたりする必要もありません。さらに、自分好みに設定を変更でき、ものづくりの楽しさを味わうこともできるのです。
Digisparkとは?
AVR Attiny85という超小型マイコン(マイクロコントローラ)を搭載した米Digistump社のUSB開発ボード。クラウドファンディング発祥のプロダクトですが、仕様の公開により現在流通しているのは「まず間違いなく互換機」という状況です
10円玉ほどの小さな基板には、マイコンを始めとしたパーツが搭載されており、あとはプログラムを転送すれば動き出す、半完成品となっております。さらに、本体にUSB端子を備えており(*1)、PCとの通信用としてはもちろん、完成後にはそのままUSB HID(Human Interface Device)として使用することができます。
*1 USBコネクタを搭載し、PCとの接続にケーブルを使用するタイプもあります。
本稿の目的は"マウスジグラー"のDIYですが、この場合には追加パーツをいっさい必要としません。Digisparkだけで完結します。
また、価格も1個あたり数百円と安く、気軽に手を出せるのもポイント。購入に関しては、Amazonや楽天といった大手通販サイト、電子部品・ガジェット系の通販サイトなどをあたってみましょう。また、時間はかかりますが、海外通販ならさらにお安く手配することができます。
まずは開発環境をセットアップ
Digisparkのプログラミングには、Arduino IDEというソフトウェアを使用します。本来はArduinoと呼ばれるオープンソースハードウェア用の開発環境なのですが、設定の変更でDigispark用としても使えます。
Arduino IDEは、Windows、Mac、Linuxの各環境で動きますが、ここではWindowsでの作業例をご紹介します。それでは実際にセットアップしてみましょう。
最初に行うのはDigispark用ドライバのインストール。こちらのページから、Windows用のファイルをダウンロードし、圧縮ファイルを展開したら、フォルダ内のインストーラでドライバを導入します。
続いてはArduino IDEのインストール。こちらのページから、Windows Win7 and newerをダウンロードします。ファイルは実行形式になっているので、そのままダブルクリックすればインストーラが起動します。
インストールが完了したら、Arduino IDEを起動して正しくインストールされているか確認します。なお、初回起動時にファイアウォールの警告が出る場合があります。その際にはアクセスを許可するを選択してください。
続いてはArduino IDEをDigispark用に設定します。メニューのファイルから環境設定を選択し、開いたウィンドウ下部にある追加のボードマネージャのURL:に以下のアドレスを入力してウィンドウを閉じます(OKボタン)。
http://digistump.com/package_digistump_index.json
次はArduino IDEのメニューからツール→ボード:→ボードマネージャを選択。リスト内にあるDigistump AVR Boardsをインストールします。完了したら閉じるボタンでウィンドウを閉じます。
設定完了まであと少し。図のようにツールメニューのボードでDigispark (Default - 16.5mhz)を、同メニューの書き込み装置にmicronucleusを指定します。
ここからが本番-プログラミング-
これで準備は完了。いよいよプログラミングのスタートです。と言っても難しいことはなく、以下のスケッチ(ソースコード)をArduino IDEのウィンドウにコピペするだけ。これはJeff White氏が公開しているスケッチであり、MIT Licenseに則って改変・公開させていただきました。
// DigiMouse Mouse Wiggler
// Originally wrote by Jeff White ([email protected])
// MIT License
// to write
// 1. Start without inserting Digispark.
// 2. When you see "Please plug in the device ... " message, insert Degispark.
// setting: set "mode" 0 or 1
// see http://digistump.com/wiki/digispark/tutorials/modelbi2c
#include "DigiMouse.h"
unsigned int mode = 1; //1 or 0: LED is connected pin0 or pin1 depend on model
unsigned int moveamount_px = 1;
unsigned int time_led_flash = 100; // ms
unsigned int time_waitnext = 15000; // ms
void setup() {
pinMode(mode, OUTPUT);
DigiMouse.begin();
}
void LEDon() {
digitalWrite(mode, HIGH);
}
void LEDoff() {
digitalWrite(mode, LOW);
}
void loop() {
LEDon();
DigiMouse.moveX(moveamount_px);
DigiMouse.delay(time_led_flash);
DigiMouse.moveX(-moveamount_px);
LEDoff();
DigiMouse.delay(time_waitnext);
}
なお、このスケッチでは約15秒間隔でマウスポインタを動かす設定になっています。これを変更する場合、以下の行の数値部分を書き換えればOK。
unsigned int time_waitnext = 15000
単位はミリ秒なのでご注意ください。変換には「3分30秒をミリ秒で」のようにGoogleで調べるのが簡単です。また、動作確認時にDigisparkの中央に搭載されたLEDが光らない場合、以下の行のmodeを1から0に変更します。LEDが光らなくてもプログラムとしては問題ありませんが、人間が動作を確認できなくなります。
unsigned int mode = 1
必要に応じてスケッチを修正したら、いよいよ書き込みの開始です。この時、もしDigisparkがUSBポートに接続されていたなら、いったん取り外します。
Arduino IDEのスケッチメニューからマイコンボードに書き込むを選ぶと、スケッチのコンパイルから転送準備までが自動で進みます。
準備が完了すると、Arduino IDEウィンドウ下部のメッセージ欄に以下のテキストが表示されるので、このタイミングでDigisparkをUSBポートに接続します。
Plug in device now… (will timeout in 60 seconds)
60秒あるので慌てる必要はありませんが、もしタイムアウトになった場合にはマイコンボードに書き込むからやり直します。Digisparkを認識したら転送処理は自動的に進み、以下のメッセージが表示されたら成功です。
Micronucleus done. Thank you!
他のメッセージが表示された場合、DigisparkをUSBポートから外し、もう一度マイコンボードに書き込むからやり直します。
動作を確認して完成!
最後の作業は動作確認。DigisparkをUSBポートから外し、PCのキーボードから Windows + X を押し、表示されたメニューからデバイスマネージャーを選択します。
ウィンドウ内にはずらりとデバイスが並んでいますが、マウスとそのほかのポインティングデバイスをクリックして展開し、内容を確認します。注目すべきはHID準拠マウスという項目。PCの環境により存在しなかったり、複数あったりしますが、その有無と数だけ覚えておきます。
この状態でDigisparkをPCのUSBポートに接続すると、わずかにlibusb-win32 Usb Devicesというデバイスが現れてすぐに消え、その後HID準拠マウスがひとつ増えます。これが正常な動作。DigisparkはPCから正しく認識されています。
あとはDigisparkを接続した状態でPCを放置し、スクリーンセーバーやスリープがブロックされていることを確認しておけば万全です。
これで、一応の完成となる訳ですが、むき出しの基板が気になる場合には、100円ショップなどで手に入るレジンで固めたり、適当なサイズのプラケースを加工して取り付けたりすれば使いやすさも増すことでしょう。
また、熱収縮チューブを使用すれば、ドライヤーなどで温めるだけで基板を保護することができます。サイズとしては筒の直径で約14mm、潰れた状態の幅で約22mmの熱収縮チューブが最適。色の淡い熱収縮チューブを選べばLEDの光を透過してくれるので、加工の必要もありません。
手軽かつ安価にDIYが楽しめて、しかも実用品としても使えるこのアイテム。興味を持った方には、一度お試しいただきたい電子工作でありました。
ドメインが実質0円(年間最大3,882円お得)になるサーバーセット割特典、
V2プランが初期費用無料・15%OFF(月額390円→331円)ブラックフライデーセールを展開中です。
最新のキャンペーンはこちらから
※ユーザーノートの記事は、弊社サービスをご利用のお客様に執筆いただいております。
コロナ禍の緊急事態宣言でも生活がほとんど変わらなかった、おウチ大好きテクニカル系ライター。好物はPC、スマホ、ガジェット、そしてコタツ。