ESP32系はBluetoothマウスやキーボードとして動作させる事が出来る。少し前は処理の組み込みがやや面倒であったが、最近は便利なライブラリも出てきている。
今回はM5Stackを使って、Bluetoothキーボードとして動かし簡単なパワーポイント操作マシンとして動かしてみる。
Bluetoothキーボードとして動かすために、下記ライブラリをインストールしておく。残念ながら2020/4/9時点ではライブラリマネージャからはインストールできないので、zip形式でインストールする。
https://github.com/T-vK/ESP32-BLE-Keyboard
後は簡単。beginで初期化してpress/releaseを呼び出すだけ。M5Stackには3つボタンがあるので、それぞれを押した際にHome、Page Up、Page Downを送信する様にしてみた。ボタン長押し等でさらに違う動きを付けたりできるが、分かり易い様基本的な処理のみにしている。
#include <M5Stack.h>
#include <BleKeyboard.h>
BleKeyboard bleKeyboard("M5 Presenter");
bool blestate = false;
void showstate(char *txt) {
M5.Lcd.setCursor(0, 120);
M5.Lcd.fillRect(0, 120, 320, 20, BLACK);
M5.Lcd.printf(txt);
}
void setup() {
M5.begin();
M5.Power.begin();
bleKeyboard.begin();
M5.Lcd.clear(BLACK);
M5.Lcd.setTextSize(2);
M5.Lcd.println("Presenter");
M5.Lcd.println("A: Home");
M5.Lcd.println("B: Page Up");
M5.Lcd.println("C: Page Down");
showstate("Disconnected");
}
void loop() {
M5.update();
if (bleKeyboard.isConnected()) {
if (!blestate) {
blestate = true;
showstate("Connected");
}
if (M5.BtnA.wasPressed()) {
bleKeyboard.press(KEY_HOME);
bleKeyboard.release(KEY_HOME);
} else if (M5.BtnB.wasPressed()) {
bleKeyboard.press(KEY_PAGE_UP);
bleKeyboard.release(KEY_PAGE_UP);
} else if (M5.BtnC.wasPressed()) {
bleKeyboard.press(KEY_PAGE_DOWN);
bleKeyboard.release(KEY_PAGE_DOWN);
}
} else {
if (blestate) {
blestate = false;
showstate("Disconnected");
}
}
}
スケッチ書き込み後M5Stackが動き始めるとBluetoothデバイスとして認識出来る様になる。Windows PCから検索するとM5 Presenterのデバイスが見つかるのでペアリングする。
後はM5Stackのボタンを押すとキーボードのHome、Page Up、Page Downキーを押したのと同じ動作になる。
動画に撮ってみた。
This post is also available in: 英語