パソコンのスリープをUSBのハードウェアから防止する

IT

ちょっとコーヒーを淹れたりするために席を離れ、ほんの数分後に戻った時にはもうスリープしているPC。いちいちパスワードを入力するのが億劫である。

「OSの設定を変更する」「スリープ防止アプリをインストールする」といったソフトウェア的な対策も職場環境によって不可能なこともある。そんな時は「たまにマウスを動かしてくれるロボ」を作ろう。予算は数百円だ。

買ったもの

PCにマウスとして認識させることが可能なUSB接続ボード。
今回はDigispark(ATTINY85)というものを用意した。
Amazonで二個セットが650円だった。

USB端子から飛び出す大きさは一円玉と同じぐらいなので、2センチ四方といったところ。

これをパソコンに「マウス」として認識させて、かつ、「たまに少しだけマウスが動いている」と認識させる。

手順

Arduino IDEのインストール

Arduinoの公式サイトからIDEをダウンロードする。
(Macの場合はHomebrewでもインストール可。)

Arduino - Software
Open-source electronic prototyping platform enabling users to create interactive electronic objects.

IDEにDigispark用プラグイン的なものをセットアップ

・「Preferences」→「設定」→「追加のボードマネージャのURL」に以下を追加。

http://digistump.com/package_digistump_index.json

・「ツール」→「ボード: ***」→「ボードマネージャ」に入り、「Digistump AVR Boards」をインストール。

※公式のチュートリアルは以下。

digispark:tutorials:connecting [Digistump Wiki]

コーディング

一旦、以下のように書いてみた。
様子をみながら数値を調整していこうと思う。

#include <DigiMouse.h>

void setup() {
  pinMode(1, OUTPUT);
  DigiMouse.begin();
}

void loop() {
  // インターバル
  DigiMouse.delay(59000);

  // LED点灯
  digitalWrite(1, HIGH);

  // マウスをプルッ
  DigiMouse.moveX(2);
  DigiMouse.delay(10);
  DigiMouse.moveX(-2);
  DigiMouse.delay(10);
  DigiMouse.moveX(-2);
  DigiMouse.delay(10);
  DigiMouse.moveX(2);

  // LED消灯
  digitalWrite(1, LOW);
}

注意点

・MacのUSB端子(USB3.0)に直接挿すとうまく書き込みができなかった。USB2.0のハブを経由するとうまくいった。
・Windows端末に挿す時、他のマウスがUSBに挿さっていると認識しないことがある。まず他のマウスを抜き、これを先に挿した後にマウスを挿すとうまく認識する。

【おまけ】自分で作るのが面倒なら

今回作成したものと同じような機能をもつ既存の製品でMouse Jigglerというものを見つけたが、約4000円と高額だったので買っていない。Digisparkよりもさらにコンパクトだし、経済的に余裕があるなら良い選択肢かもしれない。

コメント