自作キーボード用トラックボールケースの3DP用モデリング例(Keyball用 Blender編)

この記事では、実際にトラックボールケース(Keyball用、34mm球、セラミック球支持)をモデリングする手順を簡単になぞっていきます。
もちろんこれが正解というわけではないですし、自分はBlenderについても初心者なので効率がよくなかったりヘンな手順だったりするかもしれません。
ですがこの記事によって最低限使用できるものが作れるようになるはずです。
トラックボールケースはキーボードケースよりサイズが小さく出力時間も短くて済むので作りやすいですし、個性が出やすいので意外と楽しいです。気になった方はトライしてみてください。

記事にあるスクリーンショットの操作する個所について

マウス操作やキー入力が必要な個所はオレンジ色の枠で囲っています。
3Dビュー上でショートカットキー入力が必要な場合は左下に文字で表示しています。
操作によって変化するところや注目すべき場所は緑色の枠で囲っています。

インストール

公式サイトからインストーラをダウンロードします。記事執筆時のバージョンは4.2.1LTSです。
https://www.blender.org/download/

ダウンロードが終了したら、blender-4.2.1-windows-x64.msiをダブルクリックします。
インストール時の設定はデフォルトのまま進めてOKです。




初回起動時

インストールが完了したらBlender 4.2のアイコンをダブルクリックして起動します。

初回起動時には基本的な設定を行う小さいウィンドウが表示されます。
こだわりがなければそのままで問題ありません。オススメは言語設定を英語にすることです。わからない事柄を検索する際に見つけやすくなります。

次に出る小さいウィンドウは毎回の起動時に表示されます。
今は用がないので、このウィンドウ外をクリックすれば消えます。

最初に起動すると以下のようなウィンドウが表示されます。

最初からシーンに箱とカメラとライトが配置されています。
これらは必要ないので、マウスの左ドラッグでまとめて選択して、Xキーを押して削除します。

画面がスッキリしました。

Blenderの距離単位のデフォルトはメートルなので、ミリメートルに変更します。

その少し上にあるUnit Scaleを0.001にします。

Viewport Overlays設定で、グリッドガイドのサイズを0.001にします。
StatisticsをONにして、ウィンドウ左上に頂点数などの情報が表示させます。
Face OrientationをONにして、ポリゴンの表裏が色で判別できるようにします(表→青、裏→赤)。

ウィンドウの一番下の部分を右クリックしてメニューを表示させ、Scene Statisticsにチェックを入れます。
ウィンドウ右下にシーンの情報やオブジェクト選択状況などが表示されるようになります。

シーンのビュー設定を調整します。
メインの3Dビューの右側に設定タブが表示されていない場合、小さい「く」の字のようなアイコンをクリックします。またはNキーを押してもいいです。

Viewタブをクリックしたら、Clip Startを0.1mmに、Endを100000mmに変更します。

初期設定が完了したので、保存しておきます。
ウィンドウ上部のメインメニューから、File -> Defaults -> Save Startup Fileを選択します。

以上で初期設定は終了です。
この設定は以下の動画を大いに参考にしています。ほかにも役立ちそうな設定があるので興味がある方は見てください。
https://www.youtube.com/watch?v=R-Vq2O-hvfo

ガイドモデルの作成

トラックボールケースをモデリングする前に、基準となるKeyballの構成要素となる仮モデルを作っておきます。
ガイドとなるモデルを作っておくことで、トラックボールケースをキーボードにフィットさせたり、干渉を事前にチェック出来たりします。

最初にグループ名を変更しておきます。
ウィンドウ右上のアウトライナの白い箱のアイコンの名前をダブルクリックするかF2キーを押して名前を変更します。ここではguideとしておきます。

トラックボールの球を作成します。
ウィンドウ上部のメニューのAdd -> Mesh -> UV Sphereを選択します。
(またはShift+Aでもオブジェクトの追加が出来ます)
中央に球が作成されて、ウィンドウ左下に詳細設定の窓が現れるので半径を17mmにします。
(キーボードで入力するとき、単位のmmを入力する必要はありません)

球の名前もわかりやすくtrackball 34mmに変更しておきます。

センサー回りのガイドモデルを作る前に情報収集します。
Keyballシリーズで採用されているトラックボールセンサーはPMW3360というものらしいので、"pmw3360 datasheet"で検索して出てくるデータシートをもとに各サイズを決めます。
データシートによるとレンズパーツの大体のサイズは、(Keyball設置基準で)縦が21.35mm、横が19.00mm、厚みは形状が複雑なのでノギスで適当に採寸し3.4mmを得たとします。
(もしくは全部の形状をノギスで採寸してもいいです)

球の追加と同様の操作で、箱を追加します。

TransformのDimensionsで箱のサイズを決めます。
個人的経験から、家庭用3Dプリンターの精度で0.1mmより細かい値で調整することはほぼないので、Blender上のサイズも0.1mm単位で扱っています。
というわけで、箱のサイズを3.4mm x 19.0mm x 21.4mmにします。

データシートによるとレンズから検知位置(机)までの距離は2.4mmになっていますが、もともとマウス用センサーなことを考えるとトラックボールの球面に対してどう調整すればいいかよくわかりません。まぁ2.4mmにします。
またセンサーが反応する部分はレンズの上から10.97mmとなっていますが、面倒なのでおおよそ中央だとみなします。
したがって、レンズの位置は(21.1, 0, 0)に設定します。

レンズが箱のままなので、角を丸めます。
レンズオブジェクトを選択状態でTabキーを押して、オブジェクトの頂点・辺・面を調整できるEditModeに入ります。
EditModeで1キーを押すと頂点(Vertex)モード、2キーを押すと辺(Edge)モード、3キーを押すと面(Face)モードです。
2キーを押して辺モードに切り替えます。

面の向こうが見えないと都合が悪いのでウィンドウ右上の線画の球ボタンを押してワイヤーフレーム描画に切り替えます。

マウスの左ボタンドラッグで上部の長い辺2本を選択します。

Shiftキーを押しながら、左・右・下の長い辺2本ずつを選択します。

この状態でマウスの右クリックを押して、Subdivideを選択します。
ここで辺を分割するのは、後の手順で箱の角を丸める際にこの辺が丸くならないようにするための対処です。
RMBはRight Mouse Buttonの略です)

1キーを押して頂点モードに切り替え、角の頂点8つを選択したあと、Ctrl+Gキーを押します。

Assign to New Groupボタンを押すと、選択していた頂点がグループとして登録されます。

Tabキーを押してObjectモードに戻ります。

次の作業に影響が出てしまうので、オブジェクトに設定されている拡大率を頂点に適用します。
(見た目の大きさをそのままに、拡大率が1倍になるように頂点位置を自動的に移動させます)
Ctrl+Aを押して出てきたメニューからScaleを選択します。

オブジェクトの角を丸める要素(モディファイア)を追加します。
ウィンドウ右下でModifiersタブをクリックしてAdd Modifierボタンを押します。

続けて、Generate -> Bevelを選択します。

Limit MethodをVertex Groupに変更します。

Vertex Groupの右側の空欄をクリックして、先ほど登録した頂点グループであるGroupを選択します。

