學習目標
- ✓認識溫度與相對濕度是兩種不同的環境量。
- ✓使用舊版與現代桃園版 Blockly DHT11 積木。
- ✓理解 DHT11 需要間隔讀取,並處理無效讀值。
SENSOR / TEMPERATUREHUMIDITY
DHT11 內含溫度感測元件與電容式濕度感測元件,以數位封包回傳資料。它適合第一次接觸環境資料的學生,但更新速度與精度有限。
先確認這一課要學會什麼,以及桌面上需要哪些材料。
DHT11 以數位方式傳送溫度與相對濕度;它不是快速連續取樣的元件,應遵守模組建議的讀取間隔。
設定資料腳位並啟動 DHT11 library。
分別取得攝氏溫度與相對濕度。
保留足夠間隔,避免過快讀取造成無效資料。
相對濕度不是空氣中水量的單位;它會隨溫度改變,教學時請與絕對濕度區分。
DHT11 模組通常已整合上拉電阻;若是裸感測器,請依資料表補上資料線上拉。
| 模組腳位 | 接到控制板 | 訊號方向 | 檢查重點 |
|---|---|---|---|
| VCC | 5V | 電源 | 依模組規格供電。 |
| DATA | D2 | 單線數位資料 | 對應現代積木 PIN=2。 |
| GND | GND | 地線 | 感測器與 Arduino 共地。 |
已將 3 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。
積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。
taoyuan_dht11_temperature取得攝氏溫度
位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)taoyuan_dht11_humidity取得相對濕度
位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)DHT11_readTemp相容舊版作品的溫度讀值
位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)DHT11_readHumi相容舊版作品的濕度讀值
位置:感測器 → 環境感測器 → 溫度/濕度(DHT11)每 2 秒列印一次溫度與相對濕度。
arduino_delaysensor_blocksensor_blockarduino_serial_printarduino_delayarduino_delaysensor_blocksensor_blockarduino_serial_printarduino_delay溫度與濕度積木都選 D2。
為什麼:DHT11 以同一條資料線傳送兩種量。每次讀取後等待至少 1–2 秒。
為什麼:DHT11 不適合快速連續讀取。比較窗邊、桌面與手掌附近的數值。
為什麼:環境與人體熱氣會造成可觀察的變化。taoyuan_dht11_temperature:取得攝氏溫度
下載桃園版 Blockly 專案或對應的文字程式。
| 測試情境 | 可能讀值 | 判讀 |
|---|---|---|
| 手靠近感測器 | 溫度或濕度短時間改變 | 人體熱與水氣會影響附近微環境。 |
| 快速連續讀取 | 可能得到無效值 | 感測器需要時間完成下一次量測。 |
這段程式把「溫濕度感測器(DHT11)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。
#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);
}#include <DHT.h>函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 taoyuan_dht11_temperature 就算接線正確也無法使用。
const int DHT_PIN = 2;本頁接線是 VCC → 5V、DATA → D2、GND → GND。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。
void setup() {啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。
void loop() {重複執行區先讓感測器更新,再讀取 DHT11 溫度(°C)。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。
Serial.print(dht.readTemperature());先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。
先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。
先檢查:確認資料腳位、上拉電阻與讀取間隔。
處理方式:檢查接線,等待至少 1–2 秒後再讀取。
先檢查:確認使用的型號真的是 DHT11。
處理方式:檢查 DHT 建構式中的型號與模組標示。
先檢查:檢查感測器是否被手或熱源包圍。
處理方式:固定感測器,讓它與人體保持距離再比較。
從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。
題目:每分鐘記錄一次教室溫度與濕度。
這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
題目:設定一個濕度範圍,超出時讓 LED 閃爍。
這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
題目:把序列埠資料匯入試算表畫出一天的變化。
這題要延伸「DHT11 溫度(°C)」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
確認 DHT11 的溫濕度感測原理、量測範圍與更新限制。
補充 DHT library 的使用與讀取失敗處理。
對照現代與舊版 DHT11 溫度/濕度積木。