6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

M5ATOM(ESP32)で簡易プレゼンリモコンを作ってみる

Posted at

前回のマウスに引き続き、ArduinoIDE環境用の ESP32をBLEキーボードにするライブラリ を使ってパワポやpdfでのプレゼンでページ送りをする「簡易プレゼンリモコン」を作成してみました。

作ったもの

今回もデバイスは M5Stack の小型モジュールである M5ATOM Lite を使用しました。

前回も書きましたが、M5ATOM LiteはESP32・フルカラーLED・ボタンが2.5x2.5cmのケースにコンパクトに納められており、オフィシャルストアで$5.95、 スイッチサイエンスで買っても968円とコストパフォーマンスが非常に良いのでお勧めです。

作り方

ESP32 BLE Keyboard libraryの導入

T-vk氏がgithubで公開しているので、ダウンロードしてArduino IDEのLibraryフォルダに解凍します。
ESP32 BLE Keyboard library
examplesに SendKeyStrokes というスケッチがあるので、これを参考に作成しました。

ざっくりした仕様

Amazonでプレゼンリモコンを検索すると大体2500円位しますが、まあページ送りができれば自分としては十分なので、Windows PCでのプレゼンのページ送りと戻しに特化しました。

  • M5ATOMのボタンを短押しすると次ページへ送る(右矢印キーを送信)
  • M5ATOMのボタンを長押しすると前ページへ戻る(左矢印キーを送信)
  • 長押しの時間は変数で持たせる(デバッグしやすいので)
  • PCとの接続状態やボタンの操作はM5ATOM Lite上のLEDの色を変えて知らせる

作成したスケッチ

コードは非常にシンプルです。長押し判定はせっかくなのでM5.btn関数を使いました。
ボタンのONを検出したら一定時間待って再度ボタンの状態を確認して判定しています。
**M5.Btn.wasPressed()**関数はキーの状態がOFF->ONに変化した時に1度だけ発生しますので、この関数内で処理することにより押しっぱなしで連続動作することを避けています。

M5Atom_KB_presen.ino
# include "M5Atom.h"
# include <BleKeyboard.h>  // https://github.com/T-vK/ESP32-BLE-Keyboard

BleKeyboard bleKeyboard("M5ATOM KB");  //デバイス名

const int longPress_ms = 300;  // 長押し判定時間(単位 msec)

void setup() {
  // M5.begin(SerialEnable, I2CEnable, DisplayEnable);
  M5.begin(true, false, true);
  M5.dis.drawpix(0, 0x000000);  // LED OFF

  //Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleKeyboard.begin();
}

void loop() {
  M5.update();
  if(bleKeyboard.isConnected()){
    if(M5.Btn.wasPressed()){
      // M5ATOMのボタンが押されたら一定時間待つ
      delay(longPress_ms);
      if(M5.Btn.read() == true){      // キーが押されたままだったら長押しと判定
        M5.dis.drawpix(0, 0x00f0f0);  // LED MAGENTA
        Serial.println("<-Page Back");
        bleKeyboard.write(KEY_LEFT_ARROW);
        delay(100);
      }else{                          // キーがリリースされていたら短押しと判定
        M5.dis.drawpix(0, 0xf00000);  // LED GREEN
        Serial.println("Page Forward->");
        bleKeyboard.write(KEY_RIGHT_ARROW);
        delay(100);
      }
    }
    M5.dis.drawpix(0, 0x0000f0);  // LED BLUE
  }else{
    M5.dis.drawpix(0, 0x00f000);  // LED RED
  }
  delay(10);
}

まとめ

送信するキーコードを変更すれば、パスワード入力やウインドウ操作等にも使えます。
ESP32 BLE Keyboard libraryのヘッダファイル(BleKeyboard.h)にはキー定義一覧があるので、これを参考にしてください。
「LGTM」や「ストック」、SNSでのシェアをしていただくと筆者の励みになるのでよろしくお願いします。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?