トラックボール付きキーボードのCPIとポーリングレート
この記事は、Xの「keyballわいわい部屋」への「DPIについて、3000くらいからカーソルの移動量上がらないのですが」という投稿への自分なりの見解として記載しました。
トラックボールにせよマウスにせよ、「マウスカーソル」を高速で動かすためには、以下の2つともが高速であることが必要です。
・1インチの操作を何回カウントできるか(DPI, CPI)
・1秒間に何回データを送信できるか(ポーリングレート、パケットフレームレート)
Pro MicroやRaspberry Pi Picoの通信速度は、USB 2.0 Full-Speed準拠です。USB 2.0は、最大480 Mbps(メガビット/秒)のデータ転送速度をサポートしていますが、データパケット(フレームレート)は、最大1,000フレーム/秒の制限があります。
これでは、ゲーミングマウスのごとく、マウスカーソルが速く動くことはほとんど期待できません。
では、Keyballで、高カウントセンサーの意味がないかというと、そんなことはありません。高カウントなセンサーは、高速で動かすときだけでなく、小さい動きでマウスの操作を完了させたいときにも有用だからです。
1~5mmを「ゆっくり」微調整して動かすと、keyballで高速なセンサーの意味が出てきます。 (毎秒1,000回データをホストにリポートする。)
と言っても、ゆっくりとした動きを正確に伝えるのは、以下のような点にも気を配る必要があります。
・操作球の滑らかさ(最大摩擦力の最小化)
・レンズの清潔性
・ボールの塗装(滑らかさではなく、模様や反射)状態(センサーに反応)
結局、高速操作でも、微量操作でも、極端に制度や高速性を求めるのであれば、素直にゲーミングデバイスを購入した方がよさそうな気がします。
ところで、USB2.0Full-Speed準拠に、Keyballをお気軽に改造する方法はあるのでしょうか? USB2.0Full-Speedに対応するには、MCUの本体(Atmega32U4などのチップ)やインタフェース(USB部分)が、High-Speed対応である必要がります。 しかし、自作キーボードのファームウェアQMKでは、STM32Hx(例 STM32H7)のようなHigh-Speedデバイスはサポートされていないように見えます。 参考(QMKがサポートするMCU): https://github.com/qmk/qmk_firmware/blob/master/docs/compatible_microcontrollers.md
念のため、MCU自体がセンサーのカウント数を処理できるかどうかにも目を向けてみましょう。Atmega32U4でPMW3360を使用する場合、速度はおおよそ4MHz(16MHzのクロック周波数の1/4)となり、1秒間に4,000,000回のカウントが可能です。仮に、1カウントあたり10個の命令を実行しても、40万カウント可能ですから、少しセンサードライバー周りのコードを複雑にしたとしても、体感では遅さは感じられないでしょう。
なお、ゲーミングマウスの世界では、ProMicroより高速なコントローラーを採用し、接続もUSB2.0High-Speedや、USB3.xとなるため、ポーリングレートが4,000以上などに設定されています。
例えば、ロジクールのゲーミングマウス:Logitech G Pro X Superlight:では、25,600 DPIのセンサーと、25,000Hz(25,000回/秒)となっています。
この記事は、ChatGPTで、以下のキーワードで回答させて、それを殆ど鵜呑みにして書きました。
##Instructions
タイトル自作キーボードのファームウェアについて―キーボードのファームウェアに関する質問
キーボードのファームウェアQMK
MCUAtmega32U4
Sensor DriversPMW 3360 and PMW 3389 Sensor
##End Instruction
Atmega32U4の性能で、PMW3360 のセンサーを1秒間に何回カウントできますか?
USB2.0接続では、マウスのCPIは、最大いくつですか?
Discussion