Fusion360用3Dマウスの自作

以前にキーボードを制作しましたが、今回は「3Dマウス」です。
前回と同じく左手用デバイスです。少し解説すると、

  • 3D-CAD作業において、通常のマウスを操作する右手の負担は非常に高い。
  • 「3Dマウス」を併用すると、ビューを変える操作を左手に分散できるので、作業効率が上がる。
  • 通常のマウスでのビュー操作では不可能な、ズーム/移動/回転の同時操作が可能。

らしいです。
Fusion360スペシャリストの方々と会話する機会がありました。多くの方々が
3Dマウスをオススメされており、興味湧いてきたのですが、大きなハードルもあります。

  • 代表的なメーカー(3Dconnexion)さんの最も安いモデルでも15k円くらい
    (5k円のマウスでも躊躇するチキンな私には高価過ぎる)
  • 操作に慣れるまでが「とにかく大変」らしい
  • メーカーの方も認めるほどで、挫折して使わなくなる人も多いとか(!)

デモ機を試しに触らせてもらいました。
すぐには感覚と操作が一致せず、画面からオブジェクトが見切れがちで、なかなか
難しい。。。。練習してみたいけど、無駄になるかも知れないし、高いよなぁ。

と云う訳で?作ってみる事にしました。

構想

自作キーボードを組み立てた時に、使用マイコンProMicroについて調べてたら
キー押下だけでなくマウス挙動も可能という事が分かりました。
ProMicroを使えば、3Dマウスも作れるんじゃないか?と考えた訳です。

2タイプ作ってみた

次の2タイプを制作しました。

f:id:shk-maker:20191012142131j:plain

ゲームコントローラ風」は、ズーム/移動/回転のボタンを押しながら
ジョイスティックを倒すだけの仕様です。
設計も簡単そうだし、むしろ操作しやすいのではと考えていました。
実際に使ってみると、単機能のみなら簡単ですが、ズーム&移動など同時操作は大混乱。

「市販の3Dマウス風」は、つまみを動かして操作する仕様です。
デモ機では苦戦しましたが、やはり、こちらの方が操作しやすいですね。
流石、メーカーさんの設計は正しい(そりゃそうだ)

ただし、どちらも中身は、実は普通のマウスのエミュレーターです。
Fusion360の場合、移動も回転も真ん中ボタンとマウス操作が必要ですが、
重複するので同時に命令できません(少なくとも私のスキルでは不可能)
ズーム&移動、ズーム&回転は理論上可能。
本物の3Dマウスを完璧に再現するのは無理でした。メーカーさんスゲー。

部品構成

どちらも部品点数としては少なく、シンプルな構成です。

アイテム 数量 備考
マイコンProMicro 1個
大きめタクトスイッチ 3個
スイッチカバー 3個
ジョイスティックモジュールA 1個 傾けるタイプ
ボルト&ナット 数本
3Dプリンタ部品 2点 右側と左側に分割
  • 市販の3Dマウス風
アイテム 数量 備考
マイコンProMicro 1個
タクトスイッチ 1個
ジョイスティックモジュールA 1個 傾けるタイプ
ジョイスティックモジュールB 2個 平行移動タイプ
ボルト&ナット 数本
3Dプリンタ部品 数点 詳細は後述

どの部品も調達方法などで単価が大きく変わります。今回は合計で8k円くらいかな。
作る手間を考えたら、本物の3Dマウス買った方が早かったんとちゃうかな(白目)

以下、「市販の3Dマウス風」に絞って説明します。

電気回路

次のブレッドボード図を参考お願いします。
f:id:shk-maker:20191010221614j:plain

可変抵抗(ボリューム)が2個並んでいるのは、ジョイスティックB(平行移動タイプ)
1個の意味です。丁度良い素材が無く、回路的に等価なので、このような表現に
させていただきました。

基板は3枚構成で、ジョイスティックAだけの基板、ジョイスティックBを2個並べた
サブ基板、マイコンを乗せたメイン基板、です。
各基板は、ブレッドボード図と同じピン配置になるよう、リード線で繋ぎました。

メカ構成

次の断面図を参考お願いします。 f:id:shk-maker:20191010221826p:plain

全てFusion360で設計しましたが、今回は公開していません。
電気部品が購入先によって微妙にサイズが異なっており、都度修正してました。
そのままでは使えないデータになってしまうので、公開を見送った次第です。
拙い文章メインの説明では分かりにくいかもですが、御容赦ください。

①箇所にメイン基板が、②箇所にサブ基板が入ってます。
3Dプリンタ部品2パーツで、基板を挟み込んで固定。
上からカバー部品を被せて、USBケーブル以外の穴を目隠ししています。
③箇所にジョイスティックA基板が入ってます。上記の部品の間で、
水平移動および少し回転できるようにしています。
この部品をジョイスティックBのつまみと接続する事で、移動量を読み取る仕組みです。

コード内容

Arduino IDE 1.8.0 を使用しました。
スケッチ例 => 09.USB => Mouse => JoystickMouseControl を参考にしました。
詳細な手順については、リンクのQiita記事にしましたので、こちらを参考お願いします。

qiita.com

センサー 操作 命令 挙動
ジョイスティックA 一定以上傾ける Shift+マウス中央ボタン+マウス移動 3Dモデル回転
ジョイスティックA 押し込む マウス中央ダブルクリック 全画面表示
ジョイスティックB 2個共同じ方向に移動 (=水平移動) マウス中央ボタン+マウス移動 3Dモデル移動
ジョイスティックB 逆方向に移動 (=ひねる動き) マウススクロール 3Dモデル拡大縮小

最も便利そうな「ズーム&移動」の同時操作だけは実現しました!

まとめ

最後まで読んでいただき、ありがとうございました。
制作中、思うように動かず苦戦した時もありました。Qiita記事にも書きましたが
他のブログ記事や、自作キーボード(Self-Made Keyboards in Japan)の有識者
方々のアドバイスにより完成させる事ができました。感謝いたします!

今回の3Dマウス 2タイプと、前回作ったショートカットキーボードを
横浜ガジェットまつり2019に出展する事になりました。
ぜひぜひ触りに来てみてください。

yi.city.yokohama.lg.jp

作ってみた感想=さっさと本物を買った方が良かったかも(笑)
制作の過程で、Fusion360のマウス中央ダブルクリック機能を初めて知りました。
これは便利ですね。今回得た中で最も(?)有益な情報でした。