144Labの入江田です。 今回はもうちょっと便利なものをBLEデバイスで作ってみます。
Google Meet 省エネミュートボタン
Google Meetは以下のショートカットキーでマイクミュートをON/OFFできます。
この操作だけができるキーボードデバイスをArduinoのBLE機能を使って実装してみよう!
以下の実装でミュート操作キーボードとして動作させるBLE-HIDデバイスにできます。
#include <bluefruit.h> #define button 28 // <- ターゲットに合わせてください。 BLEDis bledis; BLEHidAdafruit blehid; bool hasKeyPressed = false; void callback() { uint32_t last = 0; hid_keyboard_report_t report; varclr(&report); // for Windows or Linux report.modifier = KEYBOARD_MODIFIER_LEFTCTRL; // for macOS report.modifier = KEYBOARD_MODIFIER_LEFTGUI; report.keycode[0] = HID_KEY_D; uint8_t key = digitalRead(button); Serial.print("button: "); Serial.println(key); if (key == 0 && millis() - last > 100) { last = millis(); blehid.keyboardReport(&report); blehid.keyRelease(); } } void setup() { pinMode(button, INPUT_PULLUP); Serial.begin(115200); Bluefruit.autoConnLed(false); Bluefruit.begin(); Bluefruit.setTxPower(4); // Check bluefruit.h for supported values Bluefruit.setName("BtnDevice"); // Configure and Start Device Information Service bledis.setManufacturer("144Lab, Inc."); bledis.setModel("BT Btn"); bledis.begin(); blehid.begin(); attachInterrupt(button, callback, ISR_DEFERRED | CHANGE); startAdv(); } void startAdv(void) { // Advertising packet Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); Bluefruit.Advertising.addTxPower(); Bluefruit.Advertising.addAppearance(BLE_APPEARANCE_HID_KEYBOARD); // Include BLE HID service Bluefruit.Advertising.addService(blehid); // There is enough room for the dev name in the advertising packet Bluefruit.Advertising.addName(); Bluefruit.Advertising.restartOnDisconnect(true); Bluefruit.Advertising.setInterval(32, 244); // in unit of 0.625 ms Bluefruit.Advertising.setFastTimeout(30); // number of seconds in fast mode Bluefruit.Advertising.start(0); // 0 = Don't stop advertising after n seconds } void loop() { delay(20); }
BLEデバイスやArduinoによる開発・ビルド・書き込みについてはこちらを参考に。
ペアリング(macOS例)
「キーボードの認識」ダイアログは閉じて構いません。