データシートによるとレンズパーツの角のRは7.1mmとなっているので、Amountを7mmに、Segmentsを8にします。
(この時、オブジェクトのScaleが1.0でない場合はBevelのサイズが正しく反映されません)

箱オブジェクトの名前をlensに変更します。

次はセンサーPCBです。
現物をノギスで計測します。高さが25.0mm、幅が22.2mm、厚さが1.6mm、レンズの上端とPCBの上端との差が4.0mmでした。
上部メニューのAddもしくはShift+AからCubeを作成し、サイズを1.6mm x 22.2mm x 25.0mmに設定します。

今回は3Dビュー上で箱を移動させます。
ウィンドウ左側の矢印アイコンをクリックしてオブジェクト移動モードに変更します。
ウィンドウ上部の磁石アイコンをONにしてオブジェクトの移動がグリッドに沿うようにします。(中途半端な値になるのを避けられます)
ウィンドウ右上のXYZ軸表示の-Y(薄い緑色)をクリックするか、テンキーの1を押して視点を正面からのビューに切り替えます。
視点の平行移動はウィンドウ右側の手のアイコンをドラッグするか、Shift+マウスホイールドラッグです。

箱の中央にある矢印をドラッグするか、Gキーを押して移動させます。
まずはレンズの右側ピッタリに配置します。マウスホイールでズームインすると移動単位が0.1mmになるので適宜調整してください。

そのあと、箱を4mm下に移動させます。
箱の位置は(23.6mm, 0mm, -5.8mm)になっているはずです。

箱の名前をcensor pcbにします。

同様に、センサーチップのサイズをノギスで測ります。端子の足や出っ張った部分、レンズパーツの接合部などを含めると、幅12.0mm、高さ17.0mm、厚み(レンズまでの距離)4.8mm、センサーレンズとの高さの差は-3.0mmでした。
Blender上でShift+A → Mesh → Cubeを作成し、サイズをセットして、センサーPCBの右側にピッタリつき上端が5mm突き出る位置に調整します。位置は(25.2mm, 0mm, -0.8mm)です。
オブジェクト名をcensor chipにします。

次はボトムプレートの位置を調べます。
センサーPCBをKeyballのL字コンスルーに取り付け、センサーPCBの上端からボトムプレートまでの距離をノギスで測ります。高さの差は25.4mm、ボトムプレートのアクリル板の厚みは2mmでした。
箱を作成し、サイズを(100mm, 100mm, 2mm)、位置を(0mm, 0mm, -19.7mm)、オブジェクト名をbottom plateにそれぞれ設定します。

このように地道に計測とモデル配置を行っていきます。

メインPCB(L字コンスルーの下)
厚み 1.6mm、ボトムプレートとの隙間 1.8mm
Cube サイズ(20mm, 20mm, 1.6mm)、位置(34.4mm, 0mm, -16.1mm)、オブジェクト名 main pcb 1

L字コンスル
Cube サイズ(3mm, 18.2mm, 4mm)、位置(25.9mm, 0mm, -13.3mm)、オブジェクト名 L conthrough

メインPCB(L字コンスルーの向こう側)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(24mm, 24mm, -16.1mm)、オブジェクト名 main pcb 2
(上からの視点に切り替えています)

メインPCB(上記のすぐ左側、段差がある部分)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(4mm, 27mm, -16.1mm)、オブジェクト名 main pcb 3

スイッチプレート(L字コンスルーの後ろ側)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(43.4mm, 0mm, -11.1mm)、オブジェクト名 switch plate
(手前からの視点に切り替えています)

以上でガイドモデルの作成は終わりです。

ホルダー部

トラックボールを保持する部分を作成していきます。ここではこれをホルダー部と呼びます。
これから作成するオブジェクトがガイドモデルと混ざるとややこしいので、作業場所を作成します。
ウィンドウ右上のアウトライナのScene Collectionを右クリックして、New Collectionを選択します。
新しくできたコレクション(白い箱)の名前の部分をダブルクリックするかF2キーを押して、holderに変更します。

さらに作業途中のオブジェクト置き場として、holderの下にholder workを作成します。

ガイドモデルは邪魔なので、いったん非表示にします。
アウトライナの右側にある目のアイコンをクリックすると非表示になります。

最初に、ボールホルダーの外側を作ります。
トラックボールのサイズが34mmなので、それより大きめの39mmの球(UV Sphere)を作成します。Radiusは半径なので39mmの半分の19.5を入力します。
また、3Dモデルを出力したときに滑らかになるように、球を細かい面で分割するようにします。
Segments 128, Rings 64, Radius 19.5mm オブジェクト名 holder shell (パソコンのスペックが心もとない方はSegments 32, Rings 16のままでもOKです。あとから精細なオブジェクトに取り換えることもできます)

次に、トラックボールを引っ掛ける部分を作ります。
箱(Cube)を作成し、サイズを(60mm, 60mm, 60mm)、X軸回転を45度、オブジェクト名をholder areaにします。

この箱を縦方向につぶしたいので、箱を選択中に3DビューでCtrl+Aを押して、出てきたメニューからRotationとScaleを選択します。

これによって、箱が回転なし、拡大なしの状態になります。

箱の角を丸めるために、Bevelモディファイアを追加します。

ここではとりあえずAmountを6mm、Segmentsを8としておきます。

LocationのZ値にScaleのZ値に-9mm、ScaleのZ値に0.4を入力します。

球とひし形の重なった部分を取り出します。
holder shellを選択して、Booleanモディファイアを作成します。

BooleanのモードをInsersectに切り替え、Objectの空欄をクリックしてholder areaを選択します。
(アウトライナからholder areaをドラッグ&ドロップでもOK)

holder areaを非表示にすると、球と重なった部分だけが残っているのがわかると思います。

同様の手順で、ホルダーの内部をくりぬきます。
球(UV Sphere)を作成し、直径を35.5mm(半径17.75mm)、オブジェクト名をholder innerにします。

内側の球の部分を削り取ります。
holder shellを選択して、Booleanモディファイアを作成します。

Objectの欄をクリックしてholder innerを選択します。

holder innerを非表示にすると、内側がくりぬかれているのが確認できます。

上からの視点に切り替えて、メジャーツールを使ってホールド部分の距離を測ります。
メジャーの端が上手くフチにくっ付かないときはマウスホイールで十分にズームアップすると簡単になります。

測定された距離は32.6348mmと表示されています。
トラックボールは34mmなので、ちょっとはめ込みがキツい可能性があります。
3Dプリンターの精度にもよりますが、大体トラックボールのサイズより0.5mm~1.0mmほど狭いくらいが良いです。

フチの位置を決めているのはholder areaなので、holder areaを選択して位置を調整します。
holder areaを選択して、非表示のままでLocationのZ値を少しだけ下げます。
holder areaの位置を変更したら、メジャーの端をドラッグしてフチの間の距離を再度測定します。
Z値を-10mmにしたところ、フチの間の距離は33.427mmになりました。ひとまずこの値で進めます。
3Dプリンターで出力した後でキツイ・ゆるい場合はこの個所を再度調整します。

※ちなみに、メジャーを調整した直後にXキーを押すとメジャーを削除できます。

作業領域とは別に、実際に使用するホルダーの部品を置く場所を作成します。
アウトライナのholderを右クリックしてNewを選択したあと、名前をholder partsに変更します。

