☐
零件與工具清單
電子零件
- ESP32-H2-DevKitC-1 ×1
- MC-38 磁簧開關 ×1
- 防拆微動開關(12×6mm)×1
- CR2450 電池 + SMD 貼片座 ×1
- 綠色 LED + 100kΩ ×1 組
- 1MΩ / 100kΩ 電阻(電池分壓)各 1
- 熱熔膠 + 3M VHB 0.4mm 薄條 ×2
列印件與工具
- 感測器主殼 ×1(PLA)
- 磁鐵嵌座 ×1(PLA・100% 填充)
- 窗框滑軌夾 ×1(PLA・4 層壁)
- 釹磁鐵 6×3mm ×1(嵌座用)
- 焊鐵 + 細錫絲(0.6mm)
- 萬用表(µA 檔測待機)
- USB-C 短線、美工刀、異丙醇
1
焊感測器與分壓電阻
- ✦ 磁簧兩腳:一腳錫到 G3 焊盤、另一腳錫到板上任意 GND 點(兩腳有極性嗎?沒有,乾簧管不分正負)。
- ✦ 防拆微動:公共腳→G4、常閉腳→GND。壓片壓下=導通=G4 被拉到 LOW。
- ✦ 電池分壓:1MΩ 從 3V3 焊到 G2、100kΩ 從 G2 焊到 GND,中點就是 ADC 讀點。
- ✦ LED+100kΩ 串聯焊到 G6 與 GND 之間,LED 長腳(正極)朝 G6。
- ✦ 焊完用放大鏡檢查焊橋——板緣間距 2.54mm,一個橋就待機爆表。
⚠️ 磁簧線別用長杜邦線:超過 10cm 的引線像天線,靠近路由器會誤觸發。感測器直接焊在板緣,殼內不走長線。
2
燒錄與入網測試
- ✦ Arduino IDE 選 Board: "ESP32H2 Development Board"(core ≥3.1),貼上文章「韌體」節程式,填 Telegram token/chat_id,先燒一般韌體測試版(把 gotoSleep 註解掉)。
- ✦ 序列埠 115200 開機:看到
role: child(或 router)代表已加入 Thread 網路。detached?回去用 CLI 重抄 border router 的 active dataset。 - ✦ 把磁簧旁的磁鐵拿開 → 序列埠印 "WINDOW OPEN" → 手機收到 Telegram 推播才算過。
- ✦ 壓片壓住微動測 tamper:撬起壓片 → 收到 "TAMPER" 訊息。
- ✦ 測完把 gotoSleep 註解解開重燒——正式版一覺一事件,序列埠只會開機印一次。
💡 入網順序別顛倒:先用 CLI 範例把 dataset 存進 NVS,再燒正式韌體。正式韌體
OThread.begin(false) 只讀 NVS,不會自己掃網——沒存過 dataset 的板子會一路 detached 到逾時。3
列印件後處理
- ✦ 主殼/嵌座/滑軌夾:PLA、0.2mm 層高、20% 填充(嵌座要 100%——磁鐵靠重量對位站穩)。
- ✦ 主殼上蓋的防拆頂針孔(3.2mm)塞入 M3 螺絲當頂針,螺絲頭朝外留 2mm 突出。
- ✦ 卡榫空試:蓋上壓四角到「喀」,頂針此時應把微動壓到底(G4=LOW)。
- ✦ 嵌座磁鐵槽滴一滴膠,放入釹磁鐵,工作面朝下——朝上裝,間隙多 1mm 就會時靈時不靈。
4
電池入殼
- ✦ 電池座兩腳:+ 焊 3V3 焊盤、− 焊 GND 焊盤(座腳先上薄錫)。
- ✦ 板緣焊點朝下貼一圈膠帶絕緣,整組滑入底槽卡柱。
- ✦ 先不裝電池,量 3V3–GND 無短路後才放入 CR2450(+面朝上)。開機序列埠有輸出=供電正常。
- ✦ 上蓋壓合,確認頂針把微動壓到底——此時開窗測試仍要能觸發(磁簧感應的是窗上的磁鐵,不是殼裡的東西)。
⚠️ CR2450 別與钥匙、迴紋針同袋:鈕扣電池短路發燙只要 30 秒,殼內也務必清乾淨金屬碎屑再放電池。
5
待機電流檢查
- ✦ 萬用表 µA 檔串在電池與板之間(拔電池插表棒):窗關、殼合、深睡後讀值應 <20µA。
- ✦ 超過 50µA:先拔磁簧再測——數值不變代表漏電在板上(檢查焊橋、UART 倒灌)。
- ✦ 10~50µA 之間:多半是板上 CP2102 倒灌,挑開其 VCC 或改裸模组。
- ✦ 通過後裝回電池,正式掛上窗框。
💡 沒有 µA 表怎么辦:用「三天電壓法」——裝機前記 CR2450 開路電壓,三天後再量,掉超過 0.05V 就有漏電(CR2450 自放電約 0.1V/年)。
6
對位掛機與验收
- ✦ 貼附面用異丙醇脫脂,VHB 壓 30 秒,靜置 1 小時讓膠初固。
- ✦ 開窗 → 2 秒內收到推播;關窗 → 待機電流回到 µA 級。
- ✦ 模擬入侵:整殼撬離牆面 → 收到 TAMPER 訊息。
- ✦ 72 小時觀察期:半夜誤報=磁鐵距離在臨界,移近 2mm;漏報=檢查窗扇下沉導致間隙變大。
⚠️ 鋁窗是金屬:VHB 貼金屬框的剝離強度只有玻璃的一半,滑軌夾方案優先;非貼不可時用助粘劑(7471)打底。