zoomのミュート切り替えボタンをM5 ATOM Liteでつくってみた


M5StickCPlusでZoomのミュート&ビデオのON/OFFボタンを作るの記事をみてM5 ATOM Liteを使ってMAC用にミュート切り替えボタンを作ってみました。
M5 ATOM Liteは、ボタンひとつとLEDぐらいしかありませんが、1000円でBluetoothとWifiがついたマイコンです。千石通商やマルツからも手に入ります。

なお、WinとMACはZOOMのショートカットのキーアサインが違います。(Win Alt + A, MAC Command + Shift + A)
まあ、MACはスペースでPush To Talkができるんですが...

環境構築

M5Core Quick Start - Arduino Mac に従って環境を構築します。
シリアルポートは、tty.SLAB_USBtoUARTでなくて/dev/tty.usbserial-xxxxxxの形式でした。
(2) Search M5Stack , find it and click Installではなくて、M5Atomを検索してください。

Tools->Board->M5Stack-Core-ESP32ではなくて、Tools->Board->M5Stick-Cのほうがよいようです。(ほかだとビットレートを下げないと書き込みが失敗する)

追加ライブラリ

スケッチ-ライブラリをインクルード-ライブラリを管理から、FastLEDで検索してインストールをしてください。

ESP32-BLE-Keyboardより、最新版のESP32-BLE-Keyboard.zipをダウンロードして、スケッチ-ライブラリをインクルード-.ZIP形式のライブラリをインストールから、さきほど落としたzipファイルを指定してインストールします。

ソースコード

IDEのソースが書いてあるところに以下をコピーペーストします。"AtomKeyboard"はMACから見えるBluetoothデバイスの名前になります。長すぎるとMACから見えませんので注意してください。
エディターの上部のレボタンで検証して、→ボタンで書き込みます。
書き込みでタイムアウトとかでる場合は、ATOM LiteとのUSB-Cを抜き差しします。

#include <M5Atom.h>
#include <BleKeyboard.h>

BleKeyboard bleKeyboard("AtomKeyboard");
bool blestate = false;

void setup() {
  Serial.begin(115200);

  M5.begin(true, false, true);
  M5.dis.drawpix(0, 0x00f000); // init red

  Serial.println("Starting BLE work!");
  delay(20);
  bleKeyboard.begin();
  delay(20);

  M5.dis.drawpix(0, 0x001000); // dark red
}

void loop() {

  if (bleKeyboard.isConnected()) {
    if (!blestate) {
      blestate = true;
      Serial.println("BLE connect");
      M5.dis.drawpix(0, 0x001000);    // dark red
    }
    delay(100);
    if (M5.Btn.isPressed()) {
      Serial.println("Sending key...");
      M5.dis.drawpix(0, 0x0000f0);    // blue
      bleKeyboard.press(KEY_LEFT_SHIFT);
      bleKeyboard.press(KEY_LEFT_GUI);
      bleKeyboard.write('a');
      delay(100);
      bleKeyboard.release(KEY_LEFT_GUI);
      bleKeyboard.release(KEY_LEFT_SHIFT);
    }
     M5.dis.drawpix(0, 0x100000);    // dark green
  } else {
    if (blestate) {
      blestate = false;
      M5.dis.drawpix(0, 0x001000);    // dark red
    }
  }

  delay(100);
  M5.update();
}

おそらく以下のようにすればWINに対応したショートカットキーになるとおもいます(未確認)。

      // sending key
      bleKeyboard.press(KEY_LEFT_ALT);
      bleKeyboard.write('a');
      delay(100);
      bleKeyboard.release(KEY_LEFT_ALT);

動作確認

ツール-シリアルモニタで、Starting BLE work!とでているか確認します。
出ていなかったらATOM Liteのサイドボタンでリセットするか、USB-Cの抜き差しをします。

MACの設定からBluetooth設定を出して、AtomKeyboardと表示されているか確認をして接続します。

接続できるとシリアルモニタで、BLE Connectとでます。ATOM Liteのボタンを押すと、Sending key...と表示されます。
ここまでくれば動いているので、実際にzoomで試しましょう。