holder shellを選択した後、マウスカーソルを3Dビューのほうに置いた状態でShift+Dを押してオブジェクトを複製します。
複製した直後はマウスカーソルに応じてオブジェクトが移動するので、ESCキーを押して移動をキャンセルします。

アウトライナ上で、複製されたholder shell.001をholder partsコレクションに移動(ドラッグ&ドロップ)したあと、名前をholder cupに変更します。

このあとholder cupを回転させますが、Booleanモディファイアで使っているオブジェクトは付いてこないので、ここでholder cupに適用します。
holder cupを選択した後、上のBooleanモディファイア(Intersect)の小さいvの字のアイコンをクリックしてメニューからApplyを選択します。

内側をくりぬくのは後で行いたいので、もう一つのBooleanモディファイア(Difference)は×ボタンを押して削除します。

作業用のholder workコレクションを非表示にしたあと、holder cupを回転させます。
holder cupのY軸回転に-50度を設定します。

holder cupを支える柱を立てます。
目安のために、guideコレクションの表示をONにします。

Shift+A → Mesh → Cylinderで円柱を作成し、適当に配置します。
ここではVertices 128、Radius 12mm、Depth 10mm、Location Z -16mmとしました。

オブジェクト名をholder baseにしておきます。

以上でホルダー部の作成は終了です。

センサーカバー内部

センサーカバーの外側を作る前に、センサーカバーの内部を作成します。
内部を作成するというのは、センサーPCBやレンズが入るように穴をあけることを指します。

最初に、作業場所となるコレクションを作成します。
ウィンドウ右上のアウトライナのScene Collectionを右クリックしてNew Collectionを選択し、作成されたコレクションの名前をcensor coverにします。

さらにcensor coverの下にcensor cover diffsを作成します。

センサーカバーの内部の穴となる形状は、ガイドモデルをもとに作成します。
guideコレクションの中にあるbottom plate、censor chip、censor pcb、L conthrough、lens、main pcb 1を選択します。
(Ctrlキーを押しながら左クリックで一つずつ選択するか、bottom plateを左クリックした後でShiftキーを押しながらmain pcb 1をクリックしてください)
選択状態でCtrl+Cを押してコピーをした後、censor cover diffsコレクションを選択してからCtrl+Vを押してペーストします。

部品を入れ込むにはその部品の大きさよりもすこし広い穴をあける必要があります。
3Dプリンターの精度にも因りますが、平面方向(X軸方向とY軸方向)は0.3mmくらい広げれば大体は問題ないです。
垂直方向(Z軸方向)は精度があまり出ないので、少し多めにマージンを取ったほうがいいです。とりあえず上面を0.5mm上げることにします。

頂点を数値入力で調整する場合、オブジェクトに拡大がかかっていると意図した結果になりません。
先ほどペーストで複製したオブジェクトを選択して、Ctrl+Aを押し、出てきたメニューからScaleを選択します。

最初はレンズ部分から始めます。
lens.001オブジェクトを選択して、正面からの視点に切り替えます。(右上の-Y軸をクリックするかテンキーの1を押す)

オブジェクトを選択している状態でスラッシュ(/)キーを押すと、そのオブジェクトだけの表示になります。再びスラッシュキーを押すと元に戻ります。
頂点を選択しやすいように、右上のアイコンを押して表示をワイヤーフレームモードに切り替えます。

Tabキーを押してEditモードに変更したあと、1キーを押して頂点選択モードにします。

マウスの左ボタンをドラッグして、左側の頂点をまとめて選択します。
(左クリックで頂点を一つずつ選択していくと、向こう側の頂点が選択できないので注意)

右上を見ると、X座標の値が-1.7mmとなっています。ここから0.3mm左(-X方向)にずらしたいので、-2.0mmをセットします。

同様に、右側の頂点を選択します。

X座標の値が1.7mmなので、0.3mm足して2.0mmにします。

上側の頂点を選択します。

Z軸の値が10.7mmなので、0.5mm足して11.2mmにします。

下側の頂点を選択します。

センサー部品はセンサーケースの下側から入れるため、下方向に穴をつなげる必要があります。
下側の頂点のZ座標値は適当に-30.0mmとしておきます。

手前側と奥側にもずらす必要があるので、右上の青いZを押すか、テンキーの7を押して上からの視点にします。

奥側の頂点を選択します。

選択している頂点のY座標値は9.5mmとなっています。
ここから+Y方向に0.3mmずらしたいので、9.8mmと入力します。

手前側の頂点を選択します。

Y座標値に-9.8mmと入力します。

前後左右上下の頂点の調整が終わったので、Tabキーを押してオブジェクトモードに戻り、スラッシュキーを押してほかのオブジェクトの表示をもとに戻します。

上記の頂点の調整を、censor chip.001、censor pcb.001、L conthrough.001に対して同じように行います。
一つずつオブジェクトを選択してスラッシュキーで単独表示にしたあとTabキーでEditモードに入り、XY方向に±0.3mmずらす、+Z方向に+0.5mmずらす、-Zには-20mmを入力してください。

ガイドモデルと同時に表示すると、少し膨らんでいるのが確認できます。

上からも確認しておくと、調整し忘れを防止できます。

トラックボールケースの下側に出っ張った余計な部分を削り取るため、ボトムプレート部分も調整しておきます。
ボトムプレートはトラックボールケースの底の部分になるので上面は調整する必要ありません。
下の部分だけ多めに広げておけばOKです。
bottom plate.001オブジェクトを選択して、スラッシュキーを押し、Tabキーと1キーを押します。

下側の頂点を選択します。

Z座標値に-20mmと入力します。

Tabキーとスラッシュキーを押して元の状態に戻します。

L字コンスルーが乗っているメインPCBの部分も削り取っておく必要がありますが、ガイドモデルを適当に作っていたため、他のオブジェクトより多めに頂点をずらす必要があります。

main pcb 1.001を選択してスラッシュキーとTabキーと1キーを押します。

左側の頂点を-X方向に0.3mmずらします。

上側の頂点を+Z方向に0.5mmずらします。

下側の頂点を-Z方向に適当に大きくずらします。

上からの視点にして、奥側の頂点を選択し、適当に大きくずらします。

手前側の頂点を選択し、適当に大きくずらします。

Tabキーとスラッシュキーを押して元の視点に戻します。

そういえばレンズパーツの中央近くに三角形の出っ張りがあるんですが、これが引っ掛からないようにするための穴をあける必要があるんでした。
(ガイドモデルで作っておくべきでしたが、忘れていました)
箱を作成し、サイズを(2mm, 5mm, 30mm)、位置を(19mm, 0mm, -10mm)、オブジェクト名をlens deppari yokeにします。

トラックボールの動きを感知させるための、センサーレンズの前にあける穴を作ります。
データシートによると、円と四角を組み合わせたような形の穴をあけるよう指定があります。
まず円柱を作成し、半径を2mmに設定します。高さ(Depth)は適当に5mmにしておきます。

Y軸回転に90度を設定して円柱を横に寝かします。

頂点を編集するので、スラッシュキー、Tabキーを押します。
そのあと視点を右側からに切り替えるために右上のX軸をクリックするか、テンキーの3を押します。

上半分(真ん中は含まない)の頂点を選択します。

Xキーを押すと削除メニューが表示されるので、Verticesを選択して頂点を削除します。

選択していた頂点が消えました。

一番上に見えている頂点をマウスの左ボタンドラッグで選択します。
4頂点選択されているはずです。

Fキーを押すと、選択している頂点の形で面が作成されます。

上の面が選択された状態でEキーを押すと、面の押し出しが出来ます。
Eキーを押した後にマウスを上方向に移動させて面を4mm押し出します。

3Dビューの表示をソリッド表示に切り替えます。
ワイヤーフレーム状態ではわかりませんでしたが、円柱の頂点を半分削除したときにその頂点に属していた面も消えたため、オブジェクトに穴が開いてしまっています。

穴の開き方が単純な場合は、頂点を全選択してFキーを押せば穴がふさがります。
全選択はAキーです。

Tabキーとスラッシュキーを押して元の視点に戻します。

ホルダー部とセンサー部の間に配置します。(18mm, 0mm, 0mm)

オブジェクト名をcensor holeにします。

以上でセンサーカバー内部のモデリングは終了です。

センサーカバー

センサー部品を覆うセンサーカバーを作成します。
オブジェクトを配置するコレクションを作成します。
ウィンドウ右上のアウトライナのcensor coverコレクションを右クリックしてNewを選択し、作成されたコレクションの名前をcensor cover partsにします。

内部のオブジェクトを覆い、外部のオブジェクトと干渉しなければどんな形でもいいですが、Keyball純正のトラックボールケースっぽい丸みを帯びた形状を作成していきます。
ワイヤーフレーム表示に切り替え、箱を作成し、サイズ(16mm, 26mm, 33mm)、位置(24mm, 0mm, -3mm)に設定します。

Ctrl+Aを押してメニューからScaleを選択して拡大率を頂点に適用します。

Tabキーを押してEditモードに切り替えます。

Aキーを押して頂点を全選択し、マウスの右クリックのメニューからSubdivideを選択します。
中割りの頂点が増えます。

下の画像の11個の頂点を選択し、Ctrl+Gを押してAssign to New Gruopをクリックして新しい頂点グループを作成します。
Shiftを押しながらクリックしていくと複数の頂点を選択できます。

同様に、下の画像の7つの頂点を選択して新しい頂点グループを作成します。

Tabキーを押してObjectモードに戻り、手前からの視点に切り替えます。

Bevelモディファイアを作成し、Amount:8mm、Segments:8、Limit Method:Vertex Group、Vertex Group:Groupに設定します。
センサーカバーの内部形状にぶつからないように注意します。

2つめのBevelモディファイアを作成し、Amount:4mm、Segments:8、Limit Method:Vertex Group、Vertex Group:Group.001に設定します。

オブジェクト名をcensor cover shellに変更します。

以上でセンサーカバーの作成は終了です。

セラミック支持球を埋め込む穴

支持球として2mmのセラミック球を使用するので、2mmの穴をあけます。
オブジェクトの置き場所のコレクションを作成します。
アウトライナのholderコレクションを右クリックしてNewを選択し、新しいコレクションの名前をbearing diffsにします。

セラミック球を埋め込むための穴を六角柱(Cylinder)で作成します。
Vertices:6、Radius:1mm、Depth:2mm、オブジェクト名をbearing diffに設定します。

Dimensions(オブジェクトのサイズ)をよく見ると、Xが1.73mm、Yが2mmとなっています。
六角形の角と角の距離は2mmですが、辺と辺の距離は1.73mmだと2mmの支持球が入らないので、すこし拡大します。
(2.0 / 1.73 = 1.156)

穴の向きを回転させ、トラックボールに接する位置まで移動します。
X軸回転とZ軸回転に90度を、X座標値に18mmを入力します。(トラックボールの半径17mm+支持球の半径1mm)

位置、回転、拡大をすべて頂点に適用するために、Ctrl+Aを押してAll Transformsを選択します。
この状態にすることで、原点を中心とした回転調整が行えるようになります。

支持球の配置を決めます。
この角度の設定によってトラックボールの操球感に影響があります。
角度が小さいと安定感が高くトラックボールがカタカタしづらくなりますが、摩擦感が高くなり滑りが悪く感じられます。
角度が大きいと安定感が低くなりトラックボールがカタカタしやすくなりますが、摩擦感が低く滑らかに滑ります。
今回は安定感重視の15度で進めます。Y軸の回転角度に15と入力します。

支持球は3つ必要なので、Ctrl+Cでコピーを行い、Ctrl+Vでのペーストを2回行います。

bearing diff.001を選択して、Z軸回転に120を入力します。

bearing diff.002を選択して、Z軸回転に-120を入力します。

3つの支持球の全体的な角度を設定します。
視点を正面からに切り替えて、3つのbearing diffオブジェクトを選択し、Rキーを押して回転モードに入ったあとすぐにマウスの左クリックをします。

左下のRotateのAngle欄で角度の調整をします。
ひとまず-40度を設定します。 Keyballをテンティングして使用している方はもっと大きく傾けると安定感が向上します。

支持球を埋めるための穴あけはこれでOKですが、トラックボールを入れるための穴が直径35.5mmの球なので、これだと0.5mmのくぼみしか作れません。
なので、支持球を埋めるための補助的な造形を行います。
また支持球の穴が外側に貫通するのを防ぐため、外側に追加で厚みを持たせます。

オブジェクト配置コレクションをholderコレクションの下に作成し、bearing supportsと名付けます。

半径2mmの球(UV Sphere)を作成します。

X軸方向のサイズを1.6mm、X座標値を18mmに設定します。

選択中のSphereをコピー&ペーストで一つ複製し、Sphere.001を選択した後にX座標値を19.3mmに設定します。

オブジェクト名をそれぞれbearing support inner、bearing support outerとします。

ここからはbearing diffで行った作業と同じことを行います。
Ctrl+A → All Transformsで移動と拡大を頂点に適用する、Y軸回転角度に15度をセット、コピー&ペーストでそれぞれ2つずつ追加する、ペーストしたオブジェクトのZ軸回転角度をそれぞれ120度と-120度にする、bearing support全部を選択して正面視点で-40度回転させる、です。
これらを行うとbearing supportがbearing diffと同じ位置に来ているはずです。

以上で支持球を埋め込む穴をあける作業は終了です。

トラックボールケース取り付け用のネジ穴

トラックボールケースをボトムプレートの下からネジ止めしてとめるための足と穴を作ります。
オブジェクトの置き場所となるコレクションをholderの下に作り、foot diffsと名付けます。

ネジ穴として六角形の柱を作成します。
Keyballに付属しているネジはM1.7なので、それより少し小さく六角形の辺の間の長さを1.6mmにします。
Radiusを0.925mmにすると良い感じです。
Depthは適当に5mmとしておきます。

オブジェクトを(10.7mm, 8mm, -17mm)に配置し、名前をfoot screw holeに変更します。

コピー&ペーストかShift+Dでfoot screw holeオブジェクトを複製し、(10.7mm, -8mm, -17mm)に配置します。

足の柱を作成していきます。
オブジェクト配置場所のコレクションをholderの下に作成し、名前をfoot partsにします。

柱を作成し、Vertices:32、Radius:4mm、Depth:12mmに設定します。

オブジェクトを(10.7mm, -8mm, -13mm)に配置し、名前をfootにします。

footを複製し、(10.7mm, -8mm, -13mm)に配置します。

以上で取り付け用の足の作成は終了です。

組み合わせ

今まで作成してきたオブジェクトたちを組み合わせて、トラックボールケースにします。

アウトライナのScene Collectionを右クリックしてNew Collectionを選択し、trackball caseにします。

特別感を出すために、trackball caseコレクションを右クリックして、好きな色を選択します。

オブジェクトをまとめるためのオブジェクトを用意します。
箱や球などでもいいですが、平面(Place)を作成します。

オブジェクト名をtrackball caseにします。

作成したオブジェクトの形状は使用しないので、TabキーでEditモードに入り、Aキーで全選択し、Xキーで頂点の削除を行った後にTabキーを押してObjectモードに戻ります。
この作業を行うと、頂点数の表示が0になります。

アウトライナでtrackball caseコレクション以外のコレクションを非表示にします。

Booleanモディファイアを作成し、Realtimeボタン(ディスプレイの見た目のアイコン)をOFFにします。
これがONのままだと処理が重たくなります。パソコンのスペックに自信がある方はONのままでも問題ないかもしれません。

BooleanモードをUnionに、Operand TypeをCollectionに、Collectionをholder partsに設定します。

2つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをcensor cover partsに設定します。

3つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをfoot partsに設定します。

4つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをcensor cover diffsに設定します。

5つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをfoot diffsに設定します。

6つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをObject、Objectをholder innerに設定します。

7つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをbearing supportsに設定します。

8つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをbearing diffsに設定します。

8つのBooleanモディファイアを作成し設定が終わったら、すべてのRealtimeボタンをONにして有効化していきます。
このときPCの処理負荷が上がり数秒~十数秒かかることがありますが、焦らず待ちましょう。

すべてのRealtimeボタンをONにしたらトラックボールケースのモデルデータの完成です。

STLファイルのエクスポート

3Dプリンターで出力(印刷)するために、作成したオブジェクトモデルをSTLファイルとして出力します。
ファイルに出力したいオブジェクトを選択したあと、ウィンドウ上部にあるメインメニューから、File → Export → STL (.stl)を選択します。

出力ウィンドウの右側にあるSelection Onlyにチェックを入れ、ファイル名を決めたらExport STLボタンを押します。

あとはお手持ちの3Dプリンター用のスライサーソフトでSTLファイルを開き、印刷すればOKです。

3Dプリント・確認

完成したらお手持ちの3Dプリンターで出力してみましょう。
以下が簡単なチェック項目です。

  • センサー部品がケース内にセットできる。
  • トラックボールを適度な力で入れることが出来る。
  • トラックボールを適度な力で取り出すことができる。
  • トラックボールを出し入れする際にケースが割れたりしない。
  • 2mmセラミック球が穴に強く押し込むだけで入る。
  • 逆さにしても2mmセラミック球が落ちてこない。
  • Keyball本体に取り付ける際に問題なくネジ止め出来る。(強く締めすぎるとネジ穴がダメになるので注意)
  • トラックボールを操作したときに、どこにも干渉していない。
  • トラックボールケースがキーボード本体やキーキャップに干渉していない。

問題点がなければひとまず完成です。
問題が見つかったら修正を試みてみましょう。
(記事に不備があった場合は教えていただけるとありがたいです🙏)

修正・調整を行う場合

3Dモデルを印刷すると、新たな問題点に気づくことがあります。
そのような場合はモデルデータの修正や調整を行いますが、そのまま作業を行うとオブジェクトを統合したtrackball caseオブジェクトに登録したBooleanモディファイアの再計算が入ってしまい、動作が遅すぎてまともに作業が出来なくなります。
そのような場合はアウトライナのコレクションの右側に表示されているチェックボックスをOFFにすると、非表示になるだけでなく再計算も行われなくなるので作業がスムーズになります。
ここではトラックボールケースの下に穴を開け忘れたので、例としてそれをやっていきます。

まずはコレクションを無効化します。

次に穴をあけるための柱を作成しますが、専用のコレクションを用意するのも面倒なのでcensor cover diffsコレクションを間借りします。
censor coverコレクションを表示状態にして、censor cover diffsを選択します。

円柱を作成し、半径5mm、高さ10mm、Z座標値を-15mmにします。

オブジェクト名をlower holeにします。

censor coverコレクションの表示をOFFにして、trackball caseコレクションを有効化すると、無事に穴があいてるのが確認できます。

終わりに

トラックボールケースを作成してみる説明は以上となります。
作業行程は長いですが操作は難しくないと思うので、自分だけのカスタムKeyballを目指している方は作ってみてください。
また、間違っているところなどあればコメントもしくはX(Twitter)の@kepeooまでお知らせいただければ幸いです。

自作キーボードのトラックボールケースの作成に関する話

自分がKeyball用のトラックボールケースを作成しはじめておよそ1年が経ちました。
ありがたいことに多くの人に使ってもらっていますが、手の大きさ・置き方・テンティングの角度は人それぞれなので「もうちょっと⚪︎⚪︎だったら良かったのにな」という感想の方もいるかと思います。
ある程度の要望のキャッチアップは行ってきたつもりですが限界はあります。また、ThingiverseではSTLファイルしか共有していないため、各自で調整が行いづらい状況です。かといって作業ファイル(Blenderの)はゴチャゴチャしすぎていてアップしたくない・・・。
このような思いと、「Twitterで呟くばかりで記事書いてないな」と言う思いがあったので、自分がいつもトラックボールケースのモデリングをするときに行なっていることを文章で簡単にまとめておきます。

とはいえ自分も素人なので変なことを言っていたり、間違っていたりするかもしれません。
少しでも誰かの参考になれば幸いです。

トラックボールの球の大きさ

日本国内でトラックボールの球だけの入手が容易なのは、34mm球と25mm球です。
(Perixxさん、Elecomさん、ありがとうございます)

トラックボールの支持の種類

トラックボールケース内に滑る素材を3つ配置してトラックボールを支えます。
代表的なのは以下のものです。

  • セラミック球
    比較的安価で入手性が良いです。
    サイズはいろいろありますが、トラックボールケースには直径が2mmのものが使いやすいです。
    Amazonでは色が白いものと黒いものがありますが、自分には大きな差異が感じられなかったので好きな色を買えばいいと思います。

  • ローラーベアリング
    セラミック球に比べて静止摩擦係数が非常に小さく、トラックボールの動かしはじめがとても軽やかです。
    反面、トラックボールの中央以外を操作するとローラーベアリングに対して横方向に球が動くことになるので、マウスポインタの動きに引っ掛かりを感じたり、思わぬ方向に流れて行ったりすることがあります。
    トラックボールを動かす際の音は少々うるさいです。
    こだわる方には国産のベアリングをお勧めします。自分はモノタロウで購入しています。

  • BTU (Ball transfer units)
    自分は使ったことがないですが、全方位に回転するローラーベアリングのようなものがあるようです。
    写真で見た感じだとそれなりのサイズ感なので、自作キーボードのトラックボールケースに使うには難しいような気がしています。

