WFU

網站頁籤

2022年7月9日 星期六

Dactyl manuform - Python 生成外殼、可彎曲 PCB



Dactyl manuform 是設定參數後,用程式語言生成 3D 外殼的分離式人體工學鍵盤。

按鍵的排列不是平面,要用手焊連接軸體和鍵盤矩陣。上次分享的 Dactyl manuform 用 Amoeba King 單軸 PCB,焊接起來還是很花時間。

網路上有設計給 Dactyl manuform 的 PCB,用 0.6mm 厚度就可以配合外殼彎曲,讓組裝過程比較快速。



排線直接焊在 PCB 上預留的位置。



其實在分享第一把之前,就已經訂好可彎曲 PCB 了。可惜 Wylderbuilds 的外殼跟 PCB 的軸體位置對不上。

想說用 Dactyl Generator 外殼生成器 (網站最近當掉),預設值生成 3D 檔再找廠商列印。但是 Dactyl Generator 的參數設定中,似乎沒辦法把螺絲固定座的位置放在殼內,突出外緣比較不好看。

而且找廠商印的花費還不少。左右手、底蓋、微處理器固定座加起來,再考慮如果參數不對,要重印的話,乾脆直接買一台 3D 列印機自己印!

於是就試著依原始設計者的說明,用 Clojure 程式語言來生成 3D 檔。可是沒有底子的人,安裝完軟體之後,沒有詳解步驟,要從哪裡輸入指令都不知道。

後來看到用 Python 生成 3D 檔的方式,有給視窗系統的批次檔,似乎比較簡單。在 GitHub 上繞了好久,等到把整個目錄都複製到硬碟上,才終於看到 3D 檔案出現。

在 generate_configuration.py 裡,大部分的參數都有說明。但是很多參數就算看了說明,也不知道是什麼意思,要真的生成外殼 3D 檔才理解。



在視窗系統用批次檔,自動生成 Docker Desktop 虛擬環境裡的映象檔。執行裡面的 DM-run,就會依 run_config.json 檔案中的參數生成外殼的 SCAD 檔。



用 OpenSCAD 開啟 SCAD 檔,渲染後就可以輸出 3D 列印機能接受的 STL 檔。



Python 生成的底蓋有問題,不是完整的 3D 檔,沒辦法輸出 STL 檔,只能輸出 DXF 的 2D 向量圖檔。



都走到這一步了,再裝一個軟體,用 Shapr3D 把外殼邊緣修完整。



平面往上拉,就可以形成 3D 結構。



讓底部的螺絲孔下沉一點,留空間給埋頭螺絲。



3D 列印機是 Ender 3 S1,切片軟體是 Cura 5.0。層高 0.2mm,填充密度 10%,樹狀支撐,列印速度 50mm/s。這樣光單手外殼要印 17 小時 21 分鐘,底蓋大約 5 小時。



拆掉支撐後的外殼,銀色 PLA 材質。因為上蓋的厚度、直行的交錯距離、預留螺絲孔的大小等錯誤,印了第 4 個才成功。



用帶有紋理的鋼板,列印後轉印在底蓋上,比全光滑的好看。



安裝熱熔螺母之後,再安裝 PCB。雖然還是要稍微調一下 PCB 角度,但已經比手焊方便多了。



確定韌體刷好,再裝上底蓋。這把 4x6 配列,內部空間沒有 5x6 高,微處理器上的杜邦接頭快要頂到 PCB。如果要做更小尺寸的配列,可能就不能用杜邦接頭了。



組裝完成。軸體是敲擊聲很大的 Zaku 63.5 克雙段彈簧線性軸。



裝上鍵帽,KAT Atlantis,PBT 材質,二射成型。



拇指區配合 PCB 的設計,是 5 鍵的 Mini 版本。不知道是 PCB 還是韌體設定沒弄好,離拇指最遠的那顆按鍵在兩手都沒有作用。

把 PCB 研究仔細之後,覺得是 QMK 裡的 keymap 設定的問題。因為 PCB 上標示的拇指區都是同一個橫列 (row),但是 QMK 預設 keymap 的拇指區其中一顆在不同列。

如下圖把拇指區都改成同一列。


檔案下半部的行列編號要一起修改,沒有的鍵就標記 XXX。



修改之後的拇指區就可以正常運作了。



印到這組殼的時候,3D 列印機上的 Z 軸有些螺絲鬆動,不然垂直面可以印的更平整。



因為跟 Wylderbuilds 訂 3 個殼了,有回饋意見給他。他就試著調整參數,讓外殼可以裝彎曲 PCB,還免費寄一組外殼給我試用。

不過買了 3D 列印機之後,發現自己印的殼也不錯。底蓋比較好看,螺絲孔大小剛好,不用再打磨。
 


謝謝觀賞。