モトグッチのバイクの日記

モトグッチでサーキットを走る日記

自作キーボード(その3)無線化してみる


先日Pro Microで作成した左右分割キーボードを1週間ほど運用してみて、

想像していたよりも良かった点、逆に気になった点が出てきました。

f:id:ugkintoki:20250803200205j:image

 

キーのレイアウトは、意外とかなり違和感なく使えた印象です。

ただ、ホームポジションは良かったのですが、

小指の上の方のキーの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から接続し、

キーマトリックスはそのまま使って、検証していきます。

f:id:ugkintoki:20250802231015j:image

 

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で使ってみると、普通に使えたので良かったです。

f:id:ugkintoki:20250802230155j:image

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

 

キーマップはこんな感じ。

後は、バッテリーを考慮したスリープ&復帰処理を考えていきます。

 

esp-nowは高速ということなので、esp-now&BLEで高速化を狙った構成にしたものの、

PCにはBLEで送信しているため、BLEの遅延は避けられず、右から左をesp-nowで高速化したものの、実質再送してる部分もあるのでBLEと大差ないかもしれず、消費電力を考えるとフルBLEのnRF52840+ZMKの構成が巷に多くなっているのかな。

 

最終的には、MX スイッチソケットの基盤を作って、ケースを作って、外出先でiPadとかと使いたいですね🌞