編集履歴一覧に戻る
myaonのアイコン画像

myaon が 2021年02月28日14時10分28秒 に編集

初版

タイトルの変更

+

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

タグの変更

+

AtomLite

+

秋葉原2021

メイン画像の変更

メイン画像が設定されました

本文の変更

+

M5Stack Japan Creativity Contest 2020( https://info.switch-science.com/m5stack-creativity-contest )の参加賞で金のATOM Liteを貰ったので活用方法を考えた。 > [約1000円でZoomのミュートON、OFFを切り替えるスイッチをつくったよ。](https://note.com/nakme/n/n80ae1c8c6e01) 早速AtomLiteで調べてみるとこんな記事があったので試してみた。 手順としてはVSCodeにPlatformIO IDEというプラグインを入れて[こちらのサンプルプログラム](https://github.com/uolot/m5atom-zoom-mic-toggle)を開き、Type-CケーブルでPCにAtomLiteをつないでから、COMポートを指定して書き込むという流れ。これで電源の入ったAtomLiteからBluetooth経由でZoomのミュートを切り替えれるようになりました。 ![キャプションを入力できます](https://camo.elchika.com/60df1e1093e1f3d376fe9f6009832a15cdf8ff79/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656631306632662d356164392d343539322d613131332d6332353130373234613762322f61386434633766332d623935342d346337612d396431632d623866316137613130353437/) Zoomのミュート機能はsrc/main.cpp59行目のtoggleMic()という関数で指定されており、何やらキーボード操作をしているようだ。 https://github.com/uolot/m5atom-zoom-mic-toggle/blob/master/src/main.cpp#L69 ```python: 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:オーディオをミュート/ミュート解除する マイクをミュートまたはミュート解除する ⌘+D または Ctrl+D つまりここの操作をメディアコントロールに割り当てれば音楽や動画の再生停止がAtomLiteから遠隔で行えるようになるわけだ。 というわけでbleKeyboardの元ライブラリ[https://github.com/T-vK/ESP32-BLE-Keyboard](https://github.com/T-vK/ESP32-BLE-Keyboard)を漁ってみるとExampleの所にそれらしい関数が... ```python: Serial.println("Sending Play/Pause media key..."); bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE); ``` あったので、これをtoggleMediaPlay()関数として設定してtoggleMic()関数と置き換える。 ```python:main.cpp/74行目付近 toggleMediaPlay(){ bleKeyboard.write(KEY_MEDIA_PLAY_PAUSE); } void loop() { if (M5.Btn.wasPressed()) { #toggleMic(); toggleMediaPlay() fill(color); ``` ![キャプションを入力できます](https://camo.elchika.com/8ac4cb2a48612be61ae3e94440bc698bb36f23da/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656631306632662d356164392d343539322d613131332d6332353130373234613762322f66356432313738612d633462632d346664622d383332322d363033613761663331343566/) ![キャプションを入力できます](https://camo.elchika.com/268f58234908bd695351919df2bfb3a5caca5078/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656631306632662d356164392d343539322d613131332d6332353130373234613762322f64306461343863312d316338302d343430362d393230612d353035373336376464613864/) できた。 ![キャプションを入力できます](https://camo.elchika.com/5360fd25239c442c5bb519dbfeda232651dd4a49/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656631306632662d356164392d343539322d613131332d6332353130373234613762322f63323533653366362d616632352d343235342d626339382d303336343765343231623334/) ![キャプションを入力できます](https://camo.elchika.com/94db96f89004d1a4fce2bc200d625040097640b2/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f64656631306632662d356164392d343539322d613131332d6332353130373234613762322f33356664326634352d366237652d343432322d623632392d656437653332313837396263/) ちなみにスマホとBluetooth接続しても使えるほかYouTube等の動画アプリでも同様に機能します。スマホVR時の画面操作し辛い問題の解消や肢体不自由の方の意思伝達装置用スイッチとしての応用なんかも出来ると思うので、活用先に迷っている方はぜひお試し下さい。