找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 2|回覆: 0

    自己做感測器:ESP32 + 五個常見感測器的完整接法

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005752
    發表於 3 天前 | 顯示全部樓層 |閱讀模式
    買不到你要的感測器?自己做一個。

    這篇給五個常用感測器的接線和完整設定。



    需要的東西


    • ESP32 開發板(約 150-250 元)
    • 麵包板 + 杜邦線(約 100 元)
    • 感測器(每個 30-300 元)
    • USB 線


    ESP32 還是 ESP8266


    • ESP32 —— 貴一點但功能多很多(藍牙、更多腳位、雙核心)
    • ESP8266 —— 便宜,簡單的專案夠用
    • 建議直接用 ESP32,價差不大


    基本的 ESPHome 設定
    1. esphome:
    2.   name: 感測器-書房
    3.   friendly_name: 書房感測器
    4. esp32:
    5.   board: esp32dev
    6.   framework:
    7.     type: esp-idf
    8. logger:
    9. api:
    10.   encryption:
    11.     key: !secret api_key
    12. ota:
    13.   - platform: esphome
    14.     password: !secret ota_password
    15. wifi:
    16.   ssid: !secret wifi_ssid
    17.   password: !secret wifi_password
    18.   ap:
    19.     ssid: "書房感測器-備援"
    20.     password: !secret ap_password
    21. captive_portal:
    複製代碼

    這一段每個專案都一樣,之後只要加感測器的部分。



    一、溫濕度(DHT22 / AHT20 / BME280)

    三種的差別


    • DHT22 —— 最便宜(約 80 元),但不太準、讀取慢
    • AHT20 —— 便宜又準(約 60 元),I2C 介面,推薦
    • BME280 —— 溫濕度 + 氣壓(約 150 元),最好用


    推薦 BME280 或 AHT20。DHT22 已經過時了。

    BME280 接線
    1. BME280      ESP32
    2. VCC    →    3.3V
    3. GND    →    GND
    4. SCL    →    GPIO22
    5. SDA    →    GPIO21
    複製代碼

    設定
    1. i2c:
    2.   sda: GPIO21
    3.   scl: GPIO22
    4.   scan: true
    5. sensor:
    6.   - platform: bme280_i2c
    7.     address: 0x76
    8.     temperature:
    9.       name: 書房溫度
    10.       oversampling: 16x
    11.       filters:
    12.         - median:
    13.             window_size: 5
    14.             send_every: 5
    15.         - delta: 0.2
    16.     humidity:
    17.       name: 書房濕度
    18.       filters:
    19.         - median:
    20.             window_size: 5
    21.             send_every: 5
    22.         - delta: 1.0
    23.     pressure:
    24.       name: 書房氣壓
    25.       filters:
    26.         - delta: 0.5
    27.     update_interval: 30s
    複製代碼

    address 可能是 0x76 或 0x77 ——
    開 scan: true,看日誌會顯示偵測到的位址。

    filters 的作用


    • median —— 取五次的中位數,過濾掉突波
    • delta —— 變化超過這個值才回報,減少資料量


    常見問題溫度偏高


    • ESP32 自己會發熱
    • 感測器放太近會被影響
    • 解法:用杜邦線把感測器拉遠一點,或者加校正

    1.       temperature:
    2.         filters:
    3.           - offset: -2.0
    複製代碼



    二、光照度(BH1750)

    約 60 元,I2C,很準。
    1. sensor:
    2.   - platform: bh1750
    3.     name: 書房照度
    4.     address: 0x23
    5.     update_interval: 60s
    6.     filters:
    7.       - delta: 10
    複製代碼

    用途


    • 判斷「天黑了」比用日落時間準(陰天也算)
    • 自動窗簾的觸發條件
    • 判斷燈有沒有真的亮


    參考值
    1. 晴天戶外    10,000 - 100,000 lux
    2. 陰天戶外     1,000 - 10,000 lux
    3. 室內明亮       300 - 500 lux
    4. 室內一般       100 - 300 lux
    5. 昏暗            10 - 50 lux
    6. 月光             1 lux
    複製代碼

    三、土壤濕度(電容式)

    重要一定要買電容式,不要買電阻式


    • 電阻式會生鏽,幾個月就壞
    • 電容式外層有塗層,可以用很久

    1. sensor:
    2.   - platform: adc
    3.     pin: GPIO34
    4.     name: 盆栽濕度
    5.     update_interval: 60s
    6.     attenuation: 12db
    7.     filters:
    8.       - median:
    9.           window_size: 5
    10.           send_every: 5
    11.       # 把電壓換算成百分比
    12.       - calibrate_linear:
    13.           - 2.8 -> 0.0      # 完全乾的讀值
    14.           - 1.2 -> 100.0    # 完全濕的讀值
    15.       - clamp:
    16.           min_value: 0
    17.           max_value: 100
    18.     unit_of_measurement: "%"
    19.     device_class: humidity
    複製代碼

    校正方法


    • 把感測器放在空氣中,記下讀值 → 那是 0%
    • 放進水裡(只到標示線),記下讀值 → 那是 100%
    • 把兩個數字填進 calibrate_linear


    注意不同的土壤和感測器都不一樣,一定要自己校正。

    四、CO2(MH-Z19 / SCD40)


    • MH-Z19 —— 約 600 元,UART 介面
    • SCD40 / SCD41 —— 約 900 元,I2C,比較準也比較新

    1. sensor:
    2.   - platform: scd4x
    3.     co2:
    4.       name: 書房CO2
    5.       filters:
    6.         - median:
    7.             window_size: 5
    8.             send_every: 5
    9.     temperature:
    10.       name: 書房溫度2
    11.     humidity:
    12.       name: 書房濕度2
    13.     update_interval: 60s
    14.     automatic_self_calibration: true
    複製代碼

    CO2 的參考值
    1. 400-600 ppm     戶外的水準,很好
    2. 600-1000 ppm    室內正常
    3. 1000 ppm        台灣室內空氣品質標準的八小時值
    4. 1000-2000 ppm   開始昏沉、注意力下降
    5. 2000 ppm 以上   明顯不舒服
    複製代碼

    自動校正


    • automatic_self_calibration 會假設「這週的最低值 = 400ppm」
    • 所以房間要定期開窗,不然校正會偏掉
    • 完全密閉的空間要關掉自動校正,改手動


    五、PM2.5(PMS5003 / SDS011)
    1. uart:
    2.   rx_pin: GPIO16
    3.   tx_pin: GPIO17
    4.   baud_rate: 9600
    5. sensor:
    6.   - platform: pmsx003
    7.     type: PMSX003
    8.     pm_2_5:
    9.       name: 書房PM2.5
    10.       filters:
    11.         - median:
    12.             window_size: 5
    13.             send_every: 5
    14.     pm_10_0:
    15.       name: 書房PM10
    16.     update_interval: 60s
    複製代碼

    注意


    • 這類感測器有風扇,會有聲音
    • 壽命大約 3 年(風扇和雷射會老化)
    • 可以用 GPIO 控制「只在需要時開啟」延長壽命


    台灣的 PM2.5 標準是 24 小時值 35 μg/m³。



    實務建議

    一、用 substitutions 讓設定可重複使用
    1. substitutions:
    2.   裝置名稱: 感測器-書房
    3.   房間: 書房
    4. esphome:
    5.   name: ${裝置名稱}
    6. sensor:
    7.   - platform: bme280_i2c
    8.     temperature:
    9.       name: ${房間}溫度
    複製代碼

    做第二個的時候只要改上面三行。

    二、用 packages 共用設定
    1. packages:
    2.   共用: !include common/base.yaml
    複製代碼

    把 wifi、api、ota 那些放進 base.yaml,所有裝置共用。

    三、加一個狀態指示
    1. binary_sensor:
    2.   - platform: status
    3.     name: ${房間}感測器狀態
    4. sensor:
    5.   - platform: wifi_signal
    6.     name: ${房間}WiFi訊號
    7.     update_interval: 300s
    8.   - platform: uptime
    9.     name: ${房間}運轉時間
    10.     update_interval: 300s
    複製代碼

    這樣裝置掛掉的時候你會知道。

    四、電源要穩


    • 便宜的 USB 充電器會讓 ESP32 不穩定
    • 至少用 1A 以上的
    • 感測器多的話用 2A
    • 隨機重啟八成是電源問題


    五、外殼


    • 買現成的 ESP32 外殼
    • 或者用小的收納盒挖洞
    • 溫濕度感測器的位置要能通風
    • 不要完全密封(讀值會不準)


    六、成本比較
    1. 自己做(ESP32 + BME280 + BH1750 + 外殼)
    2.   約 400-500 元
    3.   → 溫度、濕度、氣壓、照度
    4. 買現成的 Zigbee 溫濕度計
    5.   約 300-500 元
    6.   → 溫度、濕度,有電池
    7. 結論:
    8.   要電池 → 買現成的 Zigbee
    9.   要插電 + 多種感測器 → 自己做
    10.   要特殊感測器(CO2、PM2.5)→ 只能自己做
    複製代碼

    ---

    下一篇:ESP32 的進階應用 ——
    控制繼電器、馬達、以及安全注意事項。
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

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

    GMT+8, 2026-9-24 11:30 , Processed in 0.077756 second(s), 24 queries .

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