Arduinoで作るテレワーク向けマイクミュート切替ボタン
はじめに
初Qiita投稿です。
Web会議中に話しかけられた時に「マイクミュートされてる!解除どこだ!」って焦ることありませんか?
こっそり別の作業していたりすると特に困りますよね。
ショートカットキーもありますが、アプリによって違ったり、片手で押せない組み合わせだったりで、慌ててしまいます。
ハードウェアのボタンあると良いなって思いません?思いますよね。
検討
Arduinoを使うとUSBキーボードに出来るらしいので、ボタン押したらキー情報を送信するハードウェアを作れば良さそうですね。注意点としてUSBデバイス(HID)に対応するLeonardo系ATmega32U4を搭載したArduinoが必要です。LeonardoボードはUNOと同じサイズなので、ノートPCの隣において使うにはちょっと大きいですね。ここでは小サイズのArduino Pro Microを使うことにしました。
用意するもの
- Arduino Pro Micro
- Sparkfunの公式ボードが2千円くらいのようですが、互換品がAmazonで数百円で買えます。5V 16MHz版と3.3V 8MHz版の2種類があるようですが、今回の用途だとどちらでも可。
- プッシュスイッチ
- 押している間だけONになるモーメンタリスイッチであれば何でも良いです
- マイクのミュートだけなら1個で良いですが、せっかくなので他のショートカットも登録出来るように数個使いましょう。
- 主スイッチには秋月のこれを使いました。 http://akizukidenshi.com/catalog/g/gP-04581/
- ケース
- ブレットボードでも良いですが、やっぱりケースに入れたいですね。
- 今回は手元にあったタカチのMB型アルミケースの小さいやつを使用。
- ユニバーサル基板の切れ端
- これもケースに固定する方法があれば無くても問題なし。
- Sparkfunの公式ボードが2千円くらいのようですが、互換品がAmazonで数百円で買えます。5V 16MHz版と3.3V 8MHz版の2種類があるようですが、今回の用途だとどちらでも可。
- 押している間だけONになるモーメンタリスイッチであれば何でも良いです
- マイクのミュートだけなら1個で良いですが、せっかくなので他のショートカットも登録出来るように数個使いましょう。
- 主スイッチには秋月のこれを使いました。 http://akizukidenshi.com/catalog/g/gP-04581/
- ブレットボードでも良いですが、やっぱりケースに入れたいですね。
- 今回は手元にあったタカチのMB型アルミケースの小さいやつを使用。
- これもケースに固定する方法があれば無くても問題なし。
Amazonで買ったPro Microの互換品。ピンヘッダが付属しているところが良心的。
ハードウェア制作
プルアップ抵抗は内蔵のものを使うので、デジタルピンとグラウンドの間にスイッチを付けるだけ。
基板左側にGNDと2pin~が並んでいる部分があるので、そこを使いましょう。
プログラム作成
Arduino IDEの使い方は他に分かり易い記事がたくさんあるのでそちらを参照。
プログラムはこんな感じ。
#include "Keyboard.h"
#define BTN 4
const uint8_t btnArray[BTN] = {2,3,4,5};
const uint8_t btnSmplNum = 10;
uint8_t btnCount[BTN];
void setup() {
Keyboard.begin();
for(uint8_t i=0; i<BTN; i++) {
pinMode(btnArray[i], INPUT_PULLUP);
btnCount[i] = btnSmplNum;
}
}
void loop() {
for(uint8_t i=0; i<BTN; i++) {
if(digitalRead(btnArray[i]) == LOW) {
if(btnCount[i] != 0) {
btnCount[i]--;
}
} else {
if(btnCount[i] == 0) {
switch(i) {
case 0: // Lync Mute
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(KEY_F4);
Keyboard.releaseAll();
break;
case 1: // Launch Explorer
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('e');
Keyboard.releaseAll();
break;
case 2: // Show Desktop
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('d');
Keyboard.releaseAll();
break;
case 3: // Screenshot
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press('s');
Keyboard.releaseAll();
break;
default:
break;
}
}
btnCount[i] = btnSmplNum;
}
}
delay(10); // Sampling間隔(10ms)
}
特に工夫したところもないですが、大き目のスイッチ使っているので、
チャタリング対策で10ms間隔でキーをサンプリング。
10回連続でLOWを検出した後に、HIGHを検出したら(指を離したら)キーイベントを送信してます。
caseの中身はやりたいことに合わせて適宜変更を。
主目的はLyncのミュート切替のため、Alt+F4 を黒いボタンにアサインしています。
Zoomなら Alt+A、Skypeなら Alt+M ですかね?
動作確認
プログラムを書き込んで、パソコンにつないでみましょう。
アプリ立ち上げて黒いボタン押すとミュート切替も無事動きました。
おしまい
こんな感じで活用されています。1000円以下で作れて便利です。
プログラム自由なマクロキーボードなので、使い方は無限大ですね。
オススメです。
Author And Source
この問題について(Arduinoで作るテレワーク向けマイクミュート切替ボタン), 我々は、より多くの情報をここで見つけました https://qiita.com/dimeman/items/edbcab40270c18f1d681著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .