はじめに
WEB会議で、他の人の発言中はマイクをOFF、自分が発言するときだけマイクをON、しようとして、操作に手間取ることありませんか?というわけで、WEB会議ツールのZoom1を対象に、簡単にマイク(ミュート)のON/OFFを切り替えられるデバイスを作ってみました。
方針
WEB会議ツールによりますが、マイクのON/OFFはキーボードからのショートカットキー入力でも可能です。Zoomの場合、Macでは「Shift+Cmd+A」、Windowsでは「Alt+A」です。しかも、Zoomの場合、設定画面で「グローバルショートカットを有効化」しておくと、Zoomがバックグラウンドにあっても(Zoomにフォーカスがあたってなくても)、ショートカットキーの入力によってマイクのON/OFFを切り替えられます。
そこで今回は、このショートカットキーを入力するための専用のキーボードを作ることにしました。ただし、「キーボード」と言っても、入力するのは1つのショートカットキーだけで良いので、キー(ボタン?スイッチ?)は1つで十分です。また、両手をフリーにできると嬉しいので、足で押せるものにしてみます(ついでに、足元に置けるようBluetoothで無線化します)。
要は、「Bluetooth機能を備えたマイコン」に「足で押せるスイッチ」をつないで、ショートカットキーを1つだけ入力できるBluetoothキーボード的なものを作ることにします。
実装
ハードウェア
まず、「Bluetooth機能を備えたマイコン」としては、定番のESP322を使います(今回はプロトタイプということで、スイッチサイエンスの開発ボード3を使用)。Arduino4の開発環境でソフトが書けるのが大きなメリットで、今回も、Bluetoothキーボードを作るためのESP32用ライブラリ5を見つけたので、これをそのまま活用しました。
次に、「足で押せるスイッチ」ですが、今回は、パナソニックが電化製品を足でON/OFFするための配線器具として販売しているフットスイッチ6を使ってみました。Amazonでも購入可能(購入時点では636円でした)です。分解して以下のように配線することで、普通のスイッチとして使えます。
あくまで普通のスイッチなので、配線を「Bluetooth機能を備えたマイコン」のデジタル入力ピンにつなぐだけ。非常にシンプルです。
ソフトウェア
ESP32で動かすArduinoのスケッチは以下のとおり。
Bluetoothキーボードのライブラリ5のおかげで、非常に簡単に書けてしまいました。ありがたい。。。
パナソニックのフットスイッチがオルタネイト型7だったので、これをモーメンタリ型として使えるよう、ちょっと余計な処理が入ってます。
# include <BleKeyboard.h>
# define PIN_BTN 23
BleKeyboard bleKeyboard("Zoom Button", "none", 100);
int state = HIGH;
void setup() {
pinMode(PIN_BTN, INPUT_PULLUP);
bleKeyboard.begin();
}
void loop() {
if(bleKeyboard.isConnected()) {
if(digitalRead(PIN_BTN) != state){
// Shift + Cmd + A (Mac)
bleKeyboard.press(KEY_LEFT_SHIFT);
bleKeyboard.press(KEY_LEFT_GUI);
bleKeyboard.press('a');
/**
// Alt + A (Win)
bleKeyboard.press(KEY_LEFT_ALT);
bleKeyboard.press('a');
**/
delay(100);
bleKeyboard.releaseAll();
while(digitalRead(PIN_BTN) != state);
state = (state + 1) % 2;
}
delay(100);
} else {
delay(5000);
}
}
上記のコードをESP32に書き込むと、普通のBluetoothキーボードと同じように「Zoom Button」というデバイスがパソコンに認識されて、ボタンを押すたびに「Shift+Cmd+A」のショートカットキー入力をしてくれます。
おわりに
とっさに発言したいとき、画面操作やキーボード入力ではなく「足でボタンを押して」マイクON、って、意外と理にかなってて便利です。
-
Video Conferencing, Web Conferencing, Webinars, Screen Sharing - Zoom ↩
-
T-vK/ESP32-BLE-Keyboard: Bluetooth LE Keyboard library for the ESP32 (Arduino IDE compatible) ↩ ↩2
-
押しボタン式のスイッチのうち、ON状態を保持するタイプのスイッチが「オルタネイト型」。ON状態を保持しないタイプは「モーメンタリ型」。 ↩