★ テレワークの味方(!?)、Arduino Leonardoでスクリーンセーバーキラー(マウスジグラー)の製作!(改良バージョン) ★

今回の記事は、前回に引き続き、パパママ対象かも!?

前回のスクリーンセーバーキラーの記事に対して、た~くさんの反響をいただきました。ありがとうございます。

その記事はこちら。

★ テレワークの味方(!?)、Digisparkでスクリーンセーバーキラー(マウスジグラー)の製作! ★

前回の記事では、Digisparkという小さなデバイスを使いましたが、開発環境を作るのがちょっと難しかったかも知れません。また、使うPCによっては上手く認識しないという弱点もありました(特にChromebookはダメな可能性が高かった)。

そこで、今回は、開発環境の構築も簡単で、Chromebookでも使える(可能性が高い)「改良バージョン」の製作方法をご紹介しようと思います。

前回、上手くいかなかった方も、これなら上手くいくと思います。前の記事と見比べながら、どちらを使うか選んでいただければと思います。


さて、この手のものは、ネットで調べると、いろいろな呼び方があるようです。スクリーンセーバーキラー(Screen saver killer)の他に「スリープキラー(Sleep killer)」、「マウスジグラー(USB Mouse Jiggler)」、「マウスムーバー(Mouse mover)」、「マウスふるふる」、「マウスぴくぴく(こんなふうに呼ぶ人います?)」など。

「なにそれ?何に使うの?」という方には、この記事は役に立たないと思います!?

決して、仕事をサボるために使うものではありませんので、そのへんはご理解の上、自己責任においてお使いください。

仕事中、ずっとパソコンを操作しているわけではないと思います。時には、電話をしたり、資料を見たりしている時間もあるはずで、そんなちょっとした時間でスクリーンセーバーに変わってしまい、再度、パスワードを入力してログインし直す、とか、そんな無駄な時間を減らすためのものであることを最初にお断りしておきます。

準備するもの

今回は、安さよりも、製作が簡単で、多くのPCに対応できることを目的として、以下のものを使用します。

こんな特徴があります。

  • ATmega32u4(16MHz)ベースのマイコン開発ボード
  • AuduinoLeonardoとして認識する。
  • ArduinoIDEで開発できる(基本的な設定でOK)
  • 32KBのフラッシュメモリ
  • 2.5KBのSRAM、1KBのEEPROM
  • I2C、SPI
  • PWM、ADC
  • USB機能内蔵(これが重要!)
  • 電源LED、テスト用LED

簡単に言えば「USBポートに直接接続できる、そこそこ使える性能の8ビットマイコン」という感じです。前回使ったDigisparkと比べると、かなりの高性能になっています。

なので、スクリーンセーバーキラーに使うだけでは、ちょっともったいない気もしますが、価格も個人で使う数個であれば10倍も20倍も変わるわけではないので、メリットのほうが大きいと思います。

ネットを探すと、たくさんの種類が出てきますが、この中でも一番良さげなものは以下のものです。今回の記事もこのデバイスを使っています。大体、1個700円~900円で買えます。

見た目そっくりで、似たようなものでもっと安いものもありますが、LEDが2個ではなく1個だったり、ピン配置が異なっていたりしますので、まずは、これで作ってみることをおすすめします。

Aideepen Beetle BadUSBキーボードプロマイクロATMEGA32U4モジュール Mini開発拡張ボードArduinoLeonardoR3
Aideepen

今回の記事で使用したもの&僕のおすすめは、これ。今まで10個以上買ってハズレは一つもありませんでした。配送も国内から送ってくるため、次の日に届いたりします。3個セットもあり、予備も含めて買っておくことをおすすめします。

Aideepen 3個 Beetle BadUSBキーボードプロマイクロATMEGA32U4モジュール Mini開発拡張ボードArduinoLeonardoR3
Aideepen

ブートローダーを再度書き込みするには?

今回のデバイスに使われている「ATmega32u4」は前回のDigisparkと異なり、マイコンに最初からメーカーがブートローダーを書き込んでいます。なので、Digisparkでよくあった「ブートローダーの書き込みに販売店が失敗していて、すぐに使えないものがある」というトラブルは、ほぼ発生しないと思われます。

ただ、何らかの理由でブートローダーを再度書き込みたいなど、そんな場合には、以下のプログラマを使うことで書き込みが可能です。2個セットなのは、このプログラマ自体のファームウェアをアップデートするときに2個必要なので、セットで買っておく方が良いと思います。

HiLetgo 2個セット AVR Atmega プログラムUSBasp 10ピン USB プログラマー [並行輸入品]
HiLetgo

開発環境の構築

ごめんなさい。やっと本題です。スクリーンセーバーキラーを作っていきましょう。

今回は、Digisparkのときよりもずっと簡単です。

