|
|
上一篇你把 ESP32、紅外線發射 LED、接收頭接好了。這一篇要燒第一份韌體進去,然後用兩個實驗證明「發射真的在發、接收真的在收」。
這篇還不會控制冷氣。 冷氣的協定是下一篇的事。這一篇只回答一個問題:硬體到底有沒有活著。
會分這麼細是有原因的。紅外線壞掉的時候是完全安靜的 —— 沒有錯誤訊息、沒有紅字、冷氣就只是沒反應。如果你在「硬體沒驗過」的狀態下直接去試冷氣協定,你會有兩個未知數同時在動,而且永遠分不出是哪一個。
做完這篇你會有什麼
- 一台在你家 Wi-Fi 上、可以無線更新的 ESP32
- 親眼確認過發射 LED 在閃(用手機前鏡頭看)
- 日誌裡看得到你家冷氣遙控器按下去的原始訊號
- 這台裝置已經出現在 Home Assistant 的裝置清單裡
第一步:裝 ESPHome Device Builder
在 Home Assistant 裡:設定 → 附加元件 → 附加元件商店,搜尋 ESPHome Device Builder,按安裝。
裝好之後把 在側邊欄顯示 打開,再按啟動。
你會看到:左邊側邊欄多出一個 ESPHome 的項目,點進去是一片空的裝置清單,右下角有一顆 + Create device。
看不到側邊欄的項目,代表「在側邊欄顯示」那個開關沒打開,回去附加元件頁面再確認一次。
第二步:用精靈建立裝置
按 + Create device,照著走:
- 名稱填 ac-ir(小寫、用減號,不要用中文也不要用底線)
- 裝置類型選 ESP32
- 填 Wi-Fi 名稱與密碼
你會看到:畫面跳出一段 Encryption key(一長串英數字),下面寫著「稍後 Home Assistant 會跟你要這串」。
先把它複製起來貼到記事本。 等一下第八步要用。弄丟的話要重看設定檔裡的 secrets 才找得回來,很麻煩。
精靈跑完會在裝置清單出現一張卡片,上面是 ac-ir。
第三步:貼上完整的設定檔
在 ac-ir 那張卡片上按 Edit,把裡面原本的內容整份刪掉,換成下面這份。
- esphome:
- name: ac-ir
- friendly_name: 冷氣紅外線
- esp32:
- board: esp32dev
- framework:
- type: esp-idf
- logger:
- level: DEBUG
- api:
- encryption:
- key: !secret api_encryption_key
- ota:
- - platform: esphome
- password: !secret ota_password
- wifi:
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- ap:
- ssid: "AC-IR Fallback"
- password: "12345678"
- captive_portal:
- status_led:
- pin: GPIO2
- remote_transmitter:
- id: ir_tx
- pin: GPIO14
- carrier_duty_percent: 50%
- remote_receiver:
- id: ir_rx
- pin:
- number: GPIO16
- inverted: true
- mode:
- input: true
- pullup: true
- tolerance: 55%
- buffer_size: 10kB
- filter: 250us
- idle: 25ms
- dump: all
- button:
- - platform: template
- name: "紅外線發射測試"
- on_press:
- - remote_transmitter.transmit_raw:
- code: [9000, -4500, 9000, -4500, 9000, -4500, 9000, -4500, 9000, -4500]
- carrier_frequency: 38000
- repeat:
- times: 20
- wait_time: 30ms
- - platform: restart
- name: "重新啟動"
複製代碼
這份設定檔裡,每一段在幹嘛
- esp32 的 framework: esp-idf —— ESPHome 2026.1.0 開始,ESP32 的預設框架從 arduino 換成 esp-idf。這裡寫死是為了不管你裝哪個版本結果都一樣
- !secret —— 精靈已經幫你把 Wi-Fi 密碼、API 金鑰、OTA 密碼寫進 secrets.yaml 了,這裡是去取用,不要改成明文
- status_led: GPIO2 —— DevKit V1 板子上那顆藍色的 LED。連不上 Wi-Fi 時它會閃,這是最快的故障指示
- inverted: true —— VS1838B 這類接收頭平常輸出高電位,收到訊號才拉低。不寫這行的話波形全部反過來,解不出東西
- tolerance: 55% —— 便宜的接收頭時序不準。預設 25% 會讓很多冷氣的碼解不開,一開始就放寬
- idle: 25ms —— 「安靜多久算一段訊號結束」。預設 10ms 對冷氣太短,有些機種一次按鍵會分兩段送,10ms 會把它切成兩筆殘缺的碼
- dump: all —— 把所有解碼器都打開。這是下一篇的主角,先裝上
第四步:第一次燒錄(一定要用 USB 線)
第一次沒辦法無線燒 —— 板子上還沒有 ESPHome,沒有東西可以接收更新。
|
|