普段使っているPCは一定時間操作をしないと画面が黒くなってロックがかかります。ロックがかかるとパスワード入力しなければならず手間がかかります。
例えば、zoom会議中に何も操作していなかったら画面が黒くなってロック画面に切り替わろうとしたから、すぐにキーボードをタップしたということが割とあります。
事情によりOSの設定を変更することができないので、スリープを回避するには物理的にキーボードをタップしたり、マウスをクリックするしかありませんでした。
そこで、一定間隔でキーボードをタップする装置を作成しました。
用意する物
道具
- Arduino Uno Rev3 ATmega328
- USB2.0 A-Bタイプ 1m
- RCサーボRB90
- ジャンプワイヤ 70mm 3本
- 洗濯バサミ 1個
- Arduino UNO R3 透明 アクリルケース
Arduinoは電子工作でよく使われるマイコンです。サーボモーターを制御するロジックを書き込んで、サーボモーターをArduinoに接続します。
RCサーボRB90はサーボモーターです。モータの回転する角度を制御することができます。
USB2.0 A-Bタイプ はPCとArduinoを接続するために、ジャンプワイヤはRCサーボとArduinoを接続するために使用します。
洗濯バサミはRCサーボを固定するために使います。
透明アクリルケースはArduinoをホコリから保護するために購入しました。
開発環境
VSCode + PlatformIO IDE
PlatformIO IDEはVSCodeの拡張機能です。VScodeにPlatformIO IDEという拡張機能をインストールして、PlatformIO IDE上で開発しています。公式のIDEよりもビルド時間が短く便利です。
サーボモータを制御するコード
下記のコードをArduinoに書き込みます。
#include <Arduino.h>
#include <Servo.h>
Servo Servo1;
void setup() {
Servo1.attach(9);
}
void loop() {
Servo1.write(0);
delay(10UL * 60UL * 1000UL); //10m
Servo1.write(10);
delay(1000);
}
以下の制御を無限ループしています。
モータの角度を0度に変更→10分停止→モータの角度を10度に変更→1秒停止
delay関数の引数はマイクロ秒です。数値が大きい場合はULをつけないと認識しない仕様でした。
サーボモータとArduinoを接続

ジャンプワイヤを使って以下の様にサーボモータをArduinoに接続します。各色はサーボモーターの皮膜の色です。写真も参考にして下さい。
- 黄色 9ピン
- 赤色 5V
- 茶色 GND
動作確認
書き込みや接続に問題がなければコードの通りにサーボモータが回転します。キーボードをタップさせるためにサーボモーターを洗濯バサミで固定しました。
固定した状態でサーボモーターの回転角度の微調整を行いました。僕の環境では10度がベストな角度でした。
何度も使っていたらArduino側に挿したジャンパーワイヤが折れる事件が発生しました。深く刺さってピンセットでは抜けなかったので、半田ゴテと半田を使うしかありませんでした。
まとめ
自動ロックを防ぐことができる様になってかなり気が楽になりました。このキーボード自動タップ装置は非常に役立っています。簡単に作れるので同様の問題を抱えている場合は作ってみてはどうでしょうか?