myaonのアイコン画像
myaon 2021年02月28日作成 (2021年12月23日更新)
製作品 製作品 閲覧数 1132
myaon 2021年02月28日作成 (2021年12月23日更新) 製作品 製作品 閲覧数 1132

AtomLiteを使ったメディアコントロールデバイス

AtomLiteを使ったメディアコントロールデバイス

M5Stack Japan Creativity Contest 2020( https://info.switch-science.com/m5stack-creativity-contest )の参加賞で金のATOM Liteを貰ったので活用方法を考えた。

約1000円でZoomのミュートON、OFFを切り替えるスイッチをつくったよ。

早速AtomLiteで調べてみるとこんな記事があったので試してみた。
手順としてはVSCodeにPlatformIO IDEというプラグインを入れてこちらのサンプルプログラムを開き、Type-CケーブルでPCにAtomLiteをつないでから、COMポートを指定して書き込むという流れ。これで電源の入ったAtomLiteからBluetooth経由でZoomのミュートを切り替えれるようになりました。

キャプションを入力できます

Zoomのミュート機能はsrc/main.cpp59行目のtoggleMic()という関数で指定されており、何やらキーボード操作をしているようだ。
https://github.com/uolot/m5atom-zoom-mic-toggle/blob/master/src/main.cpp#L69

void toggleMic()
{
    # こっちはGoogleMeet用
    if (mode == HANGOUTS) {
        bleKeyboard.press(KEY_LEFT_CTRL);
        bleKeyboard.write('d');
        delay(10);
        bleKeyboard.release(KEY_LEFT_CTRL);
    }
    else {
        bleKeyboard.press(KEY_LEFT_ALT);
        bleKeyboard.write('a');
        delay(10);
        bleKeyboard.release(KEY_LEFT_ALT);
    }
}

Zoom及びGoogleMeetのショートカットキーを確認しても正しくミュート操作をしていることが分かる。

Zoom:Alt+A:オーディオをミュート/ミュート解除する
GoogleMeet:マイクをミュートまたはミュート解除する ⌘+D または Ctrl+D

つまりここの操作をメディアコントロールに割り当てれば音楽や動画の再生停止がAtomLiteから遠隔で行えるようになるわけだ。
というわけでbleKeyboardの元ライブラリhttps://github.com/T-vK/ESP32-BLE-Keyboardを漁ってみるとExampleの所にそれらしい関数が...

Serial.println("Sending Play/Pause media key...");
bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE);

あったので、これをtoggleMediaPlay()関数として設定してtoggleMic()関数と置き換える。

main.cpp/74行目付近

toggleMediaPlay(){ bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE); } void loop() { if (M5.Btn.wasPressed()) { #toggleMic(); toggleMediaPlay() fill(color);

キャプションを入力できます
キャプションを入力できます
できた。

キャプションを入力できます
キャプションを入力できます
ちなみにスマホとBluetooth接続しても使えるほかYouTube等の動画アプリでも同様に機能します。スマホVR時の画面操作し辛い問題の解消や肢体不自由の方の意思伝達装置用スイッチとしての応用なんかも出来ると思うので、活用先に迷っている方はぜひお試し下さい。

myaonのアイコン画像
山口の高専専攻科 3Dプリント/VR/IoT トビタテ12期 卓球/ロボコン ひきこもり衆∞ 観測者/Vket5/cluster住民 ひきこもりで生きていくためのものつくる
ログインしてコメントを投稿する