💡 實驗說明:什麼是 DHT11 溫濕度感測器?
DHT11 是一款相當經典且性價比極高的數位溫濕度感測元件。它內部整合了電容式感濕元件與 NTC 測溫元件,並連結一個高性能 8 位元單晶片,能將量測到的溫濕度數據轉換為數位訊號輸出。
🛒 市面上 DHT11 的兩種型態比較:
在購買或使用 DHT11 時,常見有以下兩種規格:
單純 DHT11 裸件(4 針腳):需自行在 DATA 訊號腳與 VCC 之間加接一顆 4.7kΩ~10kΩ 的上拉電阻(Pull-up Resistor)。
帶背板的 DHT11 模組(3 針腳):背板上已內建上拉電阻與濾波電容,僅需引出
VCC、GND與DATA3 條線,方便且不易接錯,最推薦新手使用!(本範例採用此版本)
📊 DHT11 核心規格參數:
濕度量測範圍:20% ~ 90% RH(精度 ±5%)
溫度量測範圍:0 ~ 50℃(精度 ±2℃)
工作電壓範圍:3.3V ~ 5V
採樣頻率:最高 0.5Hz(建議每 2 秒以上讀取一次資料,不可過於頻繁)
🛠️ 實驗材料清單
進行本實驗前,請準備以下硬體元件:
Arduino Uno R3 開發板 × 1
USB 傳輸線 × 1
DHT11 溫濕度感測模組(3-Pin 帶背板版) × 1
杜邦線(母對公) × 3 條
🛒 新手必備推薦:
想一次購齊 DHT11 與多種常用感測器?歡迎前往選購 米羅科技程式學習套件組,一次滿足實作需求!
🔌 電路接線說明(Circuit Wiring)
DHT11 模組共有 3 個腳位,請依照下表與 Arduino Uno 進行連接:
⚠️ 重要提醒:接線時請務必對照 DHT11 模組背板上的
+與-正負極標示!若將正負極接反,極可能導致 DHT11 內部晶片過熱燒毀。
📦 安裝 DHT11 程式庫(Library)
為簡化程式碼撰寫,本教學使用 SimpleDHT 程式庫:
打開 Arduino IDE。
點選上方選單的 「草稿碼」➔「匯入程式庫」➔「管理程式庫」(或按快捷鍵
Ctrl + Shift + I)。在右上角搜尋欄輸入
SimpleDHT。找到 SimpleDHT 項目後,點擊右下角的 「安裝」 按鈕完成安裝。
💻 Arduino 程式碼範例(Code Example)
程式庫安裝完成後,請將以下程式碼複製並燒錄至您的 Arduino Uno 中:
/*
* Arduino 入門教學 第13篇:DHT11 溫濕度感測器讀取範例
* 搭配 SimpleDHT 程式庫使用
*/
#include <SimpleDHT.h> // 引用 SimpleDHT 程式庫
int pinDHT11 = 2; // 定義 DHT11 DATA 接頭連接至 Digital Pin 2
SimpleDHT11 dht11; // 建立 SimpleDHT11 物件
void setup() {
Serial.begin(9600); // 初始化序列埠通訊,鮑率設定為 9600 bps
}
void loop() {
byte temperature = 0; // 儲存溫度變數
byte humidity = 0; // 儲存濕度變數
int err = SimpleDHTErrSuccess;
Serial.println("=================================");
// 嘗試讀取 DHT11 數據
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.println(err);
delay(1000); // 若讀取失敗,等待 1 秒後重試
return;
}
// 成功讀取後,將溫濕度數值輸出至序列埠監視器
Serial.print("Humidity = ");
Serial.print((int)humidity);
Serial.print("% , ");
Serial.print("Temperature = ");
Serial.print((int)temperature);
Serial.println(" *C");
delay(3000); // 每 3 秒讀取並更新一次數據(符合採樣時間限制)
}
🔍 程式重點解析(Code Breakdown)
#include <SimpleDHT.h>:匯入所需的 DHT11 函數庫。dht11.read(pinDHT11, &temperature, &humidity, NULL):呼叫程式庫讀取函式,將 Pin 2 傳回的溫濕度數值分別存入temperature與humidity變數中。delay(3000);:因為 DHT11 的反應速度較慢,每次讀取之間至少需間隔 2 秒以上,此處設定為 3 秒以確保數據獲取穩定。
🎯 實驗成果與測試步驟
成功將程式碼燒錄至 Arduino Uno。
打開 Arduino IDE 的 「序列埠監視器(Serial Monitor)」(右側放大鏡圖示)。
將右下角鮑率設定為 9600 baud。
您將會看到畫面上每隔 3 秒印出當前環境的溫度(℃)與濕度(%)數據!
試試看:用手稍微捏住 DHT11 感測器,或對它輕輕吹氣,觀察序列監視器上的溫度與濕度數值是否開始上升!



