ESP32, IOT物聯網

【ESP32 教學】第十一篇: 整合DHT11與ESP32 溫濕度實作

一、 實驗說明與選型指南

在 IoT 物聯網專案中,環境監測是最基礎且實用的應用之一。本教學將帶大家使用 ESP32 開發板 連接 DHT11 溫濕度感測器模組,實時讀取並顯示週遭環境的溫度與濕度資料。

 

  1. 裸板元件(4 針腳): 需要額外在 VCC 與 Data 腳位之間拉一顆 4.7K–10K Ω 的上拉電阻。

  2. 帶背板模組(3 針腳): 已內建上拉電阻,僅需 3 條線即可連接,極大幅簡化電路接線,減少接錯風險。

 

💡 本範例採用「帶背板的 DHT11 模組」進行示範。

 

二、 DHT11 溫濕度感測器規格與限制

  • DHT11 內部結合了數位溫濕度複合感測技術,使用單單線制(Single-bus)傳輸資料。在使用時需特別注意其取樣頻率限制:

    規格項目參數範圍 / 數值
    工作電壓3.3V – 5V DC
    濕度量測範圍20% ~ 90% RH (誤差 ±5%)
    溫度量測範圍0°C ~ 50°C (誤差 ±2°C)
    採樣頻率上限0.5 Hz(每 2 秒最多讀取 1 次)

 

三、 實驗材料準備

  • ESP32 開發板

  • 麵包板 (Breadboard)

  • DHT11 溫濕度感測器模組(帶背板)

  • USB 傳輸線

  • 杜邦線若干

 

🛒 一次備齊創客工具!

歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 DHT11感測器、各類感測器及基礎電子元件,是學校課堂教學與個人專案開發的最佳首選!

 

四、 ESP32 與 DHT11 接線說明 (Pinout)

DHT11 背板模組僅有 3 個針腳,接線非常直覺:

  • VCC (+) ➔ 接 ESP32 的  5V

  • GND (-) ➔ 接 ESP32 的 GND

  • DATA (Out) ➔ 接 ESP32 的 GPIO 15

⚠️ 燒毀警告: 接線前請務必確認 DHT11 背板上的 + 與 - 標記,若電源與地線接反會導致感測器晶片燒毀!

DHT11 Pins

 

五、 安裝 DHT11 程式庫 (SimpleDHT)

為了簡化程式編寫,我們使用社群廣泛推薦的 SimpleDHT 函式庫:

  1. 開啟 Arduino IDE。

  2. 點選上方選單 「草稿碼」 (Sketch) ➔「匯入程式庫」 (Include Library) ➔「管理程式庫…」 (Manage Libraries…)。

  3. 在右上方搜尋欄輸入 SimpleDHT。

  4. 找到 SimpleDHT 項目,點擊 「安裝」 (Install) 按鈕完成安裝。

DHT11 Library

 

六、 ESP32 讀取溫濕度程式碼範例

將以下程式碼複製並上傳至 ESP32 開發板中:

#include <SimpleDHT.h> 
 
int pinDHT11 = 15; //ESP32 GPIO15
SimpleDHT11 dht11;
 
void setup() {
  Serial.begin(9600);
}

void loop() {
    byte temperature = 0;
    byte humidity = 0;
    int err = SimpleDHTErrSuccess;
    // start working...
    Serial.println("=================================");
    if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
       Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
       return;
    }
    Serial.print("Humidity = ");   
    Serial.print((int)humidity);   
    Serial.print("% , ");   
    Serial.print("Temperature = ");   
    Serial.print((int)temperature);   
    Serial.println("C ");   
 
    delay(3000);  //每3秒顯示一次
}

 

1. 程式碼關鍵重點解析

  • #include <SimpleDHT.h>:引入 SimpleDHT 程式庫。

  • dht11.read(...):傳入腳位與存放溫濕度的變數位址,成功時返回 SimpleDHTErrSuccess。

  • delay(3000):確保兩次讀取間隔超過 2 秒,符合 DHT11 的硬體限制規格。

▼輸出結果如下:

 

七、 常見問題與排錯指南 (FAQ)

 1. 序列埠監控視窗一直顯示 Read DHT11 failed 怎麼辦?

  1. 檢查接線: 確認 DATA 腳位是否確實連接到 GPIO15,電源與 GND 是否鬆脫。

  2. 採樣時間過短: 請確認 loop() 內的 delay() 是否大於 2000 ms(2 秒)。

  3. 電壓不足: 嘗試將 VCC 從 3.3V 改接至 5V 腳位(部分 DHT11 模組在 3.3V 供電下穩定度較低)。

 

八、 結語與下一篇教學

恭喜你!成功學會了如何使用 ESP32 讀取 DHT11 溫濕度感測器。掌握了環境數據的讀取能力後,結合前面幾篇學過的「LCD 1602 螢幕」,你就可以把溫濕度數值直接顯示在螢幕上,打造出一台擺在桌上的智慧小儀表!下一篇教學,我們將帶大家解鎖更多精彩的 ESP32 物聯網專題!

▼【ESP32教學】教學總索引頁面

 

 

相關文章