3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スクリーンセーバーを動作させないデバイスを作った

Last updated at Posted at 2020-11-23

はじめに

ネットサーフィンしていると「スクリーンセーバーの動作を防ぐUSBアダプタ「忍者」が久々に入荷」という記事を見つけました。
考えてみると、オフィスでは時間によって自動でPCをロックする設定にしていますが、在宅勤務ではその必要もありません。
Arduinoを使用すれば簡単に作れそうだと思ったので、家に余っていたArduino互換機(?)で作ってみました。

想定する使用環境は以下です。

  • OS: Windows, Mac, Linux
  • ドライバをインストールしないで使える
  • 刺すだけで動作をはじめる

使ったもの

今回はDigisparkのUSB Development Boardを使用しました。ボードとUSBコネクタが一体になっており、ケーブルなどを使用せず接続できるものです。
ATTINY85というマイコンが使用されており、「Digispark ATTINY85」で検索すると様々なメーカのものがヒットします。

私はeBayで3個 AU$8.95(当時の日本円で777円)で購入しました。
eBayですと届くのに時間がかかるので、急いでいる方は少し高いですがAmazonで購入するのもいいと思います。

USB Microケーブルを使用するタイプもあるので、お好みで選んでいただいたらいいと思います。

開発

今回はWindows10で開発しています。他のOSでは動作が少し異なるかもしれません。

準備

ボードへの書き込みに「Arduino IDE」が必要ですのでインストールをしてください。

Digisparkのボードへ書き込みを行うために、Arduino IDEで設定が必要です。
DigisparkのWikiに手順が記載されているので、記載通りに進めていきます。
http://digistump.com/wiki/digispark/tutorials/connecting

設定を押して出てきた画面の「追加のボードマネージャーのURL」に以下のURLを追加します。
http://digistump.com/package_digistump_index.json

ボードマネージャーから「Digistump AVR Boards」 を追加します。ダウンロードが始まり少し時間がかかります。

ボードで「Digispark (Default - 16.5mhz)」を選択します。

環境によっては書き込みにドライバが必要になります。GitHubから入手できますので、OSに合わせてインストールしてください。https://github.com/digistump/DigistumpArduino/tree/master/tools

書き込み時の注意点

このボードは書き込み前はPCから外しておく必要があります。
Arduino IDEの「マイコンボードに書き込む」を選択した後、以下のメッセージが表示されるのでその後刺しこみます。

Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)

書き込みに成功すると以下のメッセージが表示されます。

>> Micronucleus done. Thank you!

コード

マウスカーソルを5秒おきに上下に動かすコードを書きました。

  1. マウスカーソルを上に動かす(LEDをOFFにする)
  2. 100ms待つ
  3. マウスカーソルを下に動かす(LEDをONにする)
  4. 5秒待つ
  5. 1に戻る

という流れになっています。
動作していることが分かるようにLEDが点滅するようにしています。

MOUSE_MOVE_AMOUNTでマウスの移動量、TIME_INTERVAL_Sで処理間隔(上のフローで4の秒数)を調整できます。
MOUSE_MOVE_AMOUNTを100とかに変えると動作している様子が確認できます。

手元にあったMacBook Proと開発したWindowsとは異なるWindowsマシンで動作が確認できています。ドライバのインストールも不要です。

GitHubでも公開していますのでよかったらStarを押してもらえるとテンションが上がります。
https://github.com/marc0468/BlockScreensaver

#include <DigiMouse.h>

#define MOUSE_MOVE_AMOUNT 1
#define TIME_INTERVAL_S 5

int time_interval_ms = TIME_INTERVAL_S * 1000;

void setup()
{
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  
  DigiMouse.begin();  //start or reenumerate USB
}

void loop()
{
  DigiMouse.moveY(MOUSE_MOVE_AMOUNT);
  digitalWrite(0, LOW); // LED OFF
  digitalWrite(1, LOW);
  DigiMouse.delay(100);

  DigiMouse.moveY(-1 * MOUSE_MOVE_AMOUNT);
  digitalWrite(0, HIGH); // LED ON
  digitalWrite(1, HIGH); 
  DigiMouse.delay(time_interval_ms);
}
3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?