現代實驗技術-物理

工作坊 3 — 韌體與基礎機械設計(PCB 外殼)· 2026年10月2日(五)· 14:20–16:20 · 中研院原分所 311 室(R311)

工作坊 3 — 韌體與基礎機械設計(PCB 外殼)

投影片:Workshop 3: getting things made(工作坊 3:把東西做出來)。今天沒有人要學一套 CAD 軟體(computer-aided design,電腦輔助設計:畫零件用的程式):Claude Code 寫出幾何形狀;你負責訂規格、看、核對數字、切片與做決定。

硬性截止:10月9日(五)下午 2 點。3D 列印/雷射切割用的最終外殼檔案必須在那時交付製造。

先修條件:OpenSCAD 2021.01 與 Bambu Studio 已安裝並開啟過一次(設定步驟 11)。請帶筆電與你的開發板。

詳細計畫(依上方工作坊大綱)

電路板已經下單(9月28日送出,約 10月16日回來),所以韌體端的一切都在開發板上以模擬模式(SIM mode)執行(這種建置讓韌體(firmware,微控制器(microcontroller)上的程式)假造硬體,讓應用程式在光板上就能跑)。你要為你儀器的韌體寫好第一個驅動程式與它的應用程式面板、接上一條警報規則,並設計外殼。

韌體與應用程式——一個驅動程式與它的面板

區塊驅動程式介面

每個驅動程式是一個資料夾 firmware/src/blocks/<section>_<name>/,實作 name() / begin() / loop() / handle(cmd, reply) / status(out)。你從 blocks/template/ 開始。

通訊協定

WebSocket(手機網頁與板子之間的即時雙向連線)訊息:進來的是 {block, cmd, args},出去的是 {block, status};每個驅動程式一個面板模組 host/pwa/panels/<section>.js;instrument.py(你電腦上的 Python 程式)在 Python 端鏡射同一組指令。

模擬模式

SIM 旗標假造硬體,讓整個應用程式在一塊光板的開發板上就能跑——你搶在電路板之前開工,板子到了再把旗標關掉。

每個面板一條警報規則

驅動程式的狀態 → 基底警報引擎 → 模組輸出+通知:A「AI1 超過門檻」或「看不到自由感應衰減」· B「輸出削波」或「看到 TRIG 邊緣」· C「光耦計數跳動」或「某路模組輸出忘了關」。

E11:模擬模式下的驅動程式+面板。先選出你的儀器最需要的那部分電路板——你在工作坊 2 參與的那個區塊是很自然的起點,但不是必須。/tutor L3:把範本複製到 blocks/<section>_<name>/;填入該區塊的指令(A read_all、set_range、capture · B set_dc、sine、pulse、dio · C module、module_all、opto_reset);讓 SIM 分支回傳合理的數值;加上面板與一條警報規則;燒錄(flash:經 USB 把韌體寫進板子);在手機上看到面板有反應;開拉取請求(pull request:請求把你的修改併入共用專案;會先有人審查)。家教(tutor)產生骨架;你替指令命名、寫 SIM 數值,並在燒錄前解釋一次訊息的往返。彼此對話的區塊會兩兩配對(B ↔ A:從 AO1 輸出的波形在輸入端量到;B ↔ C:一個脈衝去切換一路模組輸出)。面板能在模擬模式下控制區塊且拉取請求已開啟即完成。

外殼——專案 3 的一部分

列印件與切割件的訣竅

螺母槽就是固定方式:M3 螺母滑進一個 5.8 mm 的六角槽、深 2.5 mm,螺絲把它鎖緊。壁厚 2 mm;孔加大 0.3 mm(印出來的孔會偏小);層與層之間是最弱的方向,所以讓受力沿著層走;45° 是不加支撐還印得出來的最陡懸空角。先印一片測試片(test coupon):它告訴你這台印表機的配合尺寸。PCB 前面板本身就是儀器的正面,所以前蓋就是一塊在面板零件位置開孔的平板。

你自己的設計

規格由你自己寫,依據外殼簡報(brief):外殼要裝什麼、列印規則、要交的檔案,以及兩塊板子的模型。這些模型 hardware/release/class-board.stl 與 front-panel.stl(旁邊有 STEP 版本)是用 kicad-cli 從最終的 KiCad 電路板匯出的,只保留接頭、LED 與模組,所以每個尺寸都來自電路板,沒有一個來自尺。請 Claude 在寫程式碼之前先問你問題。先在 OpenSCAD 中一次開一塊板子(一行 import())好好看它;沒有範例外殼可抄,因為設計是你自己的。

輸出

housing.scad、base.stl、cover.stl、coupon.stl(STL:3D 列印檔)、cover.dxf(DXF:雷射切割圖)與一張螢幕截圖,放在 docs/students/<name>/housing/,在截止前交出。由所方負責列印與切割。

E12:你的外殼。在共用螢幕上,同時在你自己的 Claude Code 工作階段中、旁邊開著 OpenSCAD:依簡報寫出你的規格、回答 Claude 的問題、讓它寫出 housing.scad、看它並在主控台(console)核對數字、修正並讓它成為你的、匯出各零件並在 Bambu Studio 切片、加上測試片、從原始檔控制(Source Control)面板提交。用你已經會的其他 CAD 軟體做的設計也歡迎,只要裝得下板子並趕上截止。檔案放進你的資料夾即完成。

接下來——這是最後一場工作坊:E11–E12

外殼檔案在 10月9日(五)下午 2 點前;驅動程式+面板的拉取請求;接著是你的儀器:它的韌體、App 與專案網站;約 10月16日領取電路板與外殼並組裝;10月26–30日發表。改進你的 App、動手做、玩得開心。需要協助:先問家教(tutor),再寄電子郵件至 s.p.bennetts@g.iams.sinica.edu.tw。

成果發表與展示

展示由你自己安排:你的儀器、你的 App 與你的網站實際運作,用最能呈現它們的順序;想規劃的話,請家教幫你。

教材