進行 Pi4 + 533MC + QHY5L + iOptron 的全系統 VirtualHere 連線測試:
NINA 以 Loop 每 5 秒拍攝一張,PHD2 每 2 秒 Loop ,AllskEYE 執行中。
且行 且忘 且隨風
之前寫過這篇:Luke 的休閒筆記: 評估「小氣象台」製作的可行性 寫過也就不了了之,沒想到把
Luke 的休閒筆記: 零基础入门学用Arduino教程-智能应用篇 - 重點整理 拆了後,取得的 NodeNCU + 1602 LCD + DHT11 問 Gemini 能夠怎麼再利用,這就有了:
之後再把 Luke 的休閒筆記: 零基础入门学用Arduino-MeArm机械臂篇--重點整理拆了,NodeNCU + 1602 LCD + DHT11 升級為 UNO + 1602 LCD + DHT22( 蝦皮兩顆 NT$100) , 再加上淘寶買的四路 MOSFET( 約 NT$250, 買四路,原先的想法除了兩條除霧帶外,一路給主鏡自動開蓋用,一路給平場板用,後來因為難度太高了而放棄,要拍亮、暗平場,還是手動最簡單,拍好順便收拾器材)N MOS管模块 光耦 隔离 PWM开关 场效应管驱动模块 控制板 大功率-淘宝网 ,在 Gemini 的幫助下,花了近一個月的時間搞出了一個Luke 的休閒筆記: 全自動防結露天文中樞建置 ,老王賣瓜,覺得還不錯用,就順手再弄了個 Luke 的休閒筆記: 全自動防結露天文中樞建置 (番外篇):全自動智慧除霧中樞 (開源獨立版) 。
NINA 平場拍攝的半自動:==》實作測試中......
Luke 的休閒筆記: 天文攝影控制筆電升級 Dell vostro 14-5480 原本雙系統,現已刪除 Linux Mint,512G SSD 全部給 Windows 10 。
在天文攝影與自動化觀測的建置過程中,舊設備的軟硬體限制往往是最大絆腳石。所以將 2013 MacBook Pro 強制升級至 macOS 12 (Monterey)。
將 2013 年的老機升級至 macOS 12,並非單純的軟體安裝,而是深入 EFI 層級的硬體欺騙與驅動重建。此工具在系統中扮演「心律調節器」的角色,絕對不可解除安裝。
成功實現 2013 MacBook Pro 在 macOS 12 下的闔蓋雙螢幕冷開機。徹底消滅介面切換時的掉幀問題,並順利佈署最新版遠端控制軟體,轉型為極度穩定的高效能遠端中控台。
重點摘要
硬體規格深度解析與實戰匹配度
1. 為什麼 SATA 協議反而更佳? 現在市面上一堆標榜破千兆 (1000MB/s) 的外接 SSD,內部都是 NVMe 晶片。NVMe 速度雖快,但啟動與大量讀寫時的「瞬間峰值電流」非常高,極易觸發 2013 MBP USB 接口的自我保護機制而瞬間斷電。 這顆 SC680 是 SATA 架構,功耗極低且平穩。對天文攝影這種要求「連續幾小時絕對不能斷線」的嚴苛環境來說,低功耗帶來的穩定度,遠比極限速度重要太多。
2. 完美的效能天花板對接
3. 最後一哩路:採購正確的實戰線材 這顆外接盒是 Type-C 孔,所以需去網購或實體店買一條符合以下三個嚴格條件的線:
搞定這條短彎頭數據線,貼上 3M 子母扣, 2013 MBP 就能化身為一台兼具 Mac 頂級觸控體驗與 N.I.N.A. 強大火力的星空主機了。
Luke 的休閒筆記: 升級 2018 Mac Mini:Windows 外接硬碟 + eGPU + PSVR連接(不需 PS4)搞定 在 PS4 送人後,閒置了好久,而目前 2013 MBP 16G RAM 256G SSD ,剩下約 189G ,已升級 macOS 12, 能夠安裝的 Kstar/Ecos 為 3.6.8 ,對焦演算法比起 NINA 差很多,因此 Gemini 建議我安裝「Boot Camp 雙系統」,但裝在本機實在太浪費了,這才想起上述文章就玩過 WTG 的方,這就有了WTG 建置與安裝天文攝影所需的各種驅動、軟件及設定:
重點摘要
決定走「尿袋 (Windows To Go)」路線,以下是專為 2013 MBP 量身打造的無痛製作與驅動補完流程。
剛裝好 Windows 時,Mac 所有的特規硬體(包含 Wi-Fi)都會失效。你必須先把救命藥打包好。
借用那台 Dell 筆電來製作這顆外接 SSD。
下載工具: 下載微軟官方的 Windows 10 ISO 映像檔,以及開源燒錄神器 Rufus。
插上 ADATA 240G SSD。
開啟 Rufus,進行以下關鍵設定:
點擊「執行」。(若 Rufus 詢問要安裝哪個版本,請選擇 Windows 10 Pro;若詢問是否要略過隱私設定與建立本機帳號,可全部勾選以節省時間)。
將製作好的 ADATA SSD 插上 2013 MBP。
按住 Mac 的 Option (Alt) 鍵不放,按下電源鍵開機。
畫面上會出現開機磁碟選擇,選擇橘色外觀的 「EFI Boot」(就是ADTATA SSD Windows 碟)。
進入 Windows 10 桌面後,插上階段一準備的 USB 隨身碟。
進入 WindowsSupport 資料夾,點擊 Setup.exe,安裝 Apple 原廠的所有底層驅動。安裝完畢後重開機(因為安裝了 OpenCore ,不用再按Option 就能直接進 windows),此時 Wi-Fi、藍牙、螢幕亮度調節都會恢復正常。
觸控板終極改造: * 上網搜尋並前往 GitHub 下載 mac-precision-touchpad 驅動程式。
.inf 檔案按右鍵選擇「安裝」。在這種跨民宿的遠端環境下, Dell 扮演了至關重要的「現場指揮官」角色:
由於「執著於 KStars」的初衷——想要 MBP 的質感。現在有了 Windows To Go (WTG),變成可以直接把 Dell 踢出這條線路:
mac-precision-touchpad 驅動,在操作 N.I.N.A. 的星圖與 Hocus Focus 面板時,流暢度遠勝那台 Dell。Win + R輸入%LocalAppData%請依照以下的 1 ➔ 2 ➔ 3 順序 在 Mac WTG 環境中進行安裝:
這是一切天文軟體溝通的橋樑,沒裝這個後面都不用玩。
因為有 ZWO 與 QHY 的相機,以及 iOptron 的赤道儀。
ASI Cameras native driver 以及 ASCOM driver。All-in-one 安裝包,安裝時勾選 QHY 相機型號與 PoleMaster。.1476 星表檔丟進資料夾)軟體裝完後,最後執行「系統封印」,避免系統在深夜拍攝時自行更新或掃描。
Win + R,輸入 gpedit.msc。電腦設定 > 系統管理範本 > Windows 元件 > Windows Update。Win + R,輸入 services.msc,找到 Windows Update,將啟動類型改為 「已停用」 並點擊 「停止」。gpedit.msc。電腦設定 > 系統管理範本 > Windows 元件 > Microsoft Defender 防毒軟體。現在才知道 Windows 也可以很漂亮,之前用 Dell , 所以實在太傷眼力了, 現在好很多了.目前用 Logi 2s Mouse 還可以, 但若掛上 USB3.0 to RJ45 藍芽大概完蛋了,Gemini 建議可以去蝦皮或二手市場,買一條蘋果原廠的 「Thunderbolt 對 Gigabit 乙太網路轉換器」(型號:A1433)。
但這陣子與 Gemini 交手的經驗得知,要持續逼問才能得最優解,最後告訴我可以利用 USB 2.0 延長線連接網卡來「物理隔離 2.4GHz 藍牙干擾」的零成本方案。而我剛好有一條閒置的 USB 2.0 延長線。
利用物理特性的零成本 B 計畫:
USB 2.0 延長線降頻大法: USB 3.0 會干擾 Logi 2S 藍牙滑鼠,是因為 USB 3.0 在高速傳輸時會產生 2.4GHz 的強烈頻段雜訊。 手邊剛好有一條老舊的 USB 2.0 延長線,把綠聯 RJ45 網卡先插在延長線上,再插進 MBP。這會強制網卡降級以 USB 2.0 模式運作。
1. ZWO ASI533MC-Pro (主相機負載)
2. QHY5L-II-M (導星負載)
3. 驅動程式相容性確認 目前的 WTG 系統中,已安裝了 ZWO Native/ASCOM 驅動(對應 ASI533MC-Pro)以及 QHY All-In-One 驅動(對應 QHY5L-II-M),系統端無須進行任何調整,兩部相機皆能被 N.I.N.A. 與 PHD2 正確識別。
戰術結論: 設備校正後的實際數據流極小,利用 USB 2.0 延長線連接網卡來「物理隔離 2.4GHz 藍牙干擾」的零成本方案,不僅 100% 可行,更是目前環境下最優的實體網路防護策略。
重點摘要
這招「尿袋+Option」的實體雙系統切換,堪稱星空攝影的頂級災備方案。
1. 沉沒成本極小化
上山拍攝最大的隱形成本是「時間與體力」。萬一 KStars 突然與 Pi4 斷聯或遇到不明的系統崩潰,原地抓 Bug 絕對會讓人崩潰。這時準備好的 ADATA 240G 系統碟就是救命符,重開機按住 Option,三分鐘內直接用另一套完全獨立的 ASCOM/Alpaca 生態系無縫接管硬體,確保整晚的曝光時間不會白白浪費。
2. 軟硬體徹底脫鉤
在 Pi4 端已經做好了 INDI 與 Alpaca 的雙向準備。這意味著:
Plan A (macOS): MBP 透過有線網路直連 Pi4,KStars 直接呼叫 INDI 服務器。
Plan B (WTG): MBP 掛上尿袋重啟進入 Windows,N.I.N.A. 透過網路呼叫 Alpaca 服務器。
無論系統怎麼切換,頂樓或高山上的赤道儀、相機、自製除霧器等「硬體實體接線」完全不用去動它。
極致物理隔離: 拔掉 SSD = 原生 MacBook Pro;插上 SSD = 滿血 Windows 天文指揮艙。這是最完美且無腦的雙系統切換邏輯。
直接用「物理插拔」來決定這台機器的身份,簡單、粗暴、零失誤。
2013 MBP 掛了尿袋真是吊打 Dell Vostro 14-5480 ,不說觸控板的體驗,那個有鍵盤背光就完勝 Dell ,尤其是天文攝影,具有雙重身份,可以 RDP 遠端 Dell,如果是在帳篷裡直連,Kstar 不行,秒換 NINA ,加上 Logi 2S 滑鼠,更是如虎添翼。
重點摘要
compatible 韌體與 Windows 系統環境達成穩定連線的底層邏輯。T7C 作為 ASI120MC 的致敬版,常被用於導星或 AllSky 氣象監控。然而其底層硬體設計在現代作業系統中存在致命缺陷,必須透過軟硬體雙管齊下的方式進行「洗白」與封印。
ASI120MC compatible 韌體。此操作從相機靈魂深處將通訊封包強制閹割回標準的 512 bytes,取得相容現代控制器的「良民證」。若在純 USB 3.0 環境下仍有不穩定的疑慮,可利用 USB 2.0 Hub 進行物理隔離。USB 3.0 介面具有 9 根針腳,而 USB 2.0 Hub 物理上缺失了 5 根高速針腳。將相機接上 Hub,等同強制電腦控制器切換回傳統 D+/D- 慢速通道,利用物理限制完美避開高速封包衝突。
Allsky T7C 監看天空狀況,在天氣變化時,NINA 的 Al Weather 或 Ground Station 讀取它存下來的即時影像,能即提出警告,趕快去收器材,同時在過去的過程中做好一些收尾動作,到了就能馬上收器材。==》實作測試中......
隨著我征戰多年的小筆電,雖然仍頭好壯壯,但如果要 PHD2 導星、NINA 拍攝,再加上跑 T7C(也是接在 PI 4) + AllskEYE 是難為它了,這任務就交給:Luke 的休閒筆記: 天文攝影控制筆電升級 Dell vostro 14-5480 來執行。(原本雙系統,現已刪除 Linux Mint,512G SSD 全部給 Windows 10 )
這套系統經過底層降級與儲存介質的重構,徹底消除了 I/O 瓶頸與軟體套件相容性問題,確立了「實體隔離、專機專用、算力極大化」的黃金三角架構。
徹底捨棄現場 Wi-Fi 與路由器,全面改採網路線直連,確保高山極端環境下巨量 FITS 檔與 VirtualHere 轉發的絕對穩定。
192.168.137.12,作為深空攝影的指揮中心。192.168.137.1,啟用 Windows ICS 網際網路共用(全天球監控或 NINA 備援)。eth0) 強制綁定靜態 IP 192.168.137.2,無論接上 Mac 或 Dell 皆可無縫通訊。Pi 4 卸載所有高耗能運算與介面,純粹作為「無頭 (Headless) USB 實體轉發站」與「氣象溫控中樞」。
/home/pi/astro_scripts/。early_lcd.service ➔ dht_reader.service (執行閉環溫控) ➔ lcd_display.service。精準分配 4 個 USB 埠,避免供電超載與 2.4GHz 高頻干擾,確保資料流互不塞車。
Ekos 運行於 MacBook Pro,全權負責星圖盲解 (本機星表)、影像儲存與座標基準。
Local 模式。--,防止導星時誤觸 EAF 破壞主鏡焦平面。重點摘要
這套「PI4 → Dell → Mac」的資料流向,完美避開了所有系統的軟肋,並把每一個硬體的強項發揮到極致:
1. 實體中繼層:PI4 + VirtualHere + 實體網路線
2. 核心運算與自動化大腦:Dell 筆電 (Windows + NINA + PHD2) 這是整套系統的靈魂。NINA 的 進階排程器 (Advanced Sequencer) 能完美吃下你提出的所有自動化需求:
3. 舒適圈指揮所:2013 MacBook Pro (RDP 遙控)
前情提要:全自動防結露天文中樞建置
⚠️ 重要提醒:本篇釋出的 UNO 代碼為隨插即用的獨立運作版。為了達成免接電腦即可獨立運作的目標,此版本去除了原本架構中 Raspberry Pi 4 與 ASCOM Alpaca 協議的橋接功能。因此,完成後的裝置無法連線至電腦,也無法透過 NINA 等天文軟體讀取溫濕度數據或進行控制。前文能與 NINA 連動的版本是針對我個人設備特製的雙核心架構,特此說明。
本專案將露點運算與動態 PWM 邏輯下放至 Arduino UNO,只要接上電源即可獨立運作,完全脫離外部電腦。代碼採 CC BY-NC 4.0 授權,僅供同好 DIY 交流,嚴禁商業量產。
C++
/*
* Project: Auto-Dew Controller (Standalone Version)
* Author: Luke
* License: CC BY-NC 4.0 (Non-Commercial Use Only)
* Copyright (c) 2026 Luke. All rights reserved.
* * 本專案代碼與硬體架構設計僅供個人與同好交流使用,
* 嚴禁任何未經授權的套件販賣、量產或其他商業牟利行為。
* * 【免責聲明】
* 本程式碼僅提供概念驗證與邏輯參考。使用者須自行承擔 DIY 風險,
* 若因線路短接、供電錯誤造成設備燒毀或硬體損壞,作者概不負責。
*/
#include <DHT.h>
#include <math.h> // 引入數學函式庫計算 log
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int pwmPin1 = 9; // 第一路 (導星鏡)
const int pwmPin2 = 11; // 第二路 (主鏡)
// 導星鏡火力權重 (避免過熱產生熱擾動影響導星)
const float GUIDE_WEIGHT = 0.5;
unsigned long lastReadTime = 0;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(pwmPin1, OUTPUT);
pinMode(pwmPin2, OUTPUT);
analogWrite(pwmPin1, 0);
analogWrite(pwmPin2, 0);
}
void loop() {
// 每 5 秒讀取一次溫濕度,防止 DHT22 積熱
if (millis() - lastReadTime >= 5000) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
// 1. 計算露點溫度 (Magnus-Tetens 公式)
float alpha = log(h / 100.0) + (17.62 * t) / (243.12 + t);
float dewPoint = (243.12 * alpha) / (17.62 - alpha);
// 2. 計算溫差
float deltaT = t - dewPoint;
int basePwm = 0;
// 3. 動態 PWM 演算法判斷
if (deltaT >= 5.0) {
// 安全區
basePwm = 0;
} else if (deltaT <= 1.0) {
// 高危險區
basePwm = 255;
} else {
// 動態警戒區 (1.0°C ~ 5.0°C)
// 將溫差線性轉換為 0~255 的 PWM 數值 (放大 10 倍處理浮點數對應)
long dT_10 = deltaT * 10;
basePwm = map(dT_10, 50, 10, 0, 255);
basePwm = constrain(basePwm, 0, 255);
}
// 4. 計算雙通道實際輸出
int pwm1 = basePwm * GUIDE_WEIGHT; // 導星鏡吃 50% 火力
int pwm2 = basePwm; // 主鏡吃 100% 火力
// 5. 執行硬體輸出
analogWrite(pwmPin1, constrain(pwm1, 0, 255));
analogWrite(pwmPin2, constrain(pwm2, 0, 255));
// 6. 序列埠監控輸出 (獨立運作時不影響,接電腦可看數據)
Serial.print("T:"); Serial.print(t, 1); Serial.print("C, ");
Serial.print("H:"); Serial.print(h, 1); Serial.print("%, ");
Serial.print("Dew:"); Serial.print(dewPoint, 1); Serial.print("C, ");
Serial.print("Diff:"); Serial.print(deltaT, 1); Serial.print("C -> ");
Serial.print("PWM1(導星鏡):"); Serial.print(pwm1); Serial.print(", ");
Serial.print("PWM2(主鏡):"); Serial.println(pwm2);
} else {
Serial.println("DHT22 Read Error!");
}
lastReadTime = millis();
}
}
接腳配置 (DHT22 感測端):
VCC 腳位唯一接至 UNO 的 3.3V 腳位(嚴禁接 5V 以免鎖死晶片)。GND 接 UNO 的 GND。DATA 接 UNO 的 Pin 4。接腳配置 (N-MOSFET 控制端):
Pin 9 接至 MOSFET 模組的第一路 PWM 訊號輸入(對應導星鏡)。Pin 11 接至 MOSFET 模組的第二路 PWM 訊號輸入(對應主鏡)。GND 接至 MOSFET 模組的訊號端 GND(共地)。強弱電實體隔離 (電源佈線):
防水抗露工程:
韌體燒錄: 將 UNO 接上電腦,透過 Arduino IDE 將上述程式碼燒錄進開發板。
系統佈署: * 將 DHT22 放置於能真實反映環境氣溫的開闊處。
獨立供電順序:
全自動防護啟動:
通電後,UNO 即刻接管溫差偵測,可透過 N-MOSFET 模組上的指示燈觀察狀態:
這是一套完全脫離市售封閉系統,從硬體電壓到軟體通訊協定全盤掌握的自製智能氣象中樞。
3.3V 腳位 。若誤插 5V,極易觸發晶片保護機制鎖死,導致資料恆定噴出異常的 125% 濕度。timeout 放寬至 6 秒,並拔除 reset_input_buffer() 等清空指令,確保不漏接任何毫秒級的資料流。溫差 ≥ 5°C:安全區,PWM 輸出 0(關閉加熱,節省電量)。溫差 ≤ 1°C:高危險區,PWM 輸出 255(火力全開,強制除霧)。1°C < 溫差 < 5°C:動態警戒區,系統會自動算出 0~255 的線性火力(例如溫差 4.3°C 時輸出 PWM 47),達成溫和且精準的鏡片保護。BaseHTTPRequestHandler 在 Pi 4 內部自建 API 伺服器,對外廣播 UDP 32227 Port 進行設備探索。lcd_display.py 以每 2 秒一次的頻率讀取該 JSON 檔。使用 String Padding 技術 (.ljust(16)[:16]) 強制將字串補齊至 16 字元,利用空白覆寫舊字元,徹底汰除 lcd.clear(),實現零閃爍的完美監控雙排版:
T:27.7C H:68.0%PWM:47 D:23.4C雖然主鏡與導星鏡處在同一個氣溫與濕度環境中,但它們的熱容量 (Thermal Mass) 完全不同:
這套自製的雙通道天文中樞,在邏輯與擴充性上已經完全超越了市售除霧控制器。
影片錄製時是在春雨綿綿的日子裡:
溫差 ≥ 5°C),P:0,0, 可以看到 N-MOSFET 四路模組的兩路燈號熄滅,代表除霧帶沒有加熱。接下來把冷氣關掉,打開房門,溼度回升, N-MOSFET 四路模組的兩路燈號再度點亮。基於在 Pi4 植入的 Magnus-Tetens 公式,已擁有高精度的露點資料,可完全捨棄傳統恆溫加熱,改採動態 PWM 控制以節省電力並避免鏡筒熱氣流(Tube Currents)干擾視寧度。
Luke 的休閒筆記: 無法看到北極星下的極軸校正調整:使用Polar Scope Align Pro
早期使用 iPhone 時,購買了這支 app ,後來發現用來粗對極軸蠻好用的,但手機換成 Motorola Razr 50 Ultra ,竟然連內建的指南針都沒有,還得上 PlayStore 下載,免費的都有廣告,所以問了 Gemini :
開發一款沒有廣告的指南針 App
- 自用而已,不上 PlayStore 銷售
- 要用在我的 MOTO Razr 50 Ultra ,且要能正常顯示在外螢幕
- 只要兩個功能:
i. 指南針(具有校正功能,即 8 字繞校正)(註:第二版改成有水平泡泡的)
ii. 能極軸校正功能(手機放在望遠鏡上時,調整赤道儀的方位角、仰角使逼近中心點。以上由於手機的校正會因地磁及各項干擾因素,也只能粗對極軸,但這只是讓我使用 Kstar/Ecos 的三點校正極軸前置作業,讓深空攝影更加方便。
寫代碼你最專業,應該是 a pieces of cake ,至於需要的那些圖,我可以用 Affinity Photo 畫。
我要在 Mac mini 2018 OS 15.7.4 下開發,需要那些前置作業及預備那些圖,請條列。
然後在 Gemini 指導下畫了這些圖:
程式主要是針對我的 Motorola Razr 50 Ultra 內、外螢幕製作的(帶有台灣磁偏角補償的暗適應工具),特別針對外螢幕優化,我不用開蓋就能使用,如果你也是小摺應該會很好用。程式執行時畫面如下: