1. 概要
ArduinoLeonard互換機を使ってUSBマウスとして認識させ、
一定時間毎にピクピク動いて、PCの画面ロックを防いでみました。
1-1. 何故こんなことをしなくてはならないのか
普段、端末A
で設計書やらメールを見ながら、端末B
でコーディングしています。
なので基本的に端末B
をずっと触っているのですが、そのせいで操作されない端末A
が頻繁に画面ロックになり、とにかく解除がめんどくさい。
ロック設定も変更できないし、訳あって自作アプリケーションも動かせない...
アプリケーションがダメなら最後は物理。というわけで作ってみました。
2. 作り方
2-1. 本体(ArduinoLeonardo互換機)
マウスをエミュレートする以上、HID(Human Interface Device)として認識される必要があるのですが、ATmega32U4
を積んだArduinoなら簡単にできると書いてあったので、互換機を買ってみました。
チップは違いますが、今回の用途だとコスパ的にも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