M5Stack NanoC6
M5Stackシリーズで2024/03に発売された、M5NanoC6を購入しました。
▼ 公式ドキュメント
▼ スイッチサイエンスさんの販売サイト
この小ささ(小指サイズ)、機能、気になることがいっぱいです。
なんといってもそのお値段のお手ごろさに惹かれました。
Bluetoothキーボードにしてみた
ところで私のノートPCの「A」キーが不調で、扱っているうちにすぐキーキャップが外れるし、入力が効きにくくなってとても困っていました。
そこで「ちょうどキーのサイズのM5NanoC6をAキーにしてしまおう。サンプルプログラムの各色で光るのもゲーミングキーボードみたいだし!」と思って今回「A」キーが機能するというだけのBluetoothキーボードにしました。
しかし何かと実装に試行錯誤した部分があったのでここに書いておくことにしました。
M5Stack NanoC6 の Bluetooth
最初、何も考えずにM5StackやM5StickCなどでよく使っていたESP32-BLE-Keyboardライブラリ(BleKeyboard.h、下記)を使おうとしました。
するとうまくいきません。
これは使えないのだなと思い、M5NanoC6の仕様を確認しました。
スイッチサイエンスさんのサイトには、
SoC ESP32-C6FH4@RISC-V 160MHz、4M フラッシュ、Wi-Fi 6 (2.4GHz)、Zigbee 3.0、Thread 1.3、Matter、CDC
と書いてあり、M5NanoC6はESP32-C6というマイコンを使用しているようです。
ただどこにもBluetoothやBLEの表記がありません!
これは使えないのかと思いましたが、その後調べてESP32-C6にはBluetooth機能がある⇒M5NanoC6でもBluetooth使えそうということがわかりました。
ライブラリ側を修正した
ライブラリをForkして自分のところでC6用として作成しました。
ライブラリ修正内容の説明はいいのでとにかく実装したいという方は、こちらを使ってみてください。
使い方としては、
#include <BleKeyboardC6.h>
と定義して使用します。それ以外の書き方は既存のESP32-BLE-Keyboardと同じですので、他でぐぐってもよいですし、本家のReadMe (https://github.com/T-vK/ESP32-BLE-Keyboard) にも書かれています。
#define USE_NIMBLE
はしない(書かない)想定で作っています。
ライブラリの修正内容について
上記で修正した内容について記載します。
Diff(下記)を見ていただけたらそのとおりなのですが、インタフェースと認証モードを変更しています。
USE_NIMBLE
ESP32-BLE-KeyboardにはUSE_NIMBLEというものが存在します。
▼ USE_NIMBLEについて参考にさせていただいた記事
今回の修正は、私の環境の都合によりUSE_NIMBLEの設定ができなかったのですが、本来ならば今回のケースでもUSE_NIMBLEを使うべきなのかなと思っています。
私は知識が浅いのでお詳しい方にぜひ今後本家BleKeyboardを拡張していただけたらいいなぁなどと思っています。