トラックボールの支持位置の影響

セラミック球など(以下、支持球と呼称する)を適当に配置してもトラックボールは動作しますが、支持位置を調整することでより良い操作感が得られます。

摩擦感

支持位置がトラックボールケースの浅い位置にあるほど摩擦感が強くなり、深い位置にあるほど摩擦感が弱くなります。
正確な検証はしていませんが、支持球がトラックボールを挟み込むが大きくなるためだと考えています。


安定感

ここで「安定感」とは、トラックボールがカタカタせずに動かせるか、ということを指します。
トラックボールがカタカタする直接的な原因は支持球のいずれかがトラックボールから離れてしまうことによります。トラックボールが浮き上がることで操作が不連続になったり雑音が発生したりして少し不快な気分になります。

指がトラックボールをおさえるとき、力の方向が3つの支持球からなる三角形の内側に入っていればトラックボールは安定します。三角形が大きいほど安定感には有利です。
よって、支持位置がトラックボールケースの浅い位置にあるほど安定感が大きくなり、深い位置にあるほど安定感が小さくなります。


また、支持球(三角形の頂点)に向かって力がかかるときは安定感が高く、支持球の間(三角形の辺)に向かって力がかかるときはトラックボールが支持球を乗り越えやすくなるので安定感が低くなります。

おすすめ角度

基本的には支持位置による摩擦感および安定感への影響はトレードオフの関係にあります。
自分の経験として、水平からおよそ15度〜25度くらいがちょうどいいと思います。
安定感重視の場合は15度、摩擦感低減重視の場合は25度で設計を始めて、試作を重ねて角度の調整を行なっています。

トラックボールの落下防止方法

キーボードを動かしたり持ち運んだりする時にトラックボールを落としてしまうと、トラックボールもしくは床がへこんでしまう可能性があります。
なるべくならトラックボールは落下しないほうが嬉しいです。

はめこみ式(ツメ)

トラックボールケースの素材の弾力を利用して、トラックボールを押し込んで固定します。
調整が少し大変です。開口部が広いと保持がゆるくて落ちてしまい、開口部が狭いと取り出せなくなったり、またはトラックボールを入れるときにケースが割れたりします。特にFFF方式の3Dプリンターによる出力品は積層の密着が弱いため割れやすく、設計時に注意する必要があります。

cocot46plus
写真引用元:https://shop.yushakobo.jp/products/6955

Keyball44
写真引用元:https://shop.yushakobo.jp/products/8337

カバー式(フタ)

下側の部品に支持球を配置してトラックボールを支え、上側の部品を固定することでトラックボールの落下を防ぐ方法です。個人的に好む設計スタイルです。
はめ込み式のような調整は必要ありませんが、こちらは上側の部品の固定方法や、2つの部品のクリアランスやがたつきの解消などの調整の必要があります。

上側の部品の固定方法は以下のようなものが考えられます。

  • ネジ留め
    上側のパーツをネジで直接固定します。cocot46plusの初期型がこの形式でした。
    固定は確実ですが、支持球のメンテナンスをするためにはドライバーでネジを外す必要があり面倒です。

    cocot46plus
    写真引用元:https://github.com/aki27kbd/cocot46plus/blob/main/doc/buildguide.md

  • 磁石
    上記のねじ止めによる固定を、磁力が強いネオジム磁石に置き換えたものです。
    磁石の相手は同じ磁石でもいいですが、鉄製のネジを用いると省スペースとコスト削減が両立できて良いです。

    初期cocot46plus用 自作カバー

  • ねじ込み
    上側の部品をペットボトルキャップのようにねじ込んで固定する方法です。自分がKeyballの25mmトラックボール用に作成したトラックボールケースで試してみました。
    設計とモデリングがやや大変です。

    Keyball用 25mmトラックボール用 自作ケース

モデリングチュートリアル

上記の文章を読んでも、どうやってモデリングしていけばいいかわからない方もいると思います。
次のページでは一例としてBlenderを使用したモデリング方法を説明します。
https://kepeo.hatenablog.com/entry/2024/09/08/142046

自作キーボードキット「Riemann」のビルドログ

先日行われたキー部8%にて、KKaKさんにキーボードキットを頂いてしまいました!
しかも設計したて、製造ほやほやの新しいキーボードです。すごい!
せっかくなので普通に組み立てるだけじゃなく、ビルドログを書こうかと思い立ちました。
普段はTwitter(X)やBlueskyで制作の報告をするばかりで自作キーボードの記事を書くのは初めてです。よろしくおねがいします。

目次

キット同梱物、ほか

頂いたキットの内容物は以下の通りです。

  • PCB
    部品をはんだ付けしていく、メインとなる基板です。スイッチプレートとボトムプレートの間に配置されます。

  • スイッチプレート
    PCBと同じ素材の、穴がたくさん開いた枠のような板です。
    この穴にキースイッチがはめ込まれます。

  • ボトムプレート
    はんだ付けしたキーボード部品を保護するために、底側に取り付ける板です。これもPCBと同じ素材です。
    キーボードの名前「Riemann」のロゴが大きく描かれていてカッコイイです。

  • 独自のUSBコネクタ部品「TinyDash」
    独特な形の板の先にUSBコネクタが付いている部品です。
    この部品がRiemannの薄さに貢献しているそうです。
    TinyDashにつけるための小さいタクトスイッチ1つと、固定用のネジとナットが3つずつ付属しています。

  • スイッチプレート固定用ネジ類
    スイッチプレートとPCBを固定するためのネジ・ワッシャー・ナットが8つずつ入っていました。

  • スペーサー
    スイッチプレートとボトムプレートを固定するための金色のスペーサーが8つ入っています。
    これを止めるネジは同梱されていなかったので、手持ちのストックを使用しました。

※このキーボードは今後頒布される予定とのことですが、その際はここに記述したものと異なる可能性が高いのでご注意ください。

今回購入した部品は以下の通りです。

  • キースイッチ
    Lofree Flow Phantom
    https://shop.dailycraft.jp/products/lofree_shadow_series_switch?variant=42611168411845
    普段はCherryMX互換のタクタイルスイッチを使っていてChocスイッチのことをよく知らないので、KKaKさんがキー部で展示していたRiemannのキースイッチがこれだった気がしたので真似しました。

  • キーキャップ
    XVX PBTキーキャップ
    https://www.amazon.co.jp/dp/B0C4SMS3RW
    安くてLEDの光を透過するものを適当に買ってみました。
    色はスイッチプレート、ボトムプレートの黒色に合わせました。

  • マイコン
    RP2040 Tiny
    https://www.switch-science.com/products/9092
    キーボードのプログラムを格納するための部品です。
    メイン基板単品のものも販売されていますが、USBコネクタと接続するためのフラットケーブルが必要なので、「開発キット」という方を購入します。
    また、「Tiny 2040」という似た名前の開発用ボードもありますがRiemannでは使用できません。

  • Chocスイッチ用ソケット
    https://shop.dailycraft.jp/products/keyswitch_socket
    手元にストックがなかったので購入しました。

