Raspberry Pi Pico と PMW3360 で 3D プリント マウスの変更
ベンチャーは 2023 年 2 月 12 日に開始されました。
数年間、私は間違いなくLogitech のトラックボールの使用、最初に M570、次に MXエルゴ. ただし、実際には、コンテンツをさらに開発することもできます!
したがって、Philipp トラックボール一体型のキーボードを作りたいと以前から思っていたので、まずはスタンドバイ自作モデルを作って濡れた足を救おうと決心しました
PMW3360光学式マウスセンサーとRaspberry Pi Picoで作成。 ケースは 3D プリントされ、OpenSCAD で設計されるとすぐに開発されます。
- おまけ画像
いつものように、ミッションは無料でスタートソースのアプリケーション/ハードウェアとしてリリースされます。 さらにすべてを明らかにするかもしれないし、git リポジトリ で自分で開発することは必須です!
目次
セグメント代替 3Dインパクト
- センサーの懸念事項
- 最初のプロトタイプ 機能強化 ユーザーの専門知識 ライセンス
セグメント代替この任務に着手する前に、いくつかの選択と命令が必要でした
私が決心したすべてのものに目を向けるために、Raspberry Pi Pico / RP2040 マイコンボード. これはブロックの灼熱の新しい要素であり、ハードウェアと SDK の両方で認識を決定する必要があります。 また、DIY キーボード コミュニティでは広く絶滅しており、すでに完全なソース アプリケーションを起動する能力を備えています
どのマウスセンサーを排出するか。 センサーには、赤外線 LED を使用した「光学式」と「レーザー式」の両方の多様な形式があります。 DIY タスクの通常の選択は PMW3360
または PMW3389 光センサー、または ADNS-9800 レーザーセンサー。 それらはすべて、Tindie の JACK Enterprises のブレイクアウト ボードに用意されています。 残念ながら、ヨーロッパへの出生費は非常に高額なので、別の解決策を探す必要がありました.ゲーム用マウスの場合、それらは一次的な解像度の低下により完全に消滅しています。 このため、さらにレートと可用性のおかげで、PMW3360 にスライドすることにしました。 チップは販売されてもニュートラルにすることができます AliExpress、レンズ アセンブリの側面で、球面の場合は 15€.
へさらに、センサーには約2Vの電圧が必要なため、電圧レギュレーターを備えた何らかの形のブレークアウトボードが必要です。 幸いなことに、IO は RP2040 を賞賛する 3.3V ユニットでニュートラルにすることもできます。 多くのデザインは、つまずいてもニュートラルにすることができます GitHubで、賞賛してください JeremyBoisの「おげん」 or kbjunky の「PMW3360」.
と滑ろうと決めた”pmw3360-breakout” by jfedor2 。 それは本質的に最も最小限であり、さらに、事前に組み立てられたボードを回収するために必要なすべてのファイルを必要とします JLCPCB. 彼らの通常のプロモーションで、私は生産され組み立てられた5つのボードをニュートラルな15.65€で購入しました。
これをトラックボールと呼べるようにするには、ボールや球体が必要です。 多くのアメリカ人は、直径 38 mm の最小ルールのビリヤード ボールを使用しています。 これらはニュートラルでも問題なく合理的に調達でき、通常はフラットで十分なので、いくつか購入しました。 これはちょっとした方法になりましたが、それについては後で詳しく説明します。
ボールがスムーズに転がるのを防ぐには、何らかの形のマウントまたはベアリング面が必要です。 これにはさまざまな代替提案があり、適切に詳細が記載されています
Reddit と GitHub 「Wimads」による。 このため、直径3mmのSi3N4スタティックベアリングボールでスライドすることにしました。 20個買いましたeBay から で ~5€.
スイッチの場合私は、Cherry MX キーボード スイッチを使用することに決めました。 彼らは今、彼らの長いキーウィスクでは最適ではありません, 私はそれを長い急いで交換することを考えています. 公開: 一部の成分は、まとめて販売するのが最も簡単です。 このため、単一のトラックボールを開発することを最も単純に好む場合、これは上記の合計よりも多くの費用がかかる可能性があります。 あなたが高く見ているのは、私が材料に支払った真の価格であり、単一のシステムに必要な量にまで減額されています. また、いくつかの材料、賞賛のネジまたは 3D 印刷が提供するものは、ワークショップの伝統的な材料として、両方とも値札に追加されないように心に留めています。 3Dインパクト
3Dサルベージの最後の発見の断片は、センサーの取り付けと監視面に関するレンズ アセンブリ、この場合はボールです。 データシートには完全な寸法図が含まれており、そこにある重要な測定値が完全に隠されています.
静的ベアリング ボールは、「カーラー ホルダー」の内部に押し込み式で取り付けられています。 このフラグメントを印刷するのは少し心配です。 ボールを合わせると、10mm の合計高を獲得する可能性が十分にあるかもしれません。 私のFDMプリンターでは0.1mmと非常に細かくなってしまうので、サルベージに調整パラメータを追加しました。 その後のイテレーションは SLA プリンターで継続的に印刷されました。そこでは、ホーム サービスをゼロに設定する必要がありました。 、ブロードキャストと組み立てられたフラグメントを測定し、それに応じて調整します。 私は、わずかな逸脱があまりにも主要な話題であってはならないと信じています. センサーの使用可能な距離はかなり細かく変化します.
カーラーホルダーはグラブスクリューで固定されています。 次に、センサーをニュートラルにすることもできます。最初に一時停止ハウジングにねじ込み、次に Pi をねじ込みます。 裏側の破片は完全にふたで、何もねじ込まれていません。 プレビュー レンダリングでさえ数十秒かかり、その後の UI は基本的に緩いものになります。 私のマシンでは、レンダリングに 3/4 時間かかります。 モデルについては $fn パラメーターは、家を建てて価格を下げてもニュートラルにすることもできます。 ちょっと助かります
: 一部の成分は、まとめて販売するのが最も簡単です。 このため、単一のトラックボールを開発することを最も単純に好む場合、これは上記の合計よりも多くの費用がかかる可能性があります。 あなたが高く見ているのは、私が材料に支払った真の価格であり、単一のシステムに必要な量にまで減額されています. また、いくつかの材料、賞賛のネジまたは 3D 印刷が提供するものは、ワークショップの伝統的な材料として、両方とも値札に追加されないように心に留めています。 3Dインパクト
$fn パラメーターは、家を建てて価格を下げてもニュートラルにすることもできます。 ちょっと助かります
ファームウェアの成長
完全なシステムを設計して印刷する前に、センサーとボールを保持するためのテストマットレスを作成しました.
この予備的な「エンジニアリングサンプル」を構築してファームウェアのモデルを進めることもできます。 これは、2022 年のクリスマス バケーション ミッションを完了するとすぐに発展します。 すべてが機密で独占的であると主張するのは無意味ですが、あなたもそれを明らかにすることができます uncover でデータシートが流出しました。 ピン配置と電気的特性の側面で、ブレークアウトボードで既に分類されているすべての豪華なプライマリについて説明します。 さらに、SPI 口頭交換インターフェイスについても説明します。 主に最も簡単に問題のあるフラグメントは、いわゆる SROM です。
チップにはエネルギーアップごとにバイナリブロブがロードされます。そうしないと、動作しなくなります。 偶然にも、これが漏洩または盗聴された場合(私には確信が持てません)、モデル4が手元にあります ここ また ここ を例として。 そのため、ファームウェアに効果的に統合しました。 すべてのバスク パフォーマンスがこの V4 ファームウェア blob に統合されているわけではありませんが、従来のマウス操作には十分です.
それとは対照的に、RP2040 には非常に満足しています。 / Raspberry Pi Pico エコシステム。 ハードウェアは、CPU データシートに完全に詳細にスライドする必要なく、効果的に文書化されているように見えます。 そして、SDK も同様に効果的に信じて適用されているように見えます。 ST-Hyperlink または同等のハードウェアを希望するドングル。
USB システムの実装には Pico SDK には以下が含まれます TinuyUSB。 Pico SDK から、私はほとんどの作業を彼らの TinyUSB から移植された HID Composite インスタンス を
CDC MSC インスタンス は TinyUSB から遠く離れています。これはすぐに非常に歓喜に発展します。 から 以前の任務 私はの不幸に精通していますカスタム USB HID 記述子の書き込み。 偶然にも、すべて TinyUSB によって処理されます。 あなたの中立は、マウス軸の従順なデルタ値を追跡するに値します。デバッグ用のストレージ システム。 私が最初に Linux マシンでシステムを開発し、調べたと言っても過言ではありません。 しかし、私は間違いなく勝ち、Windows でそれを調べました。 ドライバーをセットアップしなくても、すべてのパフォーマンスにニュートラルにアクセスできます。
さらに、デバッグ用の大容量ストレージ用に、何らかの形式のファイル システムを簡単に追加できるようにしました。 これを達成するために、私は絶滅しましたFatFs ライブラリ 。 ディスクシステムとして機能するRAMに大量のメモリを予約しただけです。 特定の人がマウントする前に、ディスクはフォーマットされ、必須ファイルが詰め込まれます。 その後、ホストはそれをマウントしてファイルを参照できます。 配線
システムの配線は非常に簡単です。特に RP2040 のセージでは、GPIO とハードウェア周辺機器 (この場合は SPI) の排気に柔軟に対応できます。
PMW3360 の SPI インターフェイスは、間違いなく 1 つに接続する必要があります。 Pico の多くの SPI インターフェイスのただし、どれを使い果たすかは重要ではなく、コードで問題なく変更される可能性があります。 デフォルトでは、典型的な SPI0 ピンを使い果たします。
GPIO 16 (ピン 21) MISO -> PMW3360 ボードの MISO GPIO 17 (ピン 22) CS -> PMW3360 ボードの NCS GPIO 18 (ピン24) SCK -> PMW3360 ボードの SCK GPIO 19 (ピン 25) MOSI -> PMW3360 ボードの MOSI GPIO 20 (ピン 26) -> PMW3360 ボードの MOTION 3.3v (ピン 36) -> PMW3360 ボードの GND (ピン 38) の VCC ) -> PMW3360 ボード上の GND GPIO 21 (ピン 27) -> スワップ (サーブ ボタン) GPIO 22 (ピン 29) -> スワップ (中央のボタン) GPIO 26 (ピン 31) -> スワップ (左ボタン) GPIO 27 (ピン) 32) -> スワップ (適切なボタン)
スイッチは、RP2040 GPIO の内部プルアップ抵抗を使い果たします。 また、ニュートラル無音になるように、ライフローを詰めて配線し、GND に標準接続します。 センサー関連
ファームウェアが大部分実行されたので、システムをすぐに使い果たしたいと思いました。 しかし、それはむしろうまくいきませんでした。 レンズに指をかざした後、センサーの動きに一貫性がありませんでしたが、最初に調べた白いボールで見ると、動きがありませんでした。 他の色に切り替えた後、最も簡単なのは、それらの動作が異なることに気付きました。
X 値と Y 値に加えて、各センサー ファイルのサンプルで他の多くのものを回収します。 これらをダンプするためのパフォーマンスを追加し、それらを視覚化するための簡単な Python スクリプトを作成しました
![]()
![]()
白いボールを使用すると、どんな動きも見られません。適切なボールを使用すると、動きがある可能性がありますが、すぐに明らかな非互換性がない可能性があります
PMW3360 にはさらに、「検出中のボディ」モードがあります。 これは、画像センサーが見ているもののパンチの効いたリストを奪うために絶滅する可能性があります. これを使用すると SROM ファームウェアが上書きされるため、後でセンサーを再初期化する必要があります。 このモードにはいくつかの問題がありました。 何らかの理由で、体格の写真を撮った後、センサーを適切にリセットする準備ができていません。 現在、倫理的な SROM ID は確認されておらず、最も単純なエネルギー サイクルで修正されています。 しかし体格ファイルもニュートラルでもちゃんと読み込めるので、それを可視化するPythonスクリプトを作りました
![]()
![]()
写真に見られる異様な痕跡で何が起こっているのか正確にはわかりません。 ビジュアライゼーション側のバグを発見することはできませんが、完全に除外するつもりはありません。 しかし、上記のガイドラインの視覚化を賞賛すると、多様化した色のボールの間に明らかな不一致がないかもしれません.
しかし、Philipp はその日を救った前提を持っていました。 PMW3360 センサーは、製造施設から、チップ装置の光の入口と出口の穴を覆う 2 つの小さなカプトン テープで工夫されています。 それらを取り除くと、すべてのコンポーネントが解決しました.
![]()
現在、すべてのビリヤード ボールは、その色に関係なく最高に機能します。 白いボールでも問題なく動作します。 電子部品とファームウェアの準備が整ったので、メカニックの改良に進みます。 初試作
最初のハイケースは、フィリップスに印刷されるとすぐに発展します Anycubic Photon Mono 4K SLA プリンター
Anycubic Customary Resin + グレー . これは、あなたの究極の好みではなくなりました。 硬化後のレジンはものすごくもろいので、スイッチを長めに押し込んで引っ張ると、プリントの細かい成分がすぐに割れてしまいました。 そのため、スイッチを所定の位置にしっかりと接着する必要がありました.同一の時代遅れの仕掛けに位置付けられます。
PETG プリントの裏面ケースは、面倒なテーブルの表面で非常に滑りやすくなります。 そこで、粘着性のあるスポンジ状のゴムの一部を適切なサイズに減らして、裏側に置きます。 これにより、摩擦がかなり増加しますが、最適ではありません。 別の提供で知覚を選択する必要があります. 機能強化
2 回目の繰り返しでは実行しませんでした' t は、3D サルベージで多くの調整を行います。 ボタンの向きが見直されました。 今回、私たちは腰を下ろし、間違いなく倫理的な立場を見つけようとしました。手のひらでの測定の使用法. さらに、Pi Pico は背面シェルにマウントされていないため、後でシステムを分解するために長いケーブルが必要なくなりました。
今回は一時停止ケースを印刷しました私の今はあまりにも長く前に買った Sparkmaker SLA プリンター、 Anycubic ABS-Admire レジン ダスキー.
![]()
PMW3360 レンズ アセンブリの貴重な要素の 1 つは、2 つの取り付けポストです。 ヒートアップしてもニュートラルでしっかり守ります
![]()
おすすめ: チップ上でレンズのガイドポストを熱ステーキングコースで溶かすことにより、レンズをチップ機器に完全に固定することもできます。 応募特典はご相談ください PMS0122‐LM19‐LSI‐AN 追加の分印刷用
![]()
公式 (社外秘🙄) の方法とは対照的に、私は単純にネジやその他の金属部分をライターで 5 秒間加熱し、それを表面に均等に押し付けることを勧めます。我慢する。 すべてが整然としていて、センサーとレンズの間のカプトーテープが取り除かれていることを確認してください。 下の写真を見ていただければわかると思いますが
![]()
![]()
基本的なものは何も変わっていません。
そして、同じゴムマットを下側に消してしまいました。 私が変更に手間をかけたわけではありませんが、倫理的に十分に機能します.
ユーザーの専門知識
私は間違いなく、この記事の執筆時点で約 6 週間、これらのトラックボールを使用していました。 アプリケーションとエレクトロニクスの観点から、それらは完全に最高に機能します。 切断、カーソルの跳躍、または異様な動作は、すぐに観察可能になります。
残念ながら、それらの使用はかなり苦痛です。 それが人間工学に関係するとき、それらは賞賛に値するものではありません。 2番目のモデルは、スイッチの配置と方向にいくつかの追加の信念が加えられており、改善されていますが、スライドするための無音の長い式があります.
ただし、の使用法完璧に自分で構築したシステムは、すべての点で豪華であり、喜びの可能性をもたらします。 たいへんご相談させていただきます ライセンス
トラックボールは GNU 慣習的パブリック ライセンス.
これプログラムは無料のアプリケーションです: フリー システム財団によって発行された GNU 慣習的パブリック ライセンスの文言の下で再配布および/または調整する準備ができている可能性があること、ライセンスのモデル 3 の両方、または (可能であれば) ) 以降のモデル。 このプログラムは、これがチャンスごとに貴重なものになることを期待して支払われますが、保証はありません。 商品性または特定の目的への適合性に関する黙示の保証すらありません。 追加の詳細については、GNU 慣習的パブリック ライセンスを参照してください。 色目 。
おまけ画像
上で書ききれなかった追加の写真がいくつかあります.
𝚆𝚊𝚝𝚌𝚑 𝙽𝙾𝚆 📺