自作キーボード(その3)無線化してみる
先日Pro Microで作成した左右分割キーボードを1週間ほど運用してみて、
想像していたよりも良かった点、逆に気になった点が出てきました。

キーのレイアウトは、意外とかなり違和感なく使えた印象です。
ただ、ホームポジションは良かったのですが、
小指の上の方のキーのQやPを打ち易くするため小指列を大きく下げたことにより、
QやPは打ち易いものの、Zや/は打ち難い感じです。
ここはトレードオフで悩ましいです。
また、小指は縦より横に動かす方が打ちやすく、
小指に6列目に1キーだけあるTOTEMは、とてもよく考えられたキーボードなんだなぁと思いました。
あと気になったのは、左右基盤を共通にするために、片側だけでも左右対称にしたことで、親指以外の最下段に2キー増えたので、特殊キーを割り当てたのですか、
Corneには無い部分なのでなかなか慣れない&打ち難いです。
文章を打つ分にはいいのですが、特殊キーを多用するケースで微妙です。
更に、左右共通基盤にしたので、どっちがどっちか見分けがつかないので、ホームポジションキーに色違いのキーキャップを付けました。
これは色がいい感じで気に入っています。
TRRSケーブルの位置が右よりなので、配線に気を使うのも気になる点です。
そこで、次は先ずは無線化を進めてみます。
手元にESP-WROOM-32が2個あったので、これで無線化してみます。
残念ながら無線キーボードのファームウェアとしてメジャーなZMKは未対応なので、
Arduinoでプログラムを作っていきます。
幸い、ESP32にはWi-Fiもあるので、右から左を高速なWi-FiのESP-NOW、左からPCをBLEという形にしました。
左手側はPro Microを指していた部分のソケットにジャンパワイヤーでESP32から接続し、
キーマトリックスはそのまま使って、検証していきます。

ESP32のDev Kit なのでマイコンが大きいですが、
実際に使う場合は、XIAO ESP32C6とかにしようかと思います。
XIAO BLEはZMKが使えますが、
XIAO ESP32系は、XIAO BLEより安いので、
自分で使う分にはESP32系かなと。
左手側はいい感じに機能することを確認しました。
右手側はジャンパワイヤーでCol0とRow0を通電させて、右側からESP-NOWでマトリクスが左手側に送信され、右手側から受信した情報を左手側からBLEでPCに送信し、PCでYがタイプされることを確認しました。
レイヤーも機能することを確認し、
チャタリング対策にリリースのデバウンスディレイを5msほど入れて調整しました。
高速化を狙っているのでポーリングレートは1000Hzにしています。
その後、右側もジャンパーワイヤーでブレッドボードからキーボードに接続して確認すると、右側が安定せず、取りこぼしでプレスしなかったり、リリースが反応せずに連打状態になってしまうことがありました。
対策として、5msディレイを入れてESP-NOWを3回送ることで安定しました。
(後にディレイはもっと短くて良さそうだったので0.2msに変更)
ハンドシェイクは遅延が増えるので避けて、単純に3回連続送信にしました。
キーマップをちゃんと書き換えて、iPadで使ってみると、普通に使えたので良かったです。

シンプルな分割キーボードとしてのプログラムは一旦できました。
キーマップはこんな感じ。

後は、バッテリーを考慮したスリープ&復帰処理を考えていきます。
esp-nowは高速ということなので、esp-now&BLEで高速化を狙った構成にしたものの、
PCにはBLEで送信しているため、BLEの遅延は避けられず、右から左をesp-nowで高速化したものの、実質再送してる部分もあるのでBLEと大差ないかもしれず、消費電力を考えるとフルBLEのnRF52840+ZMKの構成が巷に多くなっているのかな。
最終的には、MX スイッチソケットの基盤を作って、ケースを作って、外出先でiPadとかと使いたいですね🌞