以下のものはストックとして持っているものを使用しました。

  • 表面実装用ダイオード
    https://shop.dailycraft.jp/products/diode_smd
    自分は自作キーボードを設計しないのでよくわかっていませんが、どのキーが押されたかを判別するための部品だそうです。

  • フルカラーLED
    SK6812mini-e
    https://akizukidenshi.com/catalog/g/g115478/
    光らせなくてもキーボードとしては使用できますが、光るのなら光る方がもちろん良いのは言うまでもありません。
    秋月電子で購入すると少し安いです。

  • ネジ類
    自作キーボードの設計は行わないものの、キーボードケースの自作は少し嗜むためそこそこネジはストックしており、今回必要だった分に足りました。

  • ゴム足
    https://www.amazon.co.jp/gp/product/B00V5MQQB4
    キーボードが滑ってしまうのを防ぐために、ボトムプレートに貼り付けるゴム足です。

道具

今回のキーボード組み立てのために購入したものはなく、すべて以前から持っていたものです。

  • はんだごて
    HAKKO FX600-02
    https://www.amazon.co.jp/dp/B006MQD7M4
    自作キーボードを組み立てるために以前購入しました。LEDを取り付けるなら温度調整機能はあったほうが良いです。

  • こて先
    T18-CF2
    https://www.amazon.co.jp/gp/product/B004OR4JAM
    はんだを乗せやすい形をしていて、自作キーボードを組み立てるのに向いています。

  • はんだごて台
    ST77
    https://www.amazon.co.jp/dp/B001UNTRTG
    かなり昔に買っのではんだごてと形が合わずガタガタしやすいですが、使えないわけでは無いし、買い換えると捨てなきゃいけなくなるのが忍びないので惰性で使っています。

  • はんだ
    FS402-02
    https://www.hakko.com/japan/products/hakko_hexsol_set.html
    融点が低いので初心者に優しいタイプのはんだです。
    自作キーボードをいくつか組み立てているといつの間にかになくなっているので、少し大きめのものを買っています。
    が、今調べたら販売終了していたんですね。

  • はんだリール台
    611-1
    https://www.amazon.co.jp/gp/product/B000W9IVBY
    「こういうのは3Dプリンターで作れば安上がりじゃん!」と思ってWebにあがっているデータを2時間かけて出力したものの10分くらいで壊れたので、大人しくちゃんとしたものを購入しました。

  • ピンセット
    HOZAN P-891
    https://www.hozan.co.jp/corp/g/g6891/
    ダイオードなど小さい部品をはんだ付けする際に必須です。

  • マスキングテープ
    https://www.amazon.co.jp/gp/product/B00EXGSYCS
    部品を一時的に固定するのに使用します。

  • 作業用ゴーグル
    https://www.amazon.co.jp/dp/B00B4TLJV0
    はんだ付けをしていると時々はんだが爆ぜてくるので、目の安全を守るために使っています。

  • 卓上型の小型ファン
    はんだ付けのときに立ち上るけむりは吸うと害があるようなので、ファンで煙を飛ばしています。窓を開けての換気にも気をつけています。

  • カッターマット
    https://www.amazon.co.jp/dp/B000CED21S
    はんだ付けの際に下に敷いています。耐熱性はないので専用品のほうがいいのでしょうが、買うのが面倒なので横着しています。

  • ハイマッキー 黒
    https://www.amazon.co.jp/dp/B0060RXDII
    スイッチプレート、PCB、ボトムプレートの側面を黒く塗るために使います。

ダイオードのはんだ付け

はんだ付け作業は基本的に背の低い部品から行っていくのが良いとされているらしいので、今回一番小さい部品であるダイオードからはんだ付けを行います。
まず、ダイオードには取り付ける向きが矢印のような表示で指定されているので、それを確認します。

自作キーボードキットによっては場所によってダイオード取り付けの向きが違っている場合があり、テンポよく作業を行っていると間違って取り付けてしまうことがよくあります。
幸いRiemannのダイオード取り付け向きは線が上側になる向きで統一されているので、混乱がなく安心です。

ダイオード用のパッド(PCBの銀色の部分)の片方に予備はんだをします。
はんだごての温度は320度に設定しています。

三角形の隣にある線とダイオードの線の位置を合わせて、ダイオードをピンセットでつかみ、はんだごてで予備はんだを温めながら片方の端子を仮止めをします。
ダイオードがPCBから浮いて固定されないように気をつけます。
ここでは綺麗なはんだ付けにはなりませんが、取れなければOKです。

全てのダイオードの仮止めができたら、ダイオードの向きが合っているか確認します。
この時点でダイオードの向きの間違いに気づければリカバーは簡単です。
幸い、間違って取り付けているダイオードはありませんでした。

ダイオードのもう一方の端子をはんだ付けしていきます。
ここでは綺麗なはんだ付けを心がけます。
それが終わったら仮止めしている方の端子をはんだ付けしなおします。

これはちょっとはんだを盛りすぎかもしれないですね。

LEDのはんだ付け

ダイオードと同じく、取り付け向きを確認します。
PCBのシルク(印刷表示)で白い線の角になっている箇所がLEDの端子が欠けている箇所と対応します。 キーボード全体の白い線の角の方向をチェックします。
LEDも全ての箇所で同じ向きで良さそうです。設計者の思いやりが感じられますね。

LEDのパッドに予備はんだをします。
4つのうちどこでも構わないですが、確認しやすいように欠けの無い端子のパッドに予備はんだします。
向きに注意しながら、LEDを仮止めします。

LEDは熱に弱いのではんだごての温度を下げてはんだ付けを行うのがよく推奨されていますが、自分は320度のままはんだ付けしています。熱でLEDが壊れたことはないので、たぶん大丈夫です。
仮止めが終わったら、LEDの向きを再確認します。

もし欠けのある端子をはんだ付けして確認しづらくなったら、LEDの光る側をみればこちらにも欠けがあるので向きのチェックができます。

すべてのLEDの向きがそろっていればOKです。

LEDの他の端子をはんだ付けします。
LEDに熱が溜まるのを防ぐため、端子一つをはんだ付けしたら隣のLEDに移ります。
それを繰り返し、仮止めした端子も含めてはんだ付けします。

はんだを薄く乗せるの難しいですね・・・。

スイッチソケットのはんだ付け

Chocソケットは点対象のように見えて、実は向きの指定があるので注意が必要です。ソケットの角が斜めに面取りしてあるほうをスイッチの真ん中に寄るように配置します。

このキーボードは中央の2キーだけソケットの位置の上下が異なるので、その部分も注意します。

ソケットはずれにくいので予備はんだをせずに片方ずつ、PCBから浮き上がらないように注意しながらはんだ付けします。ほかに比べて部品サイズも大きいので簡単です。
すべてのソケットの片方をはんだ付けしたら向きのチェックを行います。ソケットの中央に刻印されている「kailh」の文字の向きを見るとチェックしやすいです。

ソケットの向きが正しいことを確認したら、反対側の端子もはんだ付けします。

基板側面の塗装

ここらへんで、いつもやっている作業である、基板の側面をペンで塗るのを忘れていることに気づきました。
基板の色が黒いので、側面も黒くすると見た目が引き締まります。PCB、スイッチプレート、ボトムプレートそれぞれ塗ります。
マッキーで塗るときは2度塗りするのが好みです。