ArduinoIDEをインストールして設定する

今回のデバイスではArduinoIDEが利用できます。

以下からArduinoIDEをダウンロードしてインストールします。

参考 ArduinoIDE_Software_DownloadArduinoIDE_Software

詳しいインストール方法は、あちこちの方がわかりやすく書かれていますので、検索してみてください。

まずは、Lチカ

ArduinoIDEをインストールしたら、まずは「Lチカ(LEDチカチカ)」で開発環境の確認をします。

Auduino IDEを起動して、デバイスをPCに接続する。

しばらくしてから、デバイスマネージャーでCOMポートを確認する。

IDE設定にて、ボードを「Arduino Leonardo」として設定する。
#ArduinoMicroとして設定すると、USB機器として認識しなくなります。

以下のLチカプログラムを入力し、書き込みをする。

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(200);
}

書き込みが終わると、自動的にリセットがかかり、Lチカプログラムが起動して動作する。

次回からは、Arduino Leonardoとして認識する。

#ArduinoIDEでプログラムを書き込むときは、よく見ると「Arduino Micro bootloader(COMx)」となっており、書き込み時だけ、ブートローダが反応していることがわかる。このデバイスは間違って削除しないように。

書き込みの際は、USB延長ケーブル、USB-HUBなどは使わないほうが安定する。延長ケーブルを使うと認識しないことがありました。

スクリーンセーバーキラーの製作

スクリーンセーバーキラーは、ネット上にも製作記事がたくさんあり、amazonなどでも売られていますが、特徴はそれぞれです。

今回、僕が作るのは以下の特徴があります。

  • パソコンからは通常のマウスに見えます。もちろん、普通のマウスとの同時併用もOKです。
  • 約60秒に1回、マウスを横に2ピクセルだけ移動させます。次の60秒後に2ピクセル元に戻すので、通常のマウスを使っていても気になりません。
  • 正常に動作しているときはLEDが点滅します。何らかの問題で動作が止まったりしたときにはLEDの点滅が止まるようになっています。
  • LEDは60秒ごとに速い点滅と遅い点滅を交互に繰り返すようにしてあります。これで、常に正常動作を確認できます。
  • LEDの点滅は、ホタルのような優しい点滅です。

ちょっとした工夫ですが、実際に使ってみて、一番良い動きをプログラムしました。

では、以下、プログラムです。

// Copyright 2021 stardust-news.net Rev.3
// For BEETLE BadUSB Micro ATMEGA32U4-AU Development Expansion Module Board

#include "Mouse.h"

void setup() {
  Mouse.begin(); 
}

void loop() {  
for(char k=0;k<22;k++){
  for(char i = 0; i < 26; i++){
    analogWrite(LED_BUILTIN, i*5);
    delay(50);
  }
  for(char i = 25; i > 0; i--){
    analogWrite(LED_BUILTIN, i*5);
    delay(50);
  }
}
  Mouse.move(2,0,0);

for(char m=0;m<63;m++){
  for(char j = 0; j < 26; j=j+2){
    analogWrite(LED_BUILTIN, j*5);
    delay(35);
  }
  for(char j = 25; j > 0; j=j-2){
    analogWrite(LED_BUILTIN, j*5);
    delay(35);
  }
}
  Mouse.move(-2,0,0);
}

プログラムを書き込んで正常動作を確認したら、熱収縮チューブをかぶせておくと良いでしょう。上の写真の上側の白いデバイスは完成品に熱収縮チューブをかぶせた状態です。扱いやすくなりますので、おすすめです。

プログラムの利用について

・このプログラムの著作権は当サイトにあります。
・個人でのご利用はご自由にどうぞ。
・このプログラムを書き込んだものを販売することはお控えください。
・商用利用は禁止いたします。
・このプログラムによる損失等の責任は負いません。

認識しないときは?

今回使ったデバイスは、前回のDigisparkと異なり、USB機能を内蔵したマイコンを使っているため、大抵のPC等で認識します。実際、我が家にある様々なPC等で上手く認識し、動いています。

しかし、全ての機器での動作確認は行っていないため、中には、認識しないPC等もあるかも知れません。

その場合は、USBポートを変えてみたり、USB-HUBを使ってみたりすると認識する場合もあると思いますので、試してみてください。それでもダメな場合は諦めましょう(^^;)

以上、スクリーンセーバーキラーの製作でした。

手っ取り早く欲しい方へ

この手のものは需要が結構あるのか、いろいろと売られています。

手っ取り早く入手したい方は、このへんがおすすめです。

以下のものは僕が研究のために実際に購入してみて良かったものです。

FLINT スクリーンセーバーキラー (忍者)
FLINT
FLINT スクリーンセーバーキラー (スイッチ付き)
FLINT

コメントはお気軽にどうぞ(メールアドレスは公開されません)