
如果你家里有一臺半自動意式濃縮咖啡機大概率有過這種體驗開機之后只能干等預熱水溫到底穩定不穩定全憑感覺萃取過程中壓力是什么走勢根本看不到。這些問題其實都不是玄學而是缺少一個能實時檢測、閉環控制的控制器。我花了幾周時間用一塊ESP32 MCU把家里那臺老式震動泵半自動機做了全面改造——現在它不僅能通過Wi-Fi聯網還支持手機App遠程開關機、預熱監控、溫度PID閉環、壓力流量記錄甚至能OTA升級固件。今天就把這個“Wi-Fi Espresso Machine”項目的完整思路、硬件選型、固件開發、踩坑實錄全部翻出來給同樣想動手折騰的朋友一個可以直接抄的參考。這個項目最適合兩類人一類是手頭有舊咖啡機、想提升萃取質量的咖啡玩家另一類是玩ESP32/嵌入式開發、想找真實落地場景的工程師。整個項目不需要高深理論只要你能拿烙鐵焊板子、會裝Arduino IDE就能跟著做出一臺能聯網的半智能咖啡機。下文所有電路和控制邏輯我都按照常見方案做了補充說明參數可以按自己機器微調。1. 項目整體思路與方案選型1.1 為什么選擇ESP32作為主控MCU先回答一個最核心的問題為什么是ESP32市面上做控制的MCU太多了STC、STM32、樹莓派Pico都能跑控制器邏輯但咖啡機這個場景有幾個特殊要求讓我最終把票投給了ESP32。第一是通信能力。一臺“Wi-Fi Espresso Machine”必須自帶聯網能力。ESP32系列芯片原生集成2.4GHz Wi-Fi和藍牙這意味著我不用再外掛ESP8266模組或者NRF24L01這類無線模塊能省掉不少布線成本和麻煩。第二是模擬采集能力??Х葯C需要監控水溫、鍋爐壓力、流量這些信號最終都要落到ADC和GPIO上。ESP32內部有2個SAR ADC支持12位采樣而arduino生態下調用analogRead()就能讀門檻極低。第三是外設接口足夠豐富I2C接OLED屏幕、SPI接SD卡或者Flash、PWM驅動可控硅加熱、UART外接藍牙或傳感器全部覆蓋。拿STM32F103這類傳統MCU對比它雖然實時性更穩但要想聯網就得額外接轉接板開發復雜度直接上了一個臺階。拿樹莓派對比它運行Linux、性能強但冷啟動速度慢、實時響應不夠穩定而且咖啡機這種潮濕高溫震動環境對SD卡和完整操作系統并不友好。所以ESP32是“夠用”和“好用”之間最平衡的選擇。方案Wi-Fi能力實時控制開發難度成本能耗ESP32原生Wi-Fi藍牙強雙核240MHz低Arduino/ESP-IDF15~35元低STM32Wi-Fi模組需外掛很強較高50元以上低樹莓派Zero W原生Wi-Fi一般受OS影響中等80元以上高1.2 系統架構與功能拆解整個系統可以分成五個模塊電源、傳感、執行、控制和通信。電源模塊負責把220V交流電降壓成24V給水泵、3.3V給ESP32供電傳感模塊負責采集溫度、壓力、流量信號執行模塊負責驅動加熱管和震動泵控制模塊就是ESP32的固件邏輯通信模塊負責Wi-Fi連接和App交互。功能上我最初的目標很簡單能手機遠程關機、能看到實時溫度。但真正動手之后功能清單越寫越長。目前這臺機器已經實現水溫實時采集與PID閉環控制目標溫度在88~96°C之間可調穩態波動約±0.5°C。鍋爐壓力監控讀取壓力傳感器數值并繪制曲線。流量計統計單次萃取水量并能自動停止萃取。OLED屏顯示當前狀態配一個旋轉編碼器做本地操作。WiFi聯網后通過MQTT協議連接Home Assistant手機App我用的開源的MQTT客戶端能遠程控制開關機、查看溫度曲線。固件支持OTA升級參數通過SPIFFS文件系統保存斷電不丟失。這里有個很關鍵的設計理念不要把控制邏輯全部交給云端??Х葯C是一款安全相關的家電就算Wi-Fi斷開、MQTT服務器掛掉本地的PID控制、過熱保護、無水檢測也必須正常工作。所以我的代碼里所有閉環控制都在ES32本地完成Wi-Fi和App只是“監控和參數下發”的通道。這個思路做產品也適用網絡永遠只是輔助穩定性才是底線。1.3 被否決的替代方案和改進方向方案論證過程中我其實還想過兩個方向一是直接用現成的商用Wi-Fi插座控制咖啡機電源但那個方案只能遠程通斷電不能監控溫度也不能做到PID穩溫和自動停水改造價值極低。二是在原有咖啡機模擬控制板上并聯一個“監聽”電路只讀溫度不上控制這種方式改動小但舊機器原本的機械溫控開關本身就存在回差大、溫度漂移的問題保留原控制等于白瞎了PID算法。最終的改造方案是完全繞過原機器的溫控開關和機械定時器由ESP32直接驅動加熱管和震動泵。原有保險絲、過熱保護回路保留作為最后一道安全防線。如果你的機器比較舊我建議也遵循這個原則新增的智能控制和原有物理安全保護要并行絕對不要用軟件保護替代物理保護。2. 硬件設計與核心電路2.1 關鍵元器件選型明細硬件選型是整個項目的基石我把物料清單整理成了一個表格。這里列出的器件都是我在實際項目中驗證過、容易買到的型號適合直接照抄。價格只是參考不同渠道浮動很大。元器件型號/規格作用備注主控ESP32 DevKitC V4ESP32-WROOM-32系統控制與Wi-Fi也可以用ESP32-S3溫度傳感器NTC 100K B3950封裝防水探頭鍋爐溫度采集需分壓電阻壓力傳感器0~20Bar模擬輸出壓力變送器鍋爐/萃取壓力監控需運放或分壓適配流量計霍爾流量計 YF-S201萃取水量統計中斷計數加熱驅動BTA16可控硅MOC3021光耦220V加熱管通斷需過零檢測泵驅動24V繼電器震動泵啟停需續流二極管電源模塊HLK-PM24/HLK-PM03模塊220V轉24V和3.3V必須隔離電源顯示0.96寸OLED SSD1306本地狀態顯示I2C接口交互EC11旋轉編碼器菜單操作需硬件消抖Flash存儲主控自帶SPIFFS分區保存PID參數不需要外掛外接擴展無保持簡單遵循KISS原則2.2 溫度采集電路NTC還是PT100咖啡機溫度采集有兩個常見方案NTC熱敏電阻和PT100鉑電阻。PT100精度高配上MAX31865這類專用芯片可以做到±0.1°C但成本高、接線復雜還需要SPI接口。而NTC的方案就簡單得多一個100K電阻和一個104電容做分壓濾波接到ESP32的ADC引腳就能讀。我在實際測試中發現對于水溫控制來說NTC的精度完全夠用。我用的NTC是100K B3950在25°C時阻值為100K在95°C時阻值約為6.8K。分壓電路我用的是上拉100K電阻到3.3VNTC接地中間抽頭接ADC。溫度換算用Steinhart-Hart方程熱力學溫度T 1 / (A B * ln(R) C * (ln(R))^3)其中R為NTC當前阻值A、B、C由廠家給的B值反推得到更常用的工程寫法是簡化公式float readNTC() { int raw analogRead(TEMP_PIN); float v raw / 4095.0 * 3.3; float r (3.3 - v) / v * 100000.0; // 100K上拉 float steinhart log(r / 100000.0) / 3950.0 1.0 / (25.0 273.15); float temp 1.0 / steinhart - 273.15; return temp; }實測下來在90~100°C區間NTC方案和工業PT100溫度表對比誤差在±0.5°C以內對咖啡萃取完全夠用。注意ADC參考電壓不能直接用板載3.3V因為ESP32的3.3V經過穩壓后還比較準但如果你用的是一些雜牌開發板最好用實際電壓校準一下否則溫度讀數會整體偏移。2.3 高壓與低壓隔離設計這里必須說一個重點咖啡機內部是220V交流高壓而ESP32是3.3V的低壓系統。我強烈建議任何想復刻這個項目的朋友先做好心理建設——焊接和測試時一定要戴絕緣手套、用隔離變壓器或者漏電保護插排。生命安全比咖啡重要一萬倍。加熱驅動我用的是雙向可控硅BTA16加MOC3021光耦隔離。MOC3021內部是LED加雙向可控硅輸出輸入側由ESP32 GPIO通過三極管驅動輸出側串聯220V回路。這樣控制信號和強電之間是光隔離的不會把高壓引入控制板。如果不想用可控硅也可以用220V繼電器模塊但繼電器響應慢、有機械壽命限制做PID調功時頻繁通斷噪音很大長期用下來我覺得不太合適。下面是一段可控硅驅動的示例代碼用來控制加熱功率void setHeaterPower(int percent) { // percent: 0~100控制AC過零后的輸出占空比 digitalWrite(HEATER_PIN, percent 0 ? HIGH : LOW); heaterPercent constrain(percent, 0, 100); }這只是最簡單的開關控制。更精細的做法是配合過零檢測電路在每個過零周期內按比例控制可控硅的導通角這樣能降低對電網的沖擊也能讓加熱功率更平滑。不過對于加熱管這種大熱慣性負載簡單的開關PID比例調節已經足夠不需要做斬波調壓。水泵控制更簡單直接用24V繼電器控制震動泵啟停就行繼電器觸點加RC吸收電路避免拉弧對控制板造成干擾。2.4 引腳分配與接線注意事項ESP32的引腳資源豐富但有幾個坑要注意。一是GPIO34~39是純輸入引腳不能作為輸出二是ADC2的某些通道在Wi-Fi開啟時會被占用所以如果既用Wi-Fi又要讀模擬量最好把所有模擬采集都放到ADC1通道上。三是GPIO0、GPIO2、GPIO15在啟動時有特殊功能不能用作普通輸出否則會影響固件燒錄。我實際使用的引腳分配表如下功能引腳說明溫度傳感器ADC1GPIO34ADC1_CH6壓力傳感器ADC1GPIO35ADC1_CH7流量計中斷GPIO26霍爾脈沖輸入加熱可控硅驅動GPIO25GPIO輸出泵繼電器GPIO33GPIO輸出OLED SCLGPIO22I2C時鐘OLED SDAGPIO21I2C數據旋轉編碼器A/BGPIO16/17外部中斷接線時需要注意所有傳感器信號線盡量遠離220V強電走線尤其是NTC的引線如果和加熱線綁在一起電磁干擾會讓ADC讀數劇烈跳動。我用的是屏蔽線屏蔽層單端接地效果不錯。另外ESP32開發板上的3.3V穩壓器電流能力有限OLED、編碼器都從3.3V取電沒問題但如果你想外接藍牙模塊或者大屏建議單獨加一路3.3V DC-DC不要全部依賴開發板的LDO。3. 固件開發從Arduino到生產級別3.1 開發環境搭建固件開發我選了Arduino IDE原因很簡單上手快、庫里什么東西都有。你只需要在“開發板管理器”里添加espressif的ESP32開發板地址然后安裝esp32 core。國內用戶經常遇到下載失敗的情況我這里補充一下可以先從GitHub release頁找到對應版本的離線包比如esp32-arduino-core-2.0.17放到Arduino的hardware/espressif目錄解壓之后打開IDE就能識別到ESP32 Dev Module。如果你是老手當然也可以直接用ESP-IDF或PlatformIO。用ESP-IDF優點是實時性更強、代碼結構更工程化但學習曲線陡。用PlatformIO則是藏在VS Code里庫管理做得很好適合習慣看代碼的人。我建議首次嘗試的朋友直接走Arduino路線把精力放在調試上而不是環境上。搭好了環境第一件事就是測試串口打印“Hello Espresso”確認連接和芯片型號都沒問題。這里有個細節如果開發板不識別通常是因為沒有安裝CH340/CP2102的USB轉串口驅動另外必須按住開發板上的BOOT按鈕再插入USB才能進入燒錄模式。3.2 PID控制與溫度穩定邏輯意式濃縮咖啡萃取溫度通常在90~96°C之間水溫穩定度直接影響咖啡品質。我最初用的簡單雙位控制溫度低了就開加熱到了就關效果很差溫差能到5°C以上。后來我改成增量式PID穩定度提升非常明顯。整個控制的思路是溫度傳感器每秒采樣一次用PID計算輸出占空比通過可控硅控制加熱管功率??Х葯C熱慣性比較大PID參數我通過試湊法調到了一組比較穩定的值Kp 60Ki 1.8Kd 12采樣周期 1s輸出范圍 0~100%核心代碼大致如下double setpoint 93.0; double kp 60, ki 1.8, kd 12; double lastError 0, integral 0; double computePID(double current) { double error setpoint - current; integral error * 0.1; // 采樣周期1秒 integral constrain(integral, -10, 10); double derivative error - lastError; lastError error; return kp * error ki * integral kd * derivative; }我犯過一個典型錯誤一開始把積分限幅設得太大導致溫度沖到97°C還降不下來后來把積分限幅和輸出限幅都調小系統才穩定。還要注意咖啡機加水后溫度會驟降PID控制器會計算出接近100%的加熱功率所以升溫階段要防止積分飽和否則到目標溫度后超調嚴重。我加了一個簡單的抗積分飽和邏輯當輸出超過100時暫停積分累加。更有效的做法是采用“分段控制”升溫初期用100%全功率溫度接近目標值時切到PID控制。這樣既快又穩。實際測試下來從室溫到93°C大約需要8分鐘到目標溫度后10分鐘內波動不超過±0.5°C。3.3 Wi-Fi連接與斷線重連機制Wi-Fi這塊我首先用了WiFiManager庫做配網。用戶可以通過手機連上ESP32的AP熱點在網頁里填寫自家Wi-Fi名稱密碼參數保存到NVS里開機自動連接。這個體驗比寫死SSID友好太多了家里換路由器都不用重新編譯固件。連接Wi-Fi的代碼很常規#include WiFi.h #include WiFiManager.h void setup_wifi() { WiFiManager wm; if (!wm.autoConnect(Espresso-AP)) { delay(3000); ESP.restart(); } while (WiFi.status() ! WL_CONNECTED) { delay(500); Serial.print(.); } Serial.println(WiFi connected: WiFi.localIP().toString()); }Wi-Fi斷線問題是我踩坑最深的。最初我用的是單次連接一旦路由器重啟或者Wi-Fi信號波動ESP32就徹底連接不上只能重啟設備。后來我加了斷線重連機制在主循環里檢測WiFi.status()如果斷開就立刻重連如果連續重連30秒失敗就重啟系統。實測下來路由器重啟一次咖啡機也能在1分多鐘內自動恢復連接這里面還要配合看門狗定時器防止死循環卡死。關于熱點的問題我還遇到過一種情況當我在咖啡機測試階段想把設備配成AP模式時系統提示“我們無法設置移動熱點因為你的電腦未建立以太網、Wi-Fi或手機網絡數據連接”。這是因為電腦本身沒有聯網時Windows的熱點功能無法啟動。所以如果不想被這個限制困擾本地調試時直接用串口查看日志比依賴熱點靠譜得多。3.4 OTA升級與SPIFFS參數存儲聯網設備不做OTA升級等于半殘。我做了一個簡單的OTA Web升級頁面ESP32內置一個Web Server監聽/update路徑我只要在瀏覽器里訪問這個路徑就能上傳新的固件bin文件幾秒鐘后設備自動重啟并運行新固件。底層用的是ArduinoOTA庫配合WebOTA庫也可以做到上傳界面更友好。OTA升級的代碼基礎版#include ArduinoOTA.h void setup_ota() { ArduinoOTA.setHostname(esp32-espresso); ArduinoOTA.begin(); } void loop_ota() { ArduinoOTA.handle(); }OLED上會顯示正在升級的狀態升級期間我強制關閉了加熱輸出避免升級過程中本來要開的繼電器誤動作這是安全設計里比較重要的一環。參數存儲用的是SPIFFS文件系統。我最初用Preferences庫保存PID參數后來參數越來越多目標溫度、PID三個數、水量閾值、Wi-Fi配置就改用SPIFFS存一個JSON配置文件。使用前需要在Arduino IDE里安裝ArduinoJson庫并在分區方案里選擇“Huge APP (3MB No OTA/1MB SPIFFS)”或者在分區里預留SPIFFS區域。JSON格式的好處是結構清晰手動改也直觀適合把一組參數導出來備份。#include SPIFFS.h #include ArduinoJson.h void loadConfig() { if (!SPIFFS.begin(true)) { Serial.println(SPIFFS Mount Failed); return; } File configFile SPIFFS.open(/config.json, r); if (!configFile) { Serial.println(No config file); return; } DynamicJsonDocument doc(1024); deserializeJson(doc, configFile); setpoint doc[setpoint] | 93.0; Kp doc[kp] | 60.0; Ki doc[ki] | 1.8; Kd doc[kd] | 12.0; configFile.close(); }4. 手機App與云端聯動4.1 通信協議選擇MQTT還是HTTP聯網咖啡機需要和手機/云端通信我對比過HTTP輪詢和MQTT推送兩種方案。HTTP最簡單ESP32開一個Web Server手機定時GET請求就好但問題在于“輪詢間隔”尷尬間隔短了浪費流量和電量間隔長了狀態更新不及時。而且如果要做遠程控制手機和ESP32之間還隔著路由器做端口映射麻煩又不安全。所以我選了MQTT。MQTT是物聯網場景最常見的長連接消息協議ESP32作為客戶端連接一臺MQTT Broker手機App或Home Assistant也連同一個Broker所有消息通過主題主題訂閱分發。這種模式很自然ESP32發布狀態主題App訂閱狀態主題App發布控制主題ESP32訂閱控制主題。我用的Broker是本地的Home Assistant樹莓派上運行的Mosquitto。局域網內使用完全夠快延時在50ms以內。如果你只想在局域網玩不用碰公網如果想跨網絡遠程控制再做FRP內網穿透或者連公網Broker但要注意配置密碼鑒權千萬不能裸奔。4.2 本地Web控制臺除了MQTT我在ESP32里還跑了一個輕量Web Server這樣即使沒有App、沒有MQTT Broker只要手機連同一個Wi-Fi打開瀏覽器輸入IP就能看到咖啡機的當前狀態。Web頁面是我用純HTMLJavaScript寫的一個單頁通過WebSocket實時推送溫度值。頁面啟動后每隔100ms在頁面上更新一次溫度曲線順便放幾個按鈕控制開關機、設置目標溫度。這樣做的好處是移動端和桌面瀏覽器都能用不需要安裝App非常適合現場調試。Web頁面代碼很簡單我放在ESP32的SPIFFS里用AsyncWebServer框架提供服務#include AsyncTCP.h #include ESPAsyncWebServer.h AsyncWebServer server(80); AsyncWebSocket ws(/ws); void notifyClients() { String json {\temp\: String(currentTemp) ,\setpoint\: String(setpoint) }; ws.textAll(json); }這個WebSocket通知機制讓頁面顯示非常流暢幾乎沒有閃爍感。Web控制臺的好處還在于它不依賴任何第三方服務這是整個系統最穩定可靠的“底線界面”。4.3 手機App與智能家居聯動手機App我并沒有另寫一個專用應用而是直接用了現成的MQTT客戶端比如iOS上的MQTTool或者Android上的MQTT Dash。在App里添加Broker地址訂閱/device/espresso/state和/device/espresso/temp兩個主題就能實時看到溫度發布/device/espresso/set主題payload填{power:on}或者{target:94}就能控制設備。這種方式零開發成本而且不同品牌手機都能用。如果你想進一步聯動智能家居可以把ESP32接入Home Assistant。Home Assistant的MQTT集成會自動發現實體然后我配置成溫度傳感器、開關和數顯控件。這樣我每天早上可以通過一個自動化腳本檢測工作日、檢測當前時間自動觸發咖啡機預熱等我洗漱完過去正好是93°C。這就是整個項目最提升幸福感的地方。接入Home Assistant后實現語音控制也很簡單。配合小度、小愛這類帶音箱只需要在Home Assistant里配置一個“打開咖啡機”的Script語音指令就能聯動觸發。如果你玩過esp32的小智AI之類的本地離線語音框架其實也能讓咖啡機直接響應語音命令不過那就是另外一個更大的坑了。5. 實操調試與踩坑記錄5.1 溫度曲線與PID調參實錄PID調參是我花時間最多的環節。一開始我把Kp調到150結果溫度在目標值附近來回震蕩最高能沖到98°C萃取時加冷水又會拉低到85°C以下完全沒法用。后來改成“先P后I再D”的調法先讓Ki和Kd都為0只調Kp。從Kp30開始觀察溫度是否出現等幅振蕩。我在Kp80時開始出現輕微振蕩說明系統臨界增益在80附近。然后把Kp保守地設為60增加Ki來消除靜差。Ki從0.5開始往上加當Ki加到2.0時系統出現低頻波動我認為積分作用稍強最終降到1.8。最后加KdKd從0開始試到8然后試了1515時超調變小但噪聲放大12是一個比較平衡的值。下面是各組參數的實際表現KpKiKd穩態波動升溫到93°C時間表現8000±1.2°C10分鐘有靜差502.00±0.8°C9分鐘輕微低頻波動601.85±0.5°C8分鐘左右溫度平穩601.812±0.4°C8分鐘最終方案調參過程中我用了串口繪圖器功能把目標溫度和實測溫度畫成兩條曲線一眼就能看出超調量和振蕩頻率。如果你的固件沒有輸出串口曲線的邏輯我建議先加一個每隔1s打印溫度的日志再配一個網頁端曲線來觀察否則靠看OLED那個小屏幕上的數字調PID非常痛苦。5.2 ADC噪聲問題排查有個問題幾乎困擾了我一個周末溫度讀數在96°C附近來回跳了2°C但萬用表量NTC兩端電壓卻非常穩定。用示波器一看ADC引腳上疊加了一個100Hz左右的衰減振蕩噪聲。這個噪聲來源就是加熱管工作時的大電流回路通過空間耦合到NTC信號線上同時ADC采樣時Pin上的信號還沒有完全穩定。解決方案有三個層面。第一是硬件在NTC輸出到ADC之間加一個100nF電容到地組成RC低通濾波截止頻率大約1.6kHz第二是軟件連續采樣10次去掉最大值最小值后取平均也就是滑動中位數濾波第三是采樣時機在可控硅不導通的間歇窗口去采樣或者避開加熱管上升沿附近。三個方案疊加后溫度讀數穩定度至少提升了10倍。如果你對精度還有更高要求可以改成PT100加MAX31865那就不需要擔心ADC噪聲問題了。5.3 Wi-Fi不穩定問題Wi-Fi掉線是另一個高頻問題??Х葯C附近通常有微波爐、冰箱、金屬外殼2.4GHz頻段干擾嚴重。我實測在機器啟動加熱時ESP32的射頻靈敏度會明顯下降尤其在加熱管全功率運行時出現過MQTT斷連率飆升、甚至重啟后久久無法連上Wi-Fi的情況。我最后做了幾件有效的事情一是把ESP32的PCB天線豎起來不要貼著金屬鍋爐外殼二是給加熱管和泵的電機都加了X電容和共模電感減少傳導干擾三是把Wi-Fi功率設為WiFi.setTxPower(WIFI_POWER_11dBm)而不是默認的最大功率實測反而更穩定因為發熱減少了四是開Wi-Fi低功耗模式配合斷線重連避免頻繁掃描信道導致溫度控制卡頓。做完之后連續運行48小時沒有再出現斷連。5.4 常見問題速查表最后整理一個速查表很多問題都是我在群里看別人做類似項目時高頻出現的放在這里方便你直接排查問題現象可能原因處理方法溫度讀數跳動大NTC信號受干擾加濾波電容、軟件濾波、避開加熱時序采樣溫度一直上不去可控硅不導通或加熱管損壞用萬用表測加熱管開斷檢查MOC3021驅動是否正常Wi-Fi頻繁斷開天線位置差、電源干擾調整天線方向給電源加濾波降低TX功率OTA升級后無法啟動分區地址錯誤確認分區表支持OTA升級時保持供電穩定水泵不工作繼電器燒觸點更換繼電器并加續流二極管、RC吸收電路MQTT收不到數據主題或Broker地址錯誤檢查訂閱主題、Broker端口、用戶名密碼手機Web打開白屏SPIFFS文件缺失把HTML文件正確上傳到SPIFFS分區按鍵旋鈕不靈敏缺少消抖改用中斷定時器消抖或者加RC去抖電路另外如果你在搭建Arduino開發環境時遇到esp32庫下載失敗這類情況優先考慮離線安裝包。Arduino IDE第一次在線下載esp32 core往往會被網絡拖死離線包解壓到hardware目錄就能用省下大半天的折騰。還有一點提醒焊高壓部分之前先把低電壓控制部分全部調通再接220V。我第一次聯調時圖省事直接上電結果浪涌把主板的3.3V穩壓器打得冒煙了。從此就長記性了先USB供電調邏輯再隔離變壓器降壓測試最后才上高壓。寫在最后的一個小建議如果你動手做了這個項目建議第一版不要追求功能多先把“遠程開機溫度PID水箱保護”這三個基礎功能跑通。然后你會發現咖啡機從一臺機械電器變成了一臺能聯網、能收集數據的設備后續再加流量統計、壓力曲線、磨豆聯動都只是加傳感器的功夫。我自己用下來最大的變化是出品越來越穩定了。以前萃取時手忙腳亂現在只要在App里看好溫度曲線穩定在93°C壓力在9Bar左右剩下的都交給控制器。這個項目最大的價值不是“多了一個Wi-Fi”而是讓咖啡機真正變成了一個閉環控制系統——這才是ESP32這類MCU最擅長的事情。