JH1LHVの雑記帳

和文電信好きなアマチュア無線家の雑記帳

スポンサーリンク

Digispark ATtiny85(Screensaver Killer 編)-1-

ちょっと席を立っただけなのに・・・
会社のパソコン画面がすぐスクリーンセーバになっちゃって。
いちいちパスワードを入れて解除するのって、メンドウなんだよなぁ~。



はい、そんなことってよくありますよね。

ということで、Digispark ATtiny85 という、超小さい HID 準拠のマイコンを使って、そんな憎きスクリーンセーバの起動を防ぐ、そんな "Screensaver Killer" なるものを作ってみました。

ただし、こういうセキュリティを回避させるようなツールを会社で使う場合、会社が定めたセキュリティポリシーに違反して、場合によってはとても厳しい処分が下されることもありますので、使用に際しその点の確認と、十分な注意をお願いします。

今は半導体高騰の影響で @300 ほどで購入できるようです。

① USB 電源又は外部電源(-5V , 7~35V)
② USB 端子内蔵
③ I/O は 6個(内2個は使用済み、プログラム転送だけなら6個使用可能)
④ Flash Memory 8K(ブートローダで 2K 使用)
⑤ I2C, SPI (USI 使用)
⑥ PWM 3個
⑦ ADC 4個
⑧ 電源 LED, 状態表示 LED(pin0 又は pin1)
⑨ HID 動作(キーボードやマウスと同様に Human Interface Device として認識)

1年前にまとめ買いしたものが、まだこんなに積みマイコンしてました。

今回作成した ”Screensaver Killer” はこんな感じのもので、マウスとかキーボードと同じようなものなのでドライバのインストールは不要で、そのまま USB ポートに挿し込むだけで、パソコンがスクリーンセーバーになるのを防ぎます。

ただこういう動作をさせるだけなら PowerShell などのスクリプトを定期的に実行させるだけでも可能ではありますが、今回作った USB タイプのメリットは、自席にいるときだけパソコンの USB ポートに挿してスクリーンセーバを止めておき、席から離れるときは USB を抜いてしっかりパソコンをロックする、といった柔軟な運用が可能になるのでスクリプトに比べて作業効率は向上し、しかもセキュリティの安全も保たれます。

 

Arduino IDE で開発するための環境準備

まず最初に、Digispark ATtiny85 を開発用のパソコンで認識できるように専用のドライバをインストールします。

github.com


私の環境は Windows なので、"micronucleus-2.0a4-win.zip" を解凍して、その中にある DPinst××.exe を実行します。

32ビット環境 → DPinst.exe
64ビット環境 → DPinst64.exe

ドライバのインストール終了後、パソコンの USB ポートに ATtiny85 を挿入すると、デバイスマネージャーには "Digispark Bootloader" が認識されます。

 

続いて Arduino IDE で開発するために、ボードマネージャをインストールします。

github.com

ボードは、Digispark(Default- 16.5mhz) を選択します。
 

書込装置は、Micronucleus を選択します。

 

一旦、サンプルスケッチの L チカで動作確認

環境が整ったので、ここで動作確認を兼ねて毎度お馴染みの L チカをやってみます。
スケッチは、Digispark_Examples → Start を書き込みます。(1秒間間隔で LED 点滅)



(スケッチ書き込み時の注意)

書き込み前に Digispark ATtiny85 はパソコンの USB ポートから抜いておき、Plug in device now... の表示が出てから、60秒以内に USB ポートに接続すれば、あとは勝手に書き込みが始まります。

書き込みが正常に終了すると、Micronucleus done. Thank you! が、画面に表示されて、1秒間隔で LED が点滅を繰り返します。

スクリーンセーバーキラー(マウスの動きをさせる)の作成

ここまできたら、あとはスケッチを書いて Digispark ATtiny85 に書き込むだけです。
マウスをちょこっとだけ動かすだけなので、数行程度の短いスケッチで作成できます。

基本的には、Digisparks のライブラリを使って、1分間隔でマウスを左右に1ピクセルだけ動かします。(1ピクセルしか動かさないので、実際のマウス操作にはなんら影響はありません。)

基本的には、たったこれだけで動きます。

もう、この数行でもキラーの機能は満たしているんですが、これだけでは寂しかったりするので、動作中の確認ができるように Pin1 の LED を2秒間隔で点滅させることにしました。ただ、デジタル出力のままだと明るすぎるので、ここは PWM のアナログ出力にして、暗めの点滅をさせることにしました。

スケッチはこんな感じになります。

しばらくこのスケッチで動かしてみて、なにか不都合なことや、機能を追加したいことが出てきたら、その都度修正していこうかと思っております。

3D Printer でケースを作成

やっぱり裸のままで使うのは・・・よくないので。
ケースを3Dプリントすることにしました。

自分で3Dモデリングするのはメンドウだし、大体こういうメジャーなマイコンのケースは、もう誰かが作って公開しているはずなので、まずはお決まりの Thingiverse で検索です。

やっぱり、いくつか公開されていました。
で、今回はその中で一番シンプルなものを選択して造形してみました。

www.thingiverse.com

ZIP には3種類の STL データが入っていますが、私は一番上の digispark_1.stl を選択しました。

赤とか、青とか・・・色が付いていた方がよかったかな。
まぁ、フィラメントを交換するのがメンドウなんで、最近はこの色ばかり使っているんですよね。

ということで、備忘録的な記事になってしまいましたが、Digispark ATtiny85 で作る "Screensaver Killer" は、一旦ここで終わりになります。