TY桃園智造感測器教學庫
感測器教學庫/環境感測器/溫濕度(DHT11)
BATCH 01 · 已發布

SENSOR / TEMPERATUREHUMIDITY

溫濕度感測器(DHT11)用一條資料線讀取入門級溫度與相對濕度

DHT11 內含溫度感測元件與電容式濕度感測元件,以數位封包回傳資料。它適合第一次接觸環境資料的學生,但更新速度與精度有限。

入門45 分鐘Arduino UNO(DHT11 Library)
READYDATA
SIGNAL STABLE
溫濕度感測器(DHT11)
VCC / 5VDATA / D2
01 / PREPARE

課前準備

先確認這一課要學會什麼,以及桌面上需要哪些材料。

學習目標

  1. 認識溫度與相對濕度是兩種不同的環境量。
  2. 使用舊版與現代桃園版 Blockly DHT11 積木。
  3. 理解 DHT11 需要間隔讀取,並處理無效讀值。

材料清單

1 個DHT11 模組或裸感測器裸感測器需依腳位與上拉電阻規格接線。
1 組Arduino UNO 與 USB 線本篇使用 D2 作為資料腳位。
1 份室內溫濕度記錄表比較不同位置的環境差異。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(DHT11 Library)
02 / HOW IT WORKS

慢一點,讀值才穩定

DHT11 以數位方式傳送溫度與相對濕度;它不是快速連續取樣的元件,應遵守模組建議的讀取間隔。

01

初始化元件

設定資料腳位並啟動 DHT11 library。

02

讀取兩種資料

分別取得攝氏溫度與相對濕度。

03

等待下一次

保留足夠間隔,避免過快讀取造成無效資料。

DISTANCE FORMULArelative_humidity = water vapour / saturation vapour × 100%

相對濕度不是空氣中水量的單位;它會隨溫度改變,教學時請與絕對濕度區分。

03 / WIRING

接線配置

DHT11 模組通常已整合上拉電阻;若是裸感測器,請依資料表補上資料線上拉。

MODULE溫濕度感測器(DHT11)VCCDATAGND
CONTROLArduino UNO(DHT11 Library)5VD2GND
模組腳位接到控制板訊號方向檢查重點
VCC5V電源依模組規格供電。
DATAD2單線數位資料對應現代積木 PIN=2。
GNDGND地線感測器與 Arduino 共地。
✓ WIRING ROWS ALIGNED

已將 3 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。

04 / BLOCK GUIDE

本課會用到的積木

積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。

DHT11 溫度(°C)PIN 2
BLOCK 01taoyuan_dht11_temperature

DHT11 溫度(°C)

取得攝氏溫度

位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)
PIN
2設定 DATA 腳位。
DHT11 濕度(%)PIN 2
BLOCK 02taoyuan_dht11_humidity

DHT11 濕度(%)

取得相對濕度

位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)
PIN
2與溫度積木使用相同的 DATA 腳位。
DHT11 讀取溫度(舊版)DATAPIN 2
BLOCK 03DHT11_readTemp

DHT11 讀取溫度(舊版)

相容舊版作品的溫度讀值

位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)
DATAPIN
2舊版資料腳位欄位。
DHT11 讀取濕度(舊版)DATAPIN 2
BLOCK 04DHT11_readHumi

DHT11 讀取濕度(舊版)

相容舊版作品的濕度讀值

位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)
DATAPIN
2舊版資料腳位欄位。
05 / BLOCK EXAMPLE

做一個教室環境觀察站

每 2 秒列印一次溫度與相對濕度。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
重複執行arduino_delay
DHT11 溫度(D2)sensor_block
DHT11 濕度(D2)sensor_block
序列埠列印兩個數值arduino_serial_print
等待 2000 毫秒arduino_delay
重複執行
重複執行arduino_delay
DHT11 溫度(D2)sensor_block
DHT11 濕度(D2)sensor_block
序列埠列印兩個數值arduino_serial_print
等待 2000 毫秒arduino_delay
X / 010Y / 024

組合步驟

01
使用同一資料腳

溫度與濕度積木都選 D2。

為什麼:DHT11 以同一條資料線傳送兩種量。
02
拉長讀取間隔

每次讀取後等待至少 1–2 秒。

為什麼:DHT11 不適合快速連續讀取。
03
觀察位置差異

比較窗邊、桌面與手掌附近的數值。

為什麼:環境與人體熱氣會造成可觀察的變化。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

taoyuan_dht11_temperature取得攝氏溫度

預期觀察結果

測試情境可能讀值判讀
手靠近感測器溫度或濕度短時間改變人體熱與水氣會影響附近微環境。
快速連續讀取可能得到無效值感測器需要時間完成下一次量測。
06 / CODE EXPLAINED

範例程式逐段解說

這段程式把「溫濕度感測器(DHT11)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。

GENERATED LOGIC / EXCERPT積木背後的程式碼收合程式碼 −
TAOYUAN BLOCKLY / ARDUINO C++READ ONLY
#include <DHT.h>

const int DHT_PIN = 2;
DHT dht(DHT_PIN, DHT11);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  Serial.print(dht.readTemperature());
  Serial.print(" C, ");
  Serial.print(dht.readHumidity());
  Serial.println(" %");
  delay(2000);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <DHT.h>

函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 taoyuan_dht11_temperature 就算接線正確也無法使用。

02
把程式腳位對回接線表const int DHT_PIN = 2;

本頁接線是 VCC → 5V、DATA → D2、GND → GND。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

03
在 setup 只做一次初始化void setup() {

啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。

04
在 loop 更新並取得資料void loop() {

重複執行區先讓感測器更新,再讀取 DHT11 溫度(°C)。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。

05
輸出結果並控制取樣速度Serial.print(dht.readTemperature());

先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。

自學檢查
  • 實體接線:VCC → 5V、DATA → D2、GND → GND。
  • 主要積木:taoyuan_dht11_temperature;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO(DHT11 Library);更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。

ERR 01

顯示 NaN

先檢查:確認資料腳位、上拉電阻與讀取間隔。

處理方式:檢查接線,等待至少 1–2 秒後再讀取。

ERR 02

溫度明顯不合理

先檢查:確認使用的型號真的是 DHT11。

處理方式:檢查 DHT 建構式中的型號與模組標示。

ERR 03

數值受手摸影響很大

先檢查:檢查感測器是否被手或熱源包圍。

處理方式:固定感測器,讓它與人體保持距離再比較。

08 / NEXT MISSION

延伸挑戰

從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。

L1

溫濕度觀察表

題目:每分鐘記錄一次教室溫度與濕度。

解題方向

這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 taoyuan_dht11_temperature,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「每分鐘記錄一次教室溫度與濕度。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L2

舒適度提示

題目:設定一個濕度範圍,超出時讓 LED 閃爍。

解題方向

這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 taoyuan_dht11_temperature,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「設定一個濕度範圍,超出時讓 LED 閃爍。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
L3

資料視覺化

題目:把序列埠資料匯入試算表畫出一天的變化。

解題方向

這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 taoyuan_dht11_temperature,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「把序列埠資料匯入試算表畫出一天的變化。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能區分攝氏溫度與相對濕度。
  • 能正確設定 DATA 腳位與型號。
  • 能說明為何 DHT11 需要讀取間隔。
09 / EVIDENCE資料來源與版本展開查看 +
LAST REVIEWED / 2026-08-13

本頁使用零件圖鑑標準範本,內容可由網站編輯模式持續維護。

返回教學庫 →