Docs
sage60 のケースが、なぜこの形なのかをまとめた設計資料です。右の 3D モデルは、読んでいる章に合わせて動きます。寸法は MX 版の値で、ロープロ版の値は「MX とロープロ」にまとめています。
座標はプレート上面を z = 0 とし、単位は mm です。数値の正はリポジトリの case/casegeo.py と case/fusion/stage0.py です。キーキャップは形を確かめるための簡易形状です。
全体の構造
下から順に、下ケース、PCB、プレート、上ケース、キーキャップと重なります。上ケースは下ケースごと上から被さる形で、外から合わせ目が見えにくくなります。
右は左を x = 122.92 で反転し、トラックボールの分を足した形です。プレートは左右で別の部品です。
- 天面のベゼルは約 5.3 mm
- 上ケースの外壁は 2 mm、外側の角は R2.5、天面の外周は R1(トラックボール手前の一段下げた所はピン角)
- 奥の外形は、左右の奥の角を通る 1 本の円弧
ガスケットマウント
プレートのタブ(3.4 mm)を、下ケースの棚と上ケース外壁の内側の段差で上下から挟みます。プレートはケースに固定されず、ガスケットの上で浮きます。
プレート上面を基準にした高さの積層図で、縮尺は実寸どおりです。
- 段差は外壁と一体の肉厚部です。独立した突起にしないのは、強度と加工のためです。
- 溝の幅はタブの先端 + 0.6 mm(最低 17 mm)、角は R1 です。
- ガスケットの厚さは MX が 1.5 mm(仮)、ロープロは 1 mm を 0.8 mm に潰します。
磁石で閉じる
φ6×3 の磁石を上ケースのリング下面と下ケースの棚に向かい合わせ、左右各 4 か所で留めます。上下で極性を揃えるので、向きを間違えると閉まりません。穴の周りの壁は 0.8 mm です。
- 左:奥に 2 個、親指の段差に 1 個、右下の切り欠きに 1 個
- 右:奥に 2 個、左の辺の切り欠きに 1 個、右手前に 1 個
床とバッテリー
MX の床は水平で、深さは 11 mm です。ソケットの下に吸音フォーム用の隙間が 2.6 mm 残ります。傾斜は机側の面だけなので、床の厚さは手前の 2 mm から奥へ増えていきます。
バッテリー EEMB 552036(5.5 × 20 × 36)は、JST コネクタの左に横向きで置きます。ここだけ深さ 14.4 mm まで掘り、ほかは埋めています。ロープロは空洞全体がバッテリーの深さ(11.6 mm)です。
傾斜とゴム足
内部はすべてプレート面を基準に作り、底面だけを 7° で切ります。ロープロは傾斜なしです。φ10 のゴム足を机側の四隅の凹みに貼ります。MX は机側に φ6×3 の磁石を 4 個埋め、テントや、裏返した左右どうしの連結に使います。
上ケースの外壁も机まで下ろし、下端を同じ傾斜で切っています。机の上から下ケースは見えません。
MCU カバーと USB
XIAO のアンテナのため、MCU の上は金属で覆いません。ウォルナットのカバーが開口から外壁の外面までを覆い、内側の辺はキーキャップを避けます。厚さは MX が 3.0 mm、ロープロが 2.5 mm です。発注は DXF です。
固定は磁石 1 個です。M2 のタップはいずれ緩むのでやめました。上ケースの保持部に φ6×3 を入れ、カバー裏の φ8×0.5 の鉄の円板を吸い付けます。
USB はレセプタクルが面一になる形です。外から差込口の面まで上が開いた溝を掘り、上はカバーが閉じます。ケーブルの成形部は 12.5 × 7 まで通ります。
スライドスイッチ
3 ピン THT(2.54 mm)で、つまみは外壁側を向きます。指を入れる凹みとつまみまでの穴は、上から切る溝です。横穴にしないので、段取りが増えません。
トラックボール
カップは roBa 由来の改造版 trackballcase_low で、回転はしません。耳に φ6×3 を埋め、下ケースの磁石と引き合わせます。横方向はポケットで決まります。支持球は非磁性(セラミックかジルコニア)にします。
- ボールの奥は上ケースを削ります。PCB の縁が見えますが、覆うと 2〜4 mm の細い帯が残るため、この形にしました。
- ボールの手前は枠を残し、天面だけ下げます(MX 7 mm、ロープロ 0.7 mm)。範囲の端は外壁に直角に切り、くさびを作りません。
- 親指とボールの間の凹みは直線で埋め、手前は 1 つの凸包にしています。
J1 コネクタ
センサー基板と PCB をつなぐコネクタです。センサー基板の側面に丸ピンソケット 6604S を 7 本に切って付け、PCB に細ピンの L 字ヘッダ PHA-1x40RG を立てます。ピンを 2.5 mm に切り、ハウジングをソケットに突き当てるので、ピンは見えません。
組み立て順
下ケース、PCB とプレート、センサー基板を差す、上ケースとトラックボールケース、の順です。
MX とロープロ
PCB とプレート(1.2 mm)は共通です。構造は同じで、数値だけが変わります。ロープロの方針は、余白と隙間を詰めて薄くすることです。右上のボタンでモデルを切り替えられます。
| MX | ロープロ | |
|---|---|---|
| PCB 上面 | −5.0 | −2.2 |
| 天面 | +7.0 | +2.0 |
| 空洞の深さ | 11(電池部 14.4) | 11.6 |
| MCU 部 | 外壁を +3.9 まで下げる | 天面より高い台 +4.8 |
| カバーの上面 | +6.9 | +7.3 |
| 磁石穴(上 / 下) | 3.1 / 3.1 | 2.1 / 4.1(位置決めを兼ねる) |
| 外壁 / 嵌め合い | 2 / 0.3 | 1.5 / 0.2 |
| トラックボール座面 | −9.0 | −6.2 |
CNC と検証
本番は JLCCNC のアルミ削り出し、試作は 3D プリントです。形は Python が計算して Fusion で作り直すので、検査もスクリプトで繰り返せます。段取りは 2 回です。
加工ルール
case/cnc_*.json の 4 版すべて、上下ケースとも 0 件です。
干渉チェック
fusion/check.py と check_parts.py で、PCB、部品、キーキャップの押し込み、USB プラグの通り道、トラックボールケースなどとケースの重なりを調べます。形を変えたら全部 0 にします。
作り直し方と製造データ
cd case ./venv/bin/python make_left.py && ./venv/bin/python make_right.py SAGE60_LP=1 ./venv/bin/python make_left.py && SAGE60_LP=1 ./venv/bin/python make_right.py # Fusion: fusion/stage0〜3(右は stage4)、stage5、右は最後に stage6 # 検証: fusion/check.py, check_parts.py, machinability.py ./venv/bin/python site/build_models.py # このサイトの 3D モデル
production/case_cnc/:ケースの STEP(JLCCNC)production/case_print/:試作用の 3MFproduction/plate/:プレートの DXF、STEP、3MFproduction/mcu_cover/:カバーの DXF
未決事項
- ガスケット厚(MX は仮の 1.5 mm)とクリアランスの確定値は、実物で決めます。
- Choc v2 の取付高さ 2.2 mm は v1 と同じと仮定しています(未実測)。
- スライドスイッチの開口の高さは、部品が決まってからつまみに合わせます。
- MCU カバーは外壁側をひねると回ります。気になればピンを足します。