找回密碼
 立即註冊
    查看: 190|回覆: 0

    【自製感測器】ESP32 接五顆感測器:從買零件到 Home Assistant 上線

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 14:18:19 | 顯示全部樓層 |閱讀模式
    這篇從「什麼都還沒買」開始,做到一台 ESP32 上面掛五種感測器,全部出現在 Home Assistant 裡。

    每一步都會告訴你「做完應該看到什麼」。看不到就不要往下走,因為下一步的錯誤訊息會指向錯的地方。

    這篇從「什麼都還沒買」開始,做到一台 ESP32 上面掛五種感測器,全部出現在 Home Assistant 裡。

    做完這篇你會有什麼


    • 一台插電的 ESP32,在 Home Assistant 裡有溫度、濕度、氣壓、照度、土壤濕度、CO2、PM2.5、PM10、Wi-Fi 訊號、運轉時間
    • 一份可以直接複製燒錄的完整設定檔(不是片段)
    • 一套「新增第二台只要改三行」的共用設定
    • 每顆感測器的校正方法與正常讀值範圍,你自己判斷得出來讀值是對還是壞


    先講一件會讓你白花兩個小時的事

    網路上大部分 ESPHome 教學(包括這篇的舊版)都會示範這樣的設定:
    1. esphome:
    2.   name: 感測器-書房
    複製代碼

    這一行不會過。 ESPHome 官方文件對 name 的規定是「只能包含小寫字母、數字與連字號」,預設長度上限 24 個字元。中文字、底線、大寫字母都會在驗證階段就被擋下來。

    同樣的規則也適用在 substitutions 的鍵名 —— `裝置名稱: xxx` 不合法。

    中文要放在 friendly_name 裡,那一個才是給 Home Assistant 看的顯示名稱。這篇所有設定檔都照這個寫法,你可以整份複製。

    ---

    步驟 1:買零件

    一台全配(五顆感測器都上)大約 2,000 元。如果你只想先做溫濕度 + 照度,大約 400 元就夠了。

    括號裡是台灣賣場(蝦皮、露天、台北光華商場的電子零件攤)常見的搜尋關鍵字。

    必買(不管你要做哪幾顆)


    • ESP32 開發板 ×1(搜「ESP32 DevKit V1」或「ESP32-WROOM-32 開發板 38pin」,約 150~250 元)
    • 麵包板 830 孔 ×1(搜「麵包板 830 孔」,約 50 元)
    • 杜邦線 公對母 ×1 排(搜「杜邦線 公對母 40pin 20cm」,約 40 元)
    • 杜邦線 公對公 ×1 排(搜「杜邦線 公對公 40pin」,約 40 元)
    • USB 傳輸線(看板子是 Micro-USB 還是 USB-C,買錯是最常見的第一天卡關)
    • USB 充電器 5V 至少 1A(掛兩顆以上感測器建議 2A,理由在步驟 11)


    感測器(按你要做的挑)


    • BME280(搜「BME280 三合一 溫濕度 氣壓 模組」,約 120~180 元)—— 溫度、濕度、氣壓三合一
    • BH1750(搜「BH1750 數位光照度模組 GY-302」,約 50~80 元)—— 照度
    • 電容式土壤濕度感測器(搜「電容式土壤濕度感測器 v1.2」,約 50~80 元)—— 一定要「電容式」
    • SCD41(搜「SCD41 二氧化碳感測器模組」,約 900~1,300 元)—— 真正的 CO2
    • PMS5003(搜「PMS5003 攀藤 粉塵感測器」,約 500~700 元,要含轉接板與專用排線)—— PM2.5 / PM10


    為什麼選 ESP32-WROOM-32 而不是 ESP32-C3 或 ESP8266


    • ESP8266 不要考慮了:腳位少、只有一個類比輸入、而且 ESPHome 的新元件愈來愈多只在 ESP32 上有。價差不到一百元
    • C3 是單核心,做單純的感測器完全夠用,但你之後如果想在同一片板子上再開藍牙代理,雙核心的 WROOM-32 穩定很多
    • WROOM-32 的腳位最多,這篇要同時用到 I2C(2 腳)、ADC(1 腳)、UART(2 腳),38pin 的板子插得下且還有餘裕


    為什麼 BME280 不選 DHT22

    很多舊教學會說「DHT22 比較不準」。精度差距其實沒那麼大(DHT22 溫度 ±0.5°C、BME280 ±1.0°C,濕度 DHT22 ±2~5%RH、BME280 ±3%RH)。真正的理由是介面:


    • BME280 走 I2C,兩條訊號線就好,而且市售模組板上已經內建上拉電阻與穩壓,直接插就能用
    • DHT22 走的是自訂單線協定,裸片必須自己在 DATA 腳與 3.3V 之間加一顆 10kΩ 上拉電阻。忘了加不會燒壞,只會一直在日誌裡印 `Invalid readings`,而新手九成會去懷疑接線或程式
    • DHT22 兩秒才能讀一次,BME280 沒有這個限制
    • BME280 多送你一個氣壓,那個值拿來當 SCD41 的氣壓補償剛好(步驟 9 會用到)


    ⚠ 買 BME280 要注意:市面上有一批標「BME280」但實際是 BMP280 的便宜模組(少了濕度)。分辨方法是看晶片上的絲印:BME280 的絲印通常是 U 開頭,BMP280 是 K 或 J 開頭。買到 BMP280 的話設定檔要改用 `bmp280_i2c` 平台,而且不會有濕度。步驟 6 的掃描結果也分辨得出來。

    ---

    步驟 2:在電腦上裝 ESPHome

    有三種裝法,這篇用第一種。


    • Home Assistant 的 ESPHome Device Builder 應用程式 —— 最簡單,而且燒錄、看日誌、改設定都在同一個網頁裡。本篇用這個
    • web.esphome.io —— 不用裝東西,但只能燒第一次,之後還是要回 HA
    • pip install esphome —— 命令列版,適合不跑 HA 的人


    操作(Home Assistant 2026.2 起「附加元件 Add-ons」已改名為「應用程式 Apps」,選單路徑跟舊教學不一樣):


    • 設定 → 應用程式 → 應用程式商店
    • 搜尋 ESPHome Device Builder
    • 安裝 → 啟動 → 把「在側邊欄顯示」打開


    你會看到什麼:側邊欄多出一個 ESPHome 的項目,點進去是一片空白的裝置清單,右下角有一個「+ NEW DEVICE」按鈕。

    看不到側邊欄的項目代表「在側邊欄顯示」那個開關沒打開,回應用程式頁面再開一次。
    商店裡搜不到代表你不是 HA OS 或 Supervised 安裝(Container 版沒有應用程式系統),要改用 `pip install esphome`。

    ---

    步驟 3:把 Wi-Fi 密碼放進 secrets

    ESPHome 的設定檔你之後一定會貼到網路上求救,密碼不要寫在裡面。

    在 ESPHome 頁面右上角點三個點 → Secrets Editor,貼進去:
    1. wifi_ssid: "你家的WiFi名稱"
    2. wifi_password: "你家的WiFi密碼"
    3. ap_password: "至少八個字的備援密碼"
    複製代碼

    ⚠ 三件事:


    • ESP32 只連得上 2.4GHz。如果你的路由器把 2.4G 和 5G 設成同一個名稱,先暫時分開,或者在路由器把這台裝置綁在 2.4G
    • SSID 有中文的話會很麻煩,ESPHome 支援但常出怪問題,能改英文就改
    • ap_password 至少八個字元,少於八個 wifi 元件會驗證失敗


    你會看到什麼:按 SAVE 之後沒有任何錯誤訊息,回到裝置清單。這個檔案是全域的,之後所有裝置共用。

    ---

    步驟 4:建立第一份設定檔並燒錄(還沒有任何感測器)

    這一步刻意不接任何感測器。 目的是先確認板子、Wi-Fi、燒錄這三件事都通了,不然之後感測器沒反應你會分不出是哪裡的問題。

    點「+ NEW DEVICE」,名稱填 sensor-study(小寫英文與連字號),板子選 ESP32 → ESP32 Dev Module。它會自動產生一份設定並且把 api 加密金鑰寫進去。

    產生之後點 EDIT,把整份內容換成下面這一份:
    1. esphome:
    2.   name: sensor-study
    3.   friendly_name: 書房感測器
    4. esp32:
    5.   board: esp32dev
    6.   framework:
    7.     type: esp-idf
    8. logger:
    9. api:
    10.   encryption:
    11.     key: "這一行不要動,用它自己產生的那一串"
    12. ota:
    13.   - platform: esphome
    14.     encryption:
    15. wifi:
    16.   ssid: !secret wifi_ssid
    17.   password: !secret wifi_password
    18.   ap:
    19.     ssid: "sensor-study-fallback"
    20.     password: !secret ap_password
    21. captive_portal:
    22. # 讓你知道這台是活的還是掛了
    23. binary_sensor:
    24.   - platform: status
    25.     name: 狀態
    26. sensor:
    27.   - platform: wifi_signal
    28.     name: WiFi訊號
    29.     update_interval: 300s
    30.   - platform: uptime
    31.     name: 運轉時間
    32.     update_interval: 300s
    33. button:
    34.   - platform: restart
    35.     name: 重新開機
    複製代碼

    以下還有約 82% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:39 , Processed in 0.137104 second(s), 25 queries .

    快速回覆 返回頂部 返回列表