ブラウザの Javascript を有効にして下さい。
This site requires your browser to be JavaScript enabled.

マウスの製作 ②ボディー編

今年購入した3Dプリンタでマウスのボディー作成に着手します。
足掛け3年のこのマウス製作、やっと完成できそうです(放置してただけですが…)

3Dモデリング

ボディー

後ろ側はRX-7 FD3Sのような美しい流線型!!
ですが、前の方は80年代のカマロ(3rdカマロ)のよう、いやもっと角張ってしまいました (;´Д`)
Fusion360を使いこなせていないため、角張ったところの「折り目」を外すと何故か全体が変な形になるし、後で「フィレット」で丸くしようとしてもエラーになってしまいます。直し方がわからず一旦これで妥協することに。。

ボタンはボディーに切り込みを入れるだけにしました。
だいぶ手抜きになってしまいましたが、見た目がシンプルになるのでいいですね。

サイドボタン

サイドボタンの仕組みは色々試行錯誤しましたが、最終的には下図のようにしました。
ボディーとボタンは別のパーツにして、ネジで止めます。
PLA素材は思ったよりも柔らかいので、横から位置を固定するだけで十分ボタンぽく動作します。

シャーシ

マウスカーソルを細かく動かすときは指先でコントロールするので、センサーの位置は指の付け根よりも指先の方にあった方が、意図したとおりに動かしやすいのではと考え、CMOSセンサーの位置をマウスの中央ではなく指の第一関節と第二関節の間付近に持ってきました。
もう少し指先側(図では左)にできますが、まずはこのあたりに配置して使い勝手を試してみます。

ホイール

この際なのでボディーだけでなく、縦と横のホイールも3Dプリンタで作ってみます。
こういう形は印刷しやすいし、CADを作るのも簡単ですね。

ホイールを印刷することにしたので、LED回路は取っ払いました。

ベンツのマークのようにすれば、もっと軽量化できたのかも。

組み立て

シャーシにネジ穴を印刷したので、作成したユニバーサル基盤をネジ止めすれば組み立てられます。

基板側の穴を少し大きめにして位置を調節して、ホイールがいい位置にくるようにします。

サイドホイールを固定するため、

このような部品を作ります。

  • ホイールの軸受け
  • ロータリーエンコーダの付いたユニバーサル基板を固定
  • ホイールの位置微調整

の3つを担っていて、ホイールをロータリーエンコーダで挟むようにして固定します。
ホイールの位置の微調整は、図の部品の左側の穴を軸に回転させて、サイドホイールを横方向に出したり引っ込めたりできます。
実装すると↓のようになりました。

USBケーブルを通して、全て配線してシャーシをネジ止めすれば完成です。
長かった。。

きっとまた気に入らないところが出てきて印刷し直すだろうからと、あまり使わなそうな赤のPLAで印刷しています。
最終的にはPETG素材を使って0.2mmノズルで印刷し、さらにヤスリで整えて綺麗にしたいですね。

USBケーブル

USBケーブルは、パラコードに 36AWGコード x 4本 + タコ糸を入れて作りました。
とても柔らかくて、マウスを動かしたときにケーブルの抵抗が全くないので、ワイヤレスマウスと変わらない操作感です。

買うと高いので作りましょう。
400円前後で1mのケーブルが2本作れます。

3ヶ月前(36AWGコードは2年前)に買ったときの値段です。
コロナや円安等もあってかAliExpressの品も全体的に値上がりしていますね。

パラコードはフィラメントが黒でも白でも似合いそうな 色を選びました。赤には合わないですねw
太さは4mmだと少し余るので3mmがちょうどいいかも。

あと、36AWGコードは210mAまで流せるので電気的には問題ありませんが、細すぎたので34AWGあたりがよかったかもしれません。

動作検証

チャタリング確認

チャタリングの発生有無は、

で確認できます。
ブラウザで確認できるのは便利ですね。
サイドボタンも含め全ボタンを確認できるサイトです(サイドホイールは確認できませんでした)。

Mouse Tester

Mouse Testerというセンサーの精度を視覚化するソフトウェアを使ってみます。

まずは Measure ボタンで CPI をチェックします。
定規に当てながら10cm動かすと 1290 ~ 1310 に収まりました。
PMW3360の初期化処理で、CPIに1300を指定しているため一見問題はなさそうに見えたのですが、速くマウスを動かしてCPIを測定すると結果は1100に落ちてしまいました。(これは、マウスの移動速度が速いとマウスカーソルの移動量が少なくなることを意味します)。
例えば、マウスを素早く右に動かした後に元の位置にマウスをゆっくり戻すと、マウスカーソルは元の位置から左にズレてしまいます。

マウスを速く動かすとCPIが落ちたというよりは、マイコン側ではPMW3360から取得した16bitのマウスの移動量を8bitに丸めてレポートを作成しており、素早く移動したら移動量が-127~127を超えてしまってCPIが低くなることが直接の原因だと考えます。
ここは改善の余地ありですね。(改善しました → こちら

さて、CPIのことは一旦忘れて、今後はセンサーの精度を見てみます。

となりました。
なんだか青い点が線からはみ出ていますが、

に結果の見方が書いてあり、ここの説明によれば上図の結果で問題はないみたいです。

サイドホイールの動作確認

普段は邪魔にならず、親指の第一関節を曲げるとサイドホイールを回転できます。

このホイールでExcelシートを左右にスクロール移動できたらすごく捗りそうです。
実際どんな感じかな? と、Excelを起動し、
サイドホイールを回してみたところ・・・
ん!? スクロールしない…

全く無反応でしたw
どうやらExcelは横方向のスクロールには対応していないようです。
サイドホイールの実装には結構苦労しただけに、ショックです…

何とかできないものかと、少し調べてみました。

OfficeScroll

Shift + ホイール で横方向にスクロールできるようになるOfficeのアドイン。

Microsoft Office 2019

こちらはMicrosoft純正。
Office 2019から Shift + Ctrl + ホイール で左右にスクロールできるようです。

キー組み合わせ+縦方向のホイールはありますが、サイドホイールに対応しているものは見つかりませんでした。

サイドホイールを使って左右スクロールできるように

Excelで左右にスクロールできないとなると、サイドホイールの存在価値が半減してしまいますので、何とかしましょう。

上記の OfficeScroll では、Shift + ホイール で横方向にスクロールできたので、リポジトリを clone してマウスフックの部分で WM_MOUSEHWHEEL メッセージも処理するように変更しました(WM_MOUSEHWHEELを使うには _WIN32_WINNT 定義を 0x0600 に変更します)。
ソースコードは、ビルド後イベントの AutoVer.exe のコマンドを削除すれば Visual Studio 2019 でビルドできました。
ついでに色々と気になった部分を修正して完成。

差し替えてみたところ、無事サイドホイールで左右にスクロールできました♪(Office 2016, Office 365で動作確認)

めでたしめでたし

使い勝手

しばらく使っているとイマイチなところを1つ発見。

ボタンの構造を手抜きしたせいで、下図の水色部分を押さえた場合は普通にクリックできるのですが、 付け根(ピンク色のあたり)をクリックしようとするとテコの原理で結構な力が必要になってしまいます。

デザイン時は、マウスを普通に握ったらピンク色の部分をクリックすることはないと思っていました。
でも実際は キーボード ⇔ マウス 間で手を行き来させると2~3cmは普通にズレるもので、マウスに手を移動してすぐクリックした時などはピンク色の部分をクリックしてしまうことがよくあります。

今まで気にしていませんでしたが、市販のマウスはボタンのどこを押してもほぼ同じ強さでクリックできるように作られています。すごい。
当たり前なんでしょうけど今さら気付きましたw

何とか改善したいところですね。

  1. ボタンの構造をちゃんと作る
  2. もう少しボタンの切り込みを深くする
  3. 手がずれないように慣れる

だと、1 はまたデザインからやり直す気力が今はないので、せめて 2、いや、まずは 3 で様子見としましょうか…