マイコンのはんだ付け

マイコン(RP2040 Tiny)のはんだ付けをします。
このマイコンを使うのは初めてなので取り付け方法を迷いましたが、予備はんだをしてから取り付けることにしました。
マスキングテープで固定してからはんだ付けする方法も考えましたが、ずれたり浮いたりしやすそうなので今回はやめておきました。

まず適当な端子に予備はんだします。シルクで「0」と書かれているところにしました。

そのあと、マイコンの端子とPCBのパッドをピッタリ合わせて指で押さえ、仮止めします。
このときマイコンに衝撃を与えるとPCBのパッドがはがれてしまう恐れがあるので、慎重に作業します。

マイコンの位置に問題がなければ、残りの端子をはんだ付けします。
マイコンに乗っている部品が近いので、はんだごてを当てないように気を付けます。

TinyDashのタクトスイッチのはんだ付け

TinyDashのBOOTボタンとなるタクトスイッチのはんだ付けをします。

TinyDashが小さい部品なのではんだ付けするときにずれないように、マスキングテープで位置を固定します。

4つあるパッドのいずれかに予備はんだを行ってから取り付けます。向きの指定はありません。

ここまでくれば、はんだ付けは終了です。(はんだ付け忘れが無ければ)

TinyDashの取り付け

PCBにTinyDashを取り付けます。
USBコネクタから遠い位置の2つの穴と、USBコネクタの中央に近いほうの穴1つを、付属のネジとナットで固定します。

フラットケーブルの接続

RP2040 Tinyに付属してきたフラットケーブルを接続します。
まずRP2040 Tinyのフラットケーブル接続部にある黒い部分を持ち上げて立てます。
黒い部分の下あたりに、フラットケーブルの青い面を上にして差し込みます。手で差し込むのが難しい場合はピンセットを使います。

フラットケーブルを差し込んだら、黒い部分をフラットケーブルの方向に倒します。これでフラットケーブルが固定され、抜けなくなります。

同じようにTinyDashのフラットケーブル接続部の黒い部分を立てて、フラットケーブルを差し込み、黒い部分をUSBコネクタ側に倒します。

フラットケーブルは長いので、動かないようにマスキングテープでPCBに貼り付けて固定しておきます。

ファームウェアのインストール

ここらでキースイッチとLEDの動作確認を行いたいですが、まだファームウェアをもらっていないんでした。
KKaKさんに連絡したらすぐ対応してくれました。感謝!🙏
BOOTボタンを押しながらPCに接続するとディスクドライブとして認識されます。

認識されたディスクドライブにファームウェア(uf2ファイル)をドラッグ&ドロップして書き込みをすると自動的にキーボードデバイスに切り替わります。

VialでLEDとキースイッチの機能確認

RiemannのファームウェアはVialというものが使われているので、以下のサイトにGoogle ChromeMicrosoft Edgeでアクセスします。
https://vial.rocks/
ウィンドウの真ん中にある「Start Vial」というボタンを押すとデバイス選択ウィンドウが出るので、riemannを選びます。

少し待つと入力キーを変更する画面が現れます。

まずはLEDの確認を行います。「Lighting」タブを選択して「Underglow Effect」を「RGB Test」に切り替えるとLEDが赤、緑、青に光ります。

この時光っていないLEDや色のおかしいLEDがある場合、大体がはんだ付け不良です。はんだごてで端子を温めたり、はんだを足したりすくって取り除いたりするうちに大体直ります。(加熱しすぎに注意)

問題なければ、まぶしいのでLEDをOFFにします。

次に「Matrix tester」タブを選択するとキーの入力確認画面が出るので、ピンセットでキーソケットの端子に触れるか、キースイッチを一つ取り付けて押すかして確認します。

押しても反応しないキーがある場合、はんだ付け忘れ、またはダイオードのはんだ付け不良の可能性が高いです。これも端子を温めると大体直ります。
すべてのキーが反応するのを確認出来たらOKです。

スイッチプレートの取り付け

スイッチプレート(キーボードの一番上に取り付ける板)をPCBに取り付けます。Riemannのロゴが書いてある面が上側です。
スイッチプレートの上側からネジを、スイッチプレートとPCBの間に黒いワッシャーを、PCBの下側にナットを配置するようにネジ止めします。

が、一つずつネジ止めしていくのは至難の業です。
そこで以下の手順で組み立てを行いました。

  • スイッチプレートの上側からネジを差し込み、マスキングテープで固定します。

  • スイッチプレートを裏返して、飛び出ているネジにワッシャーを乗せます。

  • PCBを裏返して乗せ、ナットを手で軽く締めます。

  • スイッチプレート+PCBをひっくり返し、ネジの部分に貼ったマスキングテープをはがしてネジの本締めをします。

スペーサーの取り付け

スイッチプレートとボトムプレートを固定するための金色のスペーサーを取り付けます。
PCBの裏側から指定の場所にスペーサーを置いて指で保持し、スイッチプレートの上側からネジ止めします。
ここで使用したネジはM2 3mmの低頭ネジです。

ボトムプレートの取り付け

ボトムプレートの取り付けを行います。大きくRiemannのロゴが書いてある面が下側です。
こちらは普通にネジ止めするだけです。使用したネジは同じくM2 3mmの低頭ネジです。

キースイッチの取り付け

キーボードにキースイッチを取り付けます。
差し込む際に、キースイッチの金属端子が折れ曲がらないように気を付けます。
もし折れ曲がってしまったら、いったん外してラジオペンチ等で端子をまっすぐに戻します。

Vialでキースイッチの機能確認(二回目)

すべてのキースイッチの取り付けが出来たら、キー入力の確認を行います。
先ほどと同じようにVialに接続して確認画面でキーを押していきます。
が、反応しないキーが3つありました。さっきはちゃんと反応したのに・・・。

原因はスイッチソケットのはんだ付け忘れでした。3か所も・・・。
片付けてしまったはんだ付けセットを再度取り出してはんだ付け。これでちゃんとキーが反応するようになりました。ランド剥がれが起こらなくてよかった・・・!

キーキャップの取り付け

キースイッチにキーキャップを取り付けます。
アルファベットのキーはいいとして、それ以外のキーは印字が合うものが基本的にないので適当に装着します。

ゴム足の貼り付け

滑り止めと底面のネジのこすれを防止するために、キーボードの裏側の角にゴム足を貼り付けます。
KKaKさんからチルト(キーボードの奥側を持ち上げるように斜めにする)する台となる3Dモデルをいただいていましたが、黒色のフィラメントの残りが少なかったので赤色のフィラメントで印刷したところ、あんまりマッチしなかったのでいったんゴム足だけにしました。

キーボード全体が薄いためUSBケーブルが机に干渉するのを危惧していましたが、とりあえず問題なさそうです。コネクタ部分が太いUSBケーブルを使う場合は注意が必要です。

完成!

完成したので写真を撮って、Twitterにアップします。
薄型でタイピングしやすいです。Lofreeのキースイッチも軽快で上質な感じがしますね。
ちなみにキーキャップのKとLを逆に取り付けていたのに気づいたのは2日後でした。

KKakさん、ありがとうございました!