🖱️

M5StickC Plusで作るスライド用リモコン

2022/12/17に公開

プレゼン用にリモコンを作成したので,記録に残す.
ソースコードは以下の GitHub のリポジトリに公開されている.
https://github.com/sou1118/slide-pointer

動作している様子

M5StickC とは

M5Stack を製造/販売している M5Stack 社が作った ESP32 を搭載した小型の M5Stack である.
無印と Plus の違いは Plus の方が液晶のインチ数が大きいことである.
2022/12/17 現在,無印は日本の正規代理店であるスイッチサイエンスの通販サイトで Out of Stock となっており,M5StickC Plus のみ入手可能である.

必要な物

  • M5StickC Plus
  • Ardiuno IDE (コマンド操作できる人は任意のテキストエディタで代用可)
  • TypeC - A 変換ケーブル (M5StickC Plus への書き込みに必要)

方針

下の写真のように M5StickC Plus には 3 つのボタンがついている.このボタンに上,下スクロールを割り当てて,デバイスにマウスと認識させてスライドを操作する.
M5StickC-Plus

実装

今回マウスとして認識させるにあたり ESP32-BLE-Mouse を外部ライブラリとして読み込んだ.

#include <M5StickCPlus.h>
#include <BleMouse.h>

次に,Bluetooth デバイスを検索している時に見つけやすくするためにデバイス名を設定した.

BleMouse bleMouse("KattyanPointer");

setup()の中では

M5.begin(); 
bleMouse.begin();

を実行し,今回は画面に操作方法を書いているので

M5.Lcd.setTextSize(1);
M5.Lcd.setCursor(0,0);
M5.Lcd.println("Controller");
M5.Lcd.println(" BtnA :Next");
M5.Lcd.println(" BtnP :Reset");

とした.
loop()の中では

M5.update();

を実行し,A を押した際に下スクロールを,B を押した際に上スクロールを行う機能を実装した.

if (bleMouse.isConnected()) {
  if (M5.BtnA.wasReleased()) {
    Serial.println("Send Scroll down");
    bleMouse.move(0, 0, -1);
  }

  if (M5.BtnB.wasReleased()) {
    Serial.println("Send Scroll up");
    bleMouse.move(0, 0, 1);
  }
}

今後について

今回キーボードとしてではなくマウスとして実装した理由は

  • Marp を使うのでスクロールによってスライドのページ送りを実現したかったから
  • デジタルポインターを実装したかったから

の 2 点である.2 点目については,近日中にうまくいけば公開したい.
今後,

  • バッテリーの残量を表示させる
  • 発表者モードの切り替え

などについても今後実装していきたい.

参考文献

  1. jp7eph. ぼくのかんがえたさいきょうのレーザーポインター.

https://qiita.com/jp7eph/items/9f2b107976b29e3789f9

Discussion