1. 概要
ArduinoLeonard互換機を使ってUSBマウスとして認識させ、
一定時間毎にピクピク動いて、PCの画面ロックを防いでみました。
1-1. 何故こんなことをしなくてはならないのか
普段、端末Aで設計書やらメールを見ながら、端末Bでコーディングしています。
なので基本的に端末Bをずっと触っているのですが、そのせいで操作されない端末Aが頻繁に画面ロックになり、とにかく解除がめんどくさい。
ロック設定も変更できないし、訳あって自作アプリケーションも動かせない...
アプリケーションがダメなら最後は物理。というわけで作ってみました。
2. 作り方
2-1. 本体(ArduinoLeonardo互換機)
マウスをエミュレートする以上、HID(Human Interface Device)として認識される必要があるのですが、ATmega32U4を積んだArduinoなら簡単にできると書いてあったので、互換機を買ってみました。
(左:ArduinoLeonardo互換機 約1700円 右:併せて買ってしまったdigispark 約250円)
チップは違いますが、今回の用途だとコスパ的にもdigisparkのほうが良さそうですね。
2-2. スケッチ
前提条件として、ライブラリマネージャからMouseをインストールしておきます。
コードはほとんどやることないです。最低限こんなもんでどうでしょうか。
# include <Mouse.h>
# define LEDPIN 13
/** 移動させるピクセル */
const int MOVING_PIXEL = 1;
/** 待機時間(ms) */
const unsigned long WAITING_TIME = 299000; // 4分59秒
/**
* 起動時処理
*/
void setup() {
pinMode(LEDPIN, OUTPUT);
Mouse.begin();
}
/**
* 常駐処理
*/
void loop() {
// マウスを移動
Mouse.move(MOVING_PIXEL, 0, 0);
delay(1);
Mouse.move(-MOVING_PIXEL, 0, 0);
// 必要に応じてLEDで通知
// notify(100);
// 待機
delay(WAITING_TIME);
}
/**
* 本体LEDで通知する
* @param notifyingTime 通知時間(ms)
*/
void notify(int notifyingTime) {
// LED ON
digitalWrite(LEDPIN, HIGH);
// 待機
delay(notifyingTime);
// LED OFF
digitalWrite(LEDPIN, LOW);
}
現場で使うときはLチカするとまずいので、コメントアウトしておきました。
書き込み時はボードをArduino Leonardとしておくだけです。
※マウス・キーボードを操作できる仕様上、フェールセーフな作りにしておくべきだとは思います。今回はフェールセーフ(物理)でなんとかなるレベルなので割愛します。
Tips. 100均の融着テープが使える
さすがにむき出しだと怪しいので、こんな感じにDAISOの融着テープ使っています。サイズぴったり。
あとは挿して使うだけです。
3. 参考
DEKOのアヤシイおへや - https://ht-deko.com/arduino/leonardo.html