リモートワークに役立つ、スクリーンセーバーキラーの製作

# はじめに
リモートワークをしていると、会社から監視されることもあると思います。会社によってはスクリーンセーバーの起動頻度で、さぼっているかどうか見ているようですね。ただ、トイレに行くとか、子供に呼ばれるとか、ネコがひざに乗ってくるとか、不測の事態で、PCの操作ができず、スクリーンセーバーが起動してしまう場合もあります。「さぼってないのに…」という方向け、USBにさしておくだけでスクリーンセーバーの起動を回避するガジェットを作りましょう。

# とにかく動かしたい人向け

## 買い物（ハードウェア）

まずは以下のハードウェアを購入します。

* Blue Pill

Aliexpressで買うと安いのですが、このご時世、中国からの発送に30から50日かかります。仕方ないので、私はアマゾンで買いました。
[アマゾン Blue Pill](https://www.amazon.co.jp/gp/product/B07L2C811F/)
アマゾンのカスタマーレビューに「R10に1.5kohmが載っているか要確認」とあります。私が購入したものは1.5kohmでした。そうでないものが届いてしまった場合は、張り替えか、もう一つ買う必要があります。

* STLINK/V2

これもアマゾンで買いました。
[アマゾン STLINK/V2](https://www.amazon.co.jp/dp/B01L2H2L2O/)

## ソフトウェア

STM32CubeProgrammerというのをダウンロードします。

[STM32CubeProgrammer](https://www.stmcu.jp/design/sw_dev/pc_soft/58442/)

これをPCにインストールします。

## Blue Pillに書き込むファームウェア

このbinファイルをダウンロードします。

https://github.com/kotetsuy/ScreenSaverKiller/blob/master/BluePill/BluePill.bin

## 書き込み

* STLINK/V2とBlue Pillを以下のように接続します。

|STLINK/V2|Blue Pill|
|---|---|
|GND|GND|
|SWDIO|SWO|
|SWCLK|SWCLK|

* STLINK/V2とBlue Pillの両方をPCに接続します
* STM32CubeProgrammerを起動します
* ST-LINKがつながっているのを確認します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/8461e0fa-5232-e253-75bf-99f3f8be7faa.png)

* Blue PillのRESETボタンを押しっぱなしにします
* Connectボタンを押して、Blue PillのRESETボタンを離します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/661a7422-3de6-6ee4-4254-af35bd22de01.png)

* Connectインジケータがついたらつながりました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/dde8e6ce-67c8-35d9-49da-850771ed3e8d.png)

* 左下のEraseボタンを押して、Blue PillのFLASHを消去します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/d20f4a90-92a3-0e40-42bc-f9325f509f93.png)

* 左上のErasing & Programmingボタンを押します
* BrowseからダウンロードしてきたBluePill.binを選択します
* Start Programmingで書き込みます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/1be83ff6-619c-4d92-bda8-2c7f0de8feb5.png)

* 成功したら、Disconnectして、そのあとSTM32CubeProgrammerを終了します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/fe44709b-cf5d-6020-30e7-b118663181bc.png)

* Blue PillをSTLINK/V2をPCから外します
* Blue PillとSTLINK/V2の接続を外します

## 動かしてみる

Blue PillをPCに接続します。ドライバーのインストールが始まって、マウスとして認識されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263486/20a6b82c-5da7-e2de-6a26-018ab3156bdd.png)

おめでとうございます。これで完成です。5分に一度マウスカーソルを右に移動します。その1秒後に元のポジションに戻ります。

# コンパイルしたい人向け

## ソースコードのダウンロード

https://github.com/kotetsuy/ScreenSaverKiller
からソースコードを引っ張ってきます。
STM32CubeIDE用のプロジェクトですので、STM32CubeIDEをダウンロードしてコンパイルします。バージョン1.3.0で作成しています。

## 5分に一度を変更したい

main.cの

```
  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 48000;
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 60000;
  //htim1.Init.Period = 2000;
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 4;
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
```

htim1.Init.RepetitionCounterに「設定したい分数-1」を入れて再コンパイルします。今は4なので5分です。

# もっと知りたい人向け

## どんなマウス？

STM32CubeIDEのデフォルトで設定するとMicrosoft Intellimouseの設定になるようです。USB INに以下の配列を返します。

|offset|content|
|---|---|
|0|ボタン3、ボタン2、ボタン1|
|1|x(相対値)|
|2|y(相対値)|
|3|wheel|
|4|MotionWakeupと何か|

# 終わりに

これでリモートワークも~~さぼれる~~余計な心配をしなくていいですね！