今回の記事は、パパママ対象かも!?
今回は、スクリーンセーバーキラーを作ります。
ネットで調べると、いろいろな呼び方があるようです。スクリーンセーバーキラー(Screen saver killer)の他に「スリープキラー(Sleep killer)」、「マウスジグラー(USB Mouse Jiggler)」、「マウスムーバー(Mouse mover)」、「マウスふるふる(こんなふうに呼ぶ人います?)」など。
「なにそれ?何に使うの?」という方には、この記事は役に立たないと思います!?
決して、仕事をサボるために使うものではありませんので、そのへんはご理解の上、自己責任においてお使いください。
仕事中、ずっとパソコンを操作しているわけではないと思います。時には、電話をしたり、資料を見たりしている時間もあるはずで、そんなちょっとした時間でスクリーンセーバーに変わってしまい、再度、パスワードを入力してログインし直す、とか、そんな無駄な時間を減らすためのものであることを最初にお断りしておきます。
Contents
準備するもの
今回は、とにかく安く手軽に必要な機能を実現するため、小型&格安のマイコン開発ボード「Digispark」を使います。
こんな特徴があります。
- Attiny85ベースのマイコン開発ボード
- ArduinoIDEで開発できる(少し設定が必要です)
- 8KBフラッシュメモリ
- I2C、SPI
- PWM、ADC
- オンボード5V 500mAレギュレータ
- 電源LED、テスト用LED
簡単に言えば「少しだけIOピンがあって、少しだけメモリがある8ビットマイコン」という感じです。
もともとは「Digistump」という会社が作っているものですが、回路図などが公開されているため、いろいろなところからコピー品が販売されていて、とにかく安く入手できます(1個数百円~)。
本家「Digistump」のDigisparkは随分前から品切れで、はたして今後、作る気があるのかな?と言った感じ。
でも、他のメーカーからコピー品がたくさん売られていますので心配不要です。
僕のおすすめは、これ。今まで10個以上買ってハズレは一つもありませんでした。配送も国内から送ってくるため、次の日に届いたりします。
今回は、このDigisparkで「実用品」を製作します。
#前置きが長かったですね。
Digisparkについてもう少し
本家で作っているDigisparkは入手不可能なので、あちこちから購入できるコピー品を調達します。ただ、コピー品なので少し注意が必要です。例えば・・・
回路は同じだが、部品や作りの質が悪いものがある
あまりに安いものの中には部品自体の質があまり良くないものがあるようです。
1個100円くらいで売られていることもありますが、ちょっと微妙です。
また、はんだ付けがひどい物もあり、部品のズレくらいであれば、自力ではんだ付けできる方は良いですが、そうでない場合は、ちょっと困ってしまいます。
コピー品は、どれもはんだ付けがイマイチですが、最低限、動く程度のはんだ付けはしておいてほしいものです。
はんだ付けの品質は、どこも期待できません。
Digistump正規品と言って売っているものがある
今、市場に出ているものは、ほぼコピー品と思って正解です。
よくあるのが、「rev.3」と書いてあるやつです。なんとなく、正規品のように思ってしまうかもしれませんが、正規のDigisparkは「rev.1」、「rev.2」、「rev.4」があります。なぜ「rev.3」がないのか分かりませんし、コピー品がなぜ「rev.3」なのかも分かりません。まぎらわしいですね~
マイコンにブートローダーが書き込んでないものがある
ネットを見ていると「Digispark買ったけど書き込みができない」と書いている方がいらっしゃいますが、これ、おそらく「ブートローダーが書き込まれていない」のが原因だと思います。
もちろん、初期不良もあるかもしれませんが、部品点数も少なく、適当に作ったとしても、それほど不良率は高くないと考えられます。単純に、ブートローダーが書き込まれてないだけの可能性が高いです。
販売側が書き込みチェックもしないで売っている可能性もあり、10個買って、数個は書き込みできない(ブートローダーが書き込まれていない、もしくは、書き込みに失敗している?)ということもあるみたいです。
この場合、ブートローダーを書き込めばOKなんですが、そのためには、少し部品(以下参照)が必要になります。
なので、安い部品ですし、複数個買っておくことをおすすめします。1個買って、それがハズレだったりすると時間もロスりますからね。
参考までに、ブートローダーが書き込まれていないものは、以下のプログラマを使うことで書き込みが可能です。2個セットなのは、このプログラマ自体のファームウェアをアップデートするときに2個必要なので、セットで買っておくことをおススメします。
複数個買って余ったときは・・・
ご覧の通り、8ビットマイコン、少しのメモリ、少しのIOピンですので、難しいこと、複雑なことはできません。
しかし、例えば、今回のような決まった動きをするマウスのエミュレーションや、クリスマスツリーの電飾制御とか、単純でシンプルな仕事にはとても向いていると思います。
アイデア次第で、かなり楽しめるマイコンだと思っています。
僕はDigisparkをよく使っているので、今までいくつかの業者からDigisparkを購入しましたが、ココのものは今のところ、不具合品ゼロでした。ご参考まで。
Digispark開発環境の構築
ごめんなさい。やっと本題です。スクリーンセーバーキラーを作っていきましょう。
Digispark用ドライバをインストールする
最初に以下のサイトから「DPinst64.exe」をダウンロード、実行して、Digispark用のドライバをインストールします。
参考 Digispark用ドライバDigispark setthingこれを忘れると、Digisparkを認識しませんのでご注意を。
ArduinoIDEをインストールして設定する
DigisparkはArduinoIDEが利用できます。
以下からArduinoIDEをダウンロードしてインストールします。
参考 ArduinoIDE_Software_DownloadArduinoIDE_Software詳しいインストール方法は、あちこちの方がわかりやすく書かれていますので、検索してみてください。
さらに以下のページを参考にDigisparkをArduinoIDEに認識させます。
参考 Digisparkの設定Digispark setthing「Lチカ」までできればOKです。がんばって。
ArduinoIDE設定時のコツ
少し設定時のコツをお伝えしておきます。
Digispark用のドライバをインストールし、その後、ArduinoIDEをインストールする。
追加のボードマネージャ(以下のURL)を設定する。[ファイル]=>[環境設定]=>[追加のボードマネージャのURL]
http://digistump.com/package_digistump_index.json
ない場合は「ボードマネージャー」を選択し、必要なファイルをインストールする。
インストール時、ルータのセキュリティに引っかかる場合があるので、一時的にセキュリティを止める必要がある。
スケッチ→マイコンボードに書き込む、を選択する。
書き込み時、以下のエラーが出るのは、DigisparkをUSBにさすタイミングが悪い。
Assertion failed: res >= 4, file library/micronucleus_lib.c, line 100
プログラムを書き込むときには、すぐにUSBに接続するのではなく、「60秒以内に接続しろ」と言われてから接続すること(これが結構重要で、みなさんが、はまるポイントです)。
書き込みの際は、USB延長ケーブル、USB-HUBなどは使わないほうが安定する。延長ケーブルを使うと認識しないことが多々ありました。
参考情報
Digispark Rev.3はコピー品である。正規版は、1、2、4しかありません。
コピー品(Rev.3)では、LEDはPB1(ATTiny85-6番ピン)に接続されており、以下のように使います。
void setup() { pinMode(1, OUTPUT); } void loop() { digitalWrite(1, HIGH); delay(100); digitalWrite(1, LOW); delay(200); }
他のピンは以下の通り。
GPIOピン ATTiny85 アナログ その他
P0 5 (PB0) PWM I2C SDA
P1 6 (PB1) PWM
P2 7 (PB2) A/D(A1) I2C SCL
P3 2 (PB3) PWM, A/D(A3) USB D-
P4 3 (PB4) PWM, A/D(A2) USB D+
P5 1 (PB5) A/D(A0)
スクリーンセーバーキラー
ネット上にも製作記事がたくさんあり、amazonなどでも売られていますが、特徴はそれぞれです。
今回、僕が作るのは以下の特徴があります。
- パソコンからは通常のマウスに見えます。もちろん、普通のマウスとの同時併用もOKです。
- 約60秒に1回、マウスを横に1ピクセルだけ移動させます。次の60秒後に1ピクセル元に戻すので、通常のマウスを使っていても気になりません。
- 正常に動作しているときはLEDが点滅します。何らかの問題で動作が止まったりしたときにはLEDの点滅が止まるようになっています。
- LEDは60秒ごとに速い点滅と遅い点滅を交互に繰り返すようにしてあります。これで、常に正常動作を確認できます。
- LEDの点滅は、ホタルのような優しい点滅です。
ちょっとした工夫ですが、実際に使ってみて、一番良い動きをプログラムしました。
では、以下、プログラムです。
//Copyright 2021 stardust-news.net Rev.3 #include <DigiMouse.h> void setup() { DigiMouse.begin(); } void loop() { for(char k=0;k<22;k++){ for(char i = 0; i < 26; i++){ analogWrite(1, i*5); DigiMouse.delay(50); } for(char i = 25; i > 0; i--){ analogWrite(1, i*5); DigiMouse.delay(50); } } DigiMouse.moveX(1); for(char m=0;m<63;m++){ for(char j = 0; j < 26; j=j+2){ analogWrite(1, j*5); DigiMouse.delay(35); } for(char j = 25; j > 0; j=j-2){ analogWrite(1, j*5); DigiMouse.delay(35); } } DigiMouse.moveX(-1); }
プログラムを書き込んで正常動作を確認したら、熱収縮チューブをかぶせておくと良いでしょう。上の写真の右側の白いDigisparkは完成品に熱収縮チューブをかぶせた状態です。扱いやすくなりますので、おすすめです。
プログラムの利用について
・このプログラムの著作権は当サイトにあります。
・個人でのご利用はご自由にどうぞ。
・このプログラムをDigispark等に書き込んだものを販売することはお控えください。
・商用利用は禁止いたします。
・このプログラムによる損失等の責任は負いません。
その他
このDigisparkは、少ない部品点数でシンプルに作られているため、USB機器として認識させるためにソフトウェアでUSB機器をエミュレーションしています。
そのため、パソコンによっては認識できない場合がありました。おそらく、USB機器を認識する際のタイミングなどに厳しいパソコンが上手く認識しないんだと思います。
参考までに、我が家では、インテルのNUCやChromebookが、Digisparkを上手く認識しませんでした。
USBポートを変えてみたり、USB-HUBを使ってみたりすると認識する場合もありましたが、ダメな場合もありますので、そのときは諦めましょう(^^;)
以上、スクリーンセーバーキラーの製作でした。
手っ取り早く欲しい方へ
この手のものは需要が結構あるのか、いろいろと売られています。
手っ取り早く入手したい方は、このへんがおすすめです。
以下のものは僕が研究のために実際に購入してみて良かったものです。