無標題

用 Arduino 與 DHT11 打造精準溫濕度監控站

在自製物聯網硬體專案時,DHT11 是最經典且易於上手的溫濕度感測器。今天我們不僅要透過 Arduino 讀取數據,還要將數據視覺化。

📌 專案重點摘要

  • 核心元件: Arduino Mega 2560 (或其他相容板) + DHT11 模組
  • 通訊方式: 單線雙向通訊 (Single-bus)
  • 應用場景: 室內環境監測、機房溫濕度警報、智慧農業

📊 溫濕度變化模擬圖 (Chart.js 互動展示)

* 下圖模擬 DHT11 在一天中的溫濕度讀取數值,你可以將滑鼠游標移至圖表上查看詳細數據。

⚠️ COM Port 與接線注意事項:

實作時請務必確認你的硬體是接在正確的序列埠 (例如 COM4)。另外,DHT11 的取樣頻率較低,兩次讀取之間請至少設定 delay(2000); (即 2 秒),否則會產生讀取錯誤 (NaN)。

💻 核心程式碼 (Arduino)

#include "DHT.h"

#define DHTPIN 2     // 定義 DHT11 連接的腳位
#define DHTTYPE DHT11 // 定義感測器型號

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600); // 初始化序列埠,請確保與監控視窗鮑率一致
  Serial.println(F("DHT11 啟動中..."));
  dht.begin();
}

void loop() {
  // 等待 2 秒鐘再進行下一次測量
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 確認是否讀取失敗
  if (isnan(h) || isnan(t)) {
    Serial.println(F("無法從 DHT 感測器讀取資料!"));
    return;
  }

  Serial.print(F("濕度: "));
  Serial.print(h);
  Serial.print(F("%  溫度: "));
  Serial.print(t);
  Serial.println(F("°C"));
}

💡 進階問答與延伸實驗 (點擊展開)

為何不用 Python 搭配 Telemetrix 直接讀取?
當然可以!如果你想將數據寫入資料庫或進行演算法分析,使用 Python 搭配 Telemetrix 函式庫控制 Arduino Mega 2560 是非常棒的進階架構。需要注意的是 Python 腳本端的序列埠連線穩定度。
DHT11 與 DHT22 該如何選擇?
DHT11 價格便宜但精度較低(誤差約 ±2°C、±5% 濕度)。如果你的專案對數據精準度有要求,建議升級為 DHT22。程式碼只需將 #define DHTTYPE DHT11 改為 DHT22 即可。
較新